diff --git a/content/en/docs/getting-started/_index.md b/content/en/docs/getting-started/_index.md index 166c2e8..736f4dc 100644 --- a/content/en/docs/getting-started/_index.md +++ b/content/en/docs/getting-started/_index.md @@ -3,12 +3,16 @@ title: "Getting Started" description: "Quick start guides for all platforms" icon: "rocket_launch" date: "2025-10-08T14:59:30Z" -lastmod: "2026-07-24T01:02:28Z" +lastmod: "2026-08-10T00:00:00Z" order: 1 --- +{{% alert context="info" %}} +**Documentation versions:** Getting started guides target **v2.0.0 (beta)** by default. Using **v1.5.x (stable)**? Each guide links to its v1.5.x counterpart — for example {{< doclink path="getting-started/docker-v1.5.x" text="Docker (v1.5.x)" />}} or {{< doclink path="getting-started/config-v1.5.x" text="Configuration (v1.5.x)" />}}. +{{% /alert %}} + {{% alert context="warning" %}} **Upgrading to v2.0.0?** -v2.0.0 requires a config update and a one-time BoltDB → SQLite migration. Back up `database.db`, then follow the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before changing your image tag. +v2.0.0 requires a config update and a one-time database migration from the legacy format. Back up `database.db`, then follow the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before changing your image tag to `beta`. {{% /alert %}} diff --git a/content/en/docs/getting-started/config-v1.5.x.md b/content/en/docs/getting-started/config-v1.5.x.md new file mode 100644 index 0000000..1efe0ac --- /dev/null +++ b/content/en/docs/getting-started/config-v1.5.x.md @@ -0,0 +1,178 @@ +--- +title: "Configuration Files (v1.5.x)" +description: "Understanding and using configuration files in FileBrowser v1.5.x (stable)" +icon: "settings" +date: "2025-10-23T00:50:09Z" +lastmod: "2026-08-10T00:00:00Z" +order: 106 +--- + +{{% alert context="info" %}} +**This guide is for v1.5.x and older (stable).** It uses the **legacy database** (`database.db`) and the flat `server.database` config format. + +Looking for **v2.0.0 (beta)**? See the {{< doclink path="getting-started/config" text="v2.0.0 configuration guide" />}} instead. +{{% /alert %}} + +{{% alert context="warning" %}} +**Planning to upgrade to v2.0.0?** + +v2.0.0 replaces the legacy database with a new database format and restructures configuration. Follow the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before upgrading. +{{% /alert %}} + +## What is a Config File? + +A configuration file (config file) is a YAML file that defines how FileBrowser Quantum should work. While FileBrowser can run without a config file using default settings, a config file is *generally necessary* and allows you to customize: + +- Server settings (port, database location, sources) +- Authentication methods (password, OIDC, proxy) +- User management and permissions +- Frontend customization (themes, branding) +- Media and office integrations + +See an example [config file on Github](https://github.com/gtsteffaniak/filebrowser/blob/main/backend/config.yaml). + +## How to Specify a Config File + +FileBrowser looks for configuration in the following order of priority: + +### 1. Command Line Argument +```bash +./filebrowser -c /path/to/config.yaml +``` + +### 2. Environment Variable +```bash +export FILEBROWSER_CONFIG="/path/to/config.yaml" +./filebrowser +``` + +### 3. Default Locations +- Current directory (`./config.yaml`) +- Docker default: `/home/filebrowser/data/config.yaml` + +## Database Path Configuration + +The database path is configured in the `server.database` setting. See {{< doclink path="configuration/server/#database" text="Server configuration" />}} for details. + +**Default database locations:** +- Standalone: `./database.db` (current directory) +- Docker: first checks `/home/filebrowser/data/database.db`, then `./database.db` (current directory) + +**Priority for database path:** +1. Path specified in `config.yaml` via `server.database` +2. Default location based on deployment type (standalone vs Docker) + +## Docker Configuration + +### Using Docker Run +```bash +# Mount your config file +docker run -d \ + -v /path/to/your/config.yaml:/home/filebrowser/data/config.yaml \ + -v /path/to/your/folder:/folder \ + -p 80:80 \ + gtstef/filebrowser:stable +``` + +### Using Docker Compose + +
+ +{{% alert context="info" %}} +Mount a host directory on `/home/filebrowser/data` if you want config, database, and cache to persist across container restarts (see {{< doclink path="getting-started/docker/" text="Docker setup" />}}). +{{% /alert %}} + +```yaml +services: + filebrowser: + volumes: + - '/path/to/folder:/folder' + - './data:/home/filebrowser/data' + ports: + - '80:80' + image: gtstef/filebrowser:stable + restart: unless-stopped +``` + +
+ +## Basic Configuration Example + +Here's a minimal config file to get you started: + +```yaml +server: + sources: + - path: "/path/to/your/files" # or '/folder' in above example (do not load the full os filesystem, must be sub path) + config: + defaultEnabled: true # Give access to all users by default + +auth: + adminUsername: admin + adminPassword: admin +``` + +## Configuration Options + +FileBrowser supports extensive configuration options. You can view the complete configuration reference at: + +- **Full config example**: {{< doclink path="reference/fullConfig/" text="Full Config Example" />}} +- **Current config**: In the web UI, Admins can go to Settings > System & Admin > Load Config + +### Key Configuration Sections + +- **Server Settings**: Port, database, sources, caching +- **Authentication**: Password, OIDC, proxy authentication +- **UsersDefaults**: New user defaults +- **Frontend**: UI customization, themes, branding +- **Integrations**: Media (FFmpeg) and office (OnlyOffice) support + +## Best Practices + +### 1. Keep It Simple +Only configure the settings you need. A minimal config is easier to read and maintain: + +```yaml +server: + sources: + - path: "/data" + config: + defaultEnabled: true + +auth: + adminUsername: admin +``` + +### 2. Use Environment Variables for Secrets +Instead of putting secrets in your config file, use {{< doclink path="reference/environment-variables" text="environment variables" />}}: + +```yaml +auth: + methods: + oidc: + enabled: true +``` + +And set environment variables: +```bash +FILEBROWSER_ADMIN_PASSWORD="mysecurePassword" +FILEBROWSER_OIDC_CLIENT_ID=exampleID +FILEBROWSER_OIDC_CLIENT_SECRET=exampleSecret +``` + +### 3. Restart After Changes +Configuration changes require a restart to take effect: + +```bash +# Stop FileBrowser +# Edit your config.yaml +# Start FileBrowser again +./filebrowser -c config.yaml +``` + +## Next Steps + +- {{< doclink path="configuration/configuration-overview/" text="Configuration Overview" />}} - Complete configuration guide +- {{< doclink path="reference/fullconfig/" text="Full Configuration Reference" />}} - All available options +- {{< doclink path="configuration/sources/" text="Source Configuration" />}} - Configure file sources +- {{< doclink path="configuration/authentication/" text="Authentication Setup" />}} - Set up authentication methods diff --git a/content/en/docs/getting-started/config.md b/content/en/docs/getting-started/config.md index 92ecf3c..586fd60 100644 --- a/content/en/docs/getting-started/config.md +++ b/content/en/docs/getting-started/config.md @@ -1,14 +1,20 @@ --- -title: "Configuration Files" -description: "Understanding and using configuration files in FileBrowser Quantum" +title: "Configuration Files (v2.0.0)" +description: "Understanding and using configuration files in FileBrowser v2.0.0 (beta)" icon: "settings" date: "2025-10-23T00:50:09Z" -lastmod: "2026-07-24T01:02:28Z" +lastmod: "2026-08-10T00:00:00Z" order: 6 --- +{{% alert context="info" %}} +**This guide is for v2.0.0 (beta).** It uses the **database** (`filebrowser.sqlite`) and the `server.database.path` config format. + +Using **v1.5.x or older**? See the {{< doclink path="getting-started/config-v1.5.x" text="v1.5.x configuration guide" />}} instead. +{{% /alert %}} + {{% alert context="warning" %}} -**Upgrading to v2.0.0?** +**Upgrading from v1.x?** v2.0.0 removes deprecated flat config formats and moves HTTP settings from `server` to `http`. Use the config migration tool and follow the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before upgrading. {{% /alert %}} @@ -58,7 +64,7 @@ The database path is configured under `server.database.path`. See {{< doclink pa 3. Default location based on deployment type {{% alert context="info" %}} -**Upgrading from v1.x?** v2.0.0 uses SQLite instead of BoltDB (`database.db`). Rename your old database, set `migrateFrom`, and follow the {{< doclink path="getting-started/v2/migration/" text="migration guide" />}}. The `FILEBROWSER_DATABASE` env var is removed — use `FILEBROWSER_DATABASE_PATH` instead. +**Upgrading from v1.x?** v2.0.0 uses a new database instead of the legacy database (`database.db`). Rename your old database file, set `migrateFrom`, and follow the {{< doclink path="getting-started/v2/migration/" text="migration guide" />}}. The `FILEBROWSER_DATABASE` env var is removed — use `FILEBROWSER_DATABASE_PATH` instead. {{% /alert %}} ## Docker Configuration @@ -70,7 +76,7 @@ docker run -d \ -v /path/to/your/config.yaml:/home/filebrowser/data/config.yaml \ -v /path/to/your/folder:/folder \ -p 80:80 \ - gtstef/filebrowser:stable + gtstef/filebrowser:beta ``` ### Using Docker Compose @@ -89,7 +95,7 @@ services: - './data:/home/filebrowser/data' ports: - '80:80' - image: gtstef/filebrowser:stable + image: gtstef/filebrowser:beta restart: unless-stopped ``` diff --git a/content/en/docs/getting-started/docker-v1.5.x.md b/content/en/docs/getting-started/docker-v1.5.x.md new file mode 100644 index 0000000..193e3f1 --- /dev/null +++ b/content/en/docs/getting-started/docker-v1.5.x.md @@ -0,0 +1,243 @@ +--- +title: "Docker (v1.5.x)" +description: "Get started with FileBrowser v1.5.x (stable) using Docker" +icon: "deployed_code" +date: "2025-10-08T14:59:30Z" +lastmod: "2026-08-10T00:00:00Z" +order: 101 +--- + +{{% alert context="info" %}} +**This guide is for v1.5.x and older (stable).** It uses the `stable` Docker image and the **legacy database** (`database.db`). + +Looking for **v2.0.0 (beta)**? See the {{< doclink path="getting-started/docker" text="v2.0.0 Docker guide" />}} instead. +{{% /alert %}} + +{{% alert context="warning" %}} +**Planning to upgrade to v2.0.0?** + +v2.0.0 replaces the legacy database with a new database format and requires a one-time migration. Follow the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before changing your image tag. +{{% /alert %}} + +The fastest way to get started with FileBrowser Quantum **v1.5.x (stable)**. + +## Available Images + +Images from Docker Hub (`gtstef/filebrowser`) and GitHub Container Registry (`ghcr.io/gtsteffaniak/filebrowser`): + +| Tag | Size | Features | Architectures | +| ------------------ | ----- | ----------------------------------- | ------------------- | +| `latest`, `stable` | 60 MB | FFmpeg + document preview | arm64, amd64 | +| `stable-slim` | 15 MB | Core service only (no media/office) | arm64, arm32, amd64 | +| `beta` | 60 MB | FFmpeg + document preview | arm64, amd64 | +| `beta-slim` | 15 MB | Core service only (no media/office) | arm64, arm32, amd64 | + +Learn more about the versions and tags {{< doclink path="getting-started/version#docker-version-tags" text="here." />}} + +{{% alert context="info" %}} +To pin a specific v1 release instead of tracking the latest stable, use a version tag such as `1.5-stable` or `1.5.5-stable`. +{{% /alert %}} + +## Quick Try + +Test without persistence (changes not saved). In this example we run it mounting the local path: + +```bash +docker run -d \ + -v $(pwd):/srv \ + -p 80:80 \ + gtstef/filebrowser:stable +``` + +Access at `http://localhost` with `admin` / `admin` + +## Basic Setup with Docker Compose + +{{% alert context="warning" %}} +This set up is just to get the feel of FileBrowser before you get into customization, defining access control, etc. For regular use, check out the slightly upgraded guide {{< doclink path="user-guides/other/standalone-v1.5.x" text="here." />}} +{{% /alert %}} + + +### Step 1: Create a base folder for FileBrowser + +```bash +mkdir -p filebrowser/data && cd filebrowser +``` + +{{% alert context="info" %}} +**Default Config Location**: In Docker, the default config location is `/home/filebrowser/data/config.yaml`. So we create a `data` directory so we can mount the config, database files, and cacheDir in the same volume. If you don't want to follow this process, you can use {{< doclink path="reference/environment-variables" text="environment variables" />}} to set the config path and database path manually. +{{% /alert %}} + +### Step 2: Create Config + +Add a `config.yaml` file inside the `data` directory: + +```bash +touch ./data/config.yaml +``` + +Then fill out your config as needed, for example: + +```yaml +server: + cacheDir: /home/filebrowser/data/tmp # using the data volume so it can persist across restarts + sources: + - path: /folder # Do not use a root "/" directory or include the "/var" folder + config: + defaultEnabled: true +``` + +{{% alert context="info" %}} +**Important**: Source path specified in the `config.yaml` are in terms of container point of view. ({{< doclink path="getting-started/config" text="Check this page for more information on configurations." />}}) +{{% /alert %}} + +### Step 3: Create Docker Compose + +Create `docker-compose.yaml` in the directory. + +```bash +touch docker-compose.yaml +``` + +Then type in the below docker configuration. + +```yaml +services: + filebrowser: + image: gtstef/filebrowser:stable + volumes: + - /path/to/your/folder:/folder # Do not use a root "/" directory or include the "/var" folder + - ./data:/home/filebrowser/data + ports: + - 80:80 # exposes port 80 to host, the left-side number can be changed without config.yaml changes. + restart: unless-stopped +``` + +### Step 4: Start + +```bash +docker compose up -d +``` + +### Healthcheck Configuration + +{{% alert context="warning" %}} +This is only needed if you change the `server.port` in the `config.yaml` -- this is not needed for the above guide where the port remains `80` in the `config.yaml` +{{% /alert %}} + +The FileBrowser Docker image includes a default healthcheck that uses port 80: + +```dockerfile +HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \ + CMD curl -f http://localhost:80/health || exit 1 +``` + +If you configure FileBrowser to use a different port in your `config.yaml`, you must override the healthcheck in your `docker-compose.yaml` to match: + +```yaml +services: + filebrowser: + image: gtstef/filebrowser:stable + volumes: + - /path/to/your/folder:/folder + - ./data:/home/filebrowser/data + ports: + - 80:8080 # Filebrowser listens on 8080 inside docker, but here we are exposing the host port as 80 still. + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/health"] # port should match the internal port 8080 + interval: 30s + timeout: 3s + start_period: 10s + retries: 3 + restart: unless-stopped +``` + +**Healthcheck options:** +- `test` - Command to run (must match your configured port) +- `interval` - Time between health checks (default: 30s) +- `timeout` - Time to wait for response (default: 3s) +- `start_period` - Grace period on startup (default: 10s) +- `retries` - Number of failures before marking unhealthy (default: 3) + +## Database Location + +{{% alert context="info" %}} +**Default Database Location**: In Docker, the default database location is `/home/filebrowser/data/database.db`. This is different from the standalone default of `./database.db` in the current directory. + +To persist your database, mount a volume to `/home/filebrowser/data`: + +```yaml +services: + filebrowser: + image: gtstef/filebrowser:stable + volumes: + - /path/to/files:/folder + - ./data:/home/filebrowser/data # Database and config stored here +``` + +See {{< doclink path="configuration/server/#database" text="Server configuration" />}} and {{< doclink path="getting-started/config/#how-to-specify-a-config-file" text="configuration file priority" />}} for more information on database paths. +{{% /alert %}} + +## Running container with a different user + +{{% alert context="info" %}} +On `v1.2.x` and earlier, the default user is `root`. +On `v1.3.x` and later, the default user is `filebrowser` (1000:1000). +{{% /alert %}} + +FileBrowser Quantum docker images have a non-default `filebrowser` user built-in. This user has UID:GID of 1000:1000. In `v1.2.x` and earlier you need to specify this user manually: + +Add to docker-compose.yaml: +```yaml +services: + filebrowser: + image: gtstef/filebrowser:stable + user: filebrowser + volumes: + - /path/to/files:/folder + - ./data:/home/filebrowser/data + ports: + - 80:80 + restart: unless-stopped +``` + +You can also specify any user UID:GID, but if you choose a UID other than 1000, you will need to make sure the mounted `data` directory has the same permissions ({{< doclink path="configuration/server#cachedir" text="See cacheDir config" />}}) + +for example if you wanted to use `1001:1001` user for Unraid installs. +```bash +chown -R 1001:1001 ./data +``` + +## Privileged ports and container capabilities + +### In-container listen (Linux containers) + +Linux treats **ports below 1024** as *privileged*: a non-root user needs the **`NET_BIND_SERVICE`** capability (or a lowered `net.ipv4.ip_unprivileged_port_start`) to bind there. + +On **rootful** Docker Engine or Docker Desktop, the container still usually gets **`NET_BIND_SERVICE`** in the default capability set, so that user **can** listen on `80` or `443` without extra flags. **`bind: permission denied` on a low `server.port` shows up more often when:** + +- you use a **rootless** container engine (**Docker rootless**, **Podman rootless**), or +- the runtime uses a **stricter** capability profile (some **Podman** installs, explicit `--cap-drop`, hardened policies), +So the v1.3 switch to a non-root default **pairs with** those environments: the process is no longer UID 0, and if `NET_BIND_SERVICE` is not effective, the kernel rejects the bind. It is **not** “non-root in Docker always breaks port 443 on every machine.” + +### non-root runtimes can use `NET_BIND_SERVICE` + +Allow binding to ports below 1024 inside the container: + +```yaml +services: + filebrowser: + cap_add: + - NET_BIND_SERVICE +``` + +For `docker run`, use `--cap-add=NET_BIND_SERVICE`. **Podman** supports the same flag (or the equivalent in your compose file). Prefer this over `--privileged` unless you need broader host access. + +Further reading: [Docker: Runtime privilege and Linux capabilities](https://docs.docker.com/engine/containers/run/#runtime-privilege-and-linux-capabilities). + +## Next Steps + +- {{< doclink path="configuration/sources/" text="Configure sources" />}} +- {{< doclink path="configuration/users/" text="Set up users" />}} +- {{< doclink path="integrations/" text="Enable integrations" />}} + diff --git a/content/en/docs/getting-started/docker.md b/content/en/docs/getting-started/docker.md index 27af178..77ba57b 100644 --- a/content/en/docs/getting-started/docker.md +++ b/content/en/docs/getting-started/docker.md @@ -1,19 +1,25 @@ --- -title: "Docker" -description: "Get started with FileBrowser using Docker" +title: "Docker (v2.0.0)" +description: "Get started with FileBrowser v2.0.0 (beta) using Docker" icon: "deployed_code" date: "2025-10-08T14:59:30Z" -lastmod: "2026-07-24T01:02:28Z" +lastmod: "2026-08-10T00:00:00Z" order: 1 --- +{{% alert context="info" %}} +**This guide is for v2.0.0 (beta).** It uses the `beta` Docker image and the **database** (`filebrowser.sqlite`). + +Using **v1.5.x or older**? See the {{< doclink path="getting-started/docker-v1.5.x" text="v1.5.x Docker guide" />}} instead. +{{% /alert %}} + {{% alert context="warning" %}} -**Upgrading to v2.0.0?** +**Upgrading from v1.x?** -v2.0.0 uses **SQLite** instead of BoltDB and requires a one-time migration. Use a **directory mount** (`./data:/home/filebrowser/data`) rather than a single database file mount. Replace `FILEBROWSER_DATABASE` with `FILEBROWSER_DATABASE_PATH`. See the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before changing your image tag. +v2.0.0 uses a **new database format** and requires a one-time migration. Use a **directory mount** (`./data:/home/filebrowser/data`) rather than a single database file mount. Replace `FILEBROWSER_DATABASE` with `FILEBROWSER_DATABASE_PATH`. See the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before changing your image tag to `beta`. {{% /alert %}} -The fastest way to get started with FileBrowser Quantum. +The fastest way to get started with FileBrowser Quantum **v2.0.0 (beta)**. ## Available Images @@ -28,6 +34,10 @@ Images from Docker Hub (`gtstef/filebrowser`) and GitHub Container Registry (`gh Learn more about the versions and tags {{< doclink path="getting-started/version#docker-version-tags" text="here." />}} +{{% alert context="info" %}} +To pin a specific v2 release instead of tracking the latest beta, use a version tag such as `2.0-beta` or `2.0.0-beta`. +{{% /alert %}} + ## Quick Try Test without persistence (changes not saved). In this example we run it mounting the local path: @@ -36,7 +46,7 @@ Test without persistence (changes not saved). In this example we run it mounting docker run -d \ -v $(pwd):/srv \ -p 80:80 \ - gtstef/filebrowser:stable + gtstef/filebrowser:beta ``` Access at `http://localhost` with `admin` / `admin` @@ -94,7 +104,7 @@ Then type in the below docker configuration. ```yaml services: filebrowser: - image: gtstef/filebrowser:stable + image: gtstef/filebrowser:beta volumes: - /path/to/your/folder:/folder # Do not use a root "/" directory or include the "/var" folder - ./data:/home/filebrowser/data @@ -127,7 +137,7 @@ If you configure FileBrowser to use a different port in your `config.yaml`, you ```yaml services: filebrowser: - image: gtstef/filebrowser:stable + image: gtstef/filebrowser:beta volumes: - /path/to/your/folder:/folder - ./data:/home/filebrowser/data @@ -154,7 +164,7 @@ services: {{% alert context="warning" %}} **v2.0.0 change** -v2.0.0 uses **SQLite** (default: `filebrowser.sqlite`), not BoltDB (`database.db`). Set `server.database.path` in config or use `FILEBROWSER_DATABASE_PATH`. Upgrading from v1.x? See {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}}. +v2.0.0 uses the **database** (default: `filebrowser.sqlite`), not the legacy database (`database.db`). Set `server.database.path` in config or use `FILEBROWSER_DATABASE_PATH`. Upgrading from v1.x? See {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}}. {{% /alert %}} {{% alert context="info" %}} @@ -165,7 +175,7 @@ To persist your database, mount a volume to `/home/filebrowser/data`: ```yaml services: filebrowser: - image: gtstef/filebrowser:stable + image: gtstef/filebrowser:beta volumes: - /path/to/files:/folder - ./data:/home/filebrowser/data # Database and config stored here @@ -180,7 +190,7 @@ Docker images run as the built-in `filebrowser` user (UID:GID **1000:1000**) by ```yaml services: filebrowser: - image: gtstef/filebrowser:stable + image: gtstef/filebrowser:beta user: filebrowser volumes: - /path/to/files:/folder diff --git a/content/en/docs/getting-started/linux-v1.5.x.md b/content/en/docs/getting-started/linux-v1.5.x.md new file mode 100644 index 0000000..c613a0d --- /dev/null +++ b/content/en/docs/getting-started/linux-v1.5.x.md @@ -0,0 +1,144 @@ +--- +title: "Linux (v1.5.x)" +description: "Install FileBrowser v1.5.x (stable) on Linux" +icon: "terminal" +date: "2025-10-08T14:59:30Z" +lastmod: "2026-08-10T00:00:00Z" +order: 102 +--- + +{{% alert context="info" %}} +**This guide is for v1.5.x and older (stable).** Download a **stable** release from GitHub. + +Looking for **v2.0.0 (beta)**? See the {{< doclink path="getting-started/linux" text="v2.0.0 Linux guide" />}} instead. +{{% /alert %}} + +{{% alert context="warning" %}} +**Planning to upgrade to v2.0.0?** + +v2.0.0 requires a config update and one-time database migration. Follow the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before upgrading. +{{% /alert %}} + +Run FileBrowser Quantum **v1.5.x (stable)** natively on Linux using the binary releases. + +## Download + +1. Go to [releases page](https://github.com/gtsteffaniak/filebrowser/releases) +2. Download the appropriate **stable** binary: + - `linux-amd64-filebrowser` (64-bit) + - `linux-arm64-filebrowser` (64-bit) + - `linux-armv6-filebrowser` (32-bit) + - `linux-armv7-filebrowser` (32-bit) + +## Make Executable + +```bash +chmod +x filebrowser-linux-amd64 +``` + +## Optional: Install FFmpeg + +```bash +# Debian/Ubuntu +sudo apt install ffmpeg + +# RHEL/CentOS/Fedora +sudo dnf install ffmpeg + +# Arch Linux +sudo pacman -S ffmpeg +``` + +## Create Configuration + +Interactive setup: + +```bash +./filebrowser-linux-amd64 setup +``` + +Or create `config.yaml`: + +```yaml +server: + port: 80 + sources: + - path: "/home/user/files" # Do not use a root "/" directory or include the "/var" folder + config: + defaultEnabled: true +auth: + adminUsername: admin +``` + +## Run FileBrowser + +```bash +./filebrowser-linux-amd64 -c config.yaml +``` + +Access at `http://localhost:80` + +## Run as Systemd Service + +### Step 1: Move Binary + +```bash +sudo mv filebrowser-linux-amd64 /usr/local/bin/filebrowser +sudo chmod +x /usr/local/bin/filebrowser +``` + +### Step 2: Create Service File + +Create `/etc/systemd/system/filebrowser.service`: + +```ini +[Unit] +Description=FileBrowser Quantum +After=network.target + +[Service] +Type=simple +User=filebrowser +WorkingDirectory=/opt/filebrowser +ExecStart=/usr/local/bin/filebrowser -c /opt/filebrowser/config.yaml +Restart=on-failure + +[Install] +WantedBy=multi-user.target +``` + +### Step 3: Create User and Directory + +```bash +sudo useradd -r -s /bin/false filebrowser +sudo mkdir -p /opt/filebrowser +sudo chown filebrowser:filebrowser /opt/filebrowser +``` + +### Step 4: Move Config + +```bash +sudo mv config.yaml /opt/filebrowser/ +sudo chown filebrowser:filebrowser /opt/filebrowser/config.yaml +``` + +### Step 5: Enable and Start + +```bash +sudo systemctl daemon-reload +sudo systemctl enable filebrowser +sudo systemctl start filebrowser +``` + +### Check Status + +```bash +sudo systemctl status filebrowser +``` + +## Next Steps + +- {{< doclink path="configuration/sources/" text="Configure sources" />}} +- {{< doclink path="configuration/users/" text="Set up users" />}} +- {{< doclink path="integrations/" text="Enable integrations" />}} + diff --git a/content/en/docs/getting-started/linux.md b/content/en/docs/getting-started/linux.md index 96f9de0..009c178 100644 --- a/content/en/docs/getting-started/linux.md +++ b/content/en/docs/getting-started/linux.md @@ -1,24 +1,30 @@ --- -title: "Linux" -description: "Install FileBrowser on Linux" +title: "Linux (v2.0.0)" +description: "Install FileBrowser v2.0.0 (beta) on Linux" icon: "terminal" date: "2025-10-08T14:59:30Z" -lastmod: "2026-07-24T01:02:28Z" +lastmod: "2026-08-10T00:00:00Z" order: 2 --- +{{% alert context="info" %}} +**This guide is for v2.0.0 (beta).** Download a **beta** release from GitHub. + +Using **v1.5.x or older**? See the {{< doclink path="getting-started/linux-v1.5.x" text="v1.5.x Linux guide" />}} instead. +{{% /alert %}} + {{% alert context="warning" %}} -**Upgrading to v2.0.0?** +**Upgrading from v1.x?** -v2.0.0 requires a config update and one-time database migration. See the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before upgrading from v1.x. +v2.0.0 requires a config update and one-time database migration. See the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before upgrading. {{% /alert %}} -Run FileBrowser Quantum natively on Linux using the binary releases. +Run FileBrowser Quantum **v2.0.0 (beta)** natively on Linux using the binary releases. ## Download 1. Go to [releases page](https://github.com/gtsteffaniak/filebrowser/releases) -2. Download the appropriate binary (stable or beta): +2. Download the appropriate **beta** binary: - `linux-amd64-filebrowser` (64-bit) - `linux-arm64-filebrowser` (64-bit) - `linux-armv6-filebrowser` (32-bit) diff --git a/content/en/docs/getting-started/macos-v1.5.x.md b/content/en/docs/getting-started/macos-v1.5.x.md new file mode 100644 index 0000000..e8f171e --- /dev/null +++ b/content/en/docs/getting-started/macos-v1.5.x.md @@ -0,0 +1,115 @@ +--- +title: "macOS (v1.5.x)" +description: "Install FileBrowser v1.5.x (stable) on macOS" +icon: "laptop_mac" +date: "2025-10-08T14:59:30Z" +lastmod: "2026-08-10T00:00:00Z" +order: 103 +--- + +{{% alert context="info" %}} +**This guide is for v1.5.x and older (stable).** Download a **stable** release from GitHub. + +Looking for **v2.0.0 (beta)**? See the {{< doclink path="getting-started/macos" text="v2.0.0 macOS guide" />}} instead. +{{% /alert %}} + +{{% alert context="warning" %}} +**Planning to upgrade to v2.0.0?** + +v2.0.0 requires a config update and one-time database migration. Follow the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before upgrading. +{{% /alert %}} + +Run FileBrowser Quantum **v1.5.x (stable)** natively on macOS. + +## Download + +1. Go to [releases page](https://github.com/gtsteffaniak/filebrowser/releases) +2. Download the **stable** `filebrowser-darwin-amd64` (Intel) or `filebrowser-darwin-arm64` (Apple Silicon) release +3. Save to a folder + +## Enable Permissions + +### Step 1: Make Executable + +```bash +chmod +x filebrowser-darwin-arm64 +``` + +### Step 2: Allow in Security Settings + +On first run, macOS will block the app: + +1. Try to run: `./filebrowser-darwin-arm64` +2. Go to **System Preferences** → **Security & Privacy** +3. Click **Allow** for FileBrowser + +## Optional: Install FFmpeg + +```bash +brew install ffmpeg +``` + +## Create Configuration + +```bash +./filebrowser-darwin-arm64 setup +``` + +Or create `config.yaml`: + +```yaml +server: + port: 80 + sources: + - path: "/Users/yourname/Documents" + config: + defaultEnabled: true +auth: + adminUsername: admin +``` + +## Run FileBrowser + +```bash +./filebrowser-darwin-arm64 -c config.yaml +``` + +Access at `http://localhost:80` + +## Run as Service (launchd) + +Create `/Library/LaunchDaemons/com.filebrowser.plist`: + +```xml + + + + + Label + com.filebrowser + ProgramArguments + + /usr/local/bin/filebrowser + -c + /usr/local/etc/filebrowser/config.yaml + + RunAtLoad + + KeepAlive + + + +``` + +Load service: + +```bash +sudo launchctl load /Library/LaunchDaemons/com.filebrowser.plist +``` + +## Next Steps + +- {{< doclink path="configuration/sources/" text="Configure sources" />}} +- {{< doclink path="configuration/users/" text="Set up users" />}} +- {{< doclink path="integrations/" text="Enable integrations" />}} + diff --git a/content/en/docs/getting-started/macos.md b/content/en/docs/getting-started/macos.md index 467c1d6..eacf41b 100644 --- a/content/en/docs/getting-started/macos.md +++ b/content/en/docs/getting-started/macos.md @@ -1,24 +1,30 @@ --- -title: "macOS" -description: "Install FileBrowser on macOS" +title: "macOS (v2.0.0)" +description: "Install FileBrowser v2.0.0 (beta) on macOS" icon: "laptop_mac" date: "2025-10-08T14:59:30Z" -lastmod: "2026-07-24T01:02:28Z" +lastmod: "2026-08-10T00:00:00Z" order: 3 --- +{{% alert context="info" %}} +**This guide is for v2.0.0 (beta).** Download a **beta** release from GitHub. + +Using **v1.5.x or older**? See the {{< doclink path="getting-started/macos-v1.5.x" text="v1.5.x macOS guide" />}} instead. +{{% /alert %}} + {{% alert context="warning" %}} -**Upgrading to v2.0.0?** +**Upgrading from v1.x?** -v2.0.0 requires a config update and one-time database migration. See the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before upgrading from v1.x. +v2.0.0 requires a config update and one-time database migration. See the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before upgrading. {{% /alert %}} -Run FileBrowser Quantum natively on macOS. +Run FileBrowser Quantum **v2.0.0 (beta)** natively on macOS. ## Download 1. Go to [releases page](https://github.com/gtsteffaniak/filebrowser/releases) -2. Download either stable or beta `filebrowser-darwin-amd64` (Intel) or `filebrowser-darwin-arm64` (Apple Silicon) +2. Download the **beta** `filebrowser-darwin-amd64` (Intel) or `filebrowser-darwin-arm64` (Apple Silicon) release 3. Save to a folder ## Enable Permissions diff --git a/content/en/docs/getting-started/reverse-proxy-v1.5.x.md b/content/en/docs/getting-started/reverse-proxy-v1.5.x.md new file mode 100644 index 0000000..1e8e09d --- /dev/null +++ b/content/en/docs/getting-started/reverse-proxy-v1.5.x.md @@ -0,0 +1,418 @@ +--- +title: "Running behind a reverse proxy (v1.5.x)" +description: "Configure FileBrowser v1.5.x (stable) behind reverse proxies" +icon: "other_houses" +date: "2025-10-28T22:14:01Z" +lastmod: "2026-08-10T00:00:00Z" +order: 107 +--- + +{{% alert context="info" %}} +**This guide is for v1.5.x and older (stable).** Config examples use `server.baseURL` and `http.trustedHeaders`. + +Looking for **v2.0.0 (beta)**? See the {{< doclink path="getting-started/reverse-proxy" text="v2.0.0 reverse proxy guide" />}} instead. +{{% /alert %}} + +{{% alert context="warning" %}} +**Planning to upgrade to v2.0.0?** + +v2.0.0 moves HTTP settings from `server` to `http` and replaces `trustedHeaders` with `trustProxyHeaders`. Follow the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before upgrading. +{{% /alert %}} + +Complete guide for running FileBrowser Quantum **v1.5.x (stable)** behind reverse proxies including nginx, Traefik, and Caddy with authentication, SSL, and performance optimizations. + +{{% alert context="info" %}} +FileBrowser Quantum is designed to work seamlessly behind reverse proxies with proper configuration. This guide covers all major proxy types with complete examples. +{{% /alert %}} + +## Overview + +FileBrowser Quantum separates public and private endpoints to work efficiently with reverse proxies: + +- **Public endpoints** (`/public`) - Designed for share access without reverse proxy authentication. +- **Cookie-based authentication** - Requires proper Host header forwarding +- **Real-time features** - SSE support with proper proxy configuration + +### Public Route Structure + +FileBrowser Quantum includes a dedicated `/public` route that contains: + +- `/public/api/` - Public API endpoints for share access (hash-based authentication) +- `/public/share/` - Share pages (can work with or without user authentication) +- `/public/static/` - Static assets (CSS, JavaScript, images) + +{{% alert context="info" %}} +The `/public` routes are designed to allow shares to function fully without requiring authentication at the reverse proxy level. This enables share links to work even when the reverse proxy requires authentication for other routes. Public routes also use stricter logging to prevent sensitive information leakage. +{{% /alert %}} + +### Route Authentication Requirements + +``` +Private Routes (Require User Authentication): +├── /api/* - Private API endpoints +├── /dav/* - WebDAV access +└── /swagger/ - API documentation + +Public Routes (Hash-based or Optional Auth): +├── /public/api/* - Public API (share hash authentication) +├── /public/share/* - Share pages (optional user authentication) +└── /public/static/* - Static assets (no authentication) + +Other Routes: +├── / - Main UI (optional authentication) +└── /health - Health check (no authentication) +``` + +When configuring your reverse proxy, you can: +- **Require authentication** for `/api/` and other private routes +- **Allow public access** to `/public/` routes for share functionality + +## Basic Requirements + +### Essential Headers + +All reverse proxy configurations must include these headers: + +```yaml +# Required headers for FileBrowser Quantum +proxy_set_header Host $host; # Cookie domain scoping +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # IP chain +proxy_set_header X-Forwarded-Proto $scheme; # HTTP/HTTPS protocol +``` + +{{% alert context="info" %}} +**Note**: FileBrowser Quantum also supports `X-Forwarded-Host` as an alternative to the `Host` header for cookie domain scoping. +{{% /alert %}} + +### FileBrowser Configuration + +Configure FileBrowser to work with your reverse proxy: + +```yaml +server: + baseURL: "/files" # Base path for reverse proxy + externalUrl: "https://files.example.com/files" # External URL (used when generated public links) +``` + +## nginx Configuration + +Minimal nginx configuration for FileBrowser Quantum: + +```nginx +server { + listen 80; + server_name files.example.com; + + # Public endpoints (for shares - no reverse proxy auth required) + # These routes use hash-based authentication internally + location /files/public/ { + proxy_pass http://filebrowser:8080/files/public/; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_buffering off; + } + + # Private endpoints (authentication required) + location /files/ { + proxy_pass http://filebrowser:8080/files/; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_buffering off; + client_max_body_size 10G; + } +} +``` + +{{% alert context="info" %}} +The `/public` route allows shares to function without reverse proxy authentication. This means share links (`/public/share/`) will work even if you require authentication for other routes. The share itself may still require a password or user restrictions as configured in FileBrowser. +{{% /alert %}} + +### With Authentication Proxy + +For environments using external authentication: + +```nginx +server { + listen 80; + server_name files.example.com; + + # Authentication endpoint + location = /auth/authorize { + internal; + proxy_pass http://auth.example.com:8080/authorize; + proxy_pass_request_body off; + proxy_set_header Content-Length ""; + } + + # Public endpoints (no auth) + location /files/public/ { + proxy_pass http://filebrowser:8080/files/public/; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_buffering off; + } + + # Private endpoints (with auth) + location /files/ { + auth_request /auth/authorize; + auth_request_set $user $upstream_http_x_forwarded_user; + + proxy_pass http://filebrowser:8080/files/; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-User $user; + proxy_buffering off; + client_max_body_size 10G; + } +} +``` + +{{% alert context="warning" %}} +When using external authentication, ensure your auth service sets the `X-Forwarded-User` header with the username. FileBrowser will use this for {{< doclink path="configuration/authentication/proxy/" text="proxy authentication" />}}. +{{% /alert %}} + +## Traefik Configuration + +Basic Traefik labels for FileBrowser Quantum: + +```yaml +# Basic routing +- "traefik.enable=true" +- "traefik.http.routers.filebrowser.rule=Host(`files.example.com`)" +- "traefik.http.services.filebrowser.loadbalancer.server.port=80" + +# Public endpoints (no auth) +- "traefik.http.routers.filebrowser-public.rule=Host(`files.example.com`) && PathPrefix(`/public`)" +- "traefik.http.services.filebrowser-public.loadbalancer.server.port=80" +``` + +## Caddy Configuration + +Minimal Caddy configuration: + +```caddy +files.example.com { + # Public endpoints (no authentication) + handle_path /public/* { + reverse_proxy filebrowser:80 { + header_up Host {host} + header_up X-Forwarded-For {remote_host} + header_up X-Forwarded-Proto {scheme} + } + } + + # Private endpoints (with authentication) + handle /* { + reverse_proxy filebrowser:80 { + header_up Host {host} + header_up X-Forwarded-For {remote_host} + header_up X-Forwarded-Proto {scheme} + } + } +} +``` + +## Upload Configuration + +Essential settings for file uploads: + +
+

