feat(stacks): migrate photos.opytex.org
This commit is contained in:
84
stacks/photos.opytex.org/docker-compose.yml
Normal file
84
stacks/photos.opytex.org/docker-compose.yml
Normal file
@@ -0,0 +1,84 @@
|
||||
# Le nom de projet ne suit PAS le dossier : les volumes existants sont
|
||||
# préfixés `immich_`. Retirer cette ligne rendrait la photothèque invisible.
|
||||
name: immich
|
||||
|
||||
services:
|
||||
immich-server:
|
||||
image: ghcr.io/immich-app/immich-server:v2.2.1
|
||||
container_name: immich_server
|
||||
restart: always
|
||||
volumes:
|
||||
- immich_upload:/data
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
env_file:
|
||||
- env_file
|
||||
environment:
|
||||
DB_PASSWORD: ${DB_PASSWORD:?}
|
||||
depends_on:
|
||||
- redis
|
||||
- database
|
||||
healthcheck:
|
||||
disable: false
|
||||
networks:
|
||||
- default
|
||||
- traefik-proxy
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=traefik-proxy
|
||||
- traefik.http.routers.immich.entrypoints=web-secure
|
||||
- traefik.http.routers.immich.rule=Host(`photos.opytex.org`)
|
||||
- traefik.http.routers.immich.tls.certresolver=letsencrypt
|
||||
- traefik.http.services.immich.loadbalancer.server.port=2283
|
||||
|
||||
immich-machine-learning:
|
||||
image: ghcr.io/immich-app/immich-machine-learning:v2.2.1
|
||||
container_name: immich_machine_learning
|
||||
restart: always
|
||||
volumes:
|
||||
- model-cache:/cache
|
||||
env_file:
|
||||
- env_file
|
||||
healthcheck:
|
||||
disable: false
|
||||
networks:
|
||||
- default
|
||||
|
||||
redis:
|
||||
image: docker.io/valkey/valkey:8@sha256:81db6d39e1bba3b3ff32bd3a1b19a6d69690f94a3954ec131277b9a26b95b3aa
|
||||
container_name: immich_redis
|
||||
restart: always
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
networks:
|
||||
- default
|
||||
|
||||
database:
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
|
||||
container_name: immich_postgres
|
||||
restart: always
|
||||
environment:
|
||||
# En dur : `env_file:` n'alimente pas l'interpolation ${...}, ces trois
|
||||
# valeurs doivent être lisibles ici. Seul le mot de passe vient de sops.
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_DB: immich
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD:?}
|
||||
POSTGRES_INITDB_ARGS: "--data-checksums"
|
||||
volumes:
|
||||
- db:/var/lib/postgresql/data
|
||||
shm_size: 128mb
|
||||
networks:
|
||||
- default
|
||||
labels:
|
||||
backup.enable: true
|
||||
backup.type: postgres
|
||||
|
||||
volumes:
|
||||
model-cache:
|
||||
immich_upload:
|
||||
labels:
|
||||
backup.enable: true
|
||||
db:
|
||||
|
||||
networks:
|
||||
traefik-proxy:
|
||||
external: true
|
||||
9
stacks/photos.opytex.org/env_file
Normal file
9
stacks/photos.opytex.org/env_file
Normal file
@@ -0,0 +1,9 @@
|
||||
# Immich — configuration non sensible.
|
||||
# DB_PASSWORD est dans secrets.env.yaml.
|
||||
#
|
||||
# UPLOAD_LOCATION et DB_DATA_LOCATION, présents dans l'ancien .env, ne sont
|
||||
# pas repris : ce compose utilise des volumes nommés, pas les bind mounts du
|
||||
# compose amont, et ces deux variables n'étaient donc lues par personne.
|
||||
|
||||
DB_USERNAME=postgres
|
||||
DB_DATABASE_NAME=immich
|
||||
25
stacks/photos.opytex.org/secrets.env.yaml
Normal file
25
stacks/photos.opytex.org/secrets.env.yaml
Normal file
@@ -0,0 +1,25 @@
|
||||
DB_PASSWORD: ENC[AES256_GCM,data:Qn9XIoBiNCmc+4UZNfXm115/rF04lEJBO62JRNLHtfOs9WoTaz0K06LgPNFL88YCI1A=,iv:kvMJfhv30BJS6d8U9IDppki5ua0sTt6dbbfcWzJI18o=,tag:mNVCECKVHkH6bS7JmaFNhw==,type:str]
|
||||
sops:
|
||||
age:
|
||||
- enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwUW0wOGFSUGUwRVVUeDRF
|
||||
UTduTEIxMGdwcW1ieEpja3M4amV6SVJoMUhrCjlGZVFGMFc5dDRQM0dOMytPeEdp
|
||||
RXZqbHpJV2prYjRybG0wQ2JkWnh3S0UKLS0tIFN0U3NERjdOU3FxdlBxS2NJdU80
|
||||
NlRTUWZCd3lnc2lseEZJRjlBMTZFQW8KqyNE3WGK7ExTQ+CYvW0H4U5NMbNQdyaX
|
||||
Tzk0/3X3r2jCBRwVl1Tdj2OL65+SA0mDjnjyD0J5YsC0JB33SIeUaQ==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
recipient: age18m2zl3pwgw97djshzcf4wmhrqxksl4erqse6edkpxpkg5rcz0ujs8u4c7s
|
||||
- enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlVkdRQ2FUbmpIMW5UQ2F5
|
||||
TmhsU1gzTkxYWWVQektteGdnNkFRVzJ4eVdjCk5uaXk4YTRNK3ZpbzRZNEliVnFH
|
||||
MzZMLzdmaWhMV1VDUXVteEwra3o5d00KLS0tIGZoOGtydUtpN01YbG1ZckdlMGVa
|
||||
VktyYlBOMThkQ0RxVGsrZXNoYThtVmsKrHVtCsBB+OSo1aMHlmqz9oMy0nCFJVfa
|
||||
TzxOt2VIexjX3Qu4x/VP0E000Dgme8KdU7EW8QRhxQd4VCeRCP0ICg==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
recipient: age1fh70nny5hzz8a8g9077kgfca0lhlh3wsjf4fjrv4klx5ucdtpdmsazuqdj
|
||||
lastmodified: "2026-08-13T14:15:16Z"
|
||||
mac: ENC[AES256_GCM,data:cgvXcNRZr8G0l0WVpaxY6TG3lAuRLSIEY467Oudb/qsLOnSADnK8xoOXLTwyqcIb4HYmFhB9ZOdWjY3rq6bnuRXEdVUm79I0tJs82kGg5+hPGpit0vpyuk14jbF40fjfkgY3FMvPurT1IU2ulnJX+jKjyL0J2EQMlxGFaDn+U7M=,iv:5IRGdFcVR5pN5F+ubCmlhSeYk9ivUKUS0QCjX0zMHPs=,tag:9tcjMv7ZG63JZ2Z/aT1+pA==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.13.3
|
||||
Reference in New Issue
Block a user