--- title: File Browser Quantum description: Installer File Browser Quantum, un fork modernisé de File Browser, pour parcourir et gérer les fichiers de votre serveur depuis une interface web rapide. --- :ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60} [File Browser Quantum](https://github.com/gtsteffaniak/filebrowser) est un fork communautaire de [File Browser](/recycled/deprecated/file-browser), réécrit pour de meilleures performances (recherche indexée, moins de mémoire consommée) et configuré via un unique fichier `config.yaml` plutôt qu'uniquement par une base de données. ![file-browser-quantum](/img/serveex/filebrowser-quantum.png) ## Installation ::file-tree --- tree: /: - srv: - docker: - filebrowser-quantum: - compose.yaml - data: - config.yaml - filebrowser.sqlite --- :: ::steps{level="3"} ### Créer le fichier de configuration Créez le dossier de données : ```bash [Terminal] sudo mkdir -p /srv/docker/filebrowser-quantum/data ``` Créez le fichier `config.yaml` : ```bash [Terminal] sudo nano /srv/docker/filebrowser-quantum/data/config.yaml ``` Collez ce qui suit, en ajoutant une entrée `sources` par dossier que vous voulez parcourir : ```yaml [config.yaml] server: cacheDir: /home/filebrowser/data/tmp sources: - path: /srv/docker config: defaultEnabled: true - path: /media config: defaultEnabled: true ``` Appuyez sur :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"} pour enregistrer, et :kbd{value="Ctrl+X"} pour quitter. ### Déployer la stack Ouvrez Dockge, cliquez sur `compose`, nommez la stack `filebrowser-quantum`, puis copiez-collez ce qui suit : ```yaml [compose.yaml] --- services: filebrowser-quantum: container_name: filebrowser-quantum image: gtstef/filebrowser:beta restart: unless-stopped volumes: - /srv/docker:/srv/docker - /media:/media - /srv/docker/filebrowser-quantum/data:/home/filebrowser/data ports: - 8020:80 ``` ::note Montez chaque dossier listé sous `sources` dans `config.yaml` au même chemin à l'intérieur du conteneur (ici `/srv/docker` et `/media`), sans quoi File Browser Quantum ne les trouvera pas. :: ::tip{icon=""} ✨ __Astuce :__ ajoutez le label watchtower pour automatiser les mises à jour. ```yaml [compose.yaml] services: filebrowser-quantum: #... labels: - com.centurylinklabs.watchtower.enable=true ``` :: Déployez le conteneur et allez sur `http://ipdevotreserveur:8020`. Connectez-vous avec les identifiants par défaut `admin` / `admin`, puis changez immédiatement le mot de passe dans les réglages de votre profil. ### Terminé ! :: ::caution __Si ça ne marche pas :__ vérifiez les règles de votre pare-feu. :: ## Exposer File Browser Quantum avec Swag ::warning File Browser Quantum ne gère pas l'authentification multifacteur. L'exposer publiquement pourrait mettre vos systèmes en danger. Ne le faites que si vous utilisez une solution d'authentification robuste comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik/). Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme [Wireguard](/serveex/core/wireguard). :: Vous voudrez peut-être accéder à File Browser Quantum à distance depuis tous vos appareils. Pour cela, nous allons l'exposer à travers Swag. ::note{icon=""} 📋 __Au préalable :__ nous partons du principe que vous avez déjà créé un sous-domaine du type `fbq.mondomaine.fr` dans votre [zone DNS](/general/networking/dns), pointant vers `mondomaine.fr` avec un `CNAME`. À moins d'utiliser Cloudflare Zero Trust, nous partons aussi du principe que vous avez déjà redirigé le port `443` de votre box vers le port `443` de votre serveur avec les [règles NAT](/general/networking/nat). :: ::steps{level="3"} ### Ajouter le réseau de File Browser Quantum à SWAG Dans Dockge, allez sur la stack SWAG et modifiez le fichier compose pour y ajouter le réseau de File Browser Quantum : ```yaml [compose.yaml] --- services: swag: container_name: # ... # ... networks: # Rattache le conteneur au réseau personnalisé # ... - filebrowser-quantum # Nom du réseau déclaré dans la stack networks: # Définit le réseau personnalisé # ... filebrowser-quantum: # Nom du réseau déclaré dans la stack name: filebrowser-quantum_default # Nom réel du réseau externe external: true # Précise qu'il s'agit d'un réseau externe ``` ::note Nous partons ici du principe que le nom du réseau de File Browser Quantum est `filebrowser-quantum_default`. Vous pouvez confirmer que la connexion fonctionne en accédant au tableau de bord de SWAG sur http://ipdevotreserveur:81. :: Redémarrez la stack en cliquant sur « deploy » et attendez que SWAG soit complètement initialisé. ### Créer le fichier subdomain.conf Dans les dossiers de Swag, créez le fichier `fbq.subdomain.conf`. ```bash [Terminal] sudo nano /srv/docker/swag/config/nginx/proxy-confs/fbq.subdomain.conf ``` Et collez la configuration suivante : ```nginx [fbq.subdomain.conf] ## Version 2023/12/19 server { listen 443 ssl; listen [::]:443 ssl; server_name fbq.*; include /config/nginx/ssl.conf; client_max_body_size 0; # enable for ldap auth (requires ldap-location.conf in the location block) #include /config/nginx/ldap-server.conf; # enable for Authelia (requires authelia-location.conf in the location block) #include /config/nginx/authelia-server.conf; # enable for Authentik (requires authentik-location.conf in the location block) #include /config/nginx/authentik-server.conf; location / { # enable the next two lines for http auth #auth_basic "Restricted"; #auth_basic_user_file /config/nginx/.htpasswd; # enable for ldap auth (requires ldap-server.conf in the server block) #include /config/nginx/ldap-location.conf; # enable for Authelia (requires authelia-server.conf in the server block) #include /config/nginx/authelia-location.conf; # enable for Authentik (requires authentik-server.conf in the server block) #include /config/nginx/authentik-location.conf; include /config/nginx/proxy.conf; include /config/nginx/resolver.conf; set $upstream_app filebrowser-quantum; set $upstream_port 80; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; } } ``` Appuyez sur :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"} pour enregistrer, et :kbd{value="Ctrl+X"} pour quitter. ### Terminé ! :: Et voilà ! File Browser Quantum est maintenant exposé. ## Protéger File Browser Quantum avec TinyAuth Ajoutez la vérification forward-auth de [TinyAuth](/serveex/security/tinyauth) directement dans `fbq.subdomain.conf`, de la même façon que dans [le tutoriel TinyAuth](/serveex/security/tinyauth#protecting-an-app-via-reverse-proxy) : ```nginx [fbq.subdomain.conf]{22-34,37-38} ## Version 2023/12/19 server { listen 443 ssl; listen [::]:443 ssl; server_name fbq.*; include /config/nginx/ssl.conf; client_max_body_size 0; # enable for ldap auth (requires ldap-location.conf in the location block) #include /config/nginx/ldap-server.conf; # enable for Authelia (requires authelia-location.conf in the location block) #include /config/nginx/authelia-server.conf; # enable for Authentik (requires authentik-location.conf in the location block) #include /config/nginx/authentik-server.conf; location /tinyauth { internal; proxy_pass http://tinyauth:3000/api/auth/nginx; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-Uri $request_uri; } location @tinyauth_login { return 302 https://tinyauth.mondomaine.fr/login?redirect_uri=$scheme://$http_host$request_uri; } location / { auth_request /tinyauth; error_page 401 = @tinyauth_login; # enable the next two lines for http auth #auth_basic "Restricted"; #auth_basic_user_file /config/nginx/.htpasswd; # enable for ldap auth (requires ldap-server.conf in the server block) #include /config/nginx/ldap-location.conf; # enable for Authelia (requires authelia-server.conf in the server block) #include /config/nginx/authelia-location.conf; # enable for Authentik (requires authentik-server.conf in the server block) #include /config/nginx/authentik-location.conf; include /config/nginx/proxy.conf; include /config/nginx/resolver.conf; set $upstream_app filebrowser-quantum; set $upstream_port 80; set $upstream_proto http; proxy_pass $upstream_proto://$upstream_app:$upstream_port; } } ``` ::note{to="/serveex/security/tinyauth#exposing-tinyauth-with-swag"} Le bloc `location /tinyauth` s'exécute dans le conteneur de SWAG lui-même, SWAG doit donc être sur le réseau Docker de TinyAuth pour le joindre par son nom (`tinyauth` ici). Cela devrait déjà être en place depuis **l'exposition de TinyAuth**. Si vous rencontrez une erreur, revérifiez que le fichier compose de SWAG a toujours ce réseau rattaché. :: ::tip{icon=""} ✨ __Astuce :__ vous pouvez protéger cette application avec [Authentik](/serveex/advanced/authentik) plutôt que TinyAuth, en ouvrant `fbq.subdomain.conf` et en décommentant `include /config/nginx/authentik-server.conf;`{lang=nginx} et `include /config/nginx/authentik-location.conf;`{lang=nginx}. N'oubliez pas de [créer une application et un provider dans Authentik](/serveex/advanced/authentik#protecting-an-app-via-reverse-proxy). ::