Immich self-hosting: 6 GB RAM, port 2283, exit 137 సమస్యలు
Immich స్వీయ-హోస్టింగ్ కోసం 6 GB RAM అవసరం. port 2283 ను HTTPS వెనుక ఉంచాలి. exit 137 మెమరీ కిల్ సమస్య, Immich v3 pgvecto.rs డేటాబేస్పై పనిచేయదు. పునరుద్ధరణ దశలు ఉన్నాయి.
మీరు నిర్మించేది ఏమిటి
Immich అనేది స్వీయ-హోస్ట్ చేసిన ఫోటో మరియు వీడియో బ్యాకప్ సేవ. ఇది Google Photosకు నిజమైన ప్రత్యామ్నాయం. దీనికి ఫోన్ యాప్ ఉంది. అది బ్యాక్గ్రౌండ్లో మీ కెమెరా రోల్ను అప్లోడ్ చేస్తుంది. ఇందులో టైమ్లైన్, ఆల్బమ్లు, ఫేస్ రికగ్నిషన్ ఉన్నాయి. మెషిన్-లెర్నింగ్ శోధన మీరు ఏమీ ట్యాగ్ చేయకుండానే "beach" లేదా ఒక వ్యక్తిని కనుగొంటుంది. మీరు దీన్ని మీకు సొంతమైన VPSలో నడుపుతారు. అసలు ఫైళ్లు మీ డిస్క్లోనే ఉంటాయి. ఎవరూ వాటిని స్కాన్ చేసి మీకు ఏదైనా అమ్మడానికి ప్రయత్నించరు.
ఇన్స్టాలేషన్ అనేది ప్రాజెక్ట్ సొంత Docker Compose ఫైల్ నుండి వచ్చిన నాలుగు కంటైనర్లు. ఆ భాగానికి పది నిమిషాలు పడుతుంది. ఈ గైడ్లో మిగిలిన భాగమే ఇబ్బందులకు కారణం. చిన్న సర్వర్లో మెషిన్-లెర్నింగ్ కంటైనర్కు ఎక్కువ మెమరీ అవసరం. అసలు ఫైళ్లు డిస్క్ను త్వరగా నింపేస్తాయి. మొబైల్ యాప్ సాధారణ HTTP సర్వర్ను అంగీకరించదు. Immich తరచుగా బ్రేకింగ్ మార్పులను విడుదల చేస్తుంది. అందువల్ల జాగ్రత్తలేని docker compose pull మీ డేటాబేస్ను ప్రారంభించలేని స్థితికి తీసుకువెళ్లవచ్చు. ఈ నాలుగు అంశాలను శ్రద్ధగా పరిగణిస్తే Immich బలంగా పనిచేస్తుంది. వాటిని విస్మరిస్తే మీరు ఒక వారాంతం వృథా చేస్తారు.
ముందస్తు అవసరాలు, మరియు వాస్తవ సమస్యలు
- RAM: అధికారిక పత్రాలు కనీసం 6 GB మరియు సిఫార్సు చేసినది 8 GB అని చెబుతాయి — 4 GB ప్లస్ swap ని అత్యల్ప పరిమితిగా పరిగణించండి.
immich-serverమరియు Postgres కంటైనర్లు చిన్నవే.immich-machine-learningకంటైనర్ ఎక్కువ వనరులను వాడుతుంది — అది శోధన సూచికలను నిర్మించడానికి CLIP మరియు ముఖ-గుర్తింపు మోడల్లను RAM లోకి లోడ్ చేస్తుంది, మరియు 2 GB మెషిన్పై కర్నల్ దాన్ని కిల్ చేస్తుంది. మీకు 4 GB ఉన్నా కూడా swap జోడించండి. - డిస్క్: మీ పూర్తి లైబ్రరీకి పాటు కొంత ఎక్కువగా సైజు నిర్ణయించండి. మీ అసలు ఫైళ్లు పూర్తిగా కాపీ అవుతాయి, దానికి మించి Immich థంబ్నెయిల్లు మరియు ప్రివ్యూ ఇమేజ్లను సృష్టిస్తుంది (దాదాపు 10–20% అదనంగా). 200 GB ఫోటో సేకరణకు 300 GB వాల్యూమ్ కావాలి. దీనితో పోలిస్తే Postgres చిన్నది.
- CPU: ఏ ఆధునిక KVM VPS పనికొస్తుంది, కానీ CPU పై ML నెమ్మదిగా ఉంటుంది. పెద్ద దిగుమతి యొక్క స్మార్ట్-సెర్చ్ సూచీకరణ బ్యాక్గ్రౌండ్లో గంటల తరబడి నడవవచ్చు. అది సాధారణమే; దానికి GPU అవసరం లేదు.
- ఒక డొమైన్ పేరు VPS వైపు సూచించబడి ఉండాలి. మొబైల్ యాప్ HTTPS ఎండ్పాయింట్ను బలంగా ఇష్టపడుతుంది, మరియు ముందు ఒక రివర్స్ ప్రాక్సీ కావాలి. ఇది Docker, TLS మరియు బ్యాకప్లతో స్వయం-హోస్ట్ చేసిన Nextcloud ఇన్స్టాన్స్ సెటప్ లాంటిదే — Immich ఆ ఫైల్ సర్వర్కు ఫోటోల ప్రతిరూపం.
- Docker మరియు Compose ప్లగిన్ ఇన్స్టాల్ చేయబడి ఉండాలి — Docker యొక్క స్వంత apt రిపాజిటరీ నుండి Docker Engine ప్లస్ Compose v2 ప్లగిన్, మా Docker Compose ప్రాథమిక గైడ్లో వివరించిన విధంగా కచ్చితంగా.
దశ 1: ముందుగా ఏదైనా చేయకముందే swap జోడించండి
చిన్న VPSలో Immich వైఫల్యానికి అత్యంత సాధారణ కారణం ML కంటైనర్కు OOM-kill జరగడం. కర్నల్కు ముందుగా కొంత అదనపు స్థలం ఇవ్వండి.
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 మెషీన్లో ఇండెక్సింగ్ మధ్యలో కంటైనర్ ఆగిపోవడాన్ని ఇది నిలిపివేస్తుంది.
దశ 2: అధికారిక compose మరియు env ఫైళ్లను స్వీకరించండి — కాపీ కాదు, వారిదే వాడండి
Immich తన సర్వీస్ వెర్షన్లను మరియు ముఖ్యంగా తన డేటాబేస్ ఇమేజ్ను తాను అందించే ఫైళ్ల లోపలే నిర్దేశిస్తుంది. మీ ఆధార సత్యం కోసం ఒక బ్లాగ్ నుండి (దీనితో సహా) 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, పోర్ట్2283వద్ద వింటుంది. ఇది మీ అప్లోడ్లను/dataవద్ద మౌంట్ చేస్తుంది.immich-machine-learning(ghcr.io/immich-app/immich-machine-learning, కంటైనర్immich_machine_learning) — CLIP శోధన మరియు ఫేస్ గుర్తింపు. డౌన్లోడ్ చేసిన మోడల్లనుmodel-cacheవాల్యూమ్లో క్యాష్ చేస్తుంది. ఇది మెమరీని ఎక్కువగా తినేది.database(కంటైనర్immich_postgres) — VectorChord వెక్టర్ ఎక్స్టెన్షన్తో కూడిన Postgres, ఇది సారూప్యత శోధనను నడుపుతుంది. ఇమేజ్ ట్యాగ్ కంటైనర్ ఫైల్లోనే డైజెస్ట్ ద్వారా నిర్దేశించబడి ఉంటుంది, ఉదాహరణకుghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:.... పాత సెటప్లుpgvecto.rsవాడేవి; దానికి మద్దతు Immich v3.0లో తొలగించబడింది, కాబట్టి మీరు ఈ రోజు ఇన్స్టాల్ చేసేది ఏదైనా VectorChordే. ఈ ట్యాగ్ను ఎప్పుడూ మాన్యువల్గా మార్చవద్దు.redis(కంటైనర్immich_redis) — జాబ్ క్యూల కోసం Valkey/Redis ఇన్స్టాన్స్.
దశ 3: .env ను ఆకృతీకరించండి — మీ ఫోటోలు మరియు డేటాబేస్ ఎక్కడ ఉంచబడతాయి
.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 మీ పెద్ద డిస్క్ను సూచించాలి — మీరు తర్వాత డేటా వాల్యూమ్ను జతచేస్తే, దాన్ని ప్రారంభం నుండి దాని మౌంట్ పాత్కి సెట్ చేయండి, ఎందుకంటే తర్వాత దాన్ని తరలించడం అంటే థంబ్నెయిల్లను తరలించడం మరియు ఆస్సెట్ పాత్లను నవీకరించడం అవుతుంది. మరియు DB_DATA_LOCATION తప్పనిసరిగా స్థానిక డిస్క్లో ఉండాలి: NFS లేదా SMB షేర్లోని Postgres పాడుమవుతుంది, మరియు డాక్స్ దాన్ని స్పష్టమైన మాటల్లో చెబుతాయి. మీరు DB_PASSWORD లో అక్షరాలు మరియు అంకెలను మాత్రమే ఉపయోగిస్తే కనెక్షన్-స్ట్రింగ్ ఎస్కేపింగ్ బగ్ల తరగతిని నివారిస్తారు.
దశ 4: మొదటి రన్ మరియు నిర్వాహక వినియోగదారుని సృష్టించడం
cd /opt/immich
sudo docker compose up -d
sudo docker compose psసరైన ఫలితం అనేది నాలుగు కంటైనర్లు, అన్నీ running మరియు చివరికి healthy:
NAME STATUS
immich_machine_learning Up (healthy)
immich_postgres Up (healthy)
immich_redis Up (healthy)
immich_server Up (healthy)మొదటి up అనేక గిగాబైట్ల ఇమేజ్లను పొందుతుంది, కాబట్టి దానికి సమయం ఇవ్వండి. sudo docker compose logs -f immich-server తో పురోగతిని గమనించండి; సిద్ధంగా ఉన్న తర్వాత సర్వర్ పోర్ట్ 2283 పై వింటోవుతుందని లాగ్లు చూపిస్తాయి. ఇప్పుడు బ్రౌజర్లో http://YOUR_SERVER_IP:2283 తెరవండి. మొదటి సందర్శన గెట్టింగ్ స్టార్టెడ్ విజార్డ్ను చూపిస్తుంది — మీరు సృష్టించే మొదటి ఖాత నిర్వాహక ఖాత. బలమైన పాస్వర్డ్ సెట్ చేయండి; ఈ ఖాత సర్వర్ సెట్టింగులు, వినియోగదారుల నిర్వహణ మరియు మీకు తరువాత అవసరమయ్యే ML ఆకృతీకరణను నియంత్రిస్తుంది.
దశ 5: మొబైల్ యాప్ మరియు బ్యాక్గ్రౌండ్ బ్యాకప్
App Store లేదా Play Store నుండి "Immich" ను ఇన్స్టాల్ చేయండి. లాగిన్ స్క్రీన్పై అది Server Endpoint URL ను అడుగుతుంది. పూర్తి URL ను స్కీమ్తో సహా నమోదు చేయండి, ఉదాహరణకు https://photos.example.com (యాప్ /api ను స్వయంగా జతచేస్తుంది). మీరు ఇప్పుడే సృష్టించిన ఖాతాతో లాగిన్ చేయండి. తర్వాత యాప్లోని Backup స్క్రీన్ను తెరవండి. రక్షించడానికి ఆల్బమ్లను ఎంచుకోండి (సాధారణంగా Camera మరియు Screenshots). Background backup ను ప్రారంభించండి. iOS బ్యాక్గ్రౌండ్ బ్యాకప్ను OS పరిమితం చేస్తుంది. ఫోర్గ్రౌండ్ అప్లోడ్లు ఎల్లప్పుడూ జరుగుతాయి. బ్యాక్గ్రౌండ్ అప్లోడ్లు OS అనుమతించినప్పుడు మాత్రమే జరుగుతాయి.
ప్రజలు సరిగ్గా ఇక్కడే ఇబ్బందికి లోనవుతారు. కాబట్టి యాప్తో పోరాడటానికి ముందు దశ 6 ను చదవండి.
6వ దశ: రివర్స్ ప్రాక్సీ ద్వారా HTTPS — మరియు పూర్తి-URL నియమం
మొబైల్ యాప్కు HTTPS అవసరం. పోర్ట్ 2283 ముందు ఒక రివర్స్ ప్రాక్సీని ఉంచండి. దాని వద్ద TLS ని ముగించండి. మీరు ఇప్పటికే అనేక కంటైనర్లను నడుపుతుంటే, బహుళ Docker యాప్ల కోసం స్వయంచాలక TLS తో Traefik అత్యుత్తమ ఎంపిక — ఒకే లేబుల్ బ్లాక్ photos.example.com ను immich-server కంటైనర్కు రూట్ చేస్తుంది మరియు మీ కోసం సర్టిఫికేట్ను పొందుతుంది. మీకు nginx అభిమానమైతే, Certbot మరియు nginx తో Let's Encrypt గైడ్ మీకు ఒక సర్టిఫికేట్ మరియు proxy_pass http://127.0.0.1:2283; బ్లాక్ను ఇస్తుంది. Immich కోసం ఒక ప్రాక్సీ సెట్టింగ్ ముఖ్యమైనది: అప్లోడ్ పరిమాణ పరిమితిని పెంచండి, ఎందుకంటే ఫోన్ వీడియోలు పెద్దవిగా ఉంటాయి. nginx లో అది సర్వర్ బ్లాక్ లోపల client_max_body_size 50000M; — అప్రమేయ 1 MB వీడియో అప్లోడ్లను 413 Request Entity Too Large తో తిరస్కరిస్తుంది.
యాప్ అమలు చేసే నియమం: ఎండ్పాయింట్ చేరుకోగలిగేదిగా ఉండాలి మరియు ఆచరణలో, అది HTTPS గా ఉండాలి. http:// ఎండ్పాయింట్లు, లేదా పోర్ట్ వదిలివేసిన ప్రత్యక్ష IP, "యాప్ సర్వర్ను చేరుకోలేకపోతోంది" అనే సమస్యకు మూలం — దీనిని దిగువ ఒక పేరున్న వైఫల్యంగా వివరించారు.
దశ 7: బాహ్య లైబ్రరీలు vs అప్లోడ్లు — ఉన్న ఫోటో వృక్షాన్ని దిగుమతి చేయడం
ఫోటోలు Immich లోకి రావడానికి రెండు మార్గాలు ఉన్నాయి. అవి రెండూ ఒకేలా ఉండవు.
- అప్లోడ్లు Immich యాజమాన్యంలో ఉన్న ఆస్తులు. యాప్ లేదా వెబ్ అప్లోడర్ ఫైలును
UPLOAD_LOCATIONలోకి కాపీ చేస్తుంది. Immich వాటిని పేరు మార్చగలదు, తరలించగలదు, తొలగించగలదు. - బాహ్య లైబ్రరీలు మీ సర్వర్లో ఒక ఫోల్డర్లో ఇప్పటికే ఉన్న ఫైళ్ల చదువుట-మాత్రమే దిగుమతులు — ఒక పాత
Picturesవృక్షం, ఒక NAS ఎక్స్పోర్ట్. Immich వాటిని స్థానంలోనే సూచీకరిస్తుంది మరియు టైమ్లైన్లో చూపిస్తుంది, కానీ అసలు ఫైళ్లను ఎప్పుడూ సవరించదు లేదా తొలగించదు.
ఉన్న వృక్షాన్ని దిగుమతి చేయడానికి, దాన్ని చదువుట-మాత్రమేగా సర్వర్ కంటైనర్లోకి మౌంట్ చేయండి. docker-compose.yml ను immich-server: కింద సవరించండి మరియు ఒక వాల్యూమ్ను జోడించండి:
immich-server:
volumes:
- ${UPLOAD_LOCATION}:/data
- /etc/localtime:/etc/localtime:ro
- /srv/photos:/mnt/media/photos:ro:ro అనేది Immich అసలు ఫైళ్లను ఎప్పుడూ తాకదని గ్యారెంటీ ఇస్తుంది. కంటైనర్ను sudo docker compose up -d తో పునఃసృష్టించండి, తర్వాత వెబ్ UI లో మీ అవతార్ → అడ్మినిస్ట్రేషన్ → బాహ్య లైబ్రరీలు → లైబ్రరీని సృష్టించు కి వెళ్లండి, యాజమాన్య వినియోగదారుడిని ఎంచుకోండి, ఫోల్డర్ల కింద జోడించు క్లిక్ చేయండి, మరియు కంటైనర్ పాత్ను నమోదు చేయండి — /mnt/media/photos, హోస్ట్ పాత్ /srv/photos కాదు. స్కాన్ క్లిక్ చేయండి. కంటైనర్ పాత్ బదులుగా హోస్ట్ పాత్ను ఉపయోగించడమే బాహ్య-లైబ్రరీ తప్పుల్లో అగ్రస్థానం; స్కాన్ ఏమీ కనుగొనదు మరియు సున్నా ఆస్తులను నివేదిస్తుంది.
దశ 8: Immich కోరుకునే అప్గ్రేడ్ క్రమశిక్షణ
ఇది సజీవ Immichని విరిగిన Immich నుండి వేరు చేసే భాగం. Immich వేగంగా విడుదల అవుతుంది. పాత ఫిక్సులను బ్యాక్పోర్ట్ చేయదు. డౌన్గ్రేడ్లకు మద్దతు లేదు. ఫ్లోటింగ్ v3 ట్యాగ్ను అంధంగా ట్రాక్ చేస్తే చివరికి మీ డేటాబేస్ విరిగిపోతుంది. ఈ క్రమశిక్షణ:
- వెర్షన్ను పిన్ చేయండి.
IMMICH_VERSIONనుv3.0.2వంటి ఒక కచ్చితమైన ట్యాగ్కు సెట్ చేసి ఉంచండి. ఎల్లప్పుడూ కొత్త v3.x ను లాగే ఫ్లోటింగ్v3కు కాదు. - అప్గ్రేడ్ చేయడానికి ముందు ప్రతిసారి రిలీజ్ నోట్స్ చదవండి. బ్రేకింగ్ మార్పులు — ముఖ్యంగా డేటాబేస్ లేదా వెక్టర్-ఎక్స్టెన్షన్ మార్పులు — అక్కడ పేర్కొనబడతాయి. v3.0 రిలీజ్ స్పష్టమైన ఉదాహరణ: అది pgvecto.rs ను పూర్తిగా తొలగించింది, కాబట్టి ఇంకా పాత ఎక్స్టెన్షన్లో ఉన్న ఎవరైనా పైకి వెళ్లడానికి ముందు VectorChord మైగ్రేషన్ను (v1.133 లో పరిచయం చేయబడింది) పూర్తి చేయాలి.
- ముందుగా డేటాబేస్ను బ్యాకప్ చేయండి (దశ 9). ఎల్లప్పుడూ, అయితే నోట్స్ డేటాబేస్ను ప్రస్తావించినప్పుడు రెట్టింపు.
- కొత్త కంపోజ్ ఫైల్ను కూడా తీసుకోండి.
IMMICH_VERSIONసర్వర్ మరియు ML ఇమేజ్లను మాత్రమే పిన్ చేస్తుంది. Postgres ఇమేజ్docker-compose.ymlలోపల డైజెస్ట్ ద్వారా పిన్ చేయబడుతుంది, కాబట్టి కొత్త డేటాబేస్ ఎక్స్టెన్షన్ అవసరమయ్యే వెర్షన్ కొత్త కంపోజ్ ఫైల్ను షిప్ చేస్తుంది. రెండు రిలీజ్ ఆస్సెట్లను తిరిగి డౌన్లోడ్ చేయండి, మీ.envవిలువలను తిరిగి అప్లై చేయండి, తర్వాత అప్గ్రేడ్ చేయండి. - మీ మొబైల్ క్లయింట్లను దాదాపు అదే సమయంలో అప్డేట్ చేయండి. సర్వర్ దాని సరిపోలే మేజర్ వెర్షన్ను మాత్రమే మాట్లాడుతుంది, మరియు యాప్ ప్రస్తుత మరియు ముందున్న మేజర్లకు మద్దతు ఇస్తుంది. యాప్ కంటే ముందుకు దూకిన సర్వర్, మీరు దాన్ని అప్డేట్ చేసే వరకు ఫోన్లో
Your app major version is not compatible with the server!ను చూపుతుంది, కాబట్టి ముందుగా యాప్ను అప్డేట్ చేయడమే అత్యంత సురక్షితం.
కొత్త ఫైళ్లను స్థానంలో ఉంచాక, అసలు కమాండ్లు:
cd /opt/immich
sudo docker compose pull
sudo docker compose up -d
sudo docker image pruneదశ 9: బ్యాకప్లు — ఒక డేటాబేస్ డంప్ ప్లస్ అసలు ఫైళ్లు, మరియు దాన్ని పరీక్షించడం
Immich బ్యాకప్ అనేది రెండు విషయాలు, వీటిలో ఒకటి లేకుండా మరొకటి పనికిరాదు. డేటాబేస్ ఆల్బమ్ నిర్మాణం, ఫేసెస్, సెర్చ్ ఇండెక్స్లు మరియు ఆస్తెట్-టు-ఫైల్ మాపింగ్ను కలిగి ఉంటుంది. అసలు డైరెక్టరీ వాస్తవ ఫోటోలను కలిగి ఉంటుంది. వీటిలో ఒకటి లేకుండా మరొకటి రిస్టోర్ చేస్తే, మీకు ఆర్గనైజేషన్ లేని ఫోటోలు లేదా లేని ఫైళ్లను సూచించే ఖాళీ షెల్ వస్తుంది.
Postgres కంటైనర్ లోపల నుండి pg_dump తో డేటాబేస్ను డంప్ చేయండి — పూర్తి క్లస్టర్ కాదు, దానికి బదులుగా కేవలం immich డేటాబేస్:
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 ట్రీ, మరియు ముఖ్యంగా దాని library/, upload/ మరియు profile/ సబ్ఫోల్డర్లను — restic, rsync లేదా borg తో మరొక మెషిన్ లేదా ఆబ్జెక్ట్ స్టోరేజ్కు. ముందుగా డేటాబేస్, తర్వాత ఫైళ్లు బ్యాకప్ చేయండి, తద్వారా డంప్ ఫైల్ బ్యాకప్ ఇంకా కాపీ చేయని ఫోటోను ఎప్పటికీ సూచించదు. ఎక్స్టర్నల్ లైబ్రరీలను మీరు వాటి వాస్తవ మూలం వద్ద వేరేగా బ్యాకప్ చేస్తారు; వాటిని Immich యాజమాన్యంలో ఉంచదు.
ఇప్పుడు అందరూ దాటవేసే భాగం: రిస్టోర్ను పరీక్షించడం. రిస్టోర్ అనేది సర్వర్ ఎప్పుడూ ప్రారంభించని ఒక కొత్త స్టాక్పై నడవాలి, వెక్టర్ ఎక్స్టెన్షన్ డంప్తో సరిపోలిన ఒక Postgres ఇమేజ్పై నడవాలి — అందుకే మీరు DB ఇమేజ్ ట్యాగ్ను స్వయంగా నిర్ణయించకూడదు. ఒకే compose మరియు .env ఉన్న స్క్రాచ్ బాక్స్లో, పాత స్టేట్ను తొలగించండి, కేవలం డేటాబేస్ను మాత్రమే ప్రారంభించండి, తర్వాత డంప్ను లోడ్ చేయండి:
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 డేటాబేస్పై search_path యొక్క sed రీరైట్ ఐచ్ఛికం కాదు — దాన్ని వదిలేస్తే రిస్టోర్ మధ్యలోనే ఆగిపోతుంది. మీ అసలు ఫైళ్లు స్థానంలో ఉండగా స్టాక్ మళ్లీ ప్రారంభమైనప్పుడు, వెబ్ UI తెరవండి: మీ ఫోటోలు మరియు ఆల్బమ్లు అక్కడ ఉంటే, మీ బ్యాకప్ పని చేస్తుంది. మీరు దీన్ని ఎప్పుడూ నడిపించనట్లయితే, మీ వద్ద బ్యాకప్ లేదు — మీకు కేవలం ఒక ఆశ ఉంది.
వైఫల్య రకాలు, మీరు చూసే స్ట్రింగ్లతో
ML కంటైనర్ OOM-కిల్ అవుతుంది. sudo docker compose logs immich-machine-learning ఆకస్మికంగా ముగుస్తుంది, docker compose ps దాన్ని Restarting గా చూపిస్తుంది, మరియు ఎగ్జిట్ కోడ్ 137. sudo dmesg | grep -i oom దీన్ని నిర్ధారిస్తుంది: Out of memory: Killed process ... (python3). సెర్చ్ మరియు ఫేస్ జాబ్స్ ఆపై నిలిచిపోతాయి. దీనికి కారణం మోడల్లకు సరిపడా RAM లేకపోవడం. పరిష్కారాలు, క్రమంలో: స్వాప్ జోడించండి (Step 1); VPSకి మరింత RAM ఇవ్వండి; లేదా, మీరు నిజంగా చేయలేకపోతే, Administration → Settings → Machine Learning Settings లో Smart Search మరియు Facial Recognition ఆఫ్ చేయడం ద్వారా MLని డిసేబుల్ చేయండి — మీరు బ్యాకప్లు మరియు ఆల్బమ్లను ఉంచుకుంటారు, కంటెంట్ ద్వారా సెర్చ్ను కోల్పోతారు. కంపోజ్ ఫైల్ నుండి immich-machine-learning సర్వీస్ను తీసివేయడం కూడా అదే ప్రభావాన్ని చూపుతుంది.
అప్గ్రేడ్ తర్వాత Postgres ప్రారంభించడానికి నిరాకరిస్తుంది. సర్వర్ లాగ్ 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. వంటి లైన్తో లూప్ అవుతుంది — లేదా, పాత స్టాక్లలో, The pgvecto.rs extension is not available in this Postgres instance. దీనికి కారణం డేటాబేస్ ఇమేజ్ యొక్క ఎక్స్టెన్షన్ వెర్షన్ మీ డేటా అప్గ్రేడ్ చేయబడిన దానికన్నా పాతదిగా ఉండటం, దాదాపు ఎల్లప్పుడూ ఇమేజ్ ట్యాగ్ను మాన్యువల్గా ఎడిట్ చేయడం లేదా పాత ఇమేజ్పై కొత్త డంప్ను రిస్టోర్ చేయడం వల్ల వస్తుంది. పరిష్కారం సరిపోయే Postgres ఇమేజ్ను ఉపయోగించడం — మీ డేటాబేస్తో సరిపోయే రిలీజ్ నుండి కంపోజ్ ఫైల్ను తీసుకోండి, డౌన్గ్రేడ్ చేయవద్దు, మరియు కంపాటిబుల్ ఇమేజ్పై మాత్రమే రిస్టోర్ చేయండి.
మొబైల్ యాప్ సర్వర్ను చేరుకోలేకపోతుంది. మీరు URL నమోదు చేసిన తర్వాత లాగిన్ స్క్రీన్ కనెక్షన్ ఎర్రర్ను / Server is not reachable చూపిస్తుంది. మూడు కారణాలు: మీరు http:// నమోదు చేశారు, అక్కడ ప్రాక్సీ కేవలం https:// సర్వ్ చేస్తుంది; మీరు నేరుగా బ్యాకెండ్కి కనెక్ట్ అయ్యారు కానీ పోర్ట్ను వదిలేశారు, కాబట్టి అది example.com:2283 బదులుగా example.com (పోర్ట్ 443) ప్రయత్నించింది; లేదా రివర్స్ ప్రాక్సీ /api ఫార్వర్డ్ చేయడం లేదు. పూర్తి https://photos.example.com URL నమోదు చేయడం ద్వారా మరియు మొదట ఫోన్ బ్రౌజర్లో అది లోడ్ అవుతుందో కనిపెట్టడం ద్వారా పరిష్కరించండి. బ్రౌజర్ పనిచేసి యాప్ పనిచేయకపోతే, ప్రాక్సీ పాత్ను స్ట్రిప్ చేస్తోంది లేదా సర్టిఫికేట్ సెల్ఫ్-సైన్డ్గా ఉంది — యాప్ అన్ట్రస్టెడ్ సర్ట్లను తిరస్కరిస్తుంది.
ఇంపోర్ట్ మధ్యలో డిస్క్ అయిపోయింది. అప్లోడ్లు విఫలం కావడం మొదలవుతాయి, థంబ్నెయిల్లు ఖాళీగా మారతాయి, మరియు లాగ్లు ENOSPC: no space left on device లేదా, Postgres నుండి, could not extend file ... No space left on device చూపిస్తాయి. df -h UPLOAD_LOCATION వాల్యూమ్ 100% వద్ద ఉందని చూపిస్తుంది. పెద్ద లైబ్రరీని ఇంపోర్ట్ చేయడానికి ముందు మీరు డిస్క్ సైజు చేయడం అందుకే అవసరం. పెద్ద వాల్యూమ్ను అటాచ్ చేయడం, స్టాక్ను ఆపడం, UPLOAD_LOCATION ను దానికి తరలించడం, .env అప్డేట్ చేయడం, మరియు మళ్లీ ప్రారంభించడం ద్వారా — లేదా మీ ప్రొవైడర్ అనుమతిస్తే ఉన్న డిస్క్ను విస్తరించడం ద్వారా రికవర్ చేయండి. డిస్క్ నిండితే Postgres స్తంభించిపోవచ్చు, కాబట్టి కరప్షన్ అనుకోవడానికి ముందు స్పేస్ క్లియర్ చేసి డేటాబేస్ కంటైనర్ను రీస్టార్ట్ చేయండి.
FAQ
Immichకి ఎంత RAM మరియు డిస్క్ అవసరం?
Immich అధికారిక అవసరాలు కనీసం 6 GB RAM మరియు సిఫార్సు చేయబడినది 8 GB. చిన్న లైబ్రరీకి swapతో 4 GB ఆచరణాత్మక అత్యల్ప స్థాయి. ఏ పరిస్థితిలోనైనా swapని కాన్ఫిగర్ చేయండి, ఎందుకంటే మెషిన్-లెర్నింగ్ కంటైనర్ అకస్మాత్తుగా లోడ్ పెంచే భాగం. డిస్క్ విషయంలో, మీ పూర్తి లైబ్రరీ పరిమాణం వద్ద సుమారు 10–20% ఎక్కువగా జనరేట్ చేయబడిన థంబ్నెయిల్స్ మరియు ప్రివ్యూల కోసం బడ్జెట్ ప్లాన్ చేయండి, ఇది లోకల్ స్టోరేజ్లో ఉండాలి — Postgres డేటా డైరెక్టరీని ఎప్పుడూ నెట్వర్క్ షేర్లో ఉంచవద్దు. మీరు ఇంకా ఏమి రన్ చేయాలో నిర్ణయించుకుంటున్నట్లయితే, 2026లో స్వయం-హోస్ట్ చేయాల్సినవి గైడ్ ఇతర సేవలతో పాటు Immich యొక్క ఫుట్ప్రింట్ను చూపిస్తుంది.
GPU లేకుండా నేను Immichని రన్ చేయగలనా?
అవును. మెషిన్-లెర్నింగ్ కంటైనర్ CPUపై సమస్య లేకుండా రన్ అవుతుంది — GPU స్మార్ట్-సెర్చ్ ఇండెక్సింగ్ను మాత్రమే వేగవంతం చేస్తుంది మరియు సరైన ఇమేజ్ వేరియంట్తో, వీడియో ట్రాన్స్కోడింగ్ను కూడా వేగవంతం చేస్తుంది. CPUపై, పెద్ద లైబ్రరీ యొక్క ప్రారంభ ఇండెక్స్ బ్యాక్గ్రౌండ్లో గంటలు పడుతుంది, అయితే ఇది బ్యాకప్లు లేదా బ్రౌజింగ్ను నిరోధించదు. మీ సిస్టమ్ ML రన్ చేయడానికి చాలా చిన్నది అయితే, మీరు అడ్మిన్ సెట్టింగులలో Smart Search మరియు Facial Recognitionని డిసేబుల్ చేసి మిగతా అన్నీ ఉంచుకోవచ్చు.
నేను Immichని సురక్షితంగా ఎలా అప్గ్రేడ్ చేయాలి?
IMMICH_VERSIONని v3.0.2 వంటి ఒక నిర్దిష్ట ట్యాగ్కి పిన్ చేయండి, ప్రతి అప్గ్రేడ్కు ముందు రిలీజ్ నోట్స్ చదవండి, మరియు ముందుగా డేటాబేస్ను బ్యాకప్ చేయండి. Postgres ఇమేజ్ IMMICH_VERSION ద్వారా కాకుండా docker-compose.yml లోపల పిన్ చేయబడినందున, కంపోజ్ ఫైల్ మరియు example.env రెండింటినీ మీ లక్ష్య రిలీజ్ నుండి తిరిగి డౌన్లోడ్ చేసి, మీ విలువలను తిరిగి అప్లై చేసి, ఆపై docker compose pull && docker compose up -d రన్ చేయండి. వెర్షన్ను ఎప్పుడూ పర్యవేక్షించకుండా ఫ్లోట్ చేయవద్దు — Immich బ్రేకింగ్ మార్పులను షిప్ చేస్తుంది మరియు డౌన్గ్రేడ్లకు మద్దతు ఇవ్వదు.
నేను ఖచ్చితంగా ఏమి బ్యాకప్ చేయాలి?
రెండు విషయాలు, కలిపి: immich డేటాబేస్ యొక్క pg_dump మరియు మొత్తం UPLOAD_LOCATION అసలు డైరెక్టరీ. డేటాబేస్ ఆల్బమ్లు, ఫేసెస్ మరియు ఆస్సెట్-టు-ఫైల్ మ్యాపింగ్ను కలిగి ఉంటుంది; డైరెక్టరీ నిజమైన ఫోటోలను కలిగి ఉంటుంది, మరియు రెస్టోర్కు అనుగుణమైన వెక్టర్ ఎక్స్టెన్షన్తో డేటాబేస్ ఇమేజ్ సహా రెండూ అవసరం. ముందుగా డేటాబేస్ డంప్ చేయండి మరియు రెండవదిగా ఫైల్ కాపీ చేయండి, మరియు ఒక స్క్రాచ్ బాక్స్లో రెస్టోర్ను కనీసం ఒకసారి టెస్ట్ చేయండి — టెస్ట్ చేయని బ్యాకప్ అనేది బ్యాకప్ కాదు.
నేను నా ఇప్పటికే ఉన్న ఫోటో ఫోల్డర్ని ఎలా ఇంపోర్ట్ చేయాలి?
ఫోల్డర్ని రీడ్-ఓన్లీగా ఒక ఎక్స్ట్రా వాల్యూమ్గా immich-server కంటైనర్లోకి మౌంట్ చేయండి (ఉదాహరణకు - /srv/photos:/mnt/media/photos:ro), కంటైనర్ను తిరిగి సృష్టించండి, ఆపై Administration → External Librariesలో ఒక లైబ్రరీని సృష్టించి container పాత్ /mnt/media/photos జోడించండి. Immich ఫైళ్లను అదే స్థానంలో ఇండెక్స్ చేస్తుంది మరియు వాటిని ఎప్పుడూ సవరించదు లేదా తొలగించదు. కంటైనర్ పాత్కి బదులుగా హోస్ట్ పాత్ను నమోదు చేయడమే అత్యంత సాధారణ తప్పు, దీని వలన స్కాన్ ఏమీ కనుగొనదు.