Nginx

+
client_max_body_size 10G;
+proxy_buffering off;
+
+ +
+

Traefik

+
- "traefik.http.middlewares.filebrowser-buffering.buffering.maxRequestBodyBytes=0"
+
+ +
+

Caddy

+
reverse_proxy filebrowser:80 {
+    header_up Connection {>Connection}
+    header_up Transfer-Encoding {>Transfer-Encoding}
+}
+
+ +## Server-Sent Events (SSE) Configuration + +FileBrowser Quantum uses SSE for real-time features. Essential settings: + +```nginx +location /files/ { + proxy_pass http://filebrowser:8080/files/; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_buffering off; +} +``` + +- Traefik should handle most of this automatically if is configured properly. + +### Authorization Header Handling + +{{% alert context="info" %}} +If your reverse proxy sets authorization headers, you may need to clear them for FileBrowser to avoid conflicts with its own authentication system. +{{% /alert %}} + +```nginx +location /files/ { + proxy_set_header Authorization ""; # Clear authorization header + proxy_pass http://filebrowser:8080/files/; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; +} +``` + +## Troubleshooting + +### Common Issues + +
+

Authentication Failures

+

Symptoms: Users can't log in, cookies not working.

+

Solution: Ensure Host header is properly forwarded:

+ +{{< tabs tabTotal="3" >}} +{{< tab tabName="NGINX" >}} +```nginx +proxy_set_header Host $host; +``` +{{< /tab >}} + +{{< tab tabName="Traefik" >}} +```yaml +- "traefik.http.services.filebrowser.loadbalancer.passhostheader=true" +``` + +{{< /tab >}} +{{< /tabs >}} +
+ +
+

