Files
ansible-playbooks/roles/immich
Clément Désiles 0ec6224941 feat(backup): per-job schedules, stale-lock recovery, service manifests
- Add per-job `schedule` (systemd OnCalendar) overrides and document the
  global `backup_schedule` / `backup_randomized_delay` knobs.
- Run `restic unlock` before backup/forget/check so a run killed mid-flight
  no longer wedges every later run on a stale exclusive lock.
- Publish backup manifests for fdroid, immich and unifi, so the inventory
  decides only where (repositories, retention, schedule).
- Document that `read_data_subset` re-reads on every job targeting the
  repository, so a large repository wants a small fraction.
2026-09-10 16:47:33 +02:00
..

Immich Role

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

Prerequisites

The podman, postgres, valkey, and nginx roles must have been applied to the host first (they are shared services, intentionally not declared in meta/main.yml to keep immich deploys fast). Order them before immich in the playbook for fresh installs.

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

External Libraries

Mount host paths read-only into the server container via immich_external_libraries, then add the in-container mount_path in the Immich UI (Administration → External Libraries). The {{ ansible_user }} running the rootless pod must have read access on the host path.

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