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