Skip to content

File Browser

Docker Compose deployment guide for File Browser on Ubuntu.

File Browser provides a simple, fast web interface for browsing, uploading, downloading and managing files on your server. It is an excellent replacement for opening an SSH session simply to copy or organise files.

I use File Browser extensively to manage files across my homelab, including local Docker folders, user home directories and multiple Synology NAS shares, all from a single web interface.

Official project:


Create the Project

Create a directory for File Browser:

/opt/docker/filebrowser

Move into it:

cd /opt/docker/filebrowser

Create the Docker Compose File

Create:

/opt/docker/filebrowser/docker-compose.yml

Paste:

services:
  filebrowser:
    image: filebrowser/filebrowser:latest
    container_name: filebrowser

    ports:
      - "7080:80"

    volumes:
      - ./data:/srv
      - ./filebrowser.db:/database/filebrowser.db

    restart: unless-stopped

    command:
      - --database
      - /database/filebrowser.db
      - --root
      - /srv

Start File Browser

Start the container:

docker compose up -d

Check the logs:

docker logs -f filebrowser

Access the Web Interface

Open:

http://SERVER-IP:7080

Example:

http://192.168.1.100:7080

The default credentials are:

Username: admin
Password: admin

You should change the password immediately after your first login.


Adding Folders

Simply mount any folder you wish to access into the container.

Example:

volumes:
  - /home:/srv/home
  - /opt/docker:/srv/docker
  - /mnt/storage:/srv/storage

Each mounted directory appears as a folder within File Browser.


Features

File Browser supports:

  • File uploads and downloads
  • Drag-and-drop file management
  • Folder creation
  • Rename, copy and delete operations
  • ZIP archive creation
  • File previews
  • Image viewing
  • User accounts
  • Permissions
  • Dark mode

Reverse Proxy (Optional)

If you already use a reverse proxy such as Caddy, you may prefer to expose File Browser through a subdomain.

Example:

https://files.example.com

This provides HTTPS without exposing the container port directly.

If you are new to reverse proxies, see the Topic page:

What is a Reverse Proxy?


Security Considerations

File Browser has access to every directory you mount into the container.

Only mount folders that you actually want to manage through the web interface.

For internet-facing deployments, consider:

  • HTTPS
  • Strong passwords
  • Two-factor authentication (through your reverse proxy if supported)
  • Restricting access to trusted users

Advanced Example (Reference Only)

This is the configuration I currently use in my own homelab.

services:
  filebrowser:
    image: filebrowser/filebrowser:latest
    container_name: filebrowser
    stop_grace_period: 30s
    user: "0:0"

    volumes:
      - /home:/srv/minipc/home
      - /opt/docker:/srv/minipc/docker
      - /mnt/sjb2:/srv/sjb2
      - /mnt/sjb:/srv/sjb
      - /mnt/micropc:/srv/micropc
      - /mnt/micro2pc:/srv/micro2pc
      - ./filebrowser.db:/database/filebrowser.db
      - ./settings.json:/config/settings.json

    entrypoint: >
      /bin/sh -c "
      echo 'Waiting for network mounts to initialize...';
      while [ ! -d /srv/sjb/home ]; do
        sleep 2;
      done;
      echo 'Mount detected! Launching Filebrowser.';
      exec filebrowser --database /database/filebrowser.db --config /config/settings.json"

    ports:
      - 7080:80

    restart: unless-stopped

This configuration adds:

  • Access to multiple servers
  • Access to two Synology NAS devices
  • Persistent database
  • Persistent configuration
  • Automatic waiting for network storage before startup

The custom entrypoint prevents File Browser from starting before network-mounted storage is available. This avoids empty folders appearing if the NAS is still mounting during server startup.


Why Wait for Network Mounts?

If File Browser starts before NFS or SMB shares are mounted, it will see empty directories instead of the network storage.

Rather than failing, it simply starts with incomplete folders, which can be confusing.

A simple startup loop such as:

while [ ! -d /srv/sjb/home ]; do
    sleep 2
done

ensures the required storage is available before launching Filebrowser.

This approach works particularly well on homelab servers where NAS devices may take a little longer than Docker to become available after a reboot.


Updating File Browser

Pull the latest image:

docker compose pull

Restart the container:

docker compose up -d

Backups

Back up:

filebrowser.db
settings.json

along with any folders you have mounted into the container.

The database contains users, permissions and configuration.


Final Thoughts

File Browser has become one of my most frequently used homelab applications. It provides a fast, lightweight way to manage files across multiple Linux servers and Synology NAS devices without needing an SSH session, making everyday administration considerably easier.