---
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).
::
