Skip to content

Install

Armarium ships as one Docker image, ghcr.io/r0adkll/armarium, with Libation’s command-line tool inside. It needs three folders: its own config, its own data, and the Audiobookshelf library folder.

Run it in the folder you want to deploy from. It asks four questions, generates the keys, writes .env and docker-compose.yml, starts the container, and then walks you through the browser steps.

Terminal window
mkdir -p /opt/armarium && cd /opt/armarium
curl -fsSL https://raw.githubusercontent.com/r0adkll/armarium/main/scripts/setup.sh | bash

It asks for:

  • the public URL people will open Armarium at, e.g. https://armarium.example.com;
  • the host path of the Audiobookshelf library folder, e.g. /mnt/media/audiobooks;
  • a folder for Armarium’s state, e.g. /mnt/media/armarium (it creates config/ and data/ there);
  • the container path Audiobookshelf uses for that library (look in its library settings), e.g. /audiobooks.

Point your proxy (Caddy, Traefik, nginx, Nginx Proxy Manager…) at port 8080 and serve it at the address you put in ARMARIUM_PUBLIC_URL. That address matters: single sign-on sends people back to it, and Armarium marks its cookie secure when it starts with https://.

If Armarium reaches Audiobookshelf through a proxy as well, that proxy must allow WebSocket upgrades; Armarium listens to Audiobookshelf’s live updates over one. On a shared Docker network you can skip the proxy and use the container name, e.g. http://audiobookshelf:80.

:main follows every change to the main branch. Once releases start, version tags like :0.1 and :0.1.0 are published too; pin one if you’d rather choose when to upgrade. See Upgrading.

Next: first run.