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.dbré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/filesdans le conteneur). - Logs :
pct exec 202 -- journalctl -u filebrowser -f. Au démarrage, la ligneSources : [...]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/filebrowserpar une nouvelle version (étape 3), puissystemctl restart filebrowser. Vérifier le changelog du projet avant un saut de version majeure — le format deconfig.yamla déjà évolué entre versions. - Une source ajoutée après coup n'est pas rétroactive pour les comptes existants : avec
config.defaultEnabled: truesur une nouvelle entrée deserver.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 :