SSD Nodes Learn Hosting plans →
मार्गदर्शक Matt Connorद्वारे Matt Connor · अपडेटेड 2026-08-28

Immich self-hosting साठी 6 GB RAM पुरेशी आहे का?

Immich साठी खरोखर किती RAM लागते, HTTPS मागे port 2283 कसा वापरायचा, exit 137 memory kill टाळायचा आणि pgvecto.rs database मुळे Immich v3 न सुरू झाल्यास restore कसे करायचे ते जाणून घ्या.

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

Immich ही self-hosted फोटो आणि व्हिडिओ backup सेवा आहे. ती Google Photos साठीचा खरा पर्याय आहे. यात फोन अॅप आहे, जे camera roll मधील फोटो आणि व्हिडिओ background मध्ये upload करते. यात timeline, albums, face recognition आणि machine-learning search आहेत. त्यामुळे काहीही tag न करता “beach” किंवा एखादी व्यक्ती शोधता येते. ही सेवा तुमच्या मालकीच्या VPS वर चालते. मूळ files तुमच्या disk वरच राहतात. त्या files scan करून तुम्हाला वस्तू विकण्यासाठी कोणीही त्यांचा वापर करत नाही. तुम्ही अजूनही दुसऱ्या स्पष्ट पर्यायाशी तुलना करत असाल, तर आमची PhotoPrism आणि Immich तुलना त्यांच्या RAM requirements, phone apps आणि backup commands शेजारीशेजारी दाखवते.

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

पूर्वतयारी आणि प्रत्यक्षातील महत्त्वाच्या अडचणी

  • RAM: अधिकृत दस्तऐवजानुसार किमान 6 GB आणि शिफारस केलेली क्षमता 8 GB आहे; 4 GB RAM आणि swap ही पूर्णपणे किमान मर्यादा समजा. immich-server आणि Postgres containers तुलनेने कमी RAM वापरतात. immich-machine-learning container सर्वाधिक RAM वापरतो. तो search indexes तयार करण्यासाठी CLIP आणि face-recognition models RAM मध्ये लोड करतो. 2 GB क्षमतेच्या सर्व्हरवर kernel हा container बंद करतो. तुमच्याकडे 4 GB RAM असली तरी swap जोडा.
  • Disk: संपूर्ण library साठी, तसेच अतिरिक्त जागेसाठी, पुरेशी क्षमता ठेवा. तुमच्या मूळ files पूर्णपणे copy केल्या जातात. याशिवाय Immich thumbnails आणि preview images तयार करतो. यासाठी साधारणपणे आणखी 10–20% जागा लागते. 200 GB च्या photo collection साठी 300 GB volume ठेवा. Postgres ची गरज याच्या तुलनेत कमी असते.
  • CPU: कोणताही आधुनिक KVM VPS पुरेसा आहे; परंतु CPU वर ML प्रक्रिया धीमी असते. मोठ्या import चे smart-search indexing पार्श्वभूमीत अनेक तास चालू राहू शकते. हे सामान्य आहे. यासाठी GPU आवश्यक नाही.
  • VPS कडे निर्देश करणारे domain name. Mobile app HTTPS endpoint ला स्पष्टपणे प्राधान्य देते आणि त्यासमोर reverse proxy ठेवणे उपयुक्त ठरते. ही रचना Docker, TLS आणि backups असलेल्या self-hosted Nextcloud instance सारखीच आहे. Immich हा त्या files server चा photos साठीचा समकक्ष आहे.
  • Docker आणि Compose plugin स्थापित असणे आवश्यक आहे. Docker Engine आणि Docker च्या स्वतःच्या apt repository मधून Compose v2 plugin स्थापित करा. याचे वर्णन आमच्या Docker Compose basics guide मध्ये केले आहे.

पायरी 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 बंद पडणार नाही.

पायरी 2: अधिकृत compose आणि env फाइल घ्या; प्रत वापरू नका

Immich आपल्या वितरण केलेल्या फाइलमध्ये सेवा आवृत्त्या आणि विशेषतः database image निश्चित करतो. एखाद्या blog मधून, यासह या tutorial मधूनही, compose फाइल घेऊन तिला सत्याचा अधिकृत स्रोत मानू नका. release assets डाउनलोड करा:

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

