SSD Nodes Learn
मार्गदर्शक Matt Connorद्वारे Matt Connor · अपडेटेड 2026-07-24

Immich self-hosting guide: RAM आणि upgrades

Immich साठी 6 GB RAM आवश्यक आहे. port 2283, pgvecto.rs database आणि v3 upgrade मधील त्रुटी व रिस्टोर स्टेप्स याबद्दल सविस्तर माहिती येथे वाचा.

तुम्ही काय तयार करत आहात

Immich ही एक self-hosted फोटो आणि व्हिडिओ बॅकअप सेवा आहे — जी Google Photos ला एक खरा पर्याय आहे. यामध्ये एक फोन app आहे जे बॅकग्राउंडमध्ये तुमचा camera roll अपलोड करते. यात timeline, albums, face recognition आणि machine-learning search आहे, ज्यामुळे तुम्ही काहीही tag न करता "beach" किंवा एखादी व्यक्ती शोधू शकता. तुम्ही हे तुमच्या स्वतःच्या VPS वर चालवू शकता, मूळ files तुमच्या disk वर राहतात आणि तुम्हाला काही विकण्यासाठी कोणीही त्या scan करत नाही.

याची installation ही project च्या स्वतःच्या Docker Compose file मधील चार containers वापरून केली जाते. या प्रक्रियेसाठी 10 मिनिटे लागतात. या मार्गदर्शिकेचा उर्वरित भाग कठीण आहे: लहान server वर machine-learning container ला खूप memory लागते, मूळ files मुळे disk लवकर भरते, mobile app plain-HTTP server स्वीकारत नाही, आणि Immich मध्ये वारंवार breaking changes येतात, ज्यामुळे निष्काळजी docker compose pull मुळे तुमची database सुरू न होण्यासारखी स्थिती निर्माण होऊ शकते. या चार गोष्टींकडे गांभीर्याने लक्ष दिले तर Immich अत्यंत स्थिर (rock-solid) आहे. याकडे दुर्लक्ष केल्यास तुमचा पूर्ण weekend वाया जाऊ शकतो.

Prerequisites, and the honest gotchas

  • RAM: अधिकृत दस्तऐवजांनुसार किमान 6 GB आणि शिफारशीत 8 GB आवश्यक आहे — 4 GB RAM आणि swap ही किमान मर्यादा मानली पाहिजे. immich-server आणि Postgres कंटेनर्स कमी संसाधने वापरतात. immich-machine-learning कंटेनर सर्वाधिक RAM वापरतो — सर्च इंडेक्स तयार करण्यासाठी तो CLIP आणि face-recognition मॉडेल्स RAM मध्ये लोड करतो; 2 GB RAM असलेल्या सिस्टमवर kernel तो बंद (kill) करते. तुमच्याकडे 4 GB RAM असल्यास देखील swap वापरा.
  • Disk: तुमच्या संपूर्ण लायब्ररीसाठी आवश्यक असलेल्या जागेपेक्षा थोडी जास्त जागा ठेवा. तुमच्या मूळ (originals) फाइल्स पूर्णपणे कॉपी केल्या जातात, शिवाय Immich थंबनेल्स आणि प्रिव्ह्यू इमेजेस तयार करते (साधारणपणे 10–20% अतिरिक्त जागा लागते). 200 GB फोटो कलेक्शनसाठी 300 GB वॉल्यूम आवश्यक आहे. Postgres तुलनेने कमी जागा घेतो.
  • CPU: कोणताही आधुनिक KVM VPS वापरता येईल, परंतु CPU वर ML प्रक्रिया संथ असते. मोठ्या प्रमाणात डेटा इम्पोर्ट केल्यास smart-search इंडेक्सिंग बॅकग्राउंडमध्ये तासनतास चालू शकते. हे सामान्य आहे; यासाठी GPU ची आवश्यकता नाही.
  • A domain name जो VPS कडे पॉइंट केलेला असावा. मोबाईल ॲपसाठी HTTPS एंडपॉइंट असणे आवश्यक आहे आणि तुम्ही रिव्हर्स प्रॉक्सी वापरणे श्रेयस्कर आहे. ही सेटअप पद्धत self-hosted Nextcloud instance with Docker, TLS and backups सारखीच आहे — Immich हे त्या फाईल सर्व्हरचे फोटोंसाठीचे प्रतिरूप आहे.
  • Docker and the Compose plugin इन्स्टॉल केलेले असावेत — Docker Engine आणि Docker च्या स्वतःच्या apt रिपॉझिटरीमधून मिळालेला Compose v2 प्लगइन, जसे our Docker Compose basics guide मध्ये स्पष्ट केले आहे.

