Immich self-hosting: 6 GB RAM, HTTPS మరియు safe upgrades
Immich కోసం నిజంగా ఎంత RAM అవసరమో, HTTPS వెనుక port 2283, exit 137 memory kill, అలాగే pgvecto.rs database పై Immich v3 ఎందుకు ప్రారంభం కాదో తెలుసుకోండి.
మీరు నిర్మించేది
Immich అనేది self-hosted ఫోటో మరియు వీడియో backup service. ఇది Google Photos కు నిజమైన ప్రత్యామ్నాయం. ఇందులో మీ camera roll ను background లో upload చేసే phone app, timeline, albums, face recognition, అలాగే మీరు ఏదీ tag చేయకపోయినా “beach” లేదా ఒక వ్యక్తిని కనుగొనే machine-learning search ఉన్నాయి. దీన్ని మీరు స్వంతంగా నిర్వహించే VPS పై నడుపుతారు. అసలు files మీ disk పైనే ఉంటాయి. వాటిని ఎవరూ scan చేసి మీకు వస్తువులు విక్రయించరు. దీన్ని మరో స్పష్టమైన ప్రత్యామ్నాయంతో ఇంకా పోల్చి చూస్తుంటే, మా PhotoPrism మరియు Immich పోలికలో వాటి కనీస RAM అవసరాలు, phone apps మరియు backup commands ను పక్కపక్కన చూడవచ్చు.
Install ప్రక్రియ ప్రాజెక్ట్ అందించే Docker Compose file లోని నాలుగు containers తో పూర్తవుతుంది. ఆ భాగానికి పది నిమిషాలు పడుతుంది. ఈ guide లోని అసలు సమస్యలు తరువాత వస్తాయి: చిన్న machine పై machine-learning container కు ఎక్కువ memory అవసరం, originals వేగంగా disk స్థలాన్ని నింపుతాయి, mobile app plain-HTTP server ను అంగీకరించదు, అలాగే Immich తరచుగా breaking changes ను విడుదల చేస్తుంది. అందువల్ల నిర్లక్ష్యంగా చేసిన docker compose pull మీ database ప్రారంభం కాకుండా చేయవచ్చు. ఈ నాలుగు విషయాలను గంభీరంగా నిర్వహిస్తే Immich చాలా స్థిరంగా పనిచేస్తుంది. వాటిని పట్టించుకోకపోతే ఒక వారాంతాన్ని కోల్పోతారు.
అవసరాలు మరియు గమనించాల్సిన వాస్తవ పరిమితులు
- RAM: అధికారిక డాక్యుమెంటేషన్ కనీసం 6 GB, సిఫార్సు 8 GB అని చెబుతుంది. 4 GBతో పాటు swap ను కనీస ఆచరణాత్మక పరిమితిగా పరిగణించండి.
immich-serverమరియు Postgres containers తక్కువ వనరులనే ఉపయోగిస్తాయి.immich-machine-learningcontainer ఎక్కువ RAM ఉపయోగిస్తుంది. ఇది search indexes రూపొందించడానికి CLIP మరియు face-recognition models ను RAMలోకి లోడ్ చేస్తుంది. 2 GB serverలో kernel దాన్ని terminate చేస్తుంది. మీ వద్ద 4 GB ఉన్నా swap జోడించండి. - Disk: మీ మొత్తం libraryకి సరిపడే పరిమాణాన్ని ఎంచుకుని, కొంత అదనపు స్థలాన్ని ఉంచండి. మీ అసలు ఫైళ్లు పూర్తిగా copy అవుతాయి. అదనంగా Immich thumbnails మరియు preview images రూపొందిస్తుంది. ఇవి సాధారణంగా మరో 10–20% స్థలాన్ని ఉపయోగిస్తాయి. 200 GB photo collection కోసం 300 GB volume అవసరం కావచ్చు. దీనితో పోలిస్తే Postgres ఉపయోగించే స్థలం తక్కువ.
- CPU: ఏదైనా ఆధునిక KVM VPS సరిపోతుంది, కానీ CPUపై ML నెమ్మదిగా నడుస్తుంది. పెద్ద importకు smart-search indexing backgroundలో గంటల పాటు నడవవచ్చు. ఇది సాధారణమే. దీనికి GPU అవసరం లేదు.
- VPSకు pointed చేసిన domain name అవసరం. Mobile app HTTPS endpointను గట్టిగా కోరుతుంది. ముందు reverse proxy కూడా ఉంచాలి. ఇది Docker, TLS మరియు backupsతో కూడిన self-hosted Nextcloud instance setupతో సమానమైన నిర్మాణం. Immich ఆ files serverకు photos counterpart.
- Docker మరియు Compose plugin install చేసి ఉండాలి. Docker సొంత apt repository నుంచి Docker Engineతో పాటు Compose v2 pluginను install చేయాలి. దీనిని మా Docker Compose basics guideలో వివరించిన విధంగానే చేయండి.
ముందుగా swap జోడించండి
చిన్న VPSలో అత్యంత సాధారణ Immich వైఫల్యం ML container OOM-killed కావడం. ముందుగా kernelకు అదనపు memory స్థలం అందించండి.
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: line కనిపించాలి. దీనివల్ల ML వేగంగా పనిచేయదు. అయితే 4 GB machineలో index తయారుచేసే సమయంలో container ఆగిపోకుండా ఉంటుంది.
దశ 2: అధికారిక compose మరియు env ఫైళ్లను పొందండి; కాపీని కాకుండా వాటినే ఉపయోగించండి
Immich తన service versions ను, ముఖ్యంగా database image ను, తాను విడుదల చేసే files లోనే నిర్దేశిస్తుంది. నిజమైన ఆధారంగా ఈ వ్యాసంతో సహా ఏ blog నుంచి తీసుకున్న compose file ను copy-paste చేయవద్దు. Release assets ను download చేయండి:
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 file లో నాలుగు services ఉంటాయి. ఏదైనా మార్చే ముందు ప్రతి service పని ఏమిటో తెలుసుకోవడం ఉపయోగకరం:
immich-server(ghcr.io/immich-app/immich-server, containerimmich_server) API మరియు web UI ను అందిస్తుంది. ఇది2283port పై listening చేస్తుంది. ఇది మీ uploads ను/dataవద్ద mount చేస్తుంది.immich-machine-learning(ghcr.io/immich-app/immich-machine-learning, containerimmich_machine_learning) CLIP search మరియు face recognition కోసం ఉపయోగించబడుతుంది. Download చేసిన models నుmodel-cachevolume లో cache చేస్తుంది. ఎక్కువ memory ఉపయోగించేది ఇదే.database(containerimmich_postgres) similarity search కు అవసరమైన VectorChord vector extension కలిగిన Postgres. Image tag ను compose file లోనే digest ద్వారా pin చేస్తారు. ఉదాహరణకుghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:.... పాత setups లోpgvecto.rsను ఉపయోగించేవారు. Immich v3.0 లో దానికి support తొలగించారు. కాబట్టి ప్రస్తుతం install చేసేవన్నీ VectorChord ను ఉపయోగిస్తాయి. ఈ tag ను చేతితో ఎప్పుడూ మార్చవద్దు.redis(containerimmich_redis) job queues కోసం Valkey/Redis instance.
దశ 3: మీ ఫోటోలు మరియు database ఉన్న .env ను configure చేయండి
.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 ను update చేయాల్సి వస్తుంది. అలాగే DB_DATA_LOCATION local disk పై ఉండాలి. NFS లేదా SMB share పై Postgres ఉపయోగిస్తే data corrupt అవుతుంది; docs లో కూడా ఇది స్పష్టంగా ఉంది. DB_PASSWORD లో letters మరియు digits మాత్రమే ఉపయోగిస్తే, connection string escaping కు సంబంధించిన కొన్ని bugs ను నివారించవచ్చు.
దశ 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 అనేక gigabytes పరిమాణంలోని images ను download చేస్తుంది. అందువల్ల కొంత సమయం ఇవ్వండి. sudo docker compose logs -f immich-server తో పురోగతిని monitor చేయండి. సిద్ధమైన తర్వాత server port 2283 పై listening చేస్తున్నట్లు logs లో నమోదు చేస్తుంది. ఇప్పుడు browserలో http://YOUR_SERVER_IP:2283 తెరవండి. మొదటి సారి తెరిచినప్పుడు Getting Started wizard కనిపిస్తుంది. మీరు సృష్టించే మొదటి account admin account అవుతుంది. బలమైన password సెట్ చేయండి. ఈ account server settings, user management మరియు తరువాత అవసరమయ్యే ML configuration ను నిర్వహిస్తుంది.
దశ 5: మొబైల్ యాప్ మరియు బ్యాక్గ్రౌండ్ బ్యాకప్
App Store లేదా Play Store నుంచి "Immich" ను ఇన్స్టాల్ చేయండి. Login స్క్రీన్లో Server Endpoint URL అడుగుతుంది. Scheme సహా పూర్తి URL ను నమోదు చేయండి. ఉదాహరణకు https://photos.example.com (యాప్ స్వయంగా /api ను జోడిస్తుంది). మీరు ఇప్పుడే సృష్టించిన ఖాతాతో login చేయండి. తరువాత యాప్లోని Backup స్క్రీన్ను తెరిచి, రక్షించాల్సిన albums ను ఎంచుకోండి (సాధారణంగా Camera మరియు Screenshots), ఆపై Background backup ను enable చేయండి. iOS background backup ను OS పరిమితం చేస్తుంది. Foreground uploads ఎల్లప్పుడూ జరుగుతాయి. Background uploads ను OS అనుమతించినప్పుడు మాత్రమే నిర్వహిస్తుంది.
ఇక్కడే చాలామందికి సమస్య ఎదురవుతుంది. కాబట్టి యాప్తో troubleshooting చేయడానికి ముందు Step 6 చదవండి.
దశ 6: reverse proxy ద్వారా HTTPS మరియు పూర్తి URL నియమం
మొబైల్ యాప్కు HTTPS తప్పనిసరిగా కావాలి. 2283 port ముందు reverse proxy ఉంచి, అక్కడే TLS termination చేయండి. మీరు ఇప్పటికే అనేక containers నడుపుతున్నట్లయితే, అనేక Docker apps కోసం automatic TLS కలిగిన Traefik అత్యంత సులభమైన ఎంపిక. ఒక label block photos.example.com ను immich-server container కు route చేసి, certificate ను మీ తరఫున పొందుతుంది. మీరు nginx ను ఉపయోగించాలనుకుంటే, Let's Encrypt, Certbot మరియు nginxతో certificate పొందడం అనే guide మీకు certificate మరియు proxy_pass http://127.0.0.1:2283; block అందిస్తుంది. ఆ proxy ఏర్పాటైన తర్వాత, తదుపరి service ను జోడించడం ప్రధానంగా కొత్త subdomain జోడించడమే అవుతుంది. అందువల్ల Jellyfin కోసం 90s video store skin అయిన Halcyon వంటి media front end అదే serverలో Immich పక్కన నడపవచ్చు. Codex మరియు Claude Code ను ఒక API వెనుక ఉంచే self-hosted HarnessRouter విషయంలో కూడా ఇదే వర్తిస్తుంది. ఇది ఉద్దేశపూర్వకంగా loopback పై bind అవుతుంది. Proxy దాని ముందు TLS termination చేసిన తర్వాత మాత్రమే ఇది అందుబాటులోకి వస్తుంది. కాబట్టి దానికి subdomain కేటాయించే ముందు default login ను మార్చండి. అయితే ప్రతి container కు public hostname అవసరం లేదు. self-hosted open-kritt security scanner వంటి admin-only tool ను proxyకి పూర్తిగా దూరంగా ఉంచడం మంచిది. దాని UI ను అరుదుగా తెరవాల్సి వచ్చినప్పుడు SSH tunnel ద్వారా మాత్రమే access చేయండి. మరికొన్ని services HTTP ను అసలు ఉపయోగించవు. self-hosted RustDesk relay server దీనికి స్పష్టమైన ఉదాహరణ. ఇది కొన్ని raw TCP మరియు UDP ports పై listen చేస్తుంది. అందువల్ల దీనికి 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 తో reject చేస్తుంది.
యాప్ అమలు చేసే నియమం ఇది: endpoint reachable గా ఉండాలి. వాస్తవ వినియోగంలో అది HTTPS అయి ఉండాలి. http:// endpoints లేదా port లేకుండా నేరుగా ఉపయోగించే IP వద్ద “the app cannot reach the server” అనే సమస్య వస్తుంది. దీనిని క్రింద named failure గా వివరిస్తాం.
దశ 7: External libraries మరియు uploads మధ్య తేడా, ఇప్పటికే ఉన్న photo tree ను import చేయడం
Immich లోకి photos చేరడానికి రెండు మార్గాలు ఉన్నాయి. అవి ఒకే విధంగా పనిచేయవు.
- Uploads అనేవి Immich నిర్వహించే assets. App లేదా web uploader ఫైల్ను
UPLOAD_LOCATIONలోకి copy చేస్తుంది. Immich వాటి పేర్లు మార్చగలదు, వాటిని తరలించగలదు, తొలగించగలదు. - External libraries అనేవి మీ server లోని folder, పాత
Picturestree లేదా NAS export లో ఇప్పటికే ఉన్న files ను read-onlyగా import చేయడం. Immich వాటిని ఉన్నచోటే index చేసి timeline లో చూపిస్తుంది. అయితే అసలు files ను ఎప్పుడూ మార్చదు లేదా తొలగించదు.
ఇప్పటికే ఉన్న tree ను import చేయడానికి, దాన్ని server container లోకి read-onlyగా mount చేయండి. immich-server: కింద ఉన్న docker-compose.yml ను edit చేసి, ఒక 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 కు వెళ్లండి. Library ను నిర్వహించే user ను ఎంచుకోండి. Folders కింద Add క్లిక్ చేసి, host path /srv/photos కాకుండా container path /mnt/media/photos ను నమోదు చేయండి. Scan క్లిక్ చేయండి. Container path స్థానంలో host path ఉపయోగించడం external library లలో అత్యంత సాధారణ తప్పు. అప్పుడు scan కు ఏమీ కనిపించదు మరియు assets సంఖ్య zeroగా చూపిస్తుంది.
దశ 8: Immich కోరే upgrade discipline
సరిగ్గా పనిచేస్తున్న Immich మరియు విఫలమైన Immich మధ్య తేడాను నిర్ణయించేది ఇదే. Immich వేగంగా కొత్త releases విడుదల చేస్తుంది. ఇది fixes ను backport చేయదు, downgrades కు support ఇవ్వదు. మారుతూ ఉండే v3 tag ను అంధంగా అనుసరిస్తే చివరికి మీ database విఫలమవుతుంది. ఇదే pin-then-read-the-notes పద్ధతిని సర్వర్లో ఎక్కువకాలం నడిచే ప్రతి container కు వర్తింపజేయడం మంచిది. అందుకే self-hosted KiroCrew agent ను ముందుగా నిర్ధారించిన ఒక tag కు pin చేస్తారు, తదుపరి restart సమయంలో అది మీకు తెలియకుండా మారకుండా ఉంటారు. పాటించాల్సిన విధానం:
- ఒక version కు pin చేయండి.
IMMICH_VERSIONను ఎల్లప్పుడూ తాజా v3.x ను తీసుకునే మారుతూ ఉండేv3కు కాకుండా,v3.0.2వంటి నిర్దిష్ట tag కు set చేసి ఉంచండి. - ప్రతి upgrade కు ముందు release notes ను తప్పనిసరిగా చదవండి. ముఖ్యంగా database లేదా vector-extension మార్పులు వంటి breaking changes అక్కడ స్పష్టంగా పేర్కొంటారు. v3.0 release దీనికి స్పష్టమైన ఉదాహరణ. అది pgvecto.rs ను పూర్తిగా తొలగించింది. అందువల్ల పాత extension ను ఇంకా ఉపయోగిస్తున్నవారు ముందుగా VectorChord migration ను పూర్తి చేయాల్సి వచ్చింది. ఈ migration ను v1.133 లో ప్రవేశపెట్టారు.
- ముందుగా database ను back up చేయండి (దశ 9). ఇది ఎల్లప్పుడూ చేయాలి. Release notes లో database గురించి ప్రస్తావన ఉన్నప్పుడు మరింత జాగ్రత్తగా చేయాలి.
- కొత్త compose file ను కూడా తీసుకోండి.
IMMICH_VERSIONserver మరియు ML images కు మాత్రమే pin చేస్తుంది. Postgres image నుdocker-compose.ymlలోపల digest ద్వారా pin చేస్తారు. అందువల్ల కొత్త database extension అవసరమైన version తో కొత్త compose file కూడా వస్తుంది. రెండు release assets ను మళ్లీ download చేయండి, మీ.envvalues ను తిరిగి apply చేయండి, తరువాత upgrade చేయండి. - అదే సమయంలో మీ mobile clients ను కూడా update చేయండి. Server తనకు సరిపోయే major version తో మాత్రమే communicate చేస్తుంది. App ప్రస్తుత major version మరియు దానికి ముందు ఉన్న major version కు support ఇస్తుంది. App కంటే ముందుకు వెళ్లిన server, మీరు app ను update చేసే వరకు phone లో
Your app major version is not compatible with the server!చూపిస్తుంది. అందువల్ల ముందుగా 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 నిర్మాణం, faces, search indexes మరియు asset నుంచి file కు mapping ఉంటాయి. Originals directory లో అసలు photos ఉంటాయి. ఒకదాన్ని మరొకటి లేకుండా restore చేస్తే, organization లేని photos లేదా కనిపించని files వైపు చూపించే ఖాళీ shell మాత్రమే లభిస్తుంది.
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తర్వాత UPLOAD_LOCATION, అంటే మొత్తం /opt/immich/library tree ను, ముఖ్యంగా దాని library/, upload/ మరియు profile/ subfolders ను restic, rsync లేదా borg ఉపయోగించి మరొక machine లేదా object storage కు బ్యాకప్ చేయండి. ముందుగా database dump తీసుకుని, తరువాత files ను బ్యాకప్ చేయండి. అప్పుడు file backup ఇంకా copy చేయని photo ను dump సూచించదు. External libraries ను వాటి అసలు source వద్ద విడిగా బ్యాకప్ చేయండి. వాటిపై Immich కు నియంత్రణ ఉండదు.
ఇప్పుడు అందరూ దాటవేసే ముఖ్యమైన భాగం: restore ను పరీక్షించండి. Fresh stack పై restore అమలు చేయాలి. ఆ stack server ఇంతకు ముందు ఎప్పుడూ ప్రారంభమై ఉండకూడదు. Dump కు అనుకూలమైన 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 -dVectorChord database లో search_path కు సంబంధించిన sed rewrite optional కాదు. దాన్ని వదిలేస్తే restore మధ్యలో ఆగిపోతుంది. Originals ను సరైన స్థానంలో ఉంచి stack మళ్లీ ప్రారంభమైన తర్వాత web UI తెరవండి. మీ photos మరియు albums కనిపిస్తే మీ backup పనిచేస్తుంది. మీరు దీన్ని ఎప్పుడూ అమలు చేయకపోతే, మీ వద్ద backup లేదు; ఒక ఆశ మాత్రమే ఉంది.
వైఫల్య పరిస్థితులు, మీరు చూడబోయే strings
ML container 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 నిలిచిపోతాయి. కారణం models కోసం RAM చాలా తక్కువగా ఉండటం. పరిష్కారాలు, ఈ క్రమంలో: swap జోడించండి (Step 1); VPS కు మరింత RAM ఇవ్వండి; లేదా అది నిజంగా సాధ్యం కాకపోతే, Administration → Settings → Machine Learning Settings లో Smart Search మరియు Facial Recognition ను ఆపి ML ను disable చేయండి. 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. వంటి line పదేపదే కనిపిస్తుంది లేదా పాత stacks లో The pgvecto.rs extension is not available in this Postgres instance. కనిపిస్తుంది. కారణం, మీ data upgrade చేసిన version కంటే extension version పాతదిగా ఉన్న database image ఉపయోగించడం. ఇది దాదాపు ఎల్లప్పుడూ 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:// ను అందిస్తున్నప్పుడు మీరు http:// నమోదు చేసి ఉండవచ్చు; backend కు నేరుగా connect అయ్యి port ఇవ్వకపోవడం వల్ల, అది example.com:2283 కు బదులుగా example.com (port 443) ప్రయత్నించి ఉండవచ్చు; లేదా reverse proxy /api ను forward చేయకపోవచ్చు. పూర్తి https://photos.example.com URL నమోదు చేసి, ముందుగా అది phone browser లో load అవుతుందో నిర్ధారించండి. Browser పనిచేసి app పనిచేయకపోతే, proxy path ను తొలగిస్తుండవచ్చు లేదా certificate self-signed అయి ఉండవచ్చు. App నమ్మదగని certificates ను తిరస్కరిస్తుంది.
Import మధ్యలో disk ఖాళీ అయిపోతుంది. 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 పరిమాణాన్ని నిర్ణయించుకోవడానికి ఇదే కారణం. పెద్ద volume ను attach చేసి, stack ను stop చేసి, UPLOAD_LOCATION ను దానికి move చేసి, .env ను update చేసి, మళ్లీ start చేయడం ద్వారా recover చేయండి. మీ provider అనుమతిస్తే, ఉన్న disk ను expand చేయవచ్చు. Disk పూర్తిగా నిండితే Postgres పనిచేయకుండా నిలిచిపోవచ్చు. అందువల్ల corruption అని భావించే ముందు space ఖాళీ చేసి database container ను restart చేయండి.
FAQ
Immich కు ఎంత RAM మరియు disk అవసరం?
Immich అధికారిక అవసరాలు కనిష్ఠంగా 6 GB RAM, సిఫార్సుగా 8 GB. చిన్న library కోసం swap తో 4 GB ఆచరణాత్మక కనిష్ఠ పరిమితి. ఏ పరిస్థితిలోనైనా swap ను configure చేయండి, ఎందుకంటే machine-learning container లోనే వనరుల వినియోగం ఒక్కసారిగా పెరుగుతుంది. Disk కోసం మొత్తం library పరిమాణంతో పాటు generated thumbnails మరియు previews కోసం సుమారు 10–20% అదనంగా కేటాయించండి. వీటిని local storage లో ఉంచండి; Postgres data directory ను network share పై ఎప్పుడూ ఉంచవద్దు. ఇంకా ఏ సేవలను నడపాలో నిర్ణయించుకుంటున్నట్లయితే, 2026లో self-host చేయగల వాటిపై guide లో Immich footprint ను ఇతర సేవలతో పోల్చి చూడవచ్చు.
GPU లేకుండా Immich ను నడపవచ్చా?
అవును. machine-learning container CPU పై సజావుగా నడుస్తుంది. GPU ఉంటే smart-search indexing వేగంగా జరుగుతుంది. సరైన image variant ఉపయోగించినప్పుడు video transcoding కూడా వేగవంతమవుతుంది. CPU పై పెద్ద library కి ప్రారంభ index తయారు చేయడానికి background లో గంటలు పట్టవచ్చు. అయితే దీనివల్ల backups లేదా browsing ఆగవు. మీ server ML workload కు సరిపడనంత చిన్నదైతే, admin settings లో Smart Search మరియు Facial Recognition ను disable చేసి మిగతా అన్ని ఫీచర్లను కొనసాగించవచ్చు.
Immich ను సురక్షితంగా ఎలా upgrade చేయాలి?
IMMICH_VERSION ను v3.0.2 వంటి నిర్దిష్ట tag కు pin చేయండి. ప్రతి upgrade కు ముందు release notes చదవండి. ముందుగా database ను back up చేయండి. Postgres image ను IMMICH_VERSION ద్వారా కాకుండా docker-compose.yml లో pin చేసినందున, target release కు చెందిన compose file మరియు example.env రెండింటినీ మళ్లీ download చేసి, మీ values ను తిరిగి apply చేయండి. తరువాత docker compose pull && docker compose up -d ను run చేయండి. Version ను unattended గా ఎప్పుడూ float చేయవద్దు. Immich breaking changes ను release చేస్తుంది మరియు downgrades కు support ఇవ్వదు.
ఖచ్చితంగా ఏవాటిని back up చేయాలి?
రెండు అంశాలను కలిసి back up చేయాలి: 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 చేయండి. కనీసం ఒకసారి scratch box పై restore ను పరీక్షించండి. పరీక్షించని backup ను backup గా పరిగణించలేము.
ఇప్పటికే ఉన్న photo folder ను ఎలా import చేయాలి?
ఆ folder ను read-onlyగా అదనపు volume రూపంలో immich-server container లో mount చేయండి; ఉదాహరణకు - /srv/photos:/mnt/media/photos:ro. తరువాత container ను recreate చేయండి. ఆపై Administration → External Libraries లో library ను create చేసి, container path /mnt/media/photos ను add చేయండి. Immich files ను వాటి ప్రస్తుత స్థానంలోనే index చేస్తుంది. వాటిని ఎప్పుడూ modify లేదా delete చేయదు. Host path బదులుగా container path ను నమోదు చేయడం అత్యంత సాధారణ తప్పు. దాంతో scan కు ఏ file కనిపించదు.