# Verified compose for File Browser, tested 2026-10-16 by the SelfHostBench lab (3 runs; the figures are the median). # Lab host: AMD EPYC 9V45 96-Core Processor, 2 vCPU, 7.8 GiB RAM, x86_64, Docker 28.0.4. # Floating image tags below were replaced by the version resolved at test time; # the registry digest is in the comment on each image line. # Measurements: filebrowser.json (schema 3). # Companion env file: filebrowser.env (save it as .env next to this file). # Secrets are not published: the lab's values are public. In filebrowser.env: # FB_ADMIN_PASSWORD_HASH is commented out. Uncomment it and set your own value (the comment above it explains how). # File Browser 2.63.23: a web file manager for one directory on the server. Single container, no database server (it keeps users and settings in a Bolt file). # # THE PROJECT IS ARCHIVED. 2.63.23 (27 Jul 2026) is the last release; the repository was archived on 2026-09-01 and the README says there will be no further # releases, bug fixes or security fixes, and lists known unfixed issues (revocable sessions, the command runner). The image still works and stays on Docker Hub. # If you run it anyway: keep it behind a reverse proxy with TLS, do not expose it directly, leave the command runner off (it is off by default). # # Follows the Docker section of the project's installation docs (docs/installation.md at v2.63.23: the bare image, three volumes, port 80, runs as UID/GID 1000). # Differences from the docs, all marked below: a pinned tag, the admin password set through the environment (the docs let File Browser print a random one into the log), named volumes # instead of /path bind mounts, a localhost-only port. name: filebrowser services: filebrowser: image: filebrowser/filebrowser:v2.63.23 # sha256:a469ea076d4a1b4b1d86a41d130f2f536cd9da996a2b1fb39c0d7635f9d89b9a (version 2.63.23, from label:org.opencontainers.image.version) restart: unless-stopped ports: # Localhost only. A reverse proxy on the host sends traffic here. The docs publish 8080:80 on every interface. - "127.0.0.1:8080:80" environment: # First start only (the database does not exist yet, so File Browser runs its "quick setup"): the first user. Later changes here do nothing; # change the password in the web interface (Settings > Profile) or with `filebrowser users update`. FB_USERNAME: "${FB_ADMIN_USERNAME:-admin}" # A bcrypt HASH, not the password (this is what the --password flag of the quick setup takes). Make it with: # docker run --rm filebrowser/filebrowser:v2.63.23 hash 'your long password' # and put it in .env between single quotes (it contains $ signs). Without a value File Browser generates a random password and prints it once in the # log (docker compose logs filebrowser), which is what the docs describe; here a value is required so the first login is known. FB_PASSWORD: "${FB_ADMIN_PASSWORD_HASH:?set FB_ADMIN_PASSWORD_HASH in .env}" volumes: # The files File Browser serves and manages. This is your data: back it up. - filebrowser-data:/srv # filebrowser.db: users, settings, shares. Back it up with the data. - filebrowser-database:/database # settings.json (port, log target, paths). The first start copies the defaults here. - filebrowser-config:/config healthcheck: # The image's own check (GET /health with wget, every 5 s), written out so it is visible. It comes from the image's HEALTHCHECK; this line is the same. test: ["CMD-SHELL", "/healthcheck.sh"] interval: 5s timeout: 3s start_period: 2s retries: 3 volumes: filebrowser-data: filebrowser-database: filebrowser-config: