The fastest way to get started with FileBrowser Quantum.

Available Images

Images from Docker Hub (gtstef/filebrowser) and GitHub Container Registry (ghcr.io/gtsteffaniak/filebrowser):

TagSizeFeaturesArchitectures
latest, stable60 MBFFmpeg + document previewarm64, amd64
stable-slim15 MBCore service only (no media/office)arm64, arm32, amd64
beta60 MBFFmpeg + document previewarm64, amd64
beta-slim15 MBCore service only (no media/office)arm64, arm32, amd64

Quick Try

Test without persistence (changes not saved):

BASH
1
2
3
4
docker run -d \
  -v /path/to/your/folder:/srv \
  -p 80:80 \
  gtstef/filebrowser:beta

Access at http://localhost with admin / admin

Production Setup with Docker Compose

Step 1: Create Structure

BASH
1
2
mkdir -p filebrowser/data
cd filebrowser

Step 2: Create Config

Create a data directory and add a new config.yaml file in the same directory:

BASH
1
mkdir data && touch data/config.yaml

Then fill out your config as needed, for example:

YAML
1
2
3
4
5
server:
  sources:
    - path: /folder
      config:
        defaultEnabled: true

Step 3: Create Docker Compose

Create docker-compose.yaml:

YAML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
services:
  filebrowser:
    image: gtstef/filebrowser:beta
    environment:
      FILEBROWSER_CONFIG: "data/config.yaml" # overrides the default path which is ./config.yaml
      FILEBROWSER_ADMIN_PASSWORD: "change-me"
      # TZ: "America/New_York"
    volumes:
      - /path/to/your/files:/folder
      - ./data:/home/filebrowser/data
    ports:
      - 80:80
    restart: unless-stopped

Step 4: Start

BASH
1
docker compose up -d

Running as Non-Root

FileBrowser Quantum docker images have a non-default filebrowser user built-in. This user has UID:GID of 1000:1000. You can use it by specifying a user in docker compose.

Add to docker-compose.yaml:

YAML
1
2
3
4
5
6
7
8
services:
  filebrowser:
    environment:
      FILEBROWSER_CONFIG: "data/config.yaml" # overrides the default path which is ./config.yaml
    user: filebrowser
    volumes:
      - /path/to/files:/folder
      - ./data:/home/filebrowser/data

You can also specify any user UID:GID, but you will also need to mount a temp directory that the user has filesystem permissions to. (See cacheDir config)

YAML
1
2
3
4
5
6
7
8
9
services:
  filebrowser:
    environment:
      FILEBROWSER_CONFIG: "data/config.yaml" # overrides the default path which is ./config.yaml
    user: "${UID}:${GID}" # Using environment variables for flexibility
    volumes:
      - /path/to/files:/folder
      - ./data:/home/filebrowser/data
      - ./tmp:/home/filebrowser/tmp  # Required if uid other than 1000

Next Steps