Upload Failures

+

Symptoms: Large file uploads fail

+

Solution: Increase file size limit and disable buffering:

+ +{{< tabs tabTotal="2" >}} +{{< tab tabName="NGINX" >}} +```nginx +client_max_body_size 10G; +proxy_buffering off; +``` +{{< /tab >}} +{{< tab tabName="Traefik" >}} +In traefik can be configured via middlewares +```yaml +http: + middlewares: + limit: + buffering: + maxRequestBodyBytes: 0 + maxResponseBodyBytes: 0 + memRequestBodyBytes: 0 + memResponseBodyBytes: 0 +``` +{{< /tab >}} +{{< /tabs >}} +
+ +
+

SSE Not Working

+

Symptoms: Real-time features not updating

+

Solution: Disable buffering

+{{< tabs tabTotal="2" >}} +{{< tab tabName="NGINX" >}} +```nginx +proxy_buffering off; +``` +{{< /tab >}} +{{< tab tabName="Traefik" >}} + +Via traefik middlewares: + +```yaml +http: + middlewares: + limit: + buffering: + maxRequestBodyBytes: 0 + maxResponseBodyBytes: 0 + memRequestBodyBytes: 0 + memResponseBodyBytes: 0 +``` +{{< /tab >}} +{{< /tabs >}} +
+ +## Next Steps + +- {{< doclink path="configuration/authentication/proxy/" text="Proxy Authentication" />}} - Configure header-based authentication +- {{< doclink path="integrations/office/troubleshooting/" text="Office Integration" />}} - OnlyOffice behind reverse proxy +- {{< doclink path="user-guides/office-integration/traefik-setup/" text="Traefik Setup" />}} - Filebrowser + OnlyOffice behind traefik reverse proxy. + + diff --git a/content/en/docs/getting-started/reverse-proxy.md b/content/en/docs/getting-started/reverse-proxy.md index f91d983..fded1f0 100644 --- a/content/en/docs/getting-started/reverse-proxy.md +++ b/content/en/docs/getting-started/reverse-proxy.md @@ -1,13 +1,19 @@ --- -title: "Running behind a reverse proxy" -description: "Complete guide for configuring FileBrowser Quantum behind reverse proxies" +title: "Running behind a reverse proxy (v2.0.0)" +description: "Configure FileBrowser v2.0.0 (beta) behind reverse proxies" icon: "other_houses" date: "2025-10-28T22:14:01Z" -lastmod: "2026-08-05T15:34:23Z" +lastmod: "2026-08-10T00:00:00Z" order: 7 --- -Complete guide for running FileBrowser Quantum behind reverse proxies including nginx, Traefik, and Caddy with authentication, SSL, and performance optimizations. +{{% alert context="info" %}} +**This guide is for v2.0.0 (beta).** Config examples use `http.baseURL` and `http.trustProxyHeaders`. + +Using **v1.5.x or older**? See the {{< doclink path="getting-started/reverse-proxy-v1.5.x" text="v1.5.x reverse proxy guide" />}} instead. +{{% /alert %}} + +Complete guide for running FileBrowser Quantum **v2.0.0 (beta)** behind reverse proxies including nginx, Traefik, and Caddy with authentication, SSL, and performance optimizations. {{% alert context="info" %}} FileBrowser Quantum is designed to work seamlessly behind reverse proxies with proper configuration. This guide covers all major proxy types with complete examples. @@ -74,16 +80,7 @@ proxy_set_header X-Forwarded-Proto $scheme; # HTTP/HTTPS proto ### Proxy headers FileBrowser understands -{{% alert context="info" %}} -**Version note:** On **v1.4.x–v1.5.x**, honor forwarding headers with a **`http.trustedHeaders`** list (individual header names). **v2.0.0+** removes that option and uses **`http.trustProxyHeaders: true`** instead. The {{< doclink path="getting-started/v2/config-migration/" text="config migration tool" />}} converts a non-empty `trustedHeaders` list when upgrading to v2. -{{% /alert %}} - -When FileBrowser runs behind a reverse proxy, your proxy should set standard forwarding headers. FileBrowser must be told to honor them — the setting depends on your version: - -| Version | Config key | Example | -|---------|------------|---------| -| **v2.0.0+** | `http.trustProxyHeaders: true` | Single boolean; trusts all standard forwarding headers | -| **v1.4.x–v1.5.x** | `http.trustedHeaders` | List of header names to trust individually | +When FileBrowser runs behind a reverse proxy, your proxy should set standard forwarding headers. FileBrowser must be told to honor them with **`http.trustProxyHeaders: true`**: #### Client IP @@ -92,39 +89,19 @@ FileBrowser uses the client IP for **authentication rate limiting**, **failed-lo Configure your proxy to set `X-Forwarded-For` (recommended) or `X-Real-IP`, then enable trust in FileBrowser: ```yaml -# v2.0.0+ http: trustProxyHeaders: true ``` -```yaml -# v1.4.x–v1.5.x -http: - trustedHeaders: - - X-Forwarded-For - - X-Real-IP -``` - #### Scheme and host Your proxy should also set `X-Forwarded-Proto` and `X-Forwarded-Host`. **Forwarding alone is not enough** — enable header trust or FileBrowser ignores them: ```yaml -# v2.0.0+ http: trustProxyHeaders: true ``` -```yaml -# v1.4.x–v1.5.x -http: - trustedHeaders: - - X-Forwarded-Proto - - X-Forwarded-Host - - X-Forwarded-For - - X-Real-IP -``` - These affect HTTPS detection, cookie domain, OIDC `redirect_uri`, share URLs, and WebAuthn. Without trusting forwarded headers, FileBrowser sees `http` behind TLS-terminated nginx and OIDC redirects break. Keep `proxy_set_header Host $host` in nginx. `X-Forwarded-Host` is used when the proxy strips or overwrites `Host`. @@ -144,7 +121,7 @@ auth: When proxy auth is enabled, FileBrowser accepts the configured header as the username. Only enable this when FileBrowser is unreachable except through your proxy. {{% alert context="warning" %}} -Only enable header trust when FileBrowser is behind a proxy that controls these headers. On **v2.0.0+**, set `trustProxyHeaders: true`; on **v1.4.x–v1.5.x**, list the headers under `trustedHeaders`. If users can reach FileBrowser without going through your proxy, they can spoof `X-Forwarded-*` and bypass per-IP limits. +Only enable `trustProxyHeaders` when FileBrowser is behind a proxy that controls these headers. If users can reach FileBrowser without going through your proxy, they can spoof `X-Forwarded-*` and bypass per-IP limits. {{% /alert %}} See {{< doclink path="configuration/http/#trustproxyheaders" text="HTTP reverse-proxy headers" />}} and {{< doclink path="configuration/http/#built-in-authentication-rate-limiting" text="built-in authentication rate limiting" />}} for details. @@ -154,7 +131,6 @@ See {{< doclink path="configuration/http/#trustproxyheaders" text="HTTP reverse- Configure FileBrowser to work with your reverse proxy: ```yaml -# v2.0.0+ http: baseURL: "/files" externalUrl: "https://files.example.com/files" @@ -167,24 +143,6 @@ auth: header: "X-Forwarded-User" # only when using external auth; separate from trustProxyHeaders ``` -```yaml -# v1.4.x–v1.5.x -http: - baseURL: "/files" - externalUrl: "https://files.example.com/files" - trustedHeaders: - - X-Forwarded-Proto - - X-Forwarded-Host - - X-Forwarded-For - - X-Real-IP - -auth: - methods: - proxy: - enabled: true - header: "X-Forwarded-User" # only when using external auth; separate from trustedHeaders -``` - ## nginx Configuration Minimal nginx configuration for FileBrowser Quantum: diff --git a/content/en/docs/getting-started/version.md b/content/en/docs/getting-started/version.md index 447671a..45a1106 100644 --- a/content/en/docs/getting-started/version.md +++ b/content/en/docs/getting-started/version.md @@ -1,32 +1,36 @@ --- title: "Which version should I use?" -description: "Understanding the differences between stable and beta releases" +description: "Understanding stable vs beta releases and v1.5.x vs v2.0.0" icon: "numbers" date: "2025-10-28T22:14:01Z" -lastmod: "2026-01-30T13:20:14Z" +lastmod: "2026-08-10T00:00:00Z" order: 5 --- -FileBrowser Quantum comes with 2 main release flavors. Choosing the right version is an important first step to getting started. +FileBrowser Quantum comes with two release channels (**stable** and **beta**) and is currently transitioning from **v1.5.x** to **v2.0.0**. Choosing the right version is an important first step. + +{{% alert context="info" %}} +**Current state:** **v1.5.x** is on the `stable` channel. **v2.0.0** is available on the `beta` channel only and requires a one-time migration from v1.x. See {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before upgrading. +{{% /alert %}} {{% alert context="success" %}} -**Recommended**: Start with the `stable` release build for the most reliable experience. +**Recommended for new users:** Start with **v1.5.x (`stable`)** for the most reliable experience, unless you specifically want v2.0.0 features. {{% /alert %}} ## Release Types -### Stable Release +### Stable Release (v1.5.x) -The `stable` release build is the most reliable version as the name implies. It gets updated less frequently, but is ideal for: +The `stable` release build is the most reliable version as the name implies. It currently tracks **v1.5.x**. It gets updated less frequently, but is ideal for: - Those getting started with FileBrowser Quantum - Users with a userbase that doesn't want to see occasional bugs - Production environments requiring stability - Anyone who prefers proven, tested features -### Beta Release +### Beta Release (v2.0.0) -The `beta` release build is ideal for those who: +The `beta` release build currently tracks **v2.0.0** and is ideal for those who: - Don't have a large userbase - Want the latest features immediately @@ -59,6 +63,15 @@ One major difference is the release cadence between the two versions: +## Major version: v1.5.x vs v2.0.0 + +| | v1.5.x (`stable`) | v2.0.0 (`beta`) | +|---|---|---| +| Release channel | `stable`, `1.5-stable` | `beta`, `2.0-beta` | +| Database | Legacy (`database.db`) | New (`filebrowser.sqlite`) | +| Getting started docs | {{< doclink path="getting-started/docker-v1.5.x" text="v1.5.x guides" />}} | {{< doclink path="getting-started/docker" text="v2.0.0 guides" />}} | +| Upgrade path | Stay on stable for production | Follow {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} from v1.x | + ## Feature Differences Eventually, stable release gets all the same features as beta releases, but they lag behind the release schedule. Because of this, features may not come to stable for a month or two. diff --git a/content/en/docs/getting-started/windows-v1.5.x.md b/content/en/docs/getting-started/windows-v1.5.x.md new file mode 100644 index 0000000..8b3f20f --- /dev/null +++ b/content/en/docs/getting-started/windows-v1.5.x.md @@ -0,0 +1,78 @@ +--- +title: "Windows (v1.5.x)" +description: "Install FileBrowser v1.5.x (stable) on Windows" +icon: "desktop_windows" +date: "2025-10-08T14:59:30Z" +lastmod: "2026-08-10T00:00:00Z" +order: 104 +--- + +{{% alert context="info" %}} +**This guide is for v1.5.x and older (stable).** Download a **stable** release from GitHub. + +Looking for **v2.0.0 (beta)**? See the {{< doclink path="getting-started/windows" text="v2.0.0 Windows guide" />}} instead. +{{% /alert %}} + +{{% alert context="warning" %}} +**Planning to upgrade to v2.0.0?** + +v2.0.0 requires a config update and one-time database migration. Follow the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before upgrading. +{{% /alert %}} + +Run FileBrowser Quantum **v1.5.x (stable)** natively on Windows. + +## Download + +1. Go to [releases page](https://github.com/gtsteffaniak/filebrowser/releases) +2. Download the **stable** `filebrowser-windows-amd64.exe` release +3. Save to a folder (e.g., `C:\FileBrowser\`) + +## Optional: Install FFmpeg + +For video preview support, [install FFmpeg](https://phoenixnap.com/kb/ffmpeg-windows). + +## Create Configuration + +Interactive setup: + +```bash +.\filebrowser.exe setup +``` + +Or Create `config.yaml` in the same folder: + +```yaml +server: + port: 80 + sources: + - path: "C:\\Users\\YourName\\Documents" + config: + defaultEnabled: true +auth: + adminUsername: admin +``` + +Or generate interactively: + +```cmd +.\filebrowser.exe setup +``` + +## Run FileBrowser + +```cmd +.\filebrowser.exe -c config.yaml +``` + +Access at `http://localhost:80` with `admin` / `admin` + +## Troubleshooting + +For common issues and solutions, see the {{< doclink path="getting-started/Migration/troubleshooting/" text="Troubleshooting guide" />}}. + +## Next Steps + +- {{< doclink path="configuration/sources/" text="Configure sources" />}} +- {{< doclink path="configuration/authentication/" text="Set up authentication" />}} +- {{< doclink path="integrations/media/" text="Enable media integration" />}} + diff --git a/content/en/docs/getting-started/windows.md b/content/en/docs/getting-started/windows.md index d44857c..be5eb16 100644 --- a/content/en/docs/getting-started/windows.md +++ b/content/en/docs/getting-started/windows.md @@ -1,24 +1,30 @@ --- -title: "Windows" -description: "Install FileBrowser on Windows" +title: "Windows (v2.0.0)" +description: "Install FileBrowser v2.0.0 (beta) on Windows" icon: "desktop_windows" date: "2025-10-08T14:59:30Z" -lastmod: "2026-07-24T01:02:28Z" +lastmod: "2026-08-10T00:00:00Z" order: 4 --- +{{% alert context="info" %}} +**This guide is for v2.0.0 (beta).** Download a **beta** release from GitHub. + +Using **v1.5.x or older**? See the {{< doclink path="getting-started/windows-v1.5.x" text="v1.5.x Windows guide" />}} instead. +{{% /alert %}} + {{% alert context="warning" %}} -**Upgrading to v2.0.0?** +**Upgrading from v1.x?** -v2.0.0 requires a config update and one-time database migration. See the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before upgrading from v1.x. +v2.0.0 requires a config update and one-time database migration. See the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} before upgrading. {{% /alert %}} -Run FileBrowser Quantum natively on Windows. +Run FileBrowser Quantum **v2.0.0 (beta)** natively on Windows. ## Download 1. Go to [releases page](https://github.com/gtsteffaniak/filebrowser/releases) -2. Download either stable or beta `filebrowser-windows-amd64.exe` +2. Download the **beta** `filebrowser-windows-amd64.exe` release 3. Save to a folder (e.g., `C:\FileBrowser\`) ## Optional: Install FFmpeg diff --git a/content/en/docs/user-guides/Other/standalone-v1.5.x.md b/content/en/docs/user-guides/Other/standalone-v1.5.x.md new file mode 100644 index 0000000..1e889d3 --- /dev/null +++ b/content/en/docs/user-guides/Other/standalone-v1.5.x.md @@ -0,0 +1,166 @@ +--- +title: "Standalone docker guide (v1.5.x and earlier)" +description: "A basic working example on setting up FileBrowser v1.5.x (stable) in Docker with persistent indexing" +icon: "deployed_Code" +date: "2026-01-30T13:20:14Z" +lastmod: "2026-08-10T00:00:00Z" +--- + +This guide will help you set up your FileBrowser **v1.5.x** and earlier instance alone. This will be helpful for users who just want to access their files over LAN for storage. + +{{% alert context="info" %}} +**This guide is for v1.5.x and older (stable).** It uses the `stable` Docker image and the **legacy database** (`database.db`) for the database. + +Looking for **v2.0.0 (beta)**? See the {{< doclink path="user-guides/other/standalone" text="v2.0.0 standalone guide" />}} instead. +{{% /alert %}} + +{{% alert context="warning" %}} +**Planning to upgrade to v2.0.0?** + +v2.0.0 replaces the legacy database with a new database format and requires a one-time migration. Do **not** switch your image tag until you have read and followed the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}}. +{{% /alert %}} + +## Folder Structure + +``` +filebrowser-quantum/ +├── .env +├── compose.yaml +└── files/ +└── data/ + ├── config.yaml + ├── database.db + └── tmp/ +``` + +## Initial Setup + +- Run the commands below commands in the terminal to initialize the folder structure, or manually via the desktop. + +```bash +mkdir -p data/tmp +touch .env compose.yaml data/config.yaml +``` + +Volume bindings needed: + + - `./data:/home/filebrowser/data` is required to set the config file, database and tmp folder. + - Any folder you want to have access to. In this example, we use `./files` which will be created in the same directory + - Other volume bindings that need to have access via the web. + +Update the compose.yml, + + +```yaml title="compose.yml" linenums="1" +services: + filebrowser: + image: gtstef/filebrowser:stable + container_name: quantum-prod + ports: + - 8900:80 + restart: unless-stopped + # user: filebrowser + volumes: + - ./data:/home/filebrowser/data + - ./files:/files + # - /other/dir:/dir # Add other sources + environment: + - "FILEBROWSER_CONFIG=data/config.yaml" # using our config file at ./data/config.yaml +``` + +{{% alert context="info" %}} +To pin a specific v1 release instead of tracking the latest stable, use a version tag such as `1.5-stable` or `1.5.5-stable`. See {{< doclink path="getting-started/version#docker-version-tags" text="Docker version tags" />}}. +{{% /alert %}} + +Update the config.yaml, + +```yaml +server: + database: "data/database.db" + cacheDir: "data/tmp" + sources: + - path: "/files" + name: Home + config: + defaultUserScope: "/users/" # new users will get created in /users/ + defaultEnabled: true # new users automatically get access to the source + createUserDir: true # a user "bill" will see files from /files/users/bill + - path: "/home/filebrowser" # mount the docker home folder for convenience + name: Backend + # Add your sources here. + #externalUrl: 'https://:8900' # if you plan to share externally, share links will be generated with this url + maxArchiveSize: 50 # maxiumum pre-archive size users are allowed to download at once. +auth: + tokenExpirationHours: 2 + methods: + password: + enabled: true + minLength: 5 + signup: true + adminUsername: admin + adminPassword: admin # remove this after first startup if you want to change this password manually. + +``` + +## Running container with a different user + +{{% alert context="info" %}} +On `v1.2.x` and earlier, the default user is `root`. +On `v1.3.x` and later, the default user is `filebrowser` (1000:1000). +{{% /alert %}} + +The easist way to update the user is through docker compose. For example to create a new user 1001:1001 "${UID}:${GID}": + +```yaml title="compose.yml" linenums="1" +services: + filebrowser: + image: gtstef/filebrowser:stable + container_name: quantum-prod + user: "1001:1001" + ports: + - 8900:80 + restart: unless-stopped + networks: + - proxy + volumes: + - ./data:/home/filebrowser/data + - ./files:/files +``` + +You will also want to ensure the `data` folder has the correct permissions with `chown` command: + +```bash +chown -R 1001:1001 data +``` + +## Using FileBrowser + +### Starting the service + +Change to the directory where the compose file is in your terminal and run, + +```bash +docker compose up -d +``` + +This will pull the image and start the container. You can now access it via `http://:8900`. + +### Updating the service + +Change to the directory where the compose file is in your terminal and run, + +```bash +docker compose pull # Get the new image +docker compose down # Shutdown container +docker compose up -d # Load new image +``` + +With the database and cache set up, your data will persist even with restarts. + +## Next Steps + +- {{< doclink path="configuration/" text="Configurations" />}} +- {{< doclink path="access-control/" text="Access Control" />}} +- {{< doclink path="features/" text="Features" />}} +- {{< doclink path="user-guides/office-integration/" text="OnlyOffice Integration" />}} +- {{< doclink path="reference/fullconfig/" text="View full config reference" />}} diff --git a/content/en/docs/user-guides/Other/standalone.md b/content/en/docs/user-guides/Other/standalone.md index c480993..f6733b4 100644 --- a/content/en/docs/user-guides/Other/standalone.md +++ b/content/en/docs/user-guides/Other/standalone.md @@ -1,17 +1,17 @@ --- -title: "Standalone docker guide" -description: "A basic working example on setting up FileBrowser in Docker with persistent indexing" +title: "Standalone docker guide (v2.0.0)" +description: "A basic working example on setting up FileBrowser v2.0.0 in Docker with persistent indexing" icon: "deployed_Code" date: "2026-01-30T13:20:14Z" -lastmod: "2026-07-24T01:02:28Z" +lastmod: "2026-08-10T00:00:00Z" --- -This guide will help you set up your FileBrowser instance alone. This will be helpful for users who just want to access their files over LAN for storage. +This guide will help you set up your FileBrowser **v2.0.0** instance alone. This will be helpful for users who just want to access their files over LAN for storage. -{{% alert context="warning" %}} -**Upgrading to v2.0.0?** +{{% alert context="info" %}} +**This guide is for v2.0.0.** -v2.0.0 uses **SQLite** (`filebrowser.sqlite`) instead of BoltDB (`database.db`). Mount a **data directory** and follow the {{< doclink path="getting-started/v2/migration/" text="v2 migration guide" />}} if upgrading from v1.x. +Using **v1.5.x or older**? See the {{< doclink path="user-guides/other/standalone-v1.5.x" text="v1.5.x standalone guide" />}} instead. {{% /alert %}} ## Folder Structure @@ -23,6 +23,7 @@ filebrowser-quantum/ └── files/ └── data/ ├── config.yaml + ├── filebrowser.sqlite └── tmp/ ``` @@ -47,7 +48,7 @@ Update the compose.yml, ```yaml title="compose.yml" linenums="1" services: filebrowser: - image: gtstef/filebrowser:stable + image: gtstef/filebrowser:beta container_name: quantum-prod ports: - 8900:80 @@ -99,7 +100,7 @@ The easist way to update the user is through docker compose. For example to crea ```yaml title="compose.yml" linenums="1" services: filebrowser: - image: gtstef/filebrowser:stable + image: gtstef/filebrowser:beta container_name: quantum-prod user: "1001:1001" ports: