Sometimes you just want to upload, download, rename and share files on your server from a web browser, without SFTP clients or a full cloud suite. File Browser is a tiny Go application that does exactly that: a clean web UI over a directory of your choice, with users, permissions and share links. It’s handy for sharing downloads, managing a media folder, or giving non-technical colleagues access to specific files.

When to use it, and when not

Good for: simple file management on a VPS, quick sharing links, letting someone upload files to one folder, and managing media libraries (Jellyfin, Plex) or website assets.

Not a replacement for: sync clients (use Syncthing, Nextcloud, Seafile or oCIS) or secure admin access to the whole server (use SSH and SFTP). See Seafile and Syncthing.

Install with Docker

sudo mkdir -p /opt/filebrowser /srv/files
sudo touch /opt/filebrowser/database.db
sudo chown -R 1000:1000 /opt/filebrowser /srv/files

docker run -d --name filebrowser --restart unless-stopped \
  -p 127.0.0.1:8080:80 \
  -v /srv/files:/srv \
  -v /opt/filebrowser/database.db:/database.db \
  -u 1000:1000 \
  filebrowser/filebrowser
  • /srv/files on the host is what users see as the root. Mount only the directory you want to expose, never /.
  • Bind to 127.0.0.1, and publish it through a reverse proxy with HTTPS (below).

Check the logs for the initial admin credentials. Recent versions print a generated password at first start (older versions used admin/admin):

docker logs filebrowser

Change the admin password immediately after the first login.

Or the binary

curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
filebrowser -r /srv/files -a 127.0.0.1 -p 8080 -d /opt/filebrowser/database.db

Read the install script before running it, and run the binary under a dedicated user with systemd. See systemd unit files.

HTTPS with Nginx

server {
    server_name files.example.com;
    client_max_body_size 0;          # allow large uploads
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    # listen 443 ssl; certbot --nginx -d files.example.com
}

See Nginx reverse proxy and Let’s Encrypt.

Users and permissions

In Settings → User Management, create users with:

  • a scope (a subfolder as their root, e.g. /clients/acme), so each user only sees their own area;
  • permissions: create, rename, modify, delete, share, download, execute commands;
  • disable “Execute commands” (the command runner) for everyone except, at most, a trusted admin. It runs shell commands on the server.

Global settings let you disable signup, and set defaults for new users.

Select a file or folder → Share → choose an expiry time and an optional password. You get a public link. Use expiries, so links don’t stay valid forever. Shared links bypass login, so treat them as public.

Security checklist

  • HTTPS only, behind a reverse proxy.
  • A strong admin password, and user accounts scoped to specific folders.
  • Command execution disabled.
  • Expose only the directories you intend to (container mounts).
  • Consider extra protection for admin access: an IP allow-list, VPN access, or an authentication proxy in front (Authelia, Cloudflare Access). See zero trust networking.
  • Back up the database.db (users and settings) along with the files themselves. See backup strategy.

Alternatives

Need Tool
Admin access to the whole server SFTP (FileZilla, WinSCP) over SSH. See scp
Sync between devices Syncthing, Seafile, Nextcloud, oCIS
Mount a remote folder locally SSHFS. See SSHFS
Web UI with more features Nextcloud / oCIS

Quick reference

Task Command / setting
Run docker run … -v /srv/files:/srv filebrowser/filebrowser
Initial password docker logs filebrowser
User scope Settings → User Management → Scope
Disable commands Uncheck “Execute commands”
Large uploads Nginx client_max_body_size 0

Related: ownCloud Infinite Scale and Docker security.

  • Self-Hosting
  • File Management
  • Docker