I have an Ansible playbook that I use to setup everything and all troubleshooting steps I ever had to take to fix something get written down in an Obsidian.md vault.
I added the REDIS_HOSTNAME
and DB_DATA_LOCATION
environment variables.
Not sure if I understood it right, but I guess not since it still doesn’t work:
- name: create Immich network
community.docker.docker_network:
name: immich-network
state: present
- name: deploy Immich-Redis
community.docker.docker_container:
name: immich-redis
image: registry.hub.docker.com/library/redis:6.2-alpine@sha256:84882e87b54734154586e5f8abd4dce69fe7311315e2fc6d67c29614c8de2672
restart_policy: always
networks:
- name: immich-network
env:
DB_DATABASE_NAME: "{{ immich_postgres_db_name }}"
DB_USERNAME: "{{ immich_postgres_db_user }}"
DB_PASSWORD: "{{ immich_postgres_db_password }}"
DB_DATA_LOCATION: "{{ nvme_mount_point }}/immich/postgres"
- name: deploy Immich-Postgres
community.docker.docker_container:
name: immich-postgres
image: registry.hub.docker.com/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
restart_policy: always
volumes:
- "{{ nvme_mount_point }}/immich/postgres:/var/lib/postgresql/data"
env:
POSTGRES_DB: "{{ immich_postgres_db_name }}"
POSTGRES_USER: "{{ immich_postgres_db_user }}"
POSTGRES_PASSWORD: "{{ immich_postgres_db_password }}"
REDIS_HOSTNAME: immich-redis
networks:
- name: immich-network
- name: deploy Immich-Machine-Learning
community.docker.docker_container:
name: immich-machine-learning
image: ghcr.io/immich-app/immich-machine-learning:release
restart_policy: always
volumes:
- "{{ nvme_mount_point }}/immich/model-cache:/cache"
networks:
- name: immich-network
env:
DB_DATABASE_NAME: "{{ immich_postgres_db_name }}"
DB_USERNAME: "{{ immich_postgres_db_user }}"
DB_PASSWORD: "{{ immich_postgres_db_password }}"
DB_DATA_LOCATION: "{{ nvme_mount_point }}/immich/postgres"
REDIS_HOSTNAME: immich-redis
- name: deploy Immich-Microservices
community.docker.docker_container:
name: immich-microservices
image: ghcr.io/immich-app/immich-server:release
restart_policy: always
command: ['start.sh', 'microservices']
volumes:
- "{{ hdd_mount_point}}/immich/library:/usr/src/app/upload"
- /etc/localtime:/etc/localtime:ro
networks:
- name: immich-network
env:
DB_DATABASE_NAME: "{{ immich_postgres_db_name }}"
DB_USERNAME: "{{ immich_postgres_db_user }}"
DB_PASSWORD: "{{ immich_postgres_db_password }}"
DB_DATA_LOCATION: "{{ nvme_mount_point }}/immich/postgres"
REDIS_HOSTNAME: immich-redis
- name: deploy Immich-Server
community.docker.docker_container:
name: immich-server
image: ghcr.io/immich-app/immich-server:release
restart_policy: always
command: ['start.sh', 'immich']
volumes:
- "{{ hdd_mount_point}}/immich/library:/usr/src/app/upload"
- /etc/localtime:/etc/localtime:ro
ports:
- "2283:3001"
networks:
- name: immich-network
env:
DB_DATABASE_NAME: "{{ immich_postgres_db_name }}"
DB_USERNAME: "{{ immich_postgres_db_user }}"
DB_PASSWORD: "{{ immich_postgres_db_password }}"
DB_DATA_LOCATION: "{{ nvme_mount_point }}/immich/postgres"
REDIS_HOSTNAME: immich-redis
This is what I have now and I get the following error in immich-server and immich-microservices:
[Nest] 7 - 05/02/2024, 3:45:01 PM ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)...
Error: getaddrinfo ENOTFOUND database
at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:118:26)
Edit: It works! I forgot to add DB_HOSTNAME
I recently began learning Ansible and this playlist was very helpful with learning.
I’m using the Immich app from TrueNAS, how do I properly update it? Or is it being taken care off by TrueNAS?
Edit: I asked on the TrueNAS discord for help and someone who already updated their Immich figured out how to fix the installation afterwards. I copy&paste the guide here:
This guide assumes that Heavyscript is installed and pgAdmin.
https://github.com/Heavybullets8/heavy_script
https://truecharts.org/charts/stable/pgadmin/
Upgrade Immich to v.1.95.1.
If Immich fails to deploy check the logs heavyscript pod --logs immich
. If the logs complain that indexes need to be deleted continue with this guide.
Access the shell for the postgres pod heavyscript pod -s immich
.
Select the postgres
pod.
Inside the pod run env
and record the password. Then type exit
to exit the pod.
Get the DNS address and port for Immich postgres pod. heavyscript dns -a
Launch pgAdmin and right-click on Servers
select Register > Server
.
In the Connection
tab put the hostname and port from step 6. The username is immich and use the password from step 3.
Once connected create a backup by expanding Servers > Immich > Databases
and right-click on immich
then select Backup...
. Follow the prompts to create a backup.
Right-click on immich
and select Query Tool
.
Use the following query to delete your indexes.
FROM pg_index X JOIN
pg_class I ON I.oid = X.indexrelid JOIN
pg_am A ON A.oid = I.relam
WHERE A.amname = 'vectors';
Stop Immich with heavyscript heavyscript app --stop immich
.
Once all pods have scaled down start Immich heavyscript app --start immich
.
The SQL query will complain about a syntax error but it will work regardless. It just takes some time to redeploy immich.
Credit goes to @verbalsiegeengine on Discord
I think I had the same problem not so long ago. Every proxy host was working except NPM itself. My problem was that I just entered the wrong IP for the proxy host. I had to enter localhost or 127.0.0.1 to get it to work and everything else was like the tutorial you linked (I followed the same one)
Since you want NPM to proxy to itself but using the SSL certificate and the domain you set in the proxy host.
I don’t quite follow? The domain resolves to IP address I want it to resolve. My TrueNAS server has the IP 192.168.178.167 and on it I have NPM installed as an app. The admin page of NPM is accessible via the same IP on port 10582. Syncthing is also installed and accessible via the same IP address and port 8384. I have both of them configured in NPM so that theoretically subdomain.mydomain.com should resolve correctly and that I can access their respective admin pages. For Syncthing and any other app this is working except for the admin page of NPM itself. I’m trying to figure out why that is.
I used to run multiple containers with TrueNAS Scale through their apps system (not as a VM in TrueNAS) and it was very unstable. I constantly had to fix something and the apps had constant updates even though there were no updates to the apps itself. It was really annoying to work with. I switched to Fedora Server and it has been much better since.