Tech Digest

Photos and files

File Browser

Single-binary web file manager for a directory you already have. Archived on 2026-09-01

Photos and filesApache-2.0Slowedarm64 builds
Last reviewed Profile maintained against the project's own documentation
Operational load
1 / 5
Set and forget
Idle memory
20 MB
typical use ~80 MB
Moving parts
1
containers in a normal deployment
Backup shape
Mixed
needs a dump or a stop

File Browser puts a web UI over one directory on your server for uploading, downloading, previewing, renaming and sharing files, in a single Go binary with a small embedded database. The original project was archived on 1 September 2026 and receives no further releases, bug fixes or security fixes.

Our verdict on File Browser#

Treat this as end of life. The README carries an unambiguous notice: "File Browser is archived on 2026-09-01. The last planned release has already shipped. There will be no further releases, bug fixes, or security fixes." v2.63.23 (27 July 2026) is the final version. The maintainers also documented two issue classes they will not fix. Command execution, the runner and hooks have produced repeated advisories and would need a rewrite; it is off by default and --disable-exec=false should be read as granting shell access to the host. Sessions are self-contained JWTs rather than server-side identifiers, so logout, password change and renewal all leave previously issued tokens valid until expiry, and a refresh token can be redeemed repeatedly. Assume a leaked token stays live. If you still need this shape of tool, the active successor is FileBrowser Quantum (gtsteffaniak/filebrowser), Apache-2.0, with OIDC and indexed SQLite search, currently at 1.5.x stable with 2.0 in beta.

Who File Browser is for#

Choose it if

  • A throwaway internal file drop on a LAN or behind a VPN, where the blast radius is a single mounted directory
  • Giving a non-technical household member browser access to one folder on the NAS without teaching them SFTP
  • Sitting alongside another service as a lightweight way to move files into a mounted volume
  • Anyone who wants a working reference implementation to fork, since the licence is Apache-2.0

Look elsewhere if

  • It would be reachable from the internet: the project itself says do not expose it directly and will not ship security fixes
  • You need OIDC, revocable sessions or auditable multi-user access; look at FileBrowser Quantum or a real file-sync product
  • You are choosing something new to standardize on, because archived means the clock is already running

What running it actually looks like#

One container, one mount. The Alpine image serves on port 80 inside the container (the docs map it to 8080) and wants three volumes: /srv for the files you are exposing, /database for filebrowser.db, and /config for settings.json. Both files are created automatically if absent. The process runs as UID/GID 1000, and with bind mounts you have to fix ownership on the host yourself; Docker will not. There is an s6 variant that honors PUID/PGID. On first boot it enters quick setup, bootstraps the database and prints a randomly generated password for the admin user to the console log exactly once. Miss it and the documented recovery is deleting the database and starting over. Nothing else has to exist first: no reverse proxy, no external database.

Resource profile#

Memory
20 MB idle, around 80 MB in ordinary use. A single Go process with an embedded key-value store and no worker pool; large uploads and image preview generation are the only things that move the number. Estimate from typical installs, no documented minimum exists.
CPU and acceleration
Effectively free at rest. Directory listing is a stat walk, so very large directories on spinning disks or network mounts feel slow because of I/O, not CPU.
Storage growth
Stores nothing of its own beyond the `filebrowser.db` file (a few megabytes) and `settings.json`; all growth is the files you put in the served directory.
Operational load
1 of 5, Set and forget. One container, one database file, backup is a file copy. The score reflects running it, not its future: with the project archived, the ongoing cost has shifted from upgrades to deciding when to migrate off it.

Figures describe a small single-household install and are the working assumptions behind our stack planner. Your numbers will differ with library size, user count and hardware. See methodology.

Data and backup surface#

Two small files plus whatever you mounted. filebrowser.db (Bolt) holds users, settings, share links and per-user scopes; settings.json holds the startup configuration. Both are safe to copy while the process is running for anything short of a concurrent write, but stopping the container for the copy costs you seconds and removes the question. Everything under /srv is your data and belongs to whatever backup already covers that path, since File Browser stores nothing of its own there. There is nothing regenerable to exclude and no cache. Restoring is copying the two files back and starting the container.

Derived backup shape

Mixed. Stop the service, copy its data directory, restart. Check upstream docs for a supported export command first.

Traps and surprises#

Archived on 2026-09-01, no security fixes

The repository is read-only and the README states there will be no further releases, bug fixes or security fixes. v2.63.23 from 27 July 2026 is the end of the line. Anything found after that date stays unfixed unless you fork and patch it yourself. If this is running anywhere with real exposure, put a migration to FileBrowser Quantum or another tool on the calendar rather than waiting for an advisory to force it.

JWT sessions cannot be revoked

Sessions are self-contained JWTs, not server-side identifiers. Logging out, changing a password or removing a user does not invalidate tokens already issued; they stay valid until they expire, and the same refresh token can be redeemed more than once. Documented, acknowledged, will not be fixed. If a token leaks, the only real remedy is blocking access at the proxy layer or rotating the signing key by rebuilding the database.

The command runner is shell access

Command execution, the runner and the hooks feature account for many of the project's published advisories. It ships disabled and the maintainers say making it safe would require a full rewrite. If you re-enable it with --disable-exec=false, treat any authenticated user as having shell access on the host with the container's privileges. Leave it off, and run the container unprivileged with only the directory you intend to serve mounted.

The initial admin password prints once

Quick setup generates a random password for admin and writes it to the console log at first start. It is never shown again. If you did not capture the log line, the documented fix is deleting filebrowser.db and starting over, which also discards users and share links. Set the credentials deliberately with filebrowser config init and config set instead of letting quick setup do it.

The successor is a fork, not an upgrade

FileBrowser Quantum (gtsteffaniak/filebrowser, Apache-2.0) is where development moved: OIDC and LDAP, 2FA, SQLite-backed indexed search, YAML configuration, and the shell command feature deliberately removed. It is a rewrite of substantial parts, configured through config.yaml rather than the original's settings.json plus Bolt database, so moving over means recreating users and shares by hand. Do not expect to point it at your existing filebrowser.db.

Specifications#

Category
Photos, files and sync
Licence
Apache-2.0 (Permissive)
Written in
Go, with a Vue frontend
First release
2015
Maturity
Slowed
Datastore
Bolt, a single embedded `filebrowser.db` file
Default ports
8080
Ships as
docker, single binary, brew tap
arm64 builds
Yes
Identity
Trusted proxy header. Authentication is local JSON accounts, a proxy header method that trusts an upstream-injected username, a command hook, or no auth at all; there is no OIDC and sessions are unrevocable JWTs.
Replaces
Dropbox (browser access), cPanel File Manager, WeTransfer, Windows file share over VPN
Project site
github.com/filebrowser/filebrowser
Source
github.com/filebrowser/filebrowser
Documentation
github.com/filebrowser/filebrowser/tree/master/docs

Alternatives to File Browser#

Everything else in photos, files and sync, closest in operational weight first.

ToolOps loadIdle RAMLicence
Syncthing1, Set and forget60 MBMPL-2.0
PhotoPrism2, Light450 MBAGPL-3.0 (Community Edition); default images ship under the PhotoPrism Plus License
Immich3, Moderate900 MBAGPL-3.0
Seafile3, Moderate700 MBGPL-2.0 with an OpenSSL linking exception (server, Community Edition); Professional Edition is proprietary
Nextcloud4, Heavy600 MBAGPL-3.0-or-later

Where File Browser comes up elsewhere#

Sources#

Published . Last reviewed . Found something out of date? Tell us and we will fix it and log the change.