या फाइल्स tagged release मधून येतात, त्यामुळे image references जुळतात. compose फाइलमध्ये चार सेवा परिभाषित केल्या आहेत. कोणतीही सेवा बदलण्यापूर्वी प्रत्येक सेवेचे कार्य समजून घेणे उपयुक्त ठरते:

  • immich-server (ghcr.io/immich-app/immich-server, container immich_server), API आणि web UI; ही port 2283 वर listening करते. ती तुमचे uploads /data येथे mount करते.
  • immich-machine-learning (ghcr.io/immich-app/immich-machine-learning, container immich_machine_learning), CLIP search आणि face recognition. ही डाउनलोड केलेले models model-cache volume मध्ये cache करते. या सेवेला सर्वाधिक memory लागते.
  • database (container immich_postgres), VectorChord vector extension असलेला Postgres. ही extension similarity search साठी वापरली जाते. image tag compose फाइलमध्येच digest ने निश्चित केलेला असतो, उदाहरणार्थ ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:.... जुन्या setup मध्ये pgvecto.rs वापरले जात होते; Immich v3.0 मध्ये त्याचे support काढून टाकले आहे. त्यामुळे आज install केलेल्या सर्व setup मध्ये VectorChord वापरले जाते. हा tag स्वतः बदलू नका.
  • redis (container immich_redis), job queues साठी Valkey/Redis instance.

चरण 3: .env कॉन्फिगर करा, जिथे तुमचे फोटो आणि database साठवले जातात

.env उघडा आणि चार गोष्टी सेट करा. चिन्हांकित केलेल्या ओळीखालील सर्व मजकूर जसाच्या तसा ठेवा.

# 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 ने तुमच्या मोठ्या disk कडे निर्देश केला पाहिजे. नंतर data volume जोडणार असाल, तर सुरुवातीपासूनच त्याचा mount path येथे सेट करा. कारण नंतर ते बदलल्यास thumbnails हलवावे लागतात आणि asset paths अद्ययावत करावे लागतात. तसेच DB_DATA_LOCATION local disk वर असणे आवश्यक आहे. NFS किंवा SMB share वर Postgres चालवल्यास data corruption होऊ शकते; documentation मध्ये हे स्पष्टपणे नमूद केले आहे. DB_PASSWORD मध्ये फक्त letters आणि digits वापरल्यास connection string मधील एका प्रकारच्या escaping त्रुटी टाळता येतात.

पायरी 4: पहिल्यांदा चालवणे आणि 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 वेळी images चे अनेक gigabytes डाउनलोड होतात, त्यामुळे त्याला वेळ द्या. sudo docker compose logs -f immich-server वापरून प्रगती monitor करा; server तयार झाल्यावर तो 2283 port वर listening असल्याची नोंद logs मध्ये करतो. आता browser मध्ये http://YOUR_SERVER_IP:2283 उघडा. पहिल्यांदा उघडल्यावर Getting Started wizard दिसतो. तुम्ही तयार केलेले पहिले account हे admin असते. मजबूत password सेट करा. या account कडे server settings, user management आणि पुढे आवश्यक असलेली ML configuration यांचे नियंत्रण असते.

पायरी 5: मोबाइल अॅप आणि पार्श्वभूमी backup

App Store किंवा Play Store मधून "Immich" install करा. Login स्क्रीनवर Server Endpoint URL विचारला जातो. Scheme सहित पूर्ण URL प्रविष्ट करा. उदाहरणार्थ https://photos.example.com (अॅप स्वतः /api जोडतो). नुकतेच तयार केलेल्या account ने login करा. त्यानंतर अॅपमधील Backup स्क्रीन उघडा, ज्या albums चे संरक्षण करायचे आहेत ते निवडा (साधारणपणे Camera आणि Screenshots), आणि Background backup सक्षम करा. iOS मध्ये पार्श्वभूमीतील backup ला OS मर्यादित करते. Foreground uploads नेहमी चालतात. Background uploads OS परवानगी देईल तेव्हाच होतात.

