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 /