PhotoPrism बनाम Immich: आपके लिए कौन सा बेहतर है?
PhotoPrism और Immich की तुलना करें। जानें कि 400 GB लाइब्रेरी के लिए क्या चुनें और फोन बैकअप के लिए कौन सा ऐप बेहतर है। VPS पर Docker सेटअप और RAM की सटीक खपत देखें।
PhotoPrism बनाम Immich: संक्षिप्त उत्तर
PhotoPrism और Immich के बीच चुनाव दो अलग-अलग कार्यों के बीच का चुनाव है, न कि एक ही उत्पाद के दो संस्करणों का। Immich, Google Photos का विकल्प है: एक फोन ऐप स्वचालित रूप से आपके कैमरा रोल का बैकअप लेता है, और इसकी टाइमलाइन किसी भी ऐसे व्यक्ति को जानी-पहचानी लगेगी जो फोन गैलरी का उपयोग छोड़ रहा है। PhotoPrism आपके पास पहले से मौजूद फोटो लाइब्रेरी को व्यवस्थित करता है: यह डिस्क पर मौजूद फाइलों के फोल्डर को इंडेक्स करता है, उनके मेटाडेटा को पढ़ता है, उन्हें मैप पर दिखाता है, और फाइलों को बिल्कुल वहीं रहने देता है जहाँ वे थीं।
यदि समस्या यह है कि "मेरा फोन भर गया है और मुझे Google Photos से बाहर निकलना है", तो Immich चुनें। यदि समस्या यह है कि "मेरे पास ड्राइव पर 400 GB फोटो हैं और मुझे उनमें कुछ भी नहीं मिल रहा है", तो PhotoPrism चुनें। दोनों ओपन सोर्स हैं, दोनों सामान्य VPS पर Docker containers के रूप में चलते हैं, और दोनों किसी तीसरे पक्ष को कुछ भी भेजे बिना आपकी लाइब्रेरी को इंडेक्स और सर्च करते हैं।
फिलासफी का विभाजन, और यह सब कुछ कैसे तय करता है
Immich फाइलों का स्वामित्व रखता है। आप इसे एक upload location बताते हैं, phone app या web uploader originals को भेजते हैं, और Immich उन्हें अपने स्वयं के path और naming के साथ store करता है। database में albums, faces और search के बारे में वास्तविक जानकारी होती है। यह design phone के अनुभव को बेहतर बनाता है, क्योंकि server को हमेशा हर asset की पूरी स्थिति पता होती है।
PhotoPrism फाइलों को पढ़ता है। आप एक originals folder mount करते हैं जिसे आप पहले से नियंत्रित करते हैं, और PhotoPrism उस पर एक index बनाता है। आपकी directory tree आपकी ही रहती है। यदि आप कल PhotoPrism हटा देते हैं, तो photos उन्हीं folders में उन्हीं नामों के साथ वहीं रहती हैं, और PhotoPrism ने उनके बगल में sidecar YAML files लिखी होंगी जो यह बताती हैं कि उसने क्या सीखा है।
यह एक अंतर बाकी सब कुछ समझा देता है। Immich का mobile support मजबूत है क्योंकि यह ingestion को नियंत्रित करता है। PhotoPrism का library curation मजबूत है क्योंकि यह कभी भी आपके मौजूदा structure से नहीं टकराता। Immich उस परिवार के लिए बेहतर उत्तर है जिनकी photos phones पर रहती हैं। PhotoPrism उस archive के लिए बेहतर उत्तर है जो disk पर रहता है।
हार्डवेयर की आवश्यकता: Immich की अधिक मांग
दस्तावेजों में बताई गई मेमोरी की न्यूनतम सीमाएं काफी अलग हैं, और एक छोटे VPS पर यही निर्णय लेने वाला कारक होता है।
The data behind this chart
[
{
"label": "Immich",
"min_ram_gb": 6,
"recommended_ram_gb": 8
},
{
"label": "PhotoPrism",
"min_ram_gb": 3,
"recommended_ram_gb": 4
}
]Immich 6 GB RAM को न्यूनतम और 8 GB को अनुशंसित बताता है, साथ ही यह भी नोट करता है कि 4 GB वाली मशीन पर इसे केवल तभी चलाया जा सकता है जब machine learning बंद हो। PhotoPrism 3 GB physical memory और दो CPU cores की मांग करता है, और कहता है कि RAM की मात्रा core count के अनुरूप होनी चाहिए।
यह अंतर वास्तविक है, और यह machine learning container के कारण है। Immich अपने models को एक अलग immich-machine-learning service में चलाता है जो CLIP (contrastive language image pretraining) और face detection models को memory में लोड करता है। 2 GB वाली मशीन पर kernel उस container को kill कर देता है, और आप इसे code 137 के साथ exit होते देखते हैं, जो Docker में out of memory kill का संकेत है। PhotoPrism के TensorFlow models छोटे होते हैं और यह crash होने के बजाय अपनी कार्यक्षमता कम कर लेता है: 1 GB या उससे कम RAM वाली मशीनों पर यह crash होने के बजाय RAW conversion और TensorFlow को disable कर देता है।
दोनों projects swap की मांग करते हैं। PhotoPrism के docs स्पष्ट रूप से सर्वर पर कम से कम 4 GB swap रखने के लिए कहते हैं। किसी भी एक को install करने से पहले इसे जोड़ लें।
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 -hfree -h को अब एक Swap: line print करनी चाहिए जिसमें 4.0Gi दिखाई दे। यदि यह 0B print करता है, तो swapon विफल हो गया है, आमतौर पर इसलिए क्योंकि filesystem fallocate को support नहीं करता है, और sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 fallback के रूप में कार्य करता है। यहाँ container memory ceilings भी मायने रखती हैं, और Docker Compose में memory limits सेट करना वह तरीका है जिससे आप एक hungry service को पूरे सर्वर को down करने से रोक सकते हैं।
एक और आवश्यकता लोगों को परेशान करती है। Immich का Postgres database एक सामान्य Unix filesystem पर, वास्तविक ownership और permissions के साथ, local storage पर होना चाहिए, न कि network share पर। PhotoPrism भी अपनी database files के बारे में यही कहता है। किसी भी app को mounted object store पर database रखकर चलाना सुरक्षित नहीं है।
प्रत्येक को कैसे इंस्टॉल करें
दोनों इंस्टॉलेशन एक वेंडर compose file और एक कमांड पर आधारित हैं। सबसे पहले Docker Engine और Compose plugin को सेटअप करें, जैसा कि Docker Compose on a VPS के लिए हमारी गाइड में बताया गया है।
Immich हर release के साथ अपनी compose file और एक उदाहरण environment file प्रकाशित करता है।
sudo mkdir -p /opt/immich && cd /opt/immich
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.envकिसी भी चीज़ को शुरू करने से पहले .env को एडिट करें। UPLOAD_LOCATION वह स्थान है जहाँ आपकी ओरिजिनल फाइलें रहेंगी, और DB_PASSWORD को डिफ़ॉल्ट से बदलकर केवल A-Za-z0-9 वर्णों का उपयोग करना होगा, क्योंकि विशेष वर्ण कनेक्शन स्ट्रिंग को खराब कर देते हैं। इसके बाद इसे स्टार्ट करें।
docker compose up -d
docker compose psवेब इंटरफेस 2283 पोर्ट पर रिस्पॉन्स देता है। उस पेज के माध्यम से रजिस्टर किया गया पहला अकाउंट एडमिनिस्ट्रेटर बन जाता है, इसलिए इंटरनेट पर एक खुला इंस्टेंस छोड़ने के बजाय, तुरंत उस तक पहुँचें और रजिस्टर करें।
PhotoPrism एक compose file प्रदान करता है जिसमें MariaDB पहले से शामिल है।
sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yamlcompose.yaml को खोलें और पहली बार स्टार्ट करने से पहले PHOTOPRISM_ADMIN_PASSWORD को बदलें। डॉक्यूमेंटेशन इस बारे में स्पष्ट है: ऐप उस फाइल में मौजूद किसी भी शुरुआती पासवर्ड के साथ शुरू होता है, न्यूनतम लंबाई 8 वर्ण है, और डिफ़ॉल्ट वैल्यू का उपयोग कभी भी पब्लिक सर्वर पर नहीं किया जाना चाहिए। उसी समय originals वॉल्यूम को उस फोल्डर पर सेट करें जिसमें आपकी फोटो मौजूद हैं।
docker compose up -d
docker compose logs -f photoprismPhotoPrism 2342 पोर्ट पर admin यूजर के साथ रिस्पॉन्स देता है। किसी भी ऐप को सीधे एक्सपोज़ नहीं किया जाना चाहिए। इसके सामने TLS (transport layer security) के साथ एक reverse proxy रखें, जो Docker, TLS और बैकअप के साथ self-hosted Nextcloud के लिए उपयोग किए गए सेटअप के समान हो।
किसका फोन ऐप बेहतर है
यहीं पर ये दोनों प्रोजेक्ट्स सबसे अलग हैं, और यही कारण है कि ज्यादातर लोग अंततः Immich चुनते हैं।
Immich Android और iOS के लिए आधिकारिक ऐप्स प्रदान करता है। ये बैकग्राउंड में कैमरा रोल का बैकअप लेते हैं, जिसका अर्थ है कि नई तस्वीरें किसी के ऐप खोले बिना ही फोन से सर्वर पर चली जाती हैं। ऐप को एक HTTPS endpoint की आवश्यकता होती है, इसलिए यदि आप घर से बाहर इसका उपयोग करने की योजना बना रहे हैं, तो reverse proxy का होना अनिवार्य है।
PhotoPrism का कोई आधिकारिक नेटिव ऐप नहीं है। यह एक progressive web app प्रदान करता है, जिसे आप ब्राउज़र से होम स्क्रीन पर जोड़ सकते हैं। यह फोन से सिंक करने के तरीके के रूप में WebDAV (web distributed authoring and versioning) का उपयोग करने का सुझाव देता है। इसके लिए प्रोजेक्ट PhotoSync नामक एक थर्ड-पार्टी ऐप की सिफारिश करता है, जिसे WebDAV के माध्यम से /import/ या /originals/ डायरेक्टरी पर पॉइंट किया जाता है। यह काम करता है, लेकिन यह एक सशुल्क थर्ड-पार्टी ऐप है जो वह काम कर रहा है जिसे Immich अपने स्वयं के क्लाइंट के भीतर ही कर लेता है।
यदि परिवार के कई सदस्यों के लिए स्वचालित फोन बैकअप की आवश्यकता है, तो इसका उत्तर स्पष्ट है: Immich।
मशीन लर्निंग आपको वास्तव में क्या प्रदान करती है
Immich CLIP का उपयोग करके आपकी लाइब्रेरी पर सिमेंटिक सर्च (semantic search) करता है, इसलिए "red bicycle in snow" जैसी क्वेरी उन तस्वीरों को भी ढूंढ लेती है जिन्हें कभी किसी ने टैग नहीं किया था। यह फेस डिटेक्शन (face detection), क्लस्टरिंग और डुप्लीकेट डिटेक्शन भी करता है। CPU पर बड़े इम्पोर्ट की इंडेक्सिंग बैकग्राउंड में घंटों तक चलती है, जो कि सामान्य है और इसके लिए GPU (graphics processing unit) की आवश्यकता नहीं होती है।
PhotoPrism TensorFlow के साथ छवियों को लेबल में वर्गीकृत करता है, चेहरों का पता लगाकर उन्हें लोगों के समूहों में व्यवस्थित करता है, और स्थानों का मैप बनाने के लिए लोकेशन मेटाडेटा को पढ़ता है। मैप वह फीचर है जिसके लिए लोग इसका उपयोग करते हैं: बीस वर्षों की तस्वीरों को इस आधार पर ब्राउज़ करना कि वे कहाँ ली गई थीं, एक बिल्कुल अलग अनुभव है। फेस रिकग्निशन (face recognition) मुफ्त कम्युनिटी एडिशन में शामिल है। सशुल्क Essentials और Plus मेंबरशिप में अधिक विस्तृत मैप लेयर्स, अधिक यूजर रोल्स और एक यूजर मैनेजमेंट इंटरफेस जैसे अतिरिक्त फीचर्स मिलते हैं, जिनकी कीमत जुलाई 2026 तक कुछ यूरो प्रति माह से शुरू होती है।
Immich पूरी तरह से मुफ्त है और इसमें कोई सशुल्क टियर नहीं है। PhotoPrism का कोर मुफ्त है, जिसमें वैकल्पिक सशुल्क अतिरिक्त फीचर्स उपलब्ध हैं।
बैकअप तय करते हैं कि डेटा सुरक्षित रहेगा या नहीं
बिना बैकअप वाला फोटो सर्वर एक डिस्क फेलियर की दूरी पर है, जिससे परिवार की सारी यादें खो सकती हैं। दोनों ऐप्स के लिए दो बैकअप जरूरी हैं: डेटाबेस और फाइलें।
Immich के लिए, Postgres कंटेनर से डेटाबेस को डंप करें और अपलोड लोकेशन को कॉपी करें।
docker exec -t immich_postgres pg_dump --clean --if-exists --dbname=immich --username=postgres | gzip > /backup/immich-db.sql.gzइसके बाद UPLOAD_LOCATION का बैकअप लें। जिन फोल्डर्स में अपूरणीय डेटा है, वे upload, library और profile हैं। thumbs और encoded-video फोल्डर्स को दोबारा बनाया जा सकता है, लेकिन इसमें घंटों CPU समय खर्च होगा। केवल डेटाबेस डंप से कुछ भी रिस्टोर नहीं होता, क्योंकि इसमें केवल मेटाडेटा होता है।
PhotoPrism के लिए, इंडेक्स की अपनी कमांड है।
docker compose exec photoprism photoprism backup -i -fयह storage/backup/ के अंतर्गत एक SQL डंप लिखता है। इसके बाद originals फोल्डर और storage फोल्डर को कॉपी करें। चूंकि PhotoPrism प्रत्येक फोटो का विवरण देने वाली sidecar YAML फाइलें भी लिखता है, इसलिए खोए हुए इंडेक्स को केवल फाइलों से फिर से बनाया जा सकता है। यह उस आर्काइव के लिए एक बड़ा लाभ है जिसे आप दशकों तक सुरक्षित रखना चाहते हैं।
आप जो भी चुनें, उन बैकअप्स को रिमोट स्टोरेज पर एन्क्रिप्टेड, डिडुप्लिकेटेड restic बैकअप के साथ एक शेड्यूल पर सर्वर से बाहर भेजें। जो बैकअप लाइब्रेरी वाली डिस्क पर ही रहता है, वह बैकअप नहीं है।
आपको कौन सा चलाना चाहिए
यदि आपकी तस्वीरें फोन पर हैं, यदि एक से अधिक व्यक्ति को अपना कैमरा रोल बैकअप करना है, और यदि आप सर्वर को 6 GB या उससे अधिक RAM दे सकते हैं, तो Immich चलाएं। यह Google Photos के सबसे करीब का विकल्प है जिसे आप स्वयं होस्ट कर सकते हैं, और इसका मोबाइल अनुभव ही इसकी मुख्य विशेषता है। हमारी Immich इंस्टॉल करने की चरण-दर-चरण मार्गदर्शिका में मेमोरी संबंधी समस्याओं और अपग्रेड के दौरान आने वाली बाधाओं को विस्तार से समझाया गया है।
यदि आपके पास डिस्क पर पहले से ही तस्वीरों का संग्रह है, यदि आप मैप्स, मेटाडेटा और अपनी फोल्डर संरचना को बनाए रखने की परवाह करते हैं, या यदि आपके VPS में 4 GB RAM है और आप स्वैपिंग के बजाय एक कार्यशील लाइब्रेरी चाहते हैं, तो PhotoPrism चलाएं। यह एक बेहतर क्यूरेशन टूल है और कम हार्डवेयर संसाधनों पर अधिक सुचारू रूप से चलता है।
दोनों को एक साथ चलाना भी एक उचित विकल्प है। Immich दैनिक फोन बैकअप को संभालता है, और साल में एक बार आप चुनिंदा तस्वीरों को अपने आर्काइव में व्यवस्थित कर सकते हैं और PhotoPrism को उसे इंडेक्स करने दे सकते हैं। वे आपस में टकराते नहीं हैं, क्योंकि PhotoPrism फोल्डर्स को पढ़ता है जबकि Immich का अपना डेटाबेस होता है।
FAQ
क्या PhotoPrism और Immich एक ही photo folder साझा कर सकते हैं?
दोनों दिशाओं में सुरक्षित रूप से नहीं। PhotoPrism एक originals फोल्डर को पढ़ता है और आपकी इमेज के साथ sidecar YAML फाइलें लिखता है, जबकि Immich यह अपेक्षा करता है कि उसका upload लोकेशन पूरी तरह उसके नियंत्रण में हो। आप PhotoPrism को Immich के library फोल्डर की read-only कॉपी दिखा सकते हैं ताकि उसे ब्राउज़ किया जा सके, लेकिन दोनों ऐप्स को एक ही फाइल मैनेज न करने दें, क्योंकि Immich का स्टोरेज टेम्पलेट इंडेक्सिंग के दौरान PhotoPrism के काम के बीच फाइलों को मूव या रीनेम कर सकता है।
क्या Immich इतना स्थिर है कि मेरी तस्वीरों की एकमात्र कॉपी उसी में रखी जाए?
किसी भी self-hosted ऐप में किसी भी चीज़ की एकमात्र कॉपी कभी नहीं रखनी चाहिए। Immich में अक्सर breaking changes आते हैं, और एक असावधानी भरा docker compose pull डेटाबेस को स्टार्ट होने से रोक सकता है, इसलिए अपने वर्ज़न को पिन करें और अपग्रेड करने से पहले release notes पढ़ें। मूल फाइलों का बैकअप सर्वर के बाहर रखें, इससे जोखिम कम रहता है।
Immich का machine learning कंटेनर बार-बार रीस्टार्ट क्यों हो रहा है?
यह बहुत अधिक मेमोरी इस्तेमाल करने के कारण बंद (kill) हो रहा है। docker compose ps चलाएं और देखें कि क्या machine learning सर्विस कोड 137 के साथ बंद हो रही है, जो कि kernel का out of memory killer है। swap जोड़ें, या कंटेनर को मेमोरी लिमिट दें ताकि वह kill होने के बजाय throttled हो जाए, या 4 GB वाले मशीन पर machine learning को पूरी तरह डिसेबल कर दें। इसके बिना सर्च काम करना बंद कर देता है, लेकिन बाकी Immich ठीक चलता है।
क्या PhotoPrism को MariaDB की आवश्यकता है, या SQLite काम करेगा?
SQLite काम करता है और एक पर्सनल लाइब्रेरी के लिए ठीक है, लेकिन इसका उपयोग करने पर PhotoPrism खुद को चार वर्कर्स तक सीमित कर लेता है, और डॉक्यूमेंटेशन MariaDB पर स्विच करने की सलाह देता है क्योंकि यह उच्च concurrency को बेहतर तरीके से संभालता है। प्रोजेक्ट द्वारा प्रदान की गई compose फाइल में पहले से ही MariaDB शामिल है, इसलिए अनुशंसित रास्ता ही डिफ़ॉल्ट रास्ता है।
मुझे अपनी लाइब्रेरी के आकार के अलावा कितनी डिस्क स्पेस का बजट रखना चाहिए?
दोनों में से किसी भी ऐप के लिए, अपनी ओरिजिनल फाइलों के आकार के ऊपर 10 से 20 प्रतिशत अतिरिक्त जगह रखें। यह जनरेट किए गए थंबनेल और ट्रांसकोडेड वीडियो प्रीव्यू के लिए आवश्यक है। 200 GB के कलेक्शन के लिए लगभग 300 GB का वॉल्यूम चाहिए, ताकि डेटाबेस, लोकल बैकअप कॉपी और भविष्य में बढ़ने वाली फाइलों के लिए जगह बनी रहे।