52 lines
2.3 KiB
YAML
52 lines
2.3 KiB
YAML
---
|
|
# 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"
|