Sometimes you just need a simple way to browse and manage files on your server through a web browser. No complex sync engine, no collaboration features, no bloat — just a clean file manager that works. That’s exactly what Filebrowser delivers.

Filebrowser gives you a web-based file manager with upload, download, rename, delete, and sharing capabilities. It’s a single binary (or Docker container), uses almost no resources, and takes about two minutes to set up.

What Is Filebrowser?

Filebrowser is an open-source, self-hosted web application that provides a file management interface. Think of it as a web-based alternative to SSH + terminal file management.

Features include:

  • Browse files and directories with a clean, responsive UI
  • Upload and download files and folders (drag-and-drop supported)
  • Create, rename, move, and delete files and directories
  • Built-in code editor for text files
  • Share files via temporary links (with optional password and expiry)
  • User management with permissions and scope restrictions
  • Command runner for executing predefined commands
  • Search across your files
  • Multiple themes including dark mode

Prerequisites

  • A Linux server with Docker and Docker Compose installed
  • A directory you want to manage via the web UI
  • Optional: a reverse proxy for HTTPS access (Traefik, Nginx Proxy Manager, or Caddy)

Step 1: Docker Compose Setup

Create a directory for Filebrowser:

mkdir -p ~/filebrowser && cd ~/filebrowser

Create docker-compose.yml:

services:
  filebrowser:
    image: filebrowser/filebrowser:latest
    container_name: filebrowser
    restart: unless-stopped
    ports:
      - "8085:80"
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      # The directory you want to manage:
      - /path/to/your/files:/srv
      # Filebrowser config and database:
      - ./filebrowser.db:/database/filebrowser.db
      - ./settings.json:/config/settings.json

Create a minimal settings.json:

{
  "port": 80,
  "baseURL": "",
  "address": "",
  "log": "stdout",
  "database": "/database/filebrowser.db",
  "root": "/srv"
}

Deploy:

docker compose up -d

Access Filebrowser at http://your-server-ip:8085.

Step 2: First Login and Security

Default credentials:

  • Username: admin
  • Password: admin

Change these immediately:

  1. Log in with the defaults
  2. Click the user icon in the top-right → Settings
  3. Update your password
  4. Optionally change the username

Step 3: Set Up Users and Permissions

Filebrowser supports multiple users, each with their own:

  • Scope — the directory they can access (sandboxed)
  • Permissions — create, rename, modify, delete, download, share, execute
  • Locale and theme preferences

To add a user:

  1. Go to SettingsUser Management
  2. Click New
  3. Set username, password, and scope (e.g., /photos maps to /srv/photos)
  4. Toggle permissions as needed

This is great for giving family members access to shared files without exposing your entire filesystem.

Permission Presets

User TypePermissions
AdminAll permissions
UploaderCreate, modify (no delete)
ViewerDownload only (no create/modify/delete)
SharerDownload + share (read-only + sharing links)

Step 4: File Sharing

Filebrowser can generate shareable links for files and directories:

  1. Select a file or folder
  2. Click the Share button
  3. Configure:
    • Expiry — link auto-expires after a set time
    • Password — optional password protection
    • Unit — hours, days, or no expiry
  4. Copy and share the generated link

This is useful for sending large files to people without requiring them to create an account.

Note: Shared links require your Filebrowser instance to be accessible from the internet (via reverse proxy with HTTPS).

Step 5: HTTPS with a Reverse Proxy

Never expose Filebrowser over plain HTTP, especially with file sharing enabled.

Traefik Labels

services:
  filebrowser:
    image: filebrowser/filebrowser:latest
    container_name: filebrowser
    restart: unless-stopped
    volumes:
      - /path/to/files:/srv
      - ./filebrowser.db:/database/filebrowser.db
      - ./settings.json:/config/settings.json
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.filebrowser.rule=Host(`files.example.com`)"
      - "traefik.http.routers.filebrowser.entrypoints=websecure"
      - "traefik.http.routers.filebrowser.tls.certresolver=letsencrypt"
      - "traefik.http.services.filebrowser.loadbalancer.server.port=80"
    networks:
      - traefik

networks:
  traefik:
    external: true

Nginx Proxy Manager

  1. Add a Proxy Host
  2. Domain: files.example.com
  3. Forward to: filebrowser port 80
  4. Enable SSL with Let’s Encrypt

Step 6: Custom Commands (Optional)

Filebrowser can execute shell commands on selected files. This is powerful for workflows like:

  • Compressing files/directories
  • Converting media formats
  • Running scripts on uploaded files

Go to SettingsGlobal SettingsCommands and define commands:

#B#AefEfEtxoxeararmemppulclpeoel:p:oyac:gdoe:mtnpaecrrroeansctvszeefratt$hdFu$iImFrLbIeEnLc.aEttioal-rrsry.egsziz$eFI2L0E0x200${FILE}_thumb.jpg

Security warning: Only enable command execution for trusted admin users. Disable it for regular users by unchecking the “Execute” permission.

Step 7: Managing Large File Libraries

Filebrowser works well for managing various types of file collections:

Use CaseMount Path
Media server files/mnt/media:/srv
Document archive/home/user/documents:/srv
Shared family files/mnt/shared:/srv
Backup browser/mnt/backups:/srv (read-only)
Download directory/downloads:/srv

For read-only access to sensitive directories (like backups), mount with :ro:

volumes:
  - /mnt/backups:/srv:ro

Step 8: Branding (Optional)

Customize the Filebrowser interface:

  1. Go to SettingsGlobal Settings
  2. Set Instance Name (shown in the browser tab)
  3. Upload a custom Logo
  4. Choose default Theme (light/dark)

Updating Filebrowser

cd ~/filebrowser
docker compose pull
docker compose up -d

Or use Watchtower for automatic updates.

Troubleshooting

Permission denied on files

The container runs as PUID/PGID specified in the environment. Make sure these match the ownership of your files:

# Check file ownership
ls -la /path/to/your/files

# Set ownership if needed
chown -R 1000:1000 /path/to/your/files

Upload fails for large files

If you’re behind a reverse proxy, increase the max body size:

Nginx:

client_max_body_size 10G;

Traefik:

labels:
  - "traefik.http.middlewares.filebrowser-size.buffering.maxRequestBodyBytes=10737418240"

Database locked errors

This happens if multiple processes access the database. Ensure only one Filebrowser instance is running:

docker ps | grep filebrowser

Slow browsing on large directories

Filebrowser loads directory listings on demand. For directories with thousands of files, initial load may be slow. Consider organizing files into subdirectories.

Filebrowser vs Alternatives

FeatureFilebrowserNextcloudSeafile
Resource usage~20MB RAM~500MB+ RAM~200MB RAM
Setup complexity2 minutes15 minutes10 minutes
File syncNoYesYes
Mobile appWeb onlyYesYes
CollaborationNoYesYes
SharingBasic linksFull sharingFull sharing

Choose Filebrowser when you need a simple, lightweight file browser without sync or collaboration features. For full cloud storage with sync, use Nextcloud instead.

Conclusion

Filebrowser is the Swiss Army knife of self-hosted file management. It does one thing — lets you manage files through a web browser — and does it well. At ~20MB of RAM and zero configuration complexity, it’s the kind of tool you install once and forget about until you need it.

Perfect for managing media libraries, sharing files with family, browsing backups, or just having a web GUI for your server’s filesystem without SSHing in every time.

Related guides: