assert node.has_bundle('docker-engine') defaults = { 'apt': { 'packages': { 'python3-psycopg2': {}, }, }, 'docker-engine': { 'containers': { 'immich': { 'image': 'ghcr.io/imagegenius/immich:latest', 'environment': { 'DB_DATABASE_NAME': 'immich', 'DB_HOSTNAME': 'immich-postgresql', 'DB_PASSWORD': repo.vault.password_for(f'{node.name} postgresql immich'), 'DB_USERNAME': 'immich', 'REDIS_HOSTNAME': 'immich-redis', }, 'volumes': { 'config': '/config', 'libraries': '/libraries', 'photos': '/photos', }, 'ports': { '8080': '8080', }, 'needs': { 'svc_systemd:docker-immich-postgresql', 'svc_systemd:docker-immich-redis', }, 'requires': { 'docker-immich-postgresql.service', 'docker-immich-redis.service', }, }, 'immich-postgresql': { 'image': 'tensorchord/pgvecto-rs:pg14-v0.2.0', 'environment': { 'POSTGRES_PASSWORD': repo.vault.password_for(f'{node.name} postgresql immich'), 'POSTGRES_USER': 'immich', 'POSTGRES_DB': 'immich', }, 'volumes': { 'database': '/var/lib/postgresql/data', }, }, 'immich-redis': { 'image': 'docker.io/redis:6.2-alpine', }, }, }, 'docker-immich': { 'enable_auto_album_share': False, }, 'nginx': { 'vhosts': { 'immich': { 'locations': { '/': { 'target': 'http://127.0.0.1:8080/', 'websockets': True, 'max_body_size': '5000m', }, }, }, }, }, } @metadata_reactor.provides( 'systemd-timers/timers/immich-auto-album-share', ) def auto_album_share(metadata): if not metadata.get('docker-immich/enable_auto_album_share'): return {} return { 'systemd-timers': { 'timers': { 'immich-auto-album-share': { 'command': '/usr/local/bin/immich-auto-album-share.py', 'environment': metadata.get('docker-engine/containers/immich/environment'), 'when': 'minutely', }, }, }, }