--- # Existing Unraid server. Stacks are applied in list order. # # Each entry takes an optional `state:` — `present` (the default) deploys it, # `absent` tears it down. To remove a stack, set `state: absent` and leave the # entry here; deleting it instead removes nothing, it just stops Ansible # managing the containers. See README.md → "Removing an app". stacks: # The arr ecosystem as one stack: Shelfarr (library) plus Prowlarr (indexer # manager) in a single Compose project, so they come up together and share a # network, a rendered .env and a Vault path. - name: arr src: arr vault_path: homelab/arr # No `db:` block — neither container uses an external database. Shelfarr # is SQLite-only (config/database.yml pins production to storage/*.sqlite3 # with no DATABASE_URL support) and Prowlarr keeps its own SQLite under # /config, so there is nothing to provision on the shared Postgres. Both # databases live in the appdata bind mounts along with everything else. # Trialling alongside an existing Plex install to compare the two — see # src/jellyfin/ansible/unraid/vars.yml, which points its media paths at the # same library Plex already reads. No `db:` block: Jellyfin is SQLite-only, # same reasoning as arr above. - name: jellyfin src: jellyfin vault_path: homelab/jellyfin appdata: - path: /mnt/user/Media/JellyBridge owner: "99" group: "100" mode: "0777" recurse: false # Syncs watch state between the Plex and Jellyfin instances above — the # reason both are running side by side. SQLite-only, no `db:` block, same # as jellyfin. Its `homelab/watchstate` Vault path holds nothing real yet # (first-run wizard + per-backend tokens in /config), but compose_stack # looks it up unconditionally so it still has to exist — see # docs/vault-secrets.md. - name: watchstate src: watchstate vault_path: homelab/watchstate # WatchState runs rootless (container `user: 99:100`) and exits if it # can't write /config. Docker would create the missing bind path as # root:root on first `up`, so pre-create it owned by nobody:users. Keep # this path in step with WATCHSTATE_CONFIG_PATH in # src/watchstate/ansible/unraid/vars.yml. appdata: - path: /mnt/user/appdata/watchstate/config owner: "99" group: "100"