I
Immich•3w ago
Rock$tar

Restore the DB and Photos to a new instance of immich

not sure if this has been asked many times, but specifically, I m moving from Immich v 1.132 to v1.137, I have the Database dumps and the photos (using a Storage template) but I m unable to restore the db/photos to the new Immich Install... The DB just gives me errors about USERS, ROLES, etc etc.. I m using Portainer to spin these instances. is there something i m doing wrong? as I tried to follow the process of Backup and Restore. i m happy to provide any more info/screenshots of errors
23 Replies
Immich
Immich•3w ago
:wave: Hey @Rock$tar, Thanks for reaching out to us. Please carefully read this message and follow the recommended actions. This will help us be more effective in our support effort and leave more time for building Immich :immich:. References - Container Logs: docker compose logs docs - Container Status: docker ps -a docs - Reverse Proxy: https://immich.app/docs/administration/reverse-proxy - Code Formatting https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline#h_01GY0DAKGXDEHE263BCAYEGFJA Checklist I have... 1. :ballot_box_with_check: verified I'm on the latest release(note that mobile app releases may take some time). 2. :ballot_box_with_check: read applicable release notes. 3. :ballot_box_with_check: reviewed the FAQs for known issues. 4. :ballot_box_with_check: reviewed Github for known issues. 5. :ballot_box_with_check: tried accessing Immich via local ip (without a custom reverse proxy). 6. :ballot_box_with_check: uploaded the relevant information (see below). 7. :ballot_box_with_check: tried an incognito window, disabled extensions, cleared mobile app cache, logged out and back in, different browsers, etc. as applicable (an item can be marked as "complete" by reacting with the appropriate number) Information In order to be able to effectively help you, we need you to provide clear information to show what the problem is. The exact details needed vary per case, but here is a list of things to consider: - Your docker-compose.yml and .env files. - Logs from all the containers and their status (see above). - All the troubleshooting steps you've tried so far. - Any recent changes you've made to Immich or your system. - Details about your system (both software/OS and hardware). - Details about your storage (filesystems, type of disks, output of commands like fdisk -l and df -h). - The version of the Immich server, mobile app, and other relevant pieces. - Any other information that you think might be relevant. Please paste files and logs with proper code formatting, and especially avoid blurry screenshots. Without the right information we can't work out what the problem is. Help us help you ;) If this ticket can be closed you can use the /close command, and re-open it later if needed. Successfully submitted, a tag has been added to inform contributors. :white_check_mark:
Tempest
Tempest•3w ago
Hi there! You'll need to provide precisely what you did and what errors you are getting for someone to provide valuable help
SrFox3999
SrFox3999•3w ago
I was able to backup the necessary files (which is the photos itself and the pgdata, along with .env or docker-compose if needed), with this simple script self-made:
#!/bin/sh

BACKUP_DIR="/backup/immich_backup_$(date +%F)"
mkdir -p "$BACKUP_DIR"
rsync -avh /home/apps/immich-photos/ "$BACKUP_DIR/immich-photos/"
rsync -avh /DATA/AppData/immich/pgdata/ "$BACKUP_DIR/pgdata/"
rsync -avh docker-compose.yml "$BACKUP_DIR/"
[ -f .env ] && rsync -avh .env "$BACKUP_DIR/"
#!/bin/sh

BACKUP_DIR="/backup/immich_backup_$(date +%F)"
mkdir -p "$BACKUP_DIR"
rsync -avh /home/apps/immich-photos/ "$BACKUP_DIR/immich-photos/"
rsync -avh /DATA/AppData/immich/pgdata/ "$BACKUP_DIR/pgdata/"
rsync -avh docker-compose.yml "$BACKUP_DIR/"
[ -f .env ] && rsync -avh .env "$BACKUP_DIR/"
Be aware to change the paths needed or execute command one by one by hand What I did was to take only the photos and pgdata files and then use the latest .env and docker-compose files to migrate, and it worked 🙂
Rock$tar
Rock$tarOP•3w ago
here's my Portainer template:
name: Immich
services:
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
POSTGRES_DB: immich
POSTGRES_INITDB_ARGS: '--data-checksums'
ports:
- '5432:5432' #Exposed so that I can Debug via Adminer
volumes:
- /casa/AppData/immich/pgdata:/var/lib/postgresql/data
restart: always

immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:v1.137.3
volumes:
- /data/AppData/immich/model-cache:/cache
restart: always
healthcheck:
disable: false


immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:v1.137.3
volumes:
- /data/Gallery/immich:/data
- /etc/localtime:/etc/localtime:ro
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
POSTGRES_DB: immich
ports:
- '2283:2283'
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false

redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:facc1d2c3462975c34e10fccb167bfa92b0e0dbd992fc282c29a61c3243afb11

healthcheck:
test: redis-cli ping || exit 1
restart: always
name: Immich
services:
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:32324a2f41df5de9efe1af166b7008c3f55646f8d0e00d9550c16c9822366b4a
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
POSTGRES_DB: immich
POSTGRES_INITDB_ARGS: '--data-checksums'
ports:
- '5432:5432' #Exposed so that I can Debug via Adminer
volumes:
- /casa/AppData/immich/pgdata:/var/lib/postgresql/data
restart: always

immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:v1.137.3
volumes:
- /data/AppData/immich/model-cache:/cache
restart: always
healthcheck:
disable: false


immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:v1.137.3
volumes:
- /data/Gallery/immich:/data
- /etc/localtime:/etc/localtime:ro
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
POSTGRES_DB: immich
ports:
- '2283:2283'
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false

redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:facc1d2c3462975c34e10fccb167bfa92b0e0dbd992fc282c29a61c3243afb11

healthcheck:
test: redis-cli ping || exit 1
restart: always
The process on website says that yuo have to pause everything and just connect to the imminch_postgres container and execute the psql command... which I had multiple errors in commandline with, so to simplify it , I connected the DB once the container is created and I MANUALLY pause the other 3 containers, and connect to DB and execute the sql Command, I will attach a screenshot
Rock$tar
Rock$tarOP•3w ago
No description
No description
No description
No description
No description
No description
No description
No description
Tempest
Tempest•3w ago
You need to run the restore command before the stack initializes the DB I believe so you need to delete the contents of the postgres directory when all containers are stopped, then manually start just the postgres container
Rock$tar
Rock$tarOP•3w ago
ok let me try that but heres another thing, after the initialization and before stopping, do I sign up with admin email and user stuff or nothing just initialize, stop and delete???
Tempest
Tempest•3w ago
that's too far. If you can sign up then immich-server is running, which it should not be
Rock$tar
Rock$tarOP•3w ago
ok, so this is what i m gonna do: start the stack, stop the other 3 , let db initialize. stop it and then delete pgdata, and then start to restore
Tempest
Tempest•3w ago
why start the stack at all? just start the database manually. Deleting files while it is running likely won't work well
Rock$tar
Rock$tarOP•3w ago
i m not sure how to not autostart the stack , let me see no luck so far,\
Tempest
Tempest•3w ago
I'd personally do it with docker command line commands, as that's probably how the docs are written? I apologize I have no experience with portainer
Mraedis
Mraedis•3w ago
Don't stop the stack, stop the individual containers?
Rock$tar
Rock$tarOP•3w ago
yea, exactly thats what I did
Tempest
Tempest•3w ago
Does starting immich-server not initialize the postgres container?
Mraedis
Mraedis•3w ago
why would that matter if you stop and delete everything :p
Tempest
Tempest•3w ago
Wouldn't it be in memory if it's running? Or at least partially
Mraedis
Mraedis•3w ago
No description
Mraedis
Mraedis•3w ago
stopped the containers, not the stack can do whatever I want
Tempest
Tempest•3w ago
I see. Stop all containers, then delete files, then start postgres
Zeus
Zeus•3w ago
This is the purpose of the skip migrations env var https://immich.app/docs/install/environment-variables/#database

Did you find this page helpful?