Step 1: इतर कोणत्याही गोष्टीपूर्वी swap जोडा

लहान VPS वर Immich मध्ये येणारी सर्वात सामान्य समस्या म्हणजे ML container OOM-killed होणे. हे टाळण्यासाठी kernel ला थोडी अतिरिक्त मेमरी उपलब्ध करून द्या.

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h

आता free -h मध्ये 4.0Gi ची Swap: ओळ दिसली पाहिजे. यामुळे ML वेगवान होणार नाही, परंतु 4 GB मशीनवर indexing दरम्यान container बंद पडण्यापासून हे रोखते.

Step 2: अधिकृत compose आणि env मिळवा — त्यांच्या फाईल्स वापरा, कॉपी नको

Immich त्याच्या फाईल्समध्ये सर्व्हिस व्हर्जन आणि महत्त्वाचे म्हणजे डेटाबेस इमेज निश्चित (pin) करते. माहितीसाठी कोणत्याही ब्लॉगमधील (या ब्लॉगसह) compose फाईल वापरू नका. रिलीज ॲसेट्स डाउनलोड करा:

sudo mkdir -p /opt/immich && cd /opt/immich
sudo wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
sudo wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

हे टॅग केलेल्या रिलीजमधून येतात, त्यामुळे इमेज रेफरन्स मॅच होतात. compose फाईलमध्ये चार सर्व्हिस परिभाषित आहेत. काहीही करण्यापूर्वी त्या काय आहेत हे समजून घेणे उपयुक्त ठरेल:

  • immich-server (ghcr.io/immich-app/immich-server, कंटेनर immich_server) — API आणि web UI, जे port 2283 वर कार्यरत आहे. हे तुमचे uploads /data येथे माउंट करते.
  • immich-machine-learning (ghcr.io/immich-app/immich-machine-learning, कंटेनर immich_machine_learning) — CLIP सर्च आणि फेस रिकग्निशन. हे डाउनलोड केलेले मॉडेल्स model-cache वॉल्यूममध्ये कॅश करते. याला जास्त मेमरी लागते.
  • database (कंटेनर immich_postgres) — VectorChord वेक्टर एक्सटेन्शनसह Postgres, जे सिमिलॅरिटी सर्चसाठी वापरले जाते. इमेज टॅग compose फाईलमध्ये थेट digest द्वारे निश्चित केला आहे, उदाहरणार्थ ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:.... जुन्या सेटअपमध्ये pgvecto.rs वापरले जात असे; Immich v3.0 मध्ये त्याचे सपोर्ट काढून टाकण्यात आले आहे, त्यामुळे आज तुम्ही जे काही इन्स्टॉल कराल ते VectorChord असेल. या टॅगमध्ये कधीही मॅन्युअली बदल करू नका.
  • redis (कंटेनर immich_redis) — जॉब क्यू (job queues) साठी Valkey/Redis इन्स्टन्स.

Step 3: .env कॉन्फिगर करा — जिथे तुमचे फोटोज आणि डेटाबेस असतात

.env उघडा आणि चार गोष्टी सेट करा. खालील चिन्हाच्या (marked line) खालील सर्व गोष्टी तशाच राहू द्या.

# Where original uploads are stored on the host
UPLOAD_LOCATION=/opt/immich/library

# Where the Postgres data lives. NEVER put this on an NFS/network share.
DB_DATA_LOCATION=/opt/immich/postgres

# "v3" is a floating tag that tracks the latest v3.x. Pin a full tag like
# v3.0.2 instead — then you upgrade on purpose, not by surprise.
IMMICH_VERSION=v3.0.2

# Change this to a long random string. Letters and digits only.
DB_PASSWORD=REPLACE_WITH_A_LONG_RANDOM_STRING

# Set your timezone so timestamps and "on this day" line up
TZ=Europe/London

###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

दोन महत्त्वाचे नियम. UPLOAD_LOCATION तुमच्या मोठ्या डिस्ककडे (big disk) निर्देशित असावे — जर तुम्ही नंतर डेटा वॉल्यूम जोडणार असाल, तर सुरुवातीपासूनच हा पाथ (mount path) सेट करा; कारण नंतर तो हलवल्यास थंबनेल्स (thumbnails) आणि ॲसेट पाथ्स (asset paths) अपडेट करावे लागतील. आणि DB_DATA_LOCATION स्थानिक डिस्कवर (local disk) असणे आवश्यक आहे: NFS किंवा SMB शेअरवर Postgres वापरल्यास डेटा करप्ट (corrupt) होतो, आणि अधिकृत डॉक्युमेंटेशनमध्ये असे स्पष्टपणे नमूद केले आहे. जर तुम्ही DB_PASSWORD मध्ये फक्त अक्षरे आणि अंक वापरले, तर कनेक्शन-स्ट्रिंग एस्केपिंग (connection-string escaping) संबंधित बग्स टाळता येतील.

Step 4: First run and creating the admin user

cd /opt/immich
sudo docker compose up -d
sudo docker compose ps

योग्य निकाल म्हणजे चार containers, जे सर्व running आणि शेवटी healthy असतील:

NAME                      STATUS
immich_machine_learning   Up (healthy)
immich_postgres           Up (healthy)
immich_redis              Up (healthy)
immich_server             Up (healthy)

पहिल्या up मध्ये several gigabytes च्या images pull होतील, त्यामुळे थोडा वेळ द्या. sudo docker compose logs -f immich-server वापरून प्रगती (progress) तपासा; सर्व काही तयार झाल्यावर server port 2283 वर listening असल्याचे log मध्ये दर्शवते. आता browser मध्ये http://YOUR_SERVER_IP:2283 उघडा. पहिल्या भेटीत Getting Started wizard दिसेल — तुम्ही तयार केलेले पहिले account हे admin असेल. एक strong password सेट करा; या account कडे server settings, user management आणि तुम्हाला नंतर आवश्यक असणारी ML configuration याचे अधिकार असतील.

Step 5: मोबाईल ॲप आणि बॅकग्राउंड बॅकअप

App Store किंवा Play Store वरून "Immich" इंस्टॉल करा. लॉगिन स्क्रीनवर तुम्हाला Server Endpoint URL विचारला जाईल. यामध्ये scheme सह पूर्ण URL प्रविष्ट करा, उदाहरणार्थ https://photos.example.com (ॲप स्वतःहून /api जोडते). तुम्ही नुकत्याच तयार केलेल्या खात्याने लॉगिन करा, त्यानंतर ॲपमधील Backup स्क्रीन उघडा, ज्या अल्बमचे संरक्षण करायचे आहे ते निवडा (साधारणपणे Camera आणि Screenshots) आणि Background backup सक्षम करा. iOS मध्ये बॅकग्राउंड बॅकअप OS द्वारे मर्यादित (throttled) केला जातो — foreground अपलोड नेहमी चालतात, तर बॅकग्राउंड अपलोड OS परवानगी देईल तेव्हा होतात.

अनेक युजर्स येथे अडकतात, त्यामुळे ॲपशी संघर्ष करण्यापूर्वी Step 6 काळजीपूर्वक वाचा.

Step 6: reverse proxy द्वारे HTTPS — आणि full-URL नियम

मोबाईल ॲपला HTTPS ची आवश्यकता असते. port 2283 च्या समोर एक reverse proxy सेट करा आणि तिथे TLS terminate करा. जर तुम्ही आधीच अनेक containers वापरत असाल, तर Traefik with automatic TLS for multiple Docker apps हा सर्वात सोपा पर्याय आहे — एक label block photos.example.com ला immich-server container कडे route करतो आणि तुमच्यासाठी certificate मिळवतो. जर तुम्हाला nginx वापरायचे असेल, तर Let's Encrypt with Certbot and nginx मार्गदर्शकामुळे तुम्हाला certificate आणि proxy_pass http://127.0.0.1:2283; block मिळेल. Immich साठी एक proxy सेटिंग महत्त्वाची आहे: upload size limit वाढवा, कारण फोनवरील व्हिडिओ मोठे असतात. nginx मध्ये हे server block मधील client_max_body_size 50000M; आहे — default 1 MB मुळे व्हिडिओ अपलोड 413 Request Entity Too Large सह reject होतात.

