Skip to content

Installer FileBrowser Quantum en conteneur LXC sur Proxmox

Accéder à ses fichiers depuis n'importe quel navigateur, sans installer de client, sans dépendre d'un cloud tiers : c'est le confort que donne un gestionnaire de fichiers web. On installe ici FileBrowser Quantum — un fork actif et modernisé de FileBrowser, avec support natif de plusieurs sources et de l'authentification OIDC — dans un conteneur LXC Proxmox.

Le détail qui fait toute la différence : un disque de données dédié, séparé du disque système. Grâce à lui, on peut détruire et reconstruire le conteneur autant qu'on veut sans jamais toucher aux fichiers des utilisateurs. C'est la tranquillité d'esprit qui transforme une install jetable en service durable.

Ce guide ne couvre pas le fork historique filebrowser/filebrowser : les deux projets ont divergé (binaire, format de configuration, gestion des utilisateurs), les instructions ci-dessous ne s'appliquent qu'à Quantum. Pour connecter l'authentification SSO une fois l'installation terminée, voir la procédure en bas de page.


Prérequis

  • Un hôte Proxmox VE avec accès pct
  • Un pool de stockage local-lvm (ou adapter les commandes à votre pool)
  • Accès internet depuis l'hôte (téléchargement du binaire depuis GitHub Releases)

Valeurs d'exemple utilisées dans ce guide :

Paramètre Valeur d'exemple
ID du conteneur 202
IP fixe 192.168.1.202/24
Disque système 8 Go
Disque données dédié 150 Go, monté sur /srv/files
Port interne 8080
Port externe (NAT) 9480
IP du reverse proxy Caddy 192.168.1.200 (voir Caddy)

1⃣ Création du conteneur avec un second disque

Le point clé : ajouter un mount point (--mp0) séparé du rootfs, pour que les fichiers utilisateurs ne soient jamais affectés par une réinstallation du système.

pveam update
pveam available | grep debian-12-standard
pveam download local debian-12-standard_12.7-1_amd64.tar.zst

pct create 202 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst \
    --hostname filebrowser.votre-domaine.tld \
    --memory 512 \
    --swap 256 \
    --cores 2 \
    --rootfs local-lvm:8 \
    --mp0 local-lvm:150,mp=/srv/files \
    --net0 name=eth0,bridge=vmbr0,ip=192.168.1.202/24,gw=192.168.1.1 \
    --unprivileged 1 \
    --features nesting=1 \
    --onboot 1

pct start 202

2⃣ Installation des paquets de base

pct exec 202 -- apt-get update
pct exec 202 -- apt-get install -y --no-install-recommends curl wget tar

3⃣ Téléchargement du binaire FileBrowser Quantum

