Installer File Browser avec Docker

Guide d'installation de File Browser sous Docker

Installer File Browser avec Docker
filebrowser 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.

Virtualiser Ubuntu Server sur Proxmox VE
Guide d’installation de Ubuntu Server sur Proxmox VE avec mes meilleurs réglages.

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.

Initialiser vos machines virtuelles avec Cloud-init sur Proxmox VE
Guide d’installation de Cloud-Init qui va vous permettre d’automatiser vos déploiements

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.

Installer Docker
Guide d’installation de Docker.

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.

Installer Traefik avec Docker
Guide d’installation de Traefik.

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