ॲपद्वारे लागू केलेला नियम: endpoint reachable असणे आवश्यक आहे आणि प्रत्यक्षात ते HTTPS असणे आवश्यक आहे. http:// endpoints, किंवा port शिवाय थेट IP वापरल्यास "the app cannot reach the server" ही त्रुटी येते — याचे सविस्तर वर्णन खालीलप्रमाणे आहे.

Step 7: External libraries vs uploads — importing an existing photo tree

Immich मध्ये फोटो समाविष्ट करण्याचे दोन मार्ग आहेत आणि ते एकमेकांपासून वेगळे आहेत.

  • Uploads म्हणजे Immich च्या मालकीची मालमत्ता (assets). ॲप किंवा वेब अपलोडर फाईल UPLOAD_LOCATION मध्ये कॉपी करतो. Immich त्या फाईल्सचे नाव बदलू शकते, त्या हलवू शकते किंवा हटवू शकते.
  • External libraries म्हणजे तुमच्या सर्व्हरवरील फोल्डरमध्ये आधीच असलेल्या फाईल्सचे read-only इम्पोर्ट्स — जसे की जुना Pictures tree किंवा NAS export. Immich त्या फाईल्स तिथेच index करते आणि timeline मध्ये दाखवते, परंतु मूळ फाईल्समध्ये कोणताही बदल किंवा डिलीट करत नाही.

विद्यमान (existing) tree इम्पोर्ट करण्यासाठी, तो सर्व्हर कंटेनरमध्ये read-only पद्धतीने mount करा. immich-server: अंतर्गत docker-compose.yml संपादित करा आणि volume जोडा:

  immich-server:
    volumes:
      - ${UPLOAD_LOCATION}:/data
      - /etc/localtime:/etc/localtime:ro
      - /srv/photos:/mnt/media/photos:ro

:ro मुळे Immich मूळ फाईल्सना स्पर्श करू शकत नाही याची खात्री मिळते. sudo docker compose up -d वापरून कंटेनर पुन्हा तयार करा, त्यानंतर web UI मध्ये तुमच्या avatar → Administration → External Libraries → Create Library वर जा, संबंधित user निवडा, Folders अंतर्गत Add वर क्लिक करा आणि container पाथ प्रविष्ट करा — /mnt/media/photos, host पाथ /srv/photos नाही. Scan वर क्लिक करा. host पाथ ऐवजी container पाथ न वापरणे ही external-library मधील सर्वात मोठी चूक आहे; यामुळे scan ला काहीच सापडत नाही आणि zero assets दर्शवले जातात.

Step 8: Immich साठी आवश्यक असलेले upgrade discipline