याच ठिकाणी अनेकांना अडचण येते. त्यामुळे अॅपमध्ये समस्या शोधण्यापूर्वी Step 6 वाचा.

पायरी 6: reverse proxy द्वारे HTTPS आणि पूर्ण URL चा नियम

मोबाइल अॅपला HTTPS आवश्यक आहे. 2283 पोर्टसमोर reverse proxy ठेवा आणि TLS तेथे terminate करा. तुम्ही आधीच अनेक containers चालवत असाल, तर अनेक Docker अॅप्ससाठी automatic TLS असलेला Traefik हा सर्वात नीटनेटका पर्याय आहे. एका label block मधून photos.example.com ला immich-server container कडे पाठवले जाते आणि प्रमाणपत्र तुमच्यासाठी मिळवले जाते. तुम्हाला nginx पसंत असल्यास, Certbot आणि nginx वापरून Let's Encrypt मार्गदर्शक प्रमाणपत्र आणि proxy_pass http://127.0.0.1:2283; block तयार करून देतो. हा proxy तयार झाल्यावर पुढील सेवा जोडण्यासाठी मुख्यतः नवीन subdomain आवश्यक असतो. त्यामुळे Jellyfin साठी 90s मधील video store skin असलेला Halcyon यांसारखा media front end त्याच server वर Immich सोबत चालवता येतो. Codex आणि Claude Code यांना एका API मागे ठेवणारा self-hosted HarnessRouter बाबतही हेच लागू होते. तो मुद्दाम loopback वर bind होतो आणि proxy त्याच्या समोर TLS terminate केल्यानंतरच उपलब्ध होतो. त्यामुळे त्याकडे subdomain निर्देशित करण्यापूर्वी त्याचा default login बदला. मात्र प्रत्येक container साठी सार्वजनिक hostname आवश्यक नसतो. self-hosted open-kritt security scanner सारखे केवळ admin साठीचे साधन proxy च्या बाहेर ठेवणे अधिक योग्य आहे. UI क्वचित उघडायचा असल्यास SSH tunnel द्वारे त्याचा वापर करा. काही सेवा proxy टाळतात, कारण त्यांचे communication protocol HTTP नसते. self-hosted RustDesk relay server हे याचे स्पष्ट उदाहरण आहे. ते काही raw TCP आणि UDP ports वर listening करते आणि subdomain ऐवजी firewall rules आवश्यक असतात. Immich साठी proxy मधील एक setting महत्त्वाची आहे: upload size limit वाढवा, कारण phone videos मोठे असतात. nginx मध्ये server block च्या आत client_max_body_size 50000M; वापरा. Default 1 MB असल्यामुळे video uploads 413 Request Entity Too Large सह नाकारले जातात.

अॅप लागू करत असलेला नियम असा आहे: endpoint पोहोचण्यायोग्य असावा आणि प्रत्यक्ष वापरात तो HTTPS असावा. http:// endpoints किंवा port न लिहिलेला direct IP यांमुळे "अॅप server पर्यंत पोहोचू शकत नाही" अशी त्रुटी येते. खाली या समस्येचे स्वतंत्र failure म्हणून वर्णन केले आहे.

पायरी 7: बाह्य लायब्ररी विरुद्ध uploads, विद्यमान photo tree आयात करणे

Immich मध्ये photos येण्याचे दोन मार्ग आहेत. ते एकसारखे नाहीत.

  • Uploads हे Immich च्या मालकीचे assets असतात. अॅप किंवा web uploader फाइल UPLOAD_LOCATION मध्ये कॉपी करतो. Immich त्यांची नावे बदलू शकतो, त्यांना हलवू शकतो आणि delete करू शकतो.
  • External libraries म्हणजे तुमच्या server वरील एखाद्या folder मध्ये, जुन्या Pictures tree मध्ये किंवा NAS export मध्ये आधीपासून असलेल्या files चे read-only imports. Immich त्यांना त्यांच्या मूळ ठिकाणी index करतो आणि timeline मध्ये दाखवतो; मात्र मूळ files मध्ये कधीही बदल करत नाही किंवा त्या delete करत नाही.

