Installer File Browser avec Docker
Au sommaire :
- 1-Qu'est-ce que File Browser ?
- 2-Prérequis
- 3-Déploiement
- 4-Configuration
- 5-Exposer son instance avec Traefik
1-Qu'est-ce que Filebrowser ?
Filebrowser est une application qui va vous permettre de disposer d'un explorateur de fichiers sur votre serveur accessible via le web.
Vous allez pouvoir télécharger, téléverser, éditer, supprimer, renommer, prévisualiser et compresser vos fichiers.
Plus que ça, File Browser vous permet de créer des comptes utilisateurs ainsi que de partager vos fichiers avec vos proches.
Pour résumer, vous n'avez plus besoin d'envoyer vos fichiers dans le cloud. Vous court-circuiter Google Drive, OneDrive, Drop Box et cie. Vous êtes "maître" de vos données.
Pour ma part, c'est déjà dans ma liste des favoris et c'est l'un de mes coups de cœur de l'année 2025. C'est vraiment une application qui rend service pour le coup.
2-Prérequis
Pour déployer File Browser, vous devez disposer d'une machine virtuelle fonctionnant sous Ubuntu Server.
Création de la machine virtuelle :
Virtualisation avec Proxmox VE : Si vous partez de zéro, suivez mon guide détaillé pour virtualiser Ubuntu sur Proxmox VE avec des réglages optimisés.
Automatisation avec Cloud-Init : Pour gagner du temps lors de la configuration, utilisez un template Cloud-Init. Cela permet d'automatiser et de simplifier l'initialisation de vos machines virtuelles. Retrouvez les instructions dans ce guide.
Installation des outils nécessaires :
Docker et Docker Compose : Une fois la machine virtuelle prête, installez Docker et Docker Compose, indispensables pour gérer et orchestrer vos conteneurs. Ce guide vous accompagnera dans l'installation.
Sécurisation et exposition de l'application :
Proxy inverse avec Traefik : Pour exposer vos applications sur Internet de manière sécurisée, configurez un proxy inverse. Traefik est une solution recommandée. Suivez ce guide pour l'installation.
3-Déploiement
Commencez par créer un dossier "docker" à la racine du dossier utilisateur"
mkdir -p ~/docker
Créez un fichier nommé "compose.yml"
touch ~/docker/compose.yml
Ouvrez le fichier "compose.yml" et copiez cette configuration.
networks:
# Docker Bridge Network
default:
driver: bridge
services:
filebrowser:
image: filebrowser/filebrowser:s6
container_name: filebrowser
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
ports:
- 80:80
volumes:
- ${APPDATA}/filebrowser:/srv
- ${APPDATA}/filebrowser/database:/database
- ${APPDATA}/filebrowser/config:/config
Pour les options communes :
- version : version du fichier compose : https://docs.docker.com/compose/compose-file/compose-file-v3/
- network : en bridge (l'adresse IP sera celle de la machine virtuelle ou du conteneur LXC)
- services : c'est là qu'il faudra ajouter les configurations de vos conteneurs
- image : nom du registry suivi du nom de l'application (filebrowser/app_name)
- container_name : le nom du conteneur, sinon Docker en choisira un de manière aléatoire (mieux vaut le nommer vous même)
- environment : il y a les variables de base (PUID, PGID, TZ) qui correspondent à l'utilisateur, le groupe et le fuseau horaire.
- volumes : variable ${APPDATA) (/home/user_name/appdata) suivi du nom de l'application (/app_name). Il faudra monter le dossier "database", "config" et le dossier racine de l'application
- ports : le port d'écoute pour accéder à l'interface web (changez les ports par défaut par 3000:80 et 3001:443)
- restart : unless-stopped par défaut. Le daemon de Docker redémarrera automatiquement le conteneur sauf si vous l’arrêtez, il faudra le démarrer manuellement
Avant de déployer filebrowser, pensez bien à créer à l'avance le dossier de l'application dans "appdata" sinon l'application ne fonctionnera pas.
mkdir filebrowser
Entrez à l'intérieur du dossier de l'application et créez les dossiers "database" et "config".
mkdir database config
Puis créez les fichiers "settings.json" dans le dossier "config" et "filebrowser.db" dans le dossier "database".
touch config/settings.json
touch database/filebrowser.db
Enfin, ajoutez ces informations dans le fichier "settings.json" puis enregistrez.
{
"port": 80,
"baseURL": "",
"address": "",
"log": "stdout",
"database": "/database/filebrowser.db",
"root": "/srv"
}
Note : au passage, la configuration issue de la documentation du site est incorrecte et j'ai du y apporter des corrections. Docker préfère mapper des dossiers plutôt que des fichiers pour éviter les erreurs de permission ou de création de fichiers. Si vous suivez cette configuration, erreur d’accès assurée. De plus, ils ne disent pas de créer le dossier, les sous dossiers et les fichiers à l'avance...
Téléchargez l'image et créez le conteneur.
docker compose pull && docker compose create
Puis démarrez le conteneur.
docker start filebrowser
4-Configuration
Une fois l'application démarrée, tapez l'adresse IP de votre machine virtuelle suivi du numéro de port que vous aurez choisi.
Au départ, vous allez accéder uniquement à la racine de l'application avec
Mais vous pouvez très bien ajouter un espace de stockage supplémentaire dans votre configuration docker-compose.
Pour l'exemple, je vais créer un espace partagé que je vais nommer "shared_space".
Le dossier apparaît dans l'explorateur de fichiers.
Je fais un glisser/déposer d'un fichier au format MP3 dans le dossier "shared_space"
Ou bien en cliquant sur "Upload" en haut à droite de l'écran.
Le morceau apparaît bien dans l'explorateur de fichiers.
J'ai besoin d'envoyer ce fichier à une amie en Russie. Je clique une fois sur le fichier pour le mettre en surbrillance et ensuite en haut à droite de l'écran, je vais générer un lien de téléchargement avec une date limite et un mot de passe (optionnel).
Je clique sur "Copy to clipboard" pour avoir un lien qui indique les informations du fichier ainsi qu'un QR Code (pratique pour les smartphones).
Ou bien je clique sur "Copy download link to clipboard" pour avoir le lien de téléchargement direct.
Mais je ne suis pas obligé de lui envoyer un lien de téléchargement. Si les envois de fichiers sont récurrent, je peux également créer un compte à cette personne où son seul droit sera de télécharger les fichiers que je déposerai dans le dossier "shared_space".
J'indique :
- Le nom de l'utilisateur
- Le mot de passe
- La racine de son espace (en l’occurrence, l'indique "shared_space")
- La langue utilisée par la personne
Et j'indique qu'elle pourra seulement télécharger les fichiers du dossier et rien d'autres.
5-Exposer son instance avec Traefik et Authelia
networks:
# default network
default:
driver: bridge
# Traefik network
web:
name: web
driver: bridge
services:
traefik:
container_name: traefik
image: traefik:v2
restart: always
network:
web:
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${APPDATA}/traefik/logs:/logs
- ${APPDATA}/traefik/traefik.yml:/traefik.yml
- ${APPDATA}/traefik/dynamic.yml:/dynamic.yml
- ${APPDATA}/traefik/letsencrypt/acme.json:/acme.json
labels:
- traefik.enable=true
- traefik.http.routers.traefik-dash.entrypoints=websecure
- traefik.http.routers.traefik-dash.rule=Host(`traefik.<domain_name>.ovh`)
- traefik.http.routers.traefik-dash.service=api@internal
- "traefik.http.routers.traefik.middlewares=middlewares-basic-auth@file"
filebrowser:
image: filebrowser/filebrowser:s6
container_name: filebrowser
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
networks:
- web
volumes:
- ${APPDATA}/filebrowser:/srv
- ${APPDATA}/filebrowser/database:/database
- ${APPDATA}/filebrowser/config:/config
labels:
- traefik.enable=true
- traefik.http.routers.filebrowser.entrypoints=websecure
- traefik.http.routers.filebrowser.tls.certresolver=letsencrypt
- traefik.http.routers.filebrowser.rule=Host(`filebrowser.<domain_name>`)
- traefik.http.routers.filebrowser.service=filebrowser-svc
- traefik.http.services.filebrowser-svc.loadbalancer.server.port=80