ही पायरी Immich च्या यशस्वी किंवा अयशस्वी वापरासाठी अत्यंत महत्त्वाची आहे. Immich वेगाने अपडेट्स रिलीज करते; ते जुन्या व्हर्जनसाठी fixes प्रदान करत नाही किंवा downgrades ला सपोर्ट करत नाही. जर तुम्ही नेहमी v3 tag फॉलो केला, तर तुमची database खराब होऊ शकते. यासाठी खालील नियमांचे पालन करा:

  1. व्हर्जन pin करा. IMMICH_VERSION मध्ये नेहमी v3.0.2 सारखे निश्चित tag वापरा. नेहमी बदलणारे (floating) v3 tag वापरू नका, कारण ते नेहमी नवीन v3.x व्हर्जन डाउनलोड करते.
  2. प्रत्येक वेळी release notes वाचा. upgrade करण्यापूर्वी release notes वाचणे अनिवार्य आहे. त्यामध्ये breaking changes — विशेषतः database किंवा vector-extension संबंधित बदल — स्पष्टपणे दिले असतात. v3.0 हे याचे उत्तम उदाहरण आहे: यामध्ये pgvecto.rs पूर्णपणे काढून टाकण्यात आले होते. त्यामुळे ज्या वापरकर्त्यांकडे जुने extension होते, त्यांना upgrade करण्यापूर्वी VectorChord migration (जे v1.133 मध्ये आले होते) पूर्ण करणे आवश्यक होते.
  3. आधी database चा backup घ्या (Step 9). नेहमी backup घ्या, विशेषतः जेव्हा release notes मध्ये database बद्दल उल्लेख असेल तेव्हा अधिक काळजी घ्या.
  4. नवीन compose file देखील घ्या. IMMICH_VERSION फक्त server आणि ML images pin करते. Postgres image docker-compose.yml मध्ये digest द्वारे pin केलेली असते, त्यामुळे ज्या व्हर्जनला नवीन database extension लागते, ते एक नवीन compose file देखील प्रदान करते. दोन्ही release assets पुन्हा डाउनलोड करा, तुमचे .env values पुन्हा लागू करा आणि मग upgrade करा.
  5. तुमचे mobile clients देखील त्याच वेळी update करा. server फक्त त्याच्या मॅचिंग major version शी संवाद साधते आणि app फक्त सध्याचे आणि मागील major version ला सपोर्ट करते. जर server हे app च्या व्हर्जनपेक्षा पुढे गेले असेल, तर app update करेपर्यंत फोनवर Your app major version is not compatible with the server! त्रुटी दिसेल. त्यामुळे आधी app update करणे सर्वात सुरक्षित आहे.

नवीन फाइल्स मिळाल्यानंतर वापरण्यासाठी प्रत्यक्ष commands:

cd /opt/immich
sudo docker compose pull
sudo docker compose up -d
sudo docker image prune

Step 9: Backups — a database dump PLUS the originals, and test it

Immich चा backup म्हणजे दोन गोष्टी आहेत, आणि त्या दोन्हीशिवाय backup निरुपयोगी आहे. database मध्ये album structure, faces, search indexes आणि asset ते file यांचा map असतो. originals directory मध्ये प्रत्यक्ष photos असतात. जर तुम्ही यापैकी एक गोष्ट विसरलात, तर तुम्हाला एकतर organization शिवाय photos मिळतील किंवा missing files दर्शवणारा एक रिकामी shell मिळेल.

Postgres container च्या आतून pg_dump वापरून database dump घ्या — विशेषतः immich database चा, संपूर्ण cluster चा नाही:

sudo docker exec -t immich_postgres pg_dump --clean --if-exists \
  --dbname=immich --username=postgres | gzip > /opt/immich/immich-db-$(date +%F).sql.gz

त्यानंतर UPLOAD_LOCATION चा backup घ्या — संपूर्ण /opt/immich/library tree, आणि विशेषतः त्यातील library/, upload/ आणि profile/ subfolders — restic, rsync किंवा borg वापरून दुसऱ्या मशीनवर किंवा object storage वर. आधी database चा backup घ्या आणि नंतर files चा, जेणेकरून dump मध्ये अशा फोटोचा संदर्भ येणार नाही जो file backup मध्ये अजून कॉपी झालेला नाही. External libraries तुम्ही त्यांच्या मूळ source वरून वेगळ्यापणे backup कराव्या लागतात; Immich त्यांच्या मालकीची नाहीत.

आता सर्वात महत्त्वाचा भाग: test the restore. Restore प्रक्रिया एका fresh stack वर चालवून पहा ज्याचा server कधीही सुरू झालेला नाही. तसेच, Postgres image अशी असावी ज्याची vector extension dump सोबत सुसंगत (compatible) आहे — म्हणूनच DB image tag मध्ये कधीही बदल करू नका. एका नवीन box वर, जिथे समान compose आणि .env असेल, जुना सर्व डेटा पुसून टाका (wipe), फक्त database सुरू करा आणि नंतर dump load करा:

cd /opt/immich
sudo docker compose down -v
sudo docker compose pull
sudo docker compose create
sudo docker start immich_postgres
sleep 10
gunzip --stdout immich-db-2026-07-15.sql.gz |
  sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" |
  sudo docker exec -i immich_postgres psql --dbname=immich --username=postgres --single-transaction --set ON_ERROR_STOP=on
sudo docker compose up -d