विद्यमान tree आयात करण्यासाठी ते server container मध्ये 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 मूळ files मध्ये कधीही बदल करू शकत नाही. sudo docker compose up -d वापरून container पुन्हा तयार करा. त्यानंतर web UI मध्ये तुमच्या avatar वर जा → Administration → External Libraries → Create Library, मालकीचा user निवडा, Folders अंतर्गत Add वर click करा आणि container path /mnt/media/photos प्रविष्ट करा; host path /srv/photos वापरू नका. Scan वर click करा. Container path ऐवजी host path वापरणे ही external library मधील सर्वात सामान्य चूक आहे; scan ला काहीही सापडत नाही आणि assets ची संख्या zero दाखवली जाते.

पायरी 8: Immich साठी आवश्यक upgrade शिस्त

हा भाग Immich सुरळीत चालेल की बिघडेल हे ठरवतो. Immich वेगाने releases करते आणि fixes backport करत नाही किंवा downgrades ला support देत नाही. Floating v3 tag चा आंधळेपणाने मागोवा घेत राहिल्यास शेवटी तुमचा database बिघडेल. हीच pin-then-read-the-notes पद्धत सर्व दीर्घकाळ चालणाऱ्या container साठी वापरणे योग्य आहे. म्हणून self-hosted KiroCrew agent ला एका ज्ञात-चांगल्या tag वर pin केले जाते, पुढील restart वेळी तो आपोआप बदलू दिला जात नाही. शिस्त पुढीलप्रमाणे:

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

नवीन files उपलब्ध केल्यानंतर प्रत्यक्ष commands:

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

पायरी 9: बॅकअप, database dump तसेच originals आणि त्याची चाचणी

Immich चा बॅकअप दोन गोष्टींचा असतो. त्यांपैकी एक नसल्यास दुसरी निरुपयोगी ठरते. Database मध्ये album structure, faces, search indexes आणि asset ते file यांचा नकाशा साठवला जातो. Originals directory मध्ये प्रत्यक्ष photos असतात. यांपैकी एकच restore केल्यास photos असतील पण त्यांची रचना नसेल, किंवा missing files कडे निर्देश करणारी रिकामी रचना मिळेल.

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

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

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

आता सर्वजण वगळतात तो भाग करा: restore ची चाचणी घ्या. Restore अशा fresh stack वर चालवणे आवश्यक आहे, ज्याचा server यापूर्वी कधीही सुरू झालेला नसावा. तसेच dump शी compatible vector extension असलेली Postgres image वापरा. म्हणूनच DB image tag स्वतःच्या अंदाजाने कधीही बदलू नका. समान compose आणि .env असलेल्या scratch box वर जुनी state पुसून टाका. फक्त 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 मधेच थांबते. Originals योग्य ठिकाणी ठेवून stack पुन्हा सुरू झाल्यावर web UI उघडा. तुमचे photos आणि albums दिसत असल्यास तुमचा backup कार्यरत आहे. तुम्ही ही प्रक्रिया कधीही चालवली नसेल, तर तुमच्याकडे backup नाही; केवळ आशा आहे.

अडथळ्यांच्या स्थिती आणि दिसणारे संदेश

ML container ला OOM-kill केले जाते. 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 अडकतात. कारण म्हणजे models साठी RAM अपुरा असतो. उपायांचा क्रम असा आहे: swap जोडा (Step 1); VPS ला अधिक RAM द्या; किंवा ते खरोखर शक्य नसल्यास Administration → Settings → Machine Learning Settings मध्ये Smart Search आणि Facial Recognition बंद करून ML अक्षम करा. Backups आणि albums कायम राहतात, पण content नुसार search करता येणार नाही. Compose file मधून immich-machine-learning service काढल्यास हाच परिणाम होतो.

Upgrade नंतर Postgres सुरू होण्यास नकार देतो. Server log मध्ये 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. दिसते. कारण म्हणजे database image मधील extension version तुमच्या data च्या upgrade केलेल्या version पेक्षा जुनी असते. हे बहुतेक वेळा image tag हाताने संपादित केल्यामुळे किंवा नवीन dump जुन्या image वर restore केल्यामुळे होते. उपाय म्हणजे सुसंगत Postgres image वापरणे, तुमच्या database शी जुळणाऱ्या release मधील compose file घेणे, downgrade न करणे आणि compatible image वरच restore करणे.

