Skip to content

File Browser is a docker contained app that serve a web interface to access a device file system.

Before installing it using docker, we’ll need 2 files :

  • .filebrowser.json : Which contain config for the app

    {
    "port": 80,
    "baseURL": "/",
    "address": "",
    "log": "stdout",
    "database": "/database.db",
    "root": "/srv"
    }
  • filebrowser.db : copied from a previous backup or newly created

We can now install it by running the following docker-compose :

version: '3.8'
services:
files-cloudlab:
image: filebrowser/filebrowser
container_name: file-browser
user: root
volumes:
- /:/srv
- /data/docker/file-browser/filebrowser.db:/database.db
- /data/docker/file-browser/.filebrowser.json:/.filebrowser.json
- /data/docker/file-browser/custom.css:/custom/custom.css
ports:
- 8010:80
restart: unless-stopped
networks:
- homelab
deploy:
labels:
- traefik.http.services.files-cloudlab.loadbalancer.server.port=80
- traefik.http.routers.files-cloudlab.rule=Host(`files-cloudlab.zrx.sh`)
- traefik.http.routers.files-cloudlab.middlewares=homelab-whitelist@file
- traefik.http.routers.files-cloudlab.tls=true
- traefik.http.routers.files-cloudlab.tls.certresolver=production
- traefik.http.routers.files-cloudlab.tls.domains[0].main=zrx.sh
- traefik.http.routers.files-cloudlab.tls.domains[0].sans=*.zrx.sh
placement:
constraints:
- node.hostname == cloudlab
files-vulcain:
image: filebrowser/filebrowser
user: root
volumes:
- /:/srv
- /data/docker/file-browser/filebrowser.db:/database.db
- /data/docker/file-browser/.filebrowser.json:/.filebrowser.json
- /data/docker/file-browser/custom.css:/custom/custom.css
ports:
- 8011:80
restart: unless-stopped
networks:
- homelab
deploy:
labels:
- traefik.http.services.files-vulcain.loadbalancer.server.port=80
- traefik.http.routers.files-vulcain.rule=Host(`files-vulcain.zrx.sh`)
- traefik.http.routers.files-vulcain.middlewares=homelab-whitelist@file
- traefik.http.routers.files-vulcain.tls=true
- traefik.http.routers.files-vulcain.tls.certresolver=production
- traefik.http.routers.files-vulcain.tls.domains[0].main=zrx.sh
- traefik.http.routers.files-vulcain.tls.domains[0].sans=*.zrx.sh
placement:
constraints:
- node.hostname == vulcain
files-neptune:
image: filebrowser/filebrowser
user: root
volumes:
- /:/srv
- /data/docker/file-browser/filebrowser.db:/database.db
- /data/docker/file-browser/.filebrowser.json:/.filebrowser.json
- /data/docker/file-browser/custom.css:/custom/custom.css
ports:
- 8012:80
restart: unless-stopped
networks:
- homelab
deploy:
labels:
- traefik.http.services.files-neptune.loadbalancer.server.port=80
- traefik.http.routers.files-neptune.rule=Host(`files-neptune.zrx.sh`)
- traefik.http.routers.files-neptune.middlewares=homelab-whitelist@file
- traefik.http.routers.files-neptune.tls=true
- traefik.http.routers.files-neptune.tls.certresolver=production
- traefik.http.routers.files-neptune.tls.domains[0].main=zrx.sh
- traefik.http.routers.files-neptune.tls.domains[0].sans=*.zrx.sh
placement:
constraints:
- node.hostname == neptune
networks:
homelab:
external: true

We serve here all or folders by setting the /srv folder to /