Services User
services-user (VMID 118, 10.0.0.18) hosts the user-facing web applications split off the legacy monolithic services VM (10.0.0.2).
Configured by ansible/hetzner-main/setup-services-user.yml; each app's Docker Compose definition lives under ansible/hetzner-main/services-user-apps/<app>/ in the automation repo.
Applications
| App | Notes |
|---|---|
abair_website | abair.ie, plus a preview.abair.ie variant of the same image |
litreoir | |
fotheidil | Frontend for the Fotheidil subtitling tool; calls the recognition stack on Amergin |
meallanoige | |
bat-mirialta | |
mileglornanog | Míle Glór na nÓg |
web_reader_extension | Webreader browser extension backend |
geabaire-web-editor | aac-editor.abair.ie |
geabaire-api | Stateful — has its own Postgres-backed data and Redis; the .env and board-image data are hand-placed, not templated by Ansible |
giob-geab | Stateful — FastAPI + Celery worker/beat, its own Redis broker; .env hand-placed |
Deploying apps
All apps in the list above deploy under the single apps playbook tag — make deploy-services-user-apps syncs each app's directory and runs docker compose pull && up -d for every one of them, without touching the VM's base configuration.
Firewall
The webserver VM may reach every app port (as the reverse-proxy ingress); the observability VM is also allowed through, since Uptime Kuma probes app ports directly to distinguish an app outage from an ingress outage.