pez-infra/ansible/services
Rasmus "Pez" Wejlgaard 45dff99e7c
Some checks failed
Deploy (on merge) / Discover hosts (push) Has been cancelled
Deploy (on merge) / deploy (push) Has been cancelled
fix: update octopus exporter (#113)
2026-05-26 20:56:07 +01:00
..
authelia Grafana Cloud Migration (#94) 2026-05-04 13:40:30 +01:00
bitwarden fix remaining yaml lint nitpicks 2026-03-28 13:13:37 +00:00
caddy fix: tracing on caddy services (#104) 2026-05-10 10:18:53 +01:00
forgejo fix remaining yaml lint nitpicks 2026-03-28 13:13:37 +00:00
jellyseerr fix more yaml document-start and comment indentation 2026-03-28 13:15:46 +00:00
lidarr Capture london-b media stack and systemd services (#19) 2026-03-29 19:13:48 +01:00
mangos-realmd initial commit 2026-03-28 12:39:41 +00:00
mangos-world add mangos zero config and fix world service 2026-03-28 13:03:09 +00:00
mangos-zero add mangos zero config and fix world service 2026-03-28 13:03:09 +00:00
minecraft change provider for mc server for more configurability (#58) 2026-04-04 12:01:28 +01:00
miniflux fix more yaml document-start and comment indentation 2026-03-28 13:15:46 +00:00
navidrome fix more yaml document-start and comment indentation 2026-03-28 13:15:46 +00:00
octopus-exporter fix: update octopus exporter (#113) 2026-05-26 20:56:07 +01:00
ollama Capture london-b media stack and systemd services (#19) 2026-03-29 19:13:48 +01:00
plex-exporter Change provider for plex metrics (#65) 2026-04-13 19:04:54 +01:00
poste-io fix more yaml document-start and comment indentation 2026-03-28 13:15:46 +00:00
promtail Add Docker official apt repo to docker role (#24) 2026-03-29 21:11:33 +01:00
prowlarr Capture london-b media stack and systemd services (#19) 2026-03-29 19:13:48 +01:00
radarr Capture london-b media stack and systemd services (#19) 2026-03-29 19:13:48 +01:00
rc.d/london-a Remove cloudflared from london-a (PESO-134) (#50) 2026-04-03 18:51:51 +01:00
readarr Capture london-b media stack and systemd services (#19) 2026-03-29 19:13:48 +01:00
samba/config Capture london-b media stack and systemd services (#19) 2026-03-29 19:13:48 +01:00
slskd capture overseerr, syncthing, and fix slskd on london-b (#43) 2026-04-03 09:52:10 +01:00
smartctl-exporter Add smartctl-exporter to copenhagen-a and Prometheus scrape (#55) 2026-04-03 21:20:20 +01:00
sonarr Add sonarr service directory with README (#51) 2026-04-04 09:31:39 +01:00
status-page fix: actually decomission nextcloud and TWDNE (#72) 2026-04-25 18:19:16 +01:00
transmission/config Capture london-b media stack and systemd services (#19) 2026-03-29 19:13:48 +01:00
vsftpd/config Capture london-b media stack and systemd services (#19) 2026-03-29 19:13:48 +01:00
whisparr Capture london-b media stack and systemd services (#19) 2026-03-29 19:13:48 +01:00
README.md fix: Documentation overhaul (#112) 2026-05-19 18:49:21 +01:00

Services

Version-controlled service definitions across the fleet. Each subdirectory is a single deployable unit — either a Docker Compose stack, a systemd unit, or a static config file set — that the Ansible roles in ansible/roles/ pick up and deploy.

Layout

services/
├── <service-name>/
│   ├── docker-compose.yml      # Docker services
│   ├── <service>.service       # Native systemd unit (when applicable)
│   ├── config/                 # Mounted/copied config files
│   ├── *.enc.{yml,yaml,env}    # SOPS-encrypted secrets
│   └── README.md               # Service-specific notes (where relevant)

There is no per-host subdirectory — services are named by what they are, and the host they land on is decided by docker_services / systemd_services lists in ansible/inventory/host_vars/<host>.yml.

Service inventory

Service Type Host(s) Notes
caddy Native (apt) helsinki-a Reverse proxy. Caddyfile lives here.
authelia Docker helsinki-a SSO, plus MariaDB and LLDAP sidecars
bitwarden Docker helsinki-a Vaultwarden + MariaDB
forgejo Docker helsinki-a Git forge
poste-io Docker nuremberg-a Mail
jellyseerr Docker london-b Plex request manager
navidrome Docker london-b Music streaming
slskd Docker london-b Soulseek client
miniflux Docker london-b RSS reader (with postgres)
smartctl-exporter Docker london-b, copenhagen-a SMART metrics
plex-exporter Docker london-b Plex metrics
octopus-exporter Docker london-c Octopus Energy metrics
minecraft Docker copenhagen-a PaperMC server
radarr / sonarr / lidarr / readarr / prowlarr / whisparr systemd london-b *Arr stack (systemd unit files here)
transmission systemd london-b Config files (the daemon itself is apt)
samba / vsftpd systemd london-b File-sharing config
ollama systemd london-b Custom unit + binary install
mangos-realmd / mangos-world / mangos-zero systemd copenhagen-a MaNGOS WoW server
promtail systemd (currently unused; historical) Log shipper, replaced by Alloy
status-page Cron script helsinki-a update-status.sh writes /srv/status
rc.d FreeBSD rc.conf (historical) Snapshot of london-a's old FreeBSD setup

Conventions

  • Compose stacks live at <service>/docker-compose.yml and are deployed to /opt/docker/<service>/ on the target host.
  • Systemd units are copied to /etc/systemd/system/<service>.service by the media_stack or systemd_services role.
  • Secrets are SOPS-encrypted (*.enc.yml) and decrypted into place at deploy time.

Adding a new service

See docs/getting-started.md for the end-to-end flow (compose → host_vars → Caddy → DNS → docs).