Det här sätter du upp
Immich säkerhetskopierar bilderna och videorna från din mobil och visar dem på en tidslinje, på en karta och i album du kan dela. Den känner igen ansikten och kan söka på vad som finns i en bild: skriv a dog on a beach, så hittar den bilden. Mobilapparna laddar upp nya bilder av sig själva.
Här körs den som en pod under en egen användare som heter immich, bakom Caddy från Podman-guiden: Immich-servern, dess maskininlärning, PostgreSQL och Valkey. Bilderna lagras på din server, i en katalog du kan säkerhetskopiera.
Varje steg nedan har körts på en server hos Melonslab med Debian 13:
- Immich 3.2.2 sattes upp, och två bilder laddades upp via dess API, på samma sätt som mobilapparna laddar upp.
- Miniatyrbilder skapades, och en sökning efter
a dogplacerade hunden först, ocha catkatten. - Allt startade igen av sig självt efter en omstart av servern, och sökningen fungerade fortfarande.
Podden använde omkring 2,2 GB minne, mer än hälften till maskininlärning. Immich kräver minst 6 GB på servern och rekommenderar 8 GB. Med 4 GB körs den med maskininlärningen avstängd. Bilderna tar lika mycket plats på servern som originalen, så kontrollera serverns disk innan du flyttar över ett stort bibliotek.
Innan du börjar
Du behöver:
- en server uppsatt som i Podman-guiden, med Caddy igång och minst 6 GB minne;
- en A-post och en AAAA-post för
photos.example.comsom pekar på din server.
Exemplen använder photos.example.com för Immich och 203.0.113.10 för serverns IPv4-adress, som ip -brief address show eth0 visar. Byt ut dem genomgående.
1. Skapa användaren
Som root:
useradd -m -s /bin/bash immich
loginctl enable-linger immich
machinectl shell immich@
Allt fram till steg 4 körs som immich.
2. Skapa databaslösenordet
openssl rand -hex 24 | tr -d '\n' | podman secret create immich-db-password -
3. Definiera podden
mkdir -p ~/.config/containers/systemd ~/immich/library
cd ~/.config/containers/systemd
Dina bilder hamnar i ~/immich/library. Skapa immich.pod:
[Pod]
PodName=immich
# Only Caddy, on this server, can reach Immich: the port is not open to the internet.
PublishPort=127.0.0.1:8098:2283
ShmSize=128m
[Install]
WantedBy=default.target
Skapa immich-db.container:
[Container]
ContainerName=immich-db
Image=ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
Pod=immich.pod
Volume=immich-db:/var/lib/postgresql/data
Environment=POSTGRES_USER=postgres POSTGRES_DB=immich POSTGRES_INITDB_ARGS=--data-checksums
Secret=immich-db-password,type=env,target=POSTGRES_PASSWORD
[Service]
Restart=always
Skapa immich-redis.container:
[Container]
ContainerName=immich-redis
Image=docker.io/valkey/valkey:9
Pod=immich.pod
AutoUpdate=registry
[Service]
Restart=always
Skapa immich-ml.container:
[Container]
ContainerName=immich-ml
Image=ghcr.io/immich-app/immich-machine-learning:v3
Pod=immich.pod
Volume=immich-model-cache:/cache
AutoUpdate=registry
[Service]
Restart=always
Och immich-server.container:
[Unit]
After=immich-db.service immich-redis.service
[Container]
ContainerName=immich-server
Image=ghcr.io/immich-app/immich-server:v3
Pod=immich.pod
Volume=%h/immich/library:/data
Environment=DB_HOSTNAME=127.0.0.1 DB_USERNAME=postgres DB_DATABASE_NAME=immich
Environment=REDIS_HOSTNAME=127.0.0.1 IMMICH_MACHINE_LEARNING_URL=http://127.0.0.1:3003
Environment=TZ=Europe/Stockholm
# Caddy's connections reach the pod from the server's own IPv4 address.
Environment=IMMICH_TRUSTED_PROXIES=203.0.113.10
Secret=immich-db-password,type=env,target=DB_PASSWORD
AutoUpdate=registry
[Service]
Restart=always
Databasen är Immichs egen version av PostgreSQL, med de tillägg som sökningen behöver, och den ligger kvar på den version som Immichs egen installation anger. Taggen v3 håller Immich på dess senaste 3.x-version. TZ är tidszonen Immich visar tider i.
Starta den:
systemctl --user daemon-reload
systemctl --user start immich-pod
systemctl --user enable --now podman-auto-update.timer
Vid första starten laddas avbilderna ner. De upptar omkring 3,6 GB på disken, och det tar några minuter.
4. Sätt Caddy framför
Gå tillbaka till root med exit, byt till Caddys användare med machinectl shell caddy@ och lägg till det här blocket sist i ~/Caddyfile:
photos.example.com {
reverse_proxy 127.0.0.1:8098
}
Starta om Caddy med systemctl --user restart caddy. Caddy släpper igenom uppladdningar av alla storlekar, så stora videor går också igenom.
5. Sätt upp den
Öppna https://photos.example.com och välj Getting Started. Skapa administratörskontot med Admin Email, Admin Password, Confirm Admin Password och Name, och logga in. Immich visar dig sedan några inställningar. Två av dem handlar om externa tjänster:
- Server Privacy: Map laddar kartbilder från
tiles.immich.cloud, och Version Check frågarversion.immich.cloudefter nya versioner. Båda är påslagna. Stäng av dem om du inte vill att Immich kontaktar någon. - User Privacy: Google Cast laddar resurser från Google. Den är avstängd, och den här guiden låter den vara det.
Varje inställning kan ändras senare, under Administration och Settings.
För att ge någon annan ett konto öppnar du Administration, Users och väljer Create user. Immich har ingen öppen registreringssida.
6. Ladda upp från mobilen
Installera Immichs app för Android eller iPhone. Ange https://photos.example.com som server, logga in och slå på säkerhetskopiering för de album du vill. Nya bilder går sedan till din server av sig själva. På en dator drar du in bilderna i webbsidan.
Första gången Immich behandlar bilder laddar maskininlärningscontainern ner sina modeller, omkring 800 MB: från Hugging Face, utom modellen som läser text i bilder, som kommer från ModelScope. Bara modellerna laddas ner. Dina bilder lämnar aldrig din server.
7. Säkerhetskopiera
Allt värt att spara finns i ~/immich/library: bilderna och videorna som de laddades upp, och i underkatalogen backups en kopia av databasen som Immich gör varje natt klockan 02.00. Immich behåller de 14 senaste kopiorna. Kopiera hela katalogen till en annan maskin regelbundet, till exempel med rsync.
Så gör du en kopia av databasen direkt, som immich:
mkdir -p ~/backup
podman exec immich-db pg_dumpall --clean --if-exists -U postgres | gzip > ~/backup/immich-db.sql.gz
Felsökning
Sökningen hittar ingenting, eller ansikten känns inte igen. Maskininlärningen körs i bakgrunden, efter att miniatyrbilderna har skapats. Administration, Job Queues visar vad som väntar. Första gången väntar den också på att modellerna ska laddas ner.
Sidan laddar inte efter en uppdatering. Läs podman logs immich-server. En ny version av Immich kräver ibland en ny databasavbild: det står i versionsanteckningarna, som också anger den nya taggen för immich-db.container.