Files
ansible-playbooks/roles/immich
Clément Désiles a8545fc501 fix(podman): use Type=notify + service-container so systemd sees pod crashes
The previous Type=oneshot + RemainAfterExit=true pattern made systemd
freeze pod units in 'active (exited)' as soon as 'podman play kube'
returned, so crash-looping containers were invisible to
'systemctl --user --failed' and Restart=on-failure never fired.

For every podman-pod role (immich, fdroid, ntfy, gitea, qfieldcloud,
unifi, matrix, uptime_kuma):

- switch units to Type=notify + NotifyAccess=all
- run 'podman kube play --service-container=true' so the unit's main
  PID stays alive as long as the pod
- use 'podman kube down' for ExecStop
- add TimeoutStartSec=180 to cover slow first-boot image pulls

Pod manifests: flip every container's restartPolicy from Always to
Never. systemd is now the single owner of the restart loop: container
exits -> pod dies -> service container dies -> unit fails ->
Restart=on-failure restarts everything cleanly. With Always, podman
retried internally and hid the failure from systemd.

CLAUDE.md updated to document the new canonical template and the
'restartPolicy: Never' requirement.
2026-05-29 21:49:13 +02:00
..
2026-05-29 21:24:58 +02:00
2025-11-14 00:23:03 +01:00
2026-05-29 21:24:58 +02:00
2025-12-23 09:08:43 +01:00

Immich Role

This Ansible role deploys Immich - a high performance self-hosted photo and video management solution - using Podman with k8s files.

Role Variables

See defaults/main.yml for all available variables and their default values.

Required Passwords

Both passwords must be set in your inventory (min 12 characters):

  • immich_postgres_password - PostgreSQL database password
  • immich_valkey_password - Valkey/Redis password

Troubleshooting

Valkey ACL Issues

Test Immich user credentials:

valkey-cli
AUTH immich <immich_valkey_password>
SELECT 0
PING
# Should return PONG

# Try a restricted command (should fail)
FLUSHDB
# Should return: (error) NOPERM

Going further: Immich GitHub Discussion #19727