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:
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.