PhotoPrism बनाम Immich: कौन सा photo server चुनें?
PhotoPrism और Immich की तुलना: असली RAM जरूरत, phone apps, maps और VPS पर जरूरी exact backup commands जानें, ताकि सही photo server चुन सकें।
PhotoPrism बनाम Immich: संक्षिप्त उत्तर
PhotoPrism बनाम Immich का चुनाव एक ही उत्पाद के दो संस्करणों के बीच नहीं, बल्कि दो अलग-अलग कार्यों के बीच है। Immich, Google Photos का विकल्प है: एक phone app आपके camera roll का अपने-आप backup बनाता है, और मिलने वाली timeline उन लोगों को परिचित लगती है जो phone gallery का उपयोग छोड़ रहे हैं। PhotoPrism आपके मौजूदा photo library को व्यवस्थित करता है: यह disk पर मौजूद files वाले folders को index करता है, उनका metadata पढ़ता है, उन्हें map पर दिखाता है और files को ठीक उसी स्थान पर रखता है।
यदि समस्या यह है कि "मेरे phone में जगह भर गई है और मैं Google Photos का उपयोग बंद करना चाहता हूं", तो Immich चुनें। यदि समस्या यह है कि "मेरे drive पर photos के 400 GB हैं और मुझे उनमें कुछ नहीं मिलता", तो PhotoPrism चुनें। दोनों open source हैं, दोनों सामान्य VPS पर Docker containers के रूप में चलते हैं, और दोनों आपकी library को किसी third party को कुछ भेजे बिना index और search करते हैं।
दर्शन का विभाजन, और यह क्यों सब कुछ तय करता है
Immich फ़ाइलों का प्रबंधन करता है। आप उसे upload location देते हैं, phone app या web uploader मूल फ़ाइलें भेजते हैं, और Immich उन्हें अपने path के अंतर्गत अपने नामकरण के साथ संग्रहीत करता है। database में albums, faces और search से संबंधित वास्तविक जानकारी रहती है। यही डिज़ाइन 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 मजबूत है, क्योंकि वह आपकी मौजूदा संरचना में कभी हस्तक्षेप नहीं करता। जिन परिवारों की photos phones में रहती हैं, उनके लिए Immich बेहतर विकल्प है। जिस archive का data disk पर रहता है, उसके लिए PhotoPrism बेहतर विकल्प है।
हार्डवेयर की आवश्यकता: 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 RAM बताता है। इसमें यह भी लिखा है कि 4 GB वाली मशीन इसे केवल machine learning बंद करके चला सकती है। PhotoPrism 3 GB physical memory और 2 CPU cores बताता है। इसके अनुसार RAM की मात्रा core count के अनुरूप होनी चाहिए।
यह अंतर वास्तविक है। इसका कारण machine learning container है। Immich अपने models को एक अलग immich-machine-learning service में चलाता है। यह service CLIP (contrastive language image pretraining) और face detection models को memory में लोड करती है। 2 GB वाली मशीन पर kernel इस container को बंद कर देता है। Docker में यह out of memory kill के रूप में दिखाई देता है और container code 137 के साथ exit करता है। PhotoPrism के TensorFlow models छोटे हैं। इसलिए यह बंद होने के बजाय अपनी सुविधाएँ कम करता है। 1 GB या उससे कम वाली मशीनों पर यह crash होने के बजाय RAW conversion और TensorFlow को disable कर देता है।
दोनों projects swap की आवश्यकता बताते हैं। PhotoPrism के docs server पर कम से कम 4 GB swap की स्पष्ट अनुशंसा करते हैं। किसी भी app को install करने से पहले swap जोड़ें।
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 को अब 4.0Gi दिखाने वाली Swap: line print करनी चाहिए। यदि यह 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 सेट करना किसी एक अधिक memory लेने वाली service को पूरी मशीन बंद करने से रोकता है।
एक और आवश्यकता अक्सर छूट जाती है। Immich का Postgres database वास्तविक ownership और permissions वाले सामान्य Unix filesystem पर, local storage में होना चाहिए। इसे network share पर न रखें। PhotoPrism अपनी database files के लिए भी यही आवश्यकता बताता है। किसी भी app का database mounted object store पर चलाना सुरक्षित नहीं है।
प्रत्येक को कैसे इंस्टॉल करें
दोनों इंस्टॉलेशन में vendor की compose file और एक command शामिल हैं। पहले Docker Engine और Compose plugin सेट अप करें, जैसा कि VPS पर Docker Compose के लिए हमारी guide में बताया गया है।
Immich हर release के साथ अपनी compose file और एक example 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 को edit करें। UPLOAD_LOCATION वह स्थान है जहाँ आपकी original files रहेंगी, और DB_PASSWORD को केवल A-Za-z0-9 characters का उपयोग करके default मान से बदलना आवश्यक है, क्योंकि special characters connection string को खराब कर देते हैं। इसके बाद इसे शुरू करें।
docker compose up -d
docker compose psWeb interface port 2283 पर उपलब्ध होता है। इस page के माध्यम से registered पहला account administrator बन जाता है। इसलिए इसे तुरंत खोलकर register करें और instance को internet पर खुला न छोड़ें।
PhotoPrism एक compose file के साथ आता है, जिसमें MariaDB पहले से शामिल है।
sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yamlपहली बार शुरू करने से पहले compose.yaml खोलें और PHOTOPRISM_ADMIN_PASSWORD बदलें। Documentation में यह स्पष्ट है: app उस file में मौजूद initial password के साथ शुरू होता है, न्यूनतम लंबाई 8 characters है, और public server पर default value का उपयोग कभी नहीं करना चाहिए। इसी समय originals volume को उस folder पर सेट करें जिसमें आपकी photos हैं।
docker compose up -d
docker compose logs -f photoprismPhotoPrism port 2342 पर user admin के साथ उपलब्ध होता है। किसी भी app को सीधे expose नहीं करना चाहिए। सामने TLS (transport layer security) वाला reverse proxy रखें। Setup का तरीका Docker, TLS और backups के साथ self-hosted Nextcloud जैसा ही है।
किसका phone app बेहतर है
इन दोनों projects के बीच सबसे बड़ा अंतर यहीं है। इसी कारण अधिकांश लोग Immich चुनते हैं।
Immich, Android और iOS के लिए official apps जारी करता है। ये camera roll का background backup करते हैं। इसका अर्थ है कि कोई व्यक्ति कुछ खोले बिना नई photos phone से बाहर backup हो जाती हैं। App को HTTPS endpoint चाहिए। इसलिए यदि आप इसे घर से बाहर उपयोग करना चाहते हैं, तो reverse proxy आवश्यक है।
PhotoPrism का कोई official native app नहीं है। यह एक progressive web app उपलब्ध कराता है, जिसे आप browser से home screen पर जोड़ सकते हैं। Phone से sync करने के लिए इसका documentation WebDAV (web distributed authoring and versioning) को तरीका बताता है। Project इसके लिए PhotoSync नामक third party app की सिफारिश करता है। इसे WebDAV के माध्यम से /import/ या /originals/ directory पर point किया जाता है। यह काम करता है, लेकिन यह एक paid third party app है, जबकि Immich यही काम अपने client के भीतर करता है।
यदि कई family members के लिए phone का automatic backup आवश्यक है, तो निर्णय स्पष्ट है। Immich।
मशीन लर्निंग वास्तव में आपको क्या देती है
Immich, CLIP का उपयोग करके आपकी लाइब्रेरी में सिमेंटिक खोज करता है। इसलिए "red bicycle in snow" जैसी क्वेरी से ऐसी फ़ोटो भी मिल जाती हैं जिन्हें किसी ने कभी टैग नहीं किया। यह चेहरे का पता लगाने और क्लस्टर बनाने के साथ-साथ डुप्लिकेट का पता लगाने की सुविधा भी देता है। CPU पर बड़े इंपोर्ट को इंडेक्स करने में बैकग्राउंड में कई घंटे लग सकते हैं। यह सामान्य है और इसके लिए GPU (graphics processing unit) की आवश्यकता नहीं होती।
PhotoPrism, TensorFlow की मदद से इमेज को लेबल में वर्गीकृत करता है, चेहरों का पता लगाता है और उन्हें लोगों के समूहों में व्यवस्थित करता है। यह स्थान मेटाडेटा पढ़कर स्थानों का मानचित्र भी बनाता है। मानचित्र वह सुविधा है जिसके कारण लोग इसका उपयोग जारी रखते हैं। जिस लाइब्रेरी को स्थान के आधार पर इंडेक्स किया गया हो, उसमें बीस वर्षों की फ़ोटो ब्राउज़ करने का तरीका वास्तव में अलग होता है। Face recognition, निःशुल्क Community edition में शामिल है। सशुल्क Essentials और Plus memberships में अधिक विस्तृत map layers, अधिक user roles और user management interface जैसी अतिरिक्त सुविधाएँ मिलती हैं। July 2026 के अनुसार इनकी शुरुआत प्रति माह कुछ euros से होती है।
Immich पूरी तरह निःशुल्क है और इसमें कोई paid tier नहीं है। PhotoPrism का core निःशुल्क है और इसमें वैकल्पिक paid extras उपलब्ध हैं।
बैकअप तय करते हैं कि आपका डेटा सुरक्षित रहेगा या नहीं
बिना बैकअप वाला फोटो सर्वर, परिवार के सभी डेटा को खोने के लिए केवल एक डिस्क विफलता दूर है। दोनों ऐप्स के लिए 2 बैकअप चाहिए: डेटाबेस और फ़ाइलें।
Immich के लिए Postgres कंटेनर से डेटाबेस dump करें और upload location की कॉपी बनाएँ।
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 समय लगेगा। केवल डेटाबेस dump से कुछ भी restore नहीं होता, क्योंकि उसमें केवल metadata होता है।
PhotoPrism के लिए index का अपना command है।
docker compose exec photoprism photoprism backup -i -fयह storage/backup/ के अंतर्गत एक SQL dump लिखता है। इसके बाद originals फ़ोल्डर और storage फ़ोल्डर की कॉपी बनाएँ। PhotoPrism प्रत्येक फोटो का विवरण देने वाली sidecar YAML फ़ाइलें भी लिखता है। इसलिए खोए हुए index को केवल फ़ाइलों से दोबारा बनाया जा सकता है। दशकों तक सुरक्षित रखने वाले archive के लिए यह एक महत्वपूर्ण लाभ है।
आप जो भी चुनें, एन्क्रिप्टेड, डिडुप्लिकेटेड restic बैकअप को remote storage पर एक schedule के अनुसार सर्वर से बाहर भेजें। लाइब्रेरी वाली उसी डिस्क पर रखा बैकअप, बैकअप नहीं होता।
आपको कौन-सा चलाना चाहिए
यदि आपकी तस्वीरें phones पर हैं, एक से अधिक लोगों को camera roll का backup चाहिए, और आप server को 6 GB या उससे अधिक RAM दे सकते हैं, तो Immich चलाएँ। यह ऐसा self-hosted विकल्प है जो Google Photos के सबसे करीब है। इसका मुख्य लाभ mobile experience है। हमारी Immich install guide की step by step मार्गदर्शिका memory kills और upgrade traps को विस्तार से समझाती है।
यदि आपके पास disk पर पहले से photo archive है, आप maps और metadata को महत्व देते हैं और अपनी folder structure बनाए रखना चाहते हैं, या आपके VPS में 4 GB RAM है और आप swapping library के बजाय काम करने वाली library चाहते हैं, तो PhotoPrism चलाएँ। यह बेहतर curation tool है और छोटे hardware पर कम भार डालता है।
दोनों चलाना भी उचित है। Immich रोज़ाना phones से photos लेने का काम संभालता है। फिर आप वर्ष में एक बार आवश्यक photos को अपने archive में व्यवस्थित कर सकते हैं और PhotoPrism को उनका index बनाने दे सकते हैं। दोनों में टकराव नहीं होता, क्योंकि PhotoPrism folders पढ़ता है जबकि Immich अपने folders का स्वामित्व रखता है।
FAQ
क्या PhotoPrism और Immich एक ही फोटो फ़ोल्डर साझा कर सकते हैं?
दोनों दिशाओं में इसे सुरक्षित रूप से नहीं किया जा सकता। PhotoPrism originals फ़ोल्डर को पढ़ता है और आपकी इमेज के पास sidecar YAML फ़ाइलें लिखता है, जबकि Immich अपने upload location की सामग्री का स्वामित्व अपेक्षित करता है। आप PhotoPrism को Immich के library फ़ोल्डर की read-only कॉपी पर इसे ब्राउज़ करने के लिए निर्देशित कर सकते हैं, लेकिन दोनों ऐप्स को समान फ़ाइलों का प्रबंधन न करने दें, क्योंकि Immich का storage template, उसके indexing के दौरान PhotoPrism के अंतर्गत assets को स्थानांतरित या उनका नाम बदल सकता है।
क्या Immich मेरी फ़ोटो की एकमात्र कॉपी रखने के लिए पर्याप्त स्थिर है?
किसी भी self-hosted ऐप को किसी भी चीज़ की एकमात्र कॉपी नहीं रखनी चाहिए। Immich अक्सर breaking changes जारी करता है, और असावधानी से किया गया docker compose pull database को start होने में असमर्थ बना सकता है। इसलिए अपना version pin करें और upgrade करने से पहले release notes पढ़ें। मूल फ़ाइलों का server से अलग स्थान पर backup रखें, तो जोखिम कम रहेगा।
Immich machine learning container बार-बार restart क्यों होता रहता है?
बहुत अधिक memory उपयोग करने के कारण उसे बंद किया जा रहा है। docker compose ps चलाएँ और देखें कि machine learning service code 137 के साथ exit कर रही है या नहीं। यह kernel का out of memory killer है। Swap जोड़ें, या container को memory limit दें ताकि उसे बंद करने के बजाय throttle किया जाए, या 4 GB मशीन पर machine learning को पूरी तरह disable करें। इसके बिना search काम करना बंद कर देता है, जबकि Immich का बाकी भाग ठीक चलता रहता है।
क्या PhotoPrism को MariaDB चाहिए, या SQLite पर्याप्त होगा?
SQLite काम करता है और personal library के लिए पर्याप्त है, लेकिन इसका उपयोग करने पर PhotoPrism स्वयं को चार workers तक सीमित कर लेता है। Documentation बेहतर high concurrency handling के कारण MariaDB पर switch करने की सलाह देता है। Project द्वारा जारी compose file में MariaDB पहले से शामिल है, इसलिए recommended path ही default path भी है।
Library के आकार से अधिक disk space कितना रखना चाहिए?
किसी भी ऐप के लिए अपने originals के आकार के ऊपर 10 से 20 प्रतिशत अतिरिक्त स्थान रखें। इससे generated thumbnails और transcoded video previews के लिए जगह मिलती है। 200 GB collection के लिए लगभग 300 GB volume रखें, ताकि database, local backup copy और भविष्य की वृद्धि के लिए भी स्थान बचा रहे।