Arrmada finds, downloads and organises your movies, TV, books and audiobooks, lets your household request what they want to watch, and keeps your Plex or Jellyfin library tidy — with one database and one web page instead of half a dozen apps. qBittorrent comes with it, already set up.
Early days: Arrmada is under active development (v0.x). Expect rough edges, and keep backups.
--with-sabnzbd sets one up for you); bring your own Usenet provider and indexers.You need a Linux server with Docker and Docker Compose (on Unraid: the Docker Compose Manager plugin). On the server, run:
curl -fsSL https://raw.githubusercontent.com/tristenlammi/Arrmada/main/install.sh | sh
It asks where to keep Arrmada's files and where your media lives (press Enter to accept the
suggestions), then starts everything. Open the address it prints —
http://<your-server>:7878 — create your admin account, and a short setup walks you
through the rest in the browser: your free TMDB key, your library folders, your media server (Plex, Jellyfin or both) and indexers.
Install guide, options and Unraid notes →
In an empty folder on the server:
curl -fsSL https://raw.githubusercontent.com/tristenlammi/Arrmada/main/docker-compose.example.yml -o docker-compose.yml
Next to it, a .env with your folders (full paths), and the other settings marked ← in
the file if you want to change them (the user and group, your timezone, the port):
ARRMADA_DATA_HOST=/srv/arrmada/data # Arrmada's database and settings
ARRMADA_STORAGE_HOST=/srv/media # your libraries and downloads
Then run docker compose up -d, open http://<your-server>:7878 and follow the setup.
The compose file itself stays as downloaded, so updating it never loses your settings.
To update: docker compose pull && docker compose up -d. That skips the installer's
pre-update backup and automatic roll-back; the app still copies its database before any
upgrade of it. More →
Using Portainer? The same file works as a stack, with the same lines as its environment variables: Using Portainer →
Arrmada's Unraid template is one container with qBittorrent and FlareSolverr built in and
already connected (switch either off to use your own), plus a SABnzbd (for Usenet) and a
Prowlarr that stay off until you switch them on. It's managed and updated from Unraid's
Docker tab like your other containers, with your media share at /storage.
Arrmada on Unraid →
Run the same line again:
curl -fsSL https://raw.githubusercontent.com/tristenlammi/Arrmada/main/install.sh | sh
It backs up the database, updates, and checks Arrmada comes back — if the new version doesn't
start, it goes back to the one you had. (In Arrmada's folder, sh update.sh does the same.)
Installs follow the stable channel: updates bring the latest published release, never unreleased code. Developers can follow main instead, the newest code compiled on the server (Following main). More about updating →
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Install | The one-liner, its options, Unraid, the git checkout way |
| Unraid | The Unraid template: share layout, the built-in qBittorrent or your own, GPU, updates |
| Updating | Updates, rollbacks, published images |
| Configuration | Ports, .env, media folders and hardlinks, recycle bin, reverse proxies |
| GPU | Hardware encoding for Convert (Intel, AMD, NVIDIA) and GPU AI subtitles |
| Backups | Backups, restoring, a forgotten admin password |
| Troubleshooting | Common problems and fixes |
| Features | Everything Arrmada does |
| Alerts to n8n | Sending alerts to n8n or any webhook as signed JSON, and every event's fields |
| API keys for scripts | Personal API keys: calling Arrmada from n8n, Home Assistant or curl |
| Homepage dashboard | Arrmada's numbers on a gethomepage.dev dashboard: the widget key, the services.yaml entry and every field |
| Development | Building and testing it yourself |
| Releasing | For maintainers |
Arrmada is written with heavy AI assistance (Claude): I decide what it does, review the
results, and run it on my own server every day, but most of the code is AI-written, and
commits say so. It is still pre-1.0. So you can judge it on what's checked rather than on
trust, here is what runs before anything reaches main:
go vet and
gofmt, shellcheck on the install and update scripts, and the web app's lint, type check,
unit tests (about 800) and browser tests (about 700, at desktop and phone sizes). Every image
is built for x86-64 and arm64.govulncheck (fails if
our code can reach a known hole in Go or a Go library), npm audit on the web app's
shipped dependencies, and GitHub's CodeQL scan.internal/archtest) that fail the build
when code takes a shortcut they forbid; and a scan that keeps secrets out of logs and support
bundles.If you find a problem, especially in sign-in or anything that touches your files, please open an issue, or report security problems privately (see Security). A second pair of human eyes on the sign-in code is very welcome.
Bug reports and ideas are welcome in Issues. For code, see Development — please open an issue before a big change.
MIT © 2026 Tristen Lammi
| 日期 | 榜单 | 排名 | 周期新增 | 总 STAR |
|---|