Skip to content

Installer FileBrowser Quantum en conteneur LXC sur Proxmox

Guide d'installation manuelle, étape par étape, de FileBrowser Quantum — un fork actif de FileBrowser avec support natif de plusieurs sources et de l'authentification OIDC — en conteneur LXC Proxmox, avec un disque de données dédié séparé du disque système — pour pouvoir reconstruire le conteneur sans jamais perdre les fichiers utilisateurs.

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 :