Contrairement au fork historique, Quantum distribue un binaire brut (pas d'archive .tar.gz) :

FB_VERSION=$(curl -s https://api.github.com/repos/gtsteffaniak/filebrowser/releases/latest \
    | grep '"tag_name"' | grep -oP '"\K[^"]+')

pct exec 202 -- bash -c "
    wget -q -O /usr/local/bin/filebrowser \
        https://github.com/gtsteffaniak/filebrowser/releases/download/${FB_VERSION}/linux-amd64-filebrowser
    chmod +x /usr/local/bin/filebrowser
"

4⃣ Utilisateur système et répertoires

pct exec 202 -- useradd -r -s /sbin/nologin filebrowser
pct exec 202 -- mkdir -p /var/lib/filebrowser /var/log/filebrowser /etc/filebrowser
pct exec 202 -- chown -R filebrowser:filebrowser /var/lib/filebrowser /var/log/filebrowser
pct exec 202 -- chown filebrowser:filebrowser /srv/files
pct exec 202 -- chmod 755 /srv/files

5⃣ Fichier de configuration

Quantum se configure par un fichier YAML unique (pas d'initialisation de base séparée) :

pct exec 202 -- bash -c "cat > /etc/filebrowser/config.yaml" << 'EOF'
server:
  port: 8080
  database: "/var/lib/filebrowser/filebrowser.db"
  sources:
    - path: "/srv/files"
      name: "Files"
  logging:
    - output: "stdout"
  externalUrl: "https://files.votre-domaine.tld"
auth:
  methods:
    password:
      enabled: true
    oidc:
      enabled: false
EOF

pct exec 202 -- chmod 600 /etc/filebrowser/config.yaml
pct exec 202 -- chown filebrowser:filebrowser /etc/filebrowser/config.yaml

server.sources accepte plusieurs entrées — utile pour exposer d'autres points de montage (voir la procédure Stockage partagé Jellyfin ↔ FileBrowser pour un exemple concret). auth.methods.password.enabled: true permet une première connexion locale ; à désactiver une fois l'OIDC en place (voir procédure en bas de page) si l'authentification doit être exclusivement centralisée.


6⃣ Service systemd

pct exec 202 -- bash -c "cat > /etc/systemd/system/filebrowser.service" << 'EOF'
[Unit]
Description=FileBrowser
After=network.target

[Service]
User=filebrowser
Group=filebrowser
ExecStart=/usr/local/bin/filebrowser -c /etc/filebrowser/config.yaml
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

pct exec 202 -- systemctl daemon-reload
pct exec 202 -- systemctl enable --now filebrowser

Au premier démarrage, Quantum crée un compte admin avec un mot de passe généré aléatoirement, affiché une seule fois dans les logs :

pct exec 202 -- journalctl -u filebrowser --no-pager | grep -i "randomly generated password"

À changer immédiatement depuis l'interface web si l'authentification par mot de passe reste active.


7⃣ Restriction réseau (nftables)

pct exec 202 -- bash -c "
    nft add table inet filter
    nft add chain inet filter input '{ type filter hook input priority 0; policy accept; }'
    nft add rule inet filter input iifname lo accept
    nft add rule inet filter input tcp dport 8080 ip saddr != 192.168.1.200 drop
    nft list ruleset > /etc/nftables.conf
    systemctl enable nftables
"

8⃣ Redirection du port externe (NAT)

CT_IP=192.168.1.202
iptables -t nat -A PREROUTING -p tcp --dport 9480 -j DNAT --to-destination $CT_IP:8080
iptables -I FORWARD -p tcp -d $CT_IP --dport 8080 -j ACCEPT
iptables-save > /etc/iptables.rules

⚙️ Points d'administration importants

  • Le découplage disque système / disque données est la clé de ce déploiement. Pour reconstruire le conteneur sans perdre les fichiers (changement de version d'OS, nettoyage, etc.) :
# Détacher le mount point avant de détruire le conteneur (préserve le volume LVM)
sed -i '/^mp0:/d' /etc/pve/lxc/202.conf
pct stop 202
pct destroy 202 --force
# Le volume LVM des données existe toujours — le réutiliser dans un nouveau pct create avec --mp0
  • Sauvegarder /var/lib/filebrowser/filebrowser.db régulièrement : elle contient les comptes utilisateurs, sources activées par utilisateur et paramètres. Les fichiers eux-mêmes (/srv/files) ne sont pas couverts par cette sauvegarde — à protéger séparément (snapshot de volume, réplication, etc.).
  • Changer le mot de passe admin généré aléatoirement dès la première connexion si l'authentification par mot de passe reste active (voir étape 6).
  • Quota disque : FileBrowser n'impose pas de limite par utilisateur nativement — à surveiller via l'espace disque du point de montage (df -h /srv/files dans le conteneur).
  • Logs : pct exec 202 -- journalctl -u filebrowser -f. Au démarrage, la ligne Sources : [...] liste les sources effectivement chargées — utile pour vérifier qu'une source ajoutée en config a bien été prise en compte après un redémarrage.
  • Mise à jour : remplacer le binaire /usr/local/bin/filebrowser par une nouvelle version (étape 3), puis systemctl restart filebrowser. Vérifier le changelog du projet avant un saut de version majeure — le format de config.yaml a déjà évolué entre versions.
  • Une source ajoutée après coup n'est pas rétroactive pour les comptes existants : avec config.defaultEnabled: true sur une nouvelle entrée de server.sources, seuls les nouveaux comptes créés après l'ajout y ont automatiquement accès. Les comptes déjà créés doivent recevoir l'accès manuellement : Settings → Users → éditer l'utilisateur → ajouter la source.

Conclusion

FileBrowser Quantum en LXC avec disque dédié donne un gestionnaire de fichiers web multi-sources, où les reconstructions de conteneur n'ont jamais d'impact sur les fichiers stockés par les utilisateurs. Pour aller plus loin :