Mobile app server शी संपर्क करू शकत नाही. URL टाकल्यानंतर login screen वर connection error / Server is not reachable दिसते. याची तीन कारणे असू शकतात: proxy फक्त https:// serve करत असताना तुम्ही http:// टाइप केले; तुम्ही backend शी थेट connect केले पण port लिहिला नाही, त्यामुळे त्याने example.com:2283 ऐवजी example.com (port 443) वापरण्याचा प्रयत्न केला; किंवा reverse proxy /api forward करत नाही. पूर्ण https://photos.example.com URL टाका आणि तो प्रथम phone browser मध्ये उघडतो याची खात्री करा. Browser मध्ये ते उघडत असेल पण app मध्ये उघडत नसेल, तर proxy path काढून टाकत आहे किंवा certificate self-signed आहे. App अविश्वसनीय certificates नाकारते.

Import सुरू असताना disk space संपते. Uploads अयशस्वी होऊ लागतात, thumbnails रिकामे दिसतात आणि logs मध्ये ENOSPC: no space left on device किंवा Postgres कडून could not extend file ... No space left on device दिसते. df -h मध्ये UPLOAD_LOCATION volume 100% भरलेला दिसतो. मोठी library import करण्यापूर्वी disk size ठरवणे आवश्यक असते, याचे हे कारण आहे. मोठा volume जोडून, stack थांबवून, UPLOAD_LOCATION त्यावर हलवून, .env अद्ययावत करून आणि पुन्हा सुरू करून समस्या सोडवा. Provider परवानगी देत असल्यास विद्यमान disk वाढवू शकता. Disk पूर्ण भरल्यास Postgres अडकू शकतो. त्यामुळे corruption गृहीत धरण्यापूर्वी space मोकळी करा आणि database container पुन्हा सुरू करा.

FAQ

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

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

GPU शिवाय Immich चालवता येईल का?

होय. machine-learning container CPU वर सुरळीत चालतो. GPU मुळे फक्त smart-search indexing आणि योग्य image variant वापरल्यास video transcoding जलद होते. CPU वर मोठ्या लायब्ररीचा सुरुवातीचा index background मध्ये तयार होण्यासाठी काही तास लागू शकतात. मात्र यामुळे backups किंवा browsing थांबत नाही. तुमचा सर्व्हर ML साठीही अपुरा असल्यास admin settings मध्ये Smart Search आणि Facial Recognition बंद करू शकता आणि इतर सर्व सुविधा सुरू ठेवू शकता.

Immich सुरक्षितपणे upgrade कसे करावे?

IMMICH_VERSION ला v3.0.2 सारख्या ठोस tag वर निश्चित करा. प्रत्येक upgrade करण्यापूर्वी release notes वाचा आणि आधी database चा backup घ्या. Postgres image IMMICH_VERSION द्वारे नव्हे, तर docker-compose.yml मध्ये pin केलेली असल्यामुळे target release मधील compose file आणि example.env दोन्ही पुन्हा download करा आणि तुमची values पुन्हा लागू करा. त्यानंतर docker compose pull && docker compose up -d चालवा. Version unattended पद्धतीने कधीही बदलू देऊ नका. Immich मध्ये breaking changes येतात आणि downgrades समर्थित नाहीत.

नेमक्या कोणत्या गोष्टींचा backup घ्यावा?

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

माझे विद्यमान photo folder कसे import करावे?

Folder read-only पद्धतीने immich-server container मध्ये extra volume म्हणून mount करा, उदाहरणार्थ - /srv/photos:/mnt/media/photos:ro. Container पुन्हा तयार करा. त्यानंतर Administration → External Libraries मध्ये library तयार करा आणि container path /mnt/media/photos जोडा. Immich files त्याच ठिकाणी index करतो आणि त्यात बदल किंवा त्या delete करत नाही. Host path ऐवजी container path प्रविष्ट करणे ही सर्वात सामान्य चूक आहे. त्यामुळे scan ला कोणतीही file सापडत नाही.