VectorChord database साठी search_path चा sed rewrite करणे अनिवार्य आहे — ते न केल्यास restore प्रक्रिया अर्धवट थांबेल. जेव्हा stack तुमच्या originals सह पुन्हा सुरू होईल, तेव्हा web UI उघडा: जर तुमचे photos आणि albums तिथे दिसत असतील, तर तुमचा backup यशस्वी आहे. जर तुम्ही ही चाचणी कधीच केली नसेल, तर तुमच्याकडे backup नाही — फक्त एक आशा आहे.

Failure modes, with the strings you will see

The ML container is OOM-killed. sudo docker compose logs immich-machine-learning मध्ये अचानक अडथळा येतो, docker compose ps मध्ये Restarting दिसून येते, आणि exit code 137 असतो. sudo dmesg | grep -i oom हे सिद्ध करते: Out of memory: Killed process ... (python3). यामुळे search आणि face jobs थांबतात. याचे कारण मॉडेल्ससाठी अपुरी RAM असणे हे आहे. उपाय (क्रमाने): swap वाढवा (Step 1); VPS मध्ये अधिक RAM द्या; किंवा, जर ते शक्य नसेल, तर Administration → Settings → Machine Learning Settings मध्ये जाऊन Smart Search आणि Facial Recognition बंद करा — यामुळे तुमचे backups आणि albums सुरक्षित राहतील, परंतु search-by-content सुविधा बंद होईल. compose file मधून immich-machine-learning service काढून टाकल्यास देखील तेच परिणाम मिळतात.

Postgres refuses to start after an upgrade. upgrade नंतर सर्व्हर लॉगमध्ये The database currently has VectorChord 0.5.3 activated, but the Postgres instance only has 0.4.2 available. This most likely means the extension was downgraded. सारखी ओळ येते — किंवा जुन्या stacks मध्ये The pgvecto.rs extension is not available in this Postgres instance. येते. याचे कारण म्हणजे डेटाबेस इमेजची extension version तुमच्या अपग्रेड केलेल्या डेटापेक्षा जुनी असणे, हे सहसा image tag मॅन्युअली बदलल्यामुळे किंवा जुन्या image वर नवीन dump रिस्टोर केल्यामुळे घडते. उपाय म्हणजे मॅच होणारी Postgres image वापरणे — तुमच्या डेटाबेसशी जुळणारी release ची compose file वापरा, downgrade करू नका, आणि फक्त सुसंगत (compatible) image वरच रिस्टोर करा.

The mobile app cannot reach the server. URL टाकल्यानंतर login screen वर connection error / Server is not reachable असा संदेश येतो. याची तीन कारणे आहेत: तुम्ही http:// टाईप केले आहे जिथे proxy फक्त https:// सर्व्ह करते; तुम्ही थेट backend ला कनेक्ट केले आहे पण port टाकलेला नाही, ज्यामुळे example.com:2283 ऐवजी example.com (port 443) वापरण्याचा प्रयत्न झाला; किंवा reverse proxy /api फॉरवर्ड करत नाहीये. उपाय म्हणून पूर्ण https://photos.example.com URL प्रविष्ट करा आणि ती प्रथम फोनच्या ब्राउझरमध्ये लोड होते की नाही ते तपासा. जर ब्राउझरमध्ये चालत असेल पण app मध्ये चालत नसेल, तर proxy पाथ (path) काढून टाकत आहे किंवा certificate self-signed आहे — app अनट्रस्टेड certs ना रिजेक्ट करते.

Out of disk mid-import. अपलोडिंग फेल होऊ लागते, thumbnails रिकामे दिसतात, आणि logs मध्ये ENOSPC: no space left on device किंवा Postgres मध्ये could not extend file ... No space left on device दिसून येते. df -h मध्ये UPLOAD_LOCATION volume 100% भरलेले दिसते. म्हणूनच मोठी लायब्ररी इम्पोर्ट करण्यापूर्वी डिस्कची साईज तपासणे आवश्यक आहे. उपाय म्हणून, मोठे volume अटॅच करा, stack थांबवा, UPLOAD_LOCATION त्यामध्ये हलवा, .env अपडेट करा आणि पुन्हा सुरू करा — किंवा तुमचा provider परवानगी देत असल्यास अस्तित्वात असलेली डिस्क वाढवा. जर डिस्क पूर्ण भरली तर Postgres मध्ये त्रुटी येऊ शकते, त्यामुळे डेटा करप्ट झाला असे मानण्यापूर्वी जागा रिकामी करा आणि database container पुन्हा सुरू करा.

