File Browser 📂
Gestionnaire de fichiers web écrit en Go, léger et autonome : il transforme n'importe quel répertoire du serveur en explorateur web manipulable (upload, download, édition, partage, gestion d'utilisateurs). Le classique de la catégorie.
| Métadonnée | Valeur |
|---|---|
| Site web | https://filebrowser.org |
| GitHub | https://github.com/filebrowser/filebrowser |
| License | Apache-2.0 |
| Langage | Go |
| Étoiles | 3 868 ⭐ |
| Dernière MAJ | 2026-05 |
| Catégorie | [[cat-file-management]] |
Description
File Browser est né en 2018 comme un projet personnel de Filipe Freire avant de devenir la référence absolue des file managers self-hostés. L'idée est simple : un binaire Go unique (~15 Mo) qui se lance, scanne un répertoire local, et expose une interface web moderne (Vue.js) avec gestion des utilisateurs, partage de fichiers, et même un mini-éditeur de texte. Pas de base de données externe : tout est stocké dans une SQLite embarquée (filebrowser.db).
L'interface propose un treeview à gauche, un listing à droite, des opérations classiques (copier, déplacer, renommer, zipper, supprimer), un viewer intégré pour images/texte, un lecteur audio/vidéo HTML5, et un terminal web optionnel par utilisateur. L'authentification est basique (utilisateur + mot de passe hashé) mais extensible via OAuth2 (Google, GitHub) et on peut brancher en amont un SSO comme [[app-authelia]] ou [[app-authentik]].
C'est l'outil idéal pour qui veut partager des fichiers ponctuellement avec des proches, donner accès à un disque de sauvegarde, ou remplacer un python -m http.server par quelque chose de propre. Le projet est mature, le rythme de publication est régulier (release tous les 1-3 mois), et la communauté est large. Il existe plusieurs forks améliorés, dont [[app-filebrowser-quantum]] qui apporte un éditeur Monaco.
Installation
Option 1 : Docker Compose (recommandé)
services:
filebrowser:
image: filebrowser/filebrowser:latest
container_name: filebrowser
restart: unless-stopped
ports:
- "8080:80"
volumes:
- /srv/data:/srv # répertoire à exposer (adapter le chemin)
- ./config:/config # configuration + base SQLite
- ./database:/database
environment:
- PUID=1000
- PGID=1000
- FB_AUTH_ADMIN=admin
- FB_AUTH_PASSWORD=***REMPLACER***
UI sur http://localhost:8080. Identifiants par défaut : admin / admin (à changer immédiatement).
Option 2 : Binaire unique
# Téléchargement direct curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/install.sh | bash # ou via Go go install github.com/filebrowser/filebrowser/v2@latest # Initialisation filebrowser config init filebrowser config set --address 0.0.0.0 --port 8080 --root /srv/data # Lancement filebrowser
Configuration
- Premier accès : se connecter en
admin/adminpuis changer le mot de passe (⚠️ critique). - Scopes utilisateur : chaque utilisateur peut avoir un sous-répertoire racine différent (
scope). - Partage de fichiers : générer des liens avec expiration (
sharesubcommand). - Commandes personnalisées : ajouter des actions contextuelles (ex.
git pull, conversion d'images). - ACL granulaires : lecture seule, écriture, admin par utilisateur.
- Reverse proxy : derrière [[app-caddy]] ou [[app-traefik]] avec HTTPS, ajouter
X-Forwarded-*headers.
Alternatives
Open Source
- [[app-filebrowser-quantum]] — Fork avec éditeur Monaco et thèmes
- [[app-openlist]] — Plus complet, multi-backends (S3, SFTP, etc.)
- [[app-filestash]] — UI plus moderne, multi-protocoles
- [[app-filegator]] — PHP, multi-utilisateurs
- [[app-cloud-commander]] — Node.js, double panneau type midnight-commander
- [[app-chibisafe]] — Spécialisé upload
- [[app-filerun]] — UX plus riche, PHP commercial
- [[app-nextcloud]] — Pour qui veut un cloud complet
Propriétaires
- Google Drive
- Dropbox
- OneDrive
- Box
Sécurité
- Changer le mot de passe
admin/adminimmédiatement après installation. - Ne JAMAIS exposer File Browser directement sur Internet sans reverse proxy + authentification forte (SSO recommandé).
- HTTPS obligatoire ([[app-caddy]] génère les certifs Let's Encrypt automatiquement).
- Restreindre le scope par utilisateur : ne pas donner accès à
/ou/etc. - Activer la journalisation d'accès (logs) et superviser via [[app-dozzle]] ou [[app-loki]].
- Mettre à jour régulièrement : les CVEs sur les file managers sont critiques.
- Sauvegarder
./configet./database(la base SQLite contient tous les utilisateurs et partages).
