Ver 0.1
This commit is contained in:
29
defaults/main.yml
Normal file
29
defaults/main.yml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
immich_image_tag: "release"
|
||||||
|
|
||||||
|
immich_server_image: "ghcr.io/immich-app/immich-server:{{ immich_image_tag }}"
|
||||||
|
immich_microservices_image: "ghcr.io/immich-app/immich-server:{{ immich_image_tag }}"
|
||||||
|
immich_ml_image: "ghcr.io/immich-app/immich-machine-learning:{{ immich_image_tag }}"
|
||||||
|
immich_postgres_image: "postgres:14"
|
||||||
|
immich_redis_image: "redis:6"
|
||||||
|
|
||||||
|
immich_network_name: "immich"
|
||||||
|
|
||||||
|
immich_upload_location: "/opt/immich/library"
|
||||||
|
immich_db_data_location: "/opt/immich/postgres"
|
||||||
|
immich_redis_data_location: "/opt/immich/redis"
|
||||||
|
immich_model_cache_dir: "/opt/immich/ml-cache"
|
||||||
|
|
||||||
|
immich_env_path: "/etc/immich/immich.env"
|
||||||
|
immich_postgres_env_path: "/etc/immich/postgres.env"
|
||||||
|
|
||||||
|
immich_timezone: "UTC"
|
||||||
|
immich_db_user: "immich"
|
||||||
|
immich_db_password: "immich_password_change_me"
|
||||||
|
immich_db_name: "immich"
|
||||||
|
|
||||||
|
immich_server_port: 2283
|
||||||
|
|
||||||
|
immich_container_uid: 1000
|
||||||
|
immich_container_gid: 1000
|
||||||
|
|
||||||
|
immich_machine_learning_enabled: true
|
||||||
3
handlers/main.yml
Normal file
3
handlers/main.yml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
- name: Reload systemd
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
daemon_reload: true
|
||||||
77
tasks/main.yml
Normal file
77
tasks/main.yml
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
- name: Install Podman packages
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name:
|
||||||
|
- podman
|
||||||
|
- uidmap
|
||||||
|
- slirp4netns
|
||||||
|
- fuse-overlayfs
|
||||||
|
state: present
|
||||||
|
update_cache: true
|
||||||
|
|
||||||
|
- name: Create Immich config directory
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /etc/immich
|
||||||
|
state: directory
|
||||||
|
mode: "0750"
|
||||||
|
|
||||||
|
- name: Create Immich data directories
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
owner: "{{ immich_container_uid }}"
|
||||||
|
group: "{{ immich_container_gid }}"
|
||||||
|
mode: "0750"
|
||||||
|
loop:
|
||||||
|
- "{{ immich_upload_location }}"
|
||||||
|
- "{{ immich_db_data_location }}"
|
||||||
|
- "{{ immich_redis_data_location }}"
|
||||||
|
- "{{ immich_model_cache_dir }}"
|
||||||
|
|
||||||
|
- name: Write Immich env file
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: immich.env.j2
|
||||||
|
dest: "{{ immich_env_path }}"
|
||||||
|
mode: "0640"
|
||||||
|
|
||||||
|
- name: Write Postgres env file
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: postgres.env.j2
|
||||||
|
dest: "{{ immich_postgres_env_path }}"
|
||||||
|
mode: "0640"
|
||||||
|
|
||||||
|
- name: Check Immich podman network
|
||||||
|
ansible.builtin.command: "podman network exists {{ immich_network_name }}"
|
||||||
|
register: immich_network_check
|
||||||
|
changed_when: false
|
||||||
|
failed_when: false
|
||||||
|
|
||||||
|
- name: Create Immich podman network
|
||||||
|
ansible.builtin.command: "podman network create {{ immich_network_name }}"
|
||||||
|
when: immich_network_check.rc != 0
|
||||||
|
|
||||||
|
- name: Install systemd unit files
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: "{{ item.src }}"
|
||||||
|
dest: "/etc/systemd/system/{{ item.dest }}"
|
||||||
|
mode: "0644"
|
||||||
|
loop:
|
||||||
|
- { src: immich-redis.service.j2, dest: immich-redis.service }
|
||||||
|
- { src: immich-postgres.service.j2, dest: immich-postgres.service }
|
||||||
|
- { src: immich-server.service.j2, dest: immich-server.service }
|
||||||
|
- { src: immich-microservices.service.j2, dest: immich-microservices.service }
|
||||||
|
- { src: immich-machine-learning.service.j2, dest: immich-machine-learning.service }
|
||||||
|
when: item.dest != 'immich-machine-learning.service' or immich_machine_learning_enabled
|
||||||
|
notify: Reload systemd
|
||||||
|
|
||||||
|
- name: Enable and start Immich services
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: "{{ item }}"
|
||||||
|
enabled: true
|
||||||
|
state: started
|
||||||
|
loop:
|
||||||
|
- immich-redis.service
|
||||||
|
- immich-postgres.service
|
||||||
|
- immich-server.service
|
||||||
|
- immich-microservices.service
|
||||||
|
- immich-machine-learning.service
|
||||||
|
when: item != 'immich-machine-learning.service' or immich_machine_learning_enabled
|
||||||
18
templates/immich-machine-learning.service.j2
Normal file
18
templates/immich-machine-learning.service.j2
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Immich Machine Learning Container
|
||||||
|
After=network-online.target
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Restart=always
|
||||||
|
ExecStart=/usr/bin/podman run --rm --name immich-machine-learning \
|
||||||
|
--network {{ immich_network_name }} \
|
||||||
|
--user {{ immich_container_uid }}:{{ immich_container_gid }} \
|
||||||
|
-v {{ immich_model_cache_dir }}:/cache:Z \
|
||||||
|
{{ immich_ml_image }}
|
||||||
|
ExecStop=/usr/bin/podman stop -t 10 immich-machine-learning
|
||||||
|
ExecStopPost=/usr/bin/podman rm -f immich-machine-learning
|
||||||
|
TimeoutStartSec=0
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
20
templates/immich-microservices.service.j2
Normal file
20
templates/immich-microservices.service.j2
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Immich Microservices Container
|
||||||
|
After=network-online.target immich-redis.service immich-postgres.service
|
||||||
|
Wants=network-online.target
|
||||||
|
Requires=immich-redis.service immich-postgres.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Restart=always
|
||||||
|
ExecStart=/usr/bin/podman run --rm --name immich-microservices \
|
||||||
|
--network {{ immich_network_name }} \
|
||||||
|
--env-file {{ immich_env_path }} \
|
||||||
|
--user {{ immich_container_uid }}:{{ immich_container_gid }} \
|
||||||
|
-v {{ immich_upload_location }}:/usr/src/app/upload:Z \
|
||||||
|
{{ immich_microservices_image }}
|
||||||
|
ExecStop=/usr/bin/podman stop -t 10 immich-microservices
|
||||||
|
ExecStopPost=/usr/bin/podman rm -f immich-microservices
|
||||||
|
TimeoutStartSec=0
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
18
templates/immich-postgres.service.j2
Normal file
18
templates/immich-postgres.service.j2
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Immich Postgres Container
|
||||||
|
After=network-online.target
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Restart=always
|
||||||
|
ExecStart=/usr/bin/podman run --rm --name immich-postgres \
|
||||||
|
--network {{ immich_network_name }} \
|
||||||
|
--env-file {{ immich_postgres_env_path }} \
|
||||||
|
-v {{ immich_db_data_location }}:/var/lib/postgresql/data:Z \
|
||||||
|
{{ immich_postgres_image }}
|
||||||
|
ExecStop=/usr/bin/podman stop -t 10 immich-postgres
|
||||||
|
ExecStopPost=/usr/bin/podman rm -f immich-postgres
|
||||||
|
TimeoutStartSec=0
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
17
templates/immich-redis.service.j2
Normal file
17
templates/immich-redis.service.j2
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Immich Redis Container
|
||||||
|
After=network-online.target
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Restart=always
|
||||||
|
ExecStart=/usr/bin/podman run --rm --name immich-redis \
|
||||||
|
--network {{ immich_network_name }} \
|
||||||
|
-v {{ immich_redis_data_location }}:/data:Z \
|
||||||
|
{{ immich_redis_image }}
|
||||||
|
ExecStop=/usr/bin/podman stop -t 10 immich-redis
|
||||||
|
ExecStopPost=/usr/bin/podman rm -f immich-redis
|
||||||
|
TimeoutStartSec=0
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
21
templates/immich-server.service.j2
Normal file
21
templates/immich-server.service.j2
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Immich Server Container
|
||||||
|
After=network-online.target immich-redis.service immich-postgres.service
|
||||||
|
Wants=network-online.target
|
||||||
|
Requires=immich-redis.service immich-postgres.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Restart=always
|
||||||
|
ExecStart=/usr/bin/podman run --rm --name immich-server \
|
||||||
|
--network {{ immich_network_name }} \
|
||||||
|
-p {{ immich_server_port }}:3001 \
|
||||||
|
--env-file {{ immich_env_path }} \
|
||||||
|
--user {{ immich_container_uid }}:{{ immich_container_gid }} \
|
||||||
|
-v {{ immich_upload_location }}:/usr/src/app/upload:Z \
|
||||||
|
{{ immich_server_image }}
|
||||||
|
ExecStop=/usr/bin/podman stop -t 10 immich-server
|
||||||
|
ExecStopPost=/usr/bin/podman rm -f immich-server
|
||||||
|
TimeoutStartSec=0
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
10
templates/immich.env.j2
Normal file
10
templates/immich.env.j2
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
TZ={{ immich_timezone }}
|
||||||
|
DB_HOSTNAME=immich-postgres
|
||||||
|
DB_PORT=5432
|
||||||
|
DB_USERNAME={{ immich_db_user }}
|
||||||
|
DB_PASSWORD={{ immich_db_password }}
|
||||||
|
DB_DATABASE_NAME={{ immich_db_name }}
|
||||||
|
REDIS_HOSTNAME=immich-redis
|
||||||
|
{% if immich_machine_learning_enabled %}
|
||||||
|
IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003
|
||||||
|
{% endif %}
|
||||||
3
templates/postgres.env.j2
Normal file
3
templates/postgres.env.j2
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
POSTGRES_USER={{ immich_db_user }}
|
||||||
|
POSTGRES_PASSWORD={{ immich_db_password }}
|
||||||
|
POSTGRES_DB={{ immich_db_name }}
|
||||||
Reference in New Issue
Block a user