FAQ

Immich साठी किती RAM आणि disk आवश्यक आहे?

Immich साठी किमान 6 GB RAM आणि शिफारशीत 8 GB RAM आवश्यक आहे. लहान लायब्ररीसाठी swap सह 4 GB ही व्यावहारिक मर्यादा आहे; machine-learning container मध्ये लोड वाढू शकतो, म्हणून swap कॉन्फिगर करणे आवश्यक आहे. Disk साठी, तुमच्या संपूर्ण लायब्ररीच्या आकारणासोबतच thumbnails आणि previews साठी अंदाजे 10–20% अतिरिक्त जागा राखून ठेवा. ही सर्व माहिती local storage वर असावी — Postgres data directory कधीही network share वर ठेवू नका. तुम्हाला इतर कोणत्या सेवा self-host करायच्या आहेत हे ठरवण्यासाठी, 2026 मध्ये काय self-host करावे याचे guide पहा, ज्यामध्ये Immich च्या वापराची तुलना इतर सेवांशी केली आहे.

मी GPU शिवाय Immich चालवू शकतो का?

हो. machine-learning container CPU वर व्यवस्थित चालते — GPU फक्त smart-search indexing आणि योग्य image variant असल्यास video transcoding चा वेग वाढवते. CPU वर, मोठ्या लायब्ररीचे सुरुवातीचे indexing बॅकग्राउंडमध्ये तासनतास घेऊ शकते, परंतु यामुळे backups किंवा browsing मध्ये अडथळा येत नाही. जर तुमचे machine ML साठी खूपच लहान असेल, तर तुम्ही admin settings मध्ये Smart Search आणि Facial Recognition अक्षम (disable) करू शकता आणि इतर सर्व गोष्टी वापरू शकता.

मी Immich सुरक्षितपणे upgrade कसे करू?

IMMICH_VERSION ला v3.0.2 सारख्या ठराविक tag ला pin करा, प्रत्येक upgrade करण्यापूर्वी release notes वाचा आणि प्रथम डेटाबेसचा backup घ्या. Postgres image IMMICH_VERSION ऐवजी docker-compose.yml मध्ये pin केलेली असल्याने, तुमच्या target release कडून compose file आणि example.env पुन्हा डाउनलोड करा, तुमची values पुन्हा लागू करा आणि नंतर docker compose pull && docker compose up -d चालवा. व्हर्जन कधीही 'float' (unattended) ठेवू नका — Immich मध्ये breaking changes असू शकतात आणि ते downgrades ला सपोर्ट करत नाही.

मी नक्की कशाचा backup घ्यावा?

दोन गोष्टी एकत्र घ्या: immich डेटाबेसचा pg_dump आणि संपूर्ण UPLOAD_LOCATION originals directory. डेटाबेसमध्ये albums, faces आणि asset-to-file mapping असते; directory मध्ये प्रत्यक्ष फोटो असतात. रिस्टोर करण्यासाठी या दोन्ही गोष्टी आणि सुसंगत vector extension असलेला database image आवश्यक आहे. प्रथम database dump करा आणि त्यानंतर file copy करा. रिस्टोर प्रक्रिया किमान एकदा वेगळ्या (scratch) box वर तपासा — न तपासलेला backup हा backup नसतो.

मी माझा सध्याचा photo folder कसा import करू?

तो folder immich-server container मध्ये extra volume (उदा. - /srv/photos:/mnt/media/photos:ro) म्हणून read-only पद्धतीने mount करा, container पुन्हा तयार करा, आणि नंतर Administration → External Libraries मध्ये जाऊन एक library तयार करा आणि container path /mnt/media/photos जोडा. Immich फाइल्सना त्यांच्या मूळ जागी index करते आणि त्या कधीही बदलत किंवा हटवत नाही. सर्वात सामान्य चूक म्हणजे container path ऐवजी host path टाकणे, ज्यामुळे scan मध्ये काहीच सापडत नाही.