Deployment¶
Filearr ships three supported deployment paths. All of them run the same container images and the same Postgres + Meilisearch stack — they differ only in how the host and storage are prepared.
-
The canonical deployment. Works on any Docker host. Every other path wraps this compose stack.
-
Community-Applications-format templates. Three containers for the simple tier, five for full mutual-TLS agent parity — installed step by step from an empty box.
-
A guided wizard builds a Docker-in-LXC container, mounts your network storage inside it, and can stand up TLS and the agent CA.
After any deploy, see Upgrades & migrations for the redeploy and schema-migration behavior, and Operations & recovery for the runbook.
What every deployment runs¶
| Service | Image | Role | Back up? |
|---|---|---|---|
app |
filearr |
REST API + SPA (port 8000 → 8484) | via Postgres |
worker |
filearr |
Procrastinate job worker (scan/extract/index/maintenance) | — |
postgres |
postgres:18.4 |
Source of truth and job queue | YES |
meilisearch |
getmeili/meilisearch:v1.53.0 |
Disposable search projection | No (rebuildable) |
caddy (optional) |
built locally | TLS reverse proxy | No |
step-ca (optional, agents profile) |
smallstep/step-ca:0.30.2 |
Agent certificate authority | volume only |
watcher (optional) |
filearr |
Local-disk filesystem watch mode | — |
Only Postgres holds data you cannot recreate. Meilisearch and the thumbnail cache are disposable projections.
First run — the same on every path¶
Once the stack is up (whichever path you chose), the first-run flow is identical:
- Open the web UI (
http://<host>:8484, or your HTTPS hostname). Auth is on by default, and with zero users the UI shows a one-time "create the administrator account" screen — set the first admin's username and a strong passphrase, then log in. (API equivalent:POST /api/v1/auth/bootstrap.) - Create your first library: Libraries → New. Pick the media root
as the in-container path (
/data/media/...on the standard mappings), choose the content presets to include, and save. The folder browser only offers allow-listed roots, so a mapping mistake is visible immediately. - Scan it: the new library's Scan button starts a walk with live progress. First scans are mtime+size cheap; heavyweight metadata extraction queues behind the walk and fills in over the following minutes.
- Verify search: type a filename fragment (typos welcome) into the search tab — results should appear as the scan commits batches, before it even finishes.
Then, before you rely on it:
- TLS — put the UI behind HTTPS (per-path notes:
compose,
Unraid, Proxmox does it in the
wizard). Sessions send a
Securecookie only over HTTPS. - Backups — back up Postgres (everything else is rebuildable):
scripts/backup.shwraps apg_dump -Fcwith retention, cron-friendly. See Operations. - More sources — attach other machines with the distributed agents (one-command installer served by your own central), wire up alerts, and read Upgrades before your first version bump.