SSD Nodes Learn 🎉 VPS $5.50/মাস থেকে
নির্দেশিকা Matt Connorদ্বারা Matt Connor · আপডেট করা হয়েছে 2026-08-07

PhotoPrism বনাম Immich: কোন photo server আপনার জন্য?

PhotoPrism ও Immich-এর তুলনায় জানুন বাস্তব RAM floor, phone app, map সুবিধা এবং VPS-এ backup-এর সঠিক commands। ফোন backup নাকি পুরোনো library index, সিদ্ধান্ত নিন।

PhotoPrism বনাম Immich: সংক্ষিপ্ত উত্তর

PhotoPrism বনাম Immich বেছে নেওয়া একই পণ্যের দুটি সংস্করণের মধ্যে সিদ্ধান্ত নয়; এটি দুটি ভিন্ন কাজের মধ্যে সিদ্ধান্ত। Immich Google Photos-এর বিকল্প: একটি ফোন অ্যাপ স্বয়ংক্রিয়ভাবে আপনার camera roll-এর backup রাখে, এবং এর timeline ফোনের gallery ছেড়ে আসা ব্যবহারকারীদের কাছে পরিচিত মনে হয়। PhotoPrism আপনার আগে থেকেই থাকা photo library সংগঠিত করে: এটি disk-এ থাকা file-এর folder index করে, metadata পড়ে, সেগুলো map-এ দেখায় এবং file-গুলো যেখানে ছিল ঠিক সেখানেই রাখে।

সমস্যা যদি হয়, "আমার ফোনে জায়গা শেষ হয়ে যাচ্ছে এবং আমি Google Photos ব্যবহার বন্ধ করতে চাই", তাহলে Immich বেছে নিন। সমস্যা যদি হয়, "একটি drive-এ আমার 400 GB photo আছে, কিন্তু সেগুলোর মধ্যে কিছুই খুঁজে পাই না", তাহলে PhotoPrism বেছে নিন। দুটিই open source, দুটিই সাধারণ VPS-এ Docker container হিসেবে চালানো যায়, এবং দুটিই কোনো third party-এর কাছে কিছু না পাঠিয়ে আপনার library index ও search করে।

দর্শনের পার্থক্য, এবং কেন এটিই সবকিছু নির্ধারণ করে

Immich ফাইলগুলোর মালিকানা রাখে। আপনি তাকে একটি upload location দেখান, phone app বা web uploader মূল ফাইলগুলো সেখানে পাঠায়, এবং Immich নিজের path ও naming ব্যবহার করে সেগুলো সংরক্ষণ করে। Database-এ album, face এবং search সম্পর্কিত প্রকৃত তথ্য থাকে। এই নকশার কারণেই phone experience ভালো হয়, কারণ server প্রতিটি asset-এর সম্পূর্ণ বর্তমান অবস্থা সবসময় জানে।

PhotoPrism ফাইলগুলো পড়ে। আপনি ইতিমধ্যে নিয়ন্ত্রণ করেন এমন একটি originals folder mount করেন, এবং PhotoPrism সেটির ওপর একটি index তৈরি করে। আপনার directory tree আপনারই থাকে। আগামীকাল PhotoPrism সরিয়ে ফেললেও photos একই folder-এ একই name-এ থাকবে, আর PhotoPrism সেগুলোর পাশে sidecar YAML file লিখে তার শেখা তথ্য সংরক্ষণ করবে।

এই একটি পার্থক্যই পরের অধিকাংশ বিষয় ব্যাখ্যা করে। Immich ingestion নিয়ন্ত্রণ করে বলে mobile support শক্তিশালী। PhotoPrism আপনার বিদ্যমান structure-এর সঙ্গে বিরোধে যায় না বলে library curation শক্তিশালী। যেসব পরিবারের photos phone-এ থাকে, তাদের জন্য Immich ভালো সমাধান। যে archive একটি disk-এ থাকে, তার জন্য PhotoPrism ভালো সমাধান।

Hardware appetite: Immich asks for more

নথিভুক্ত মেমরির ন্যূনতম চাহিদায় বড় পার্থক্য আছে। ছোট VPS-এ সাধারণত এটিই সিদ্ধান্ত নেওয়ার প্রধান বিষয়।

ChartDocumented memory requirement, as of July 2026
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 উল্লেখ করে। সেখানে বলা আছে, machine learning বন্ধ রাখলে কেবল 4 GB-এর মেশিনে এটি চালানো যায়। PhotoPrism 3 GB physical memory এবং 2টি CPU core-এর কথা বলে। তারা আরও জানায়, RAM-এর পরিমাণ core-এর সংখ্যার সঙ্গে সামঞ্জস্যপূর্ণ হওয়া উচিত।

এই পার্থক্য বাস্তব। এর কারণ machine learning container। Immich তার model-গুলো একটি পৃথক immich-machine-learning service-এ চালায়। এই service memory-তে CLIP (contrastive language image pretraining) এবং face detection model লোড করে। 2 GB-এর মেশিনে kernel ওই container বন্ধ করে দেয়। Docker-এ এটি code 137 দিয়ে exit হিসেবে দেখা যায়। এটি out of memory kill-এর লক্ষণ। PhotoPrism-এর TensorFlow model ছোট। তাই এটি বন্ধ হয়ে যাওয়ার বদলে কাজের ক্ষমতা কমায়। 1 GB বা তার কম memory-র মেশিনে crash না করে এটি RAW conversion এবং TensorFlow বন্ধ করে দেয়।

উভয় project-ই swap ব্যবহারের পরামর্শ দেয়। PhotoPrism-এর documentation-এ server-এ অন্তত 4 GB swap থাকার কথা স্পষ্টভাবে বলা আছে। যেকোনো একটি 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 -h

free -h এখন Swap: line দেখানো উচিত, যেখানে 4.0Gi থাকবে। যদি 0B দেখায়, তাহলে swapon ব্যর্থ হয়েছে। সাধারণত filesystem fallocate সমর্থন না করলে এমন হয়, এবং sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 fallback হিসেবে ব্যবহৃত হয়। এখানে container-এর memory ceiling-ও গুরুত্বপূর্ণ। Docker Compose-এ memory limit নির্ধারণ করে একটি অতিরিক্ত memory ব্যবহারকারী service-কে পুরো মেশিন অচল করা থেকে আটকানো যায়।

আরেকটি প্রয়োজনীয়তা অনেকেই খেয়াল করেন না। Immich-এর Postgres database-কে প্রকৃত ownership ও permission-সহ একটি স্বাভাবিক Unix filesystem-এ, local storage-এ রাখতে হবে। এটি কখনো network share-এ রাখা যাবে না। PhotoPrism-ও তার database file-এর ক্ষেত্রে একই কথা বলে। কোনো app-এর database mounted object store-এ রাখা নিরাপদ নয়।

প্রতিটি অ্যাপ কীভাবে ইনস্টল করবেন

উভয় ইনস্টলেশনের জন্য vendor-এর compose file এবং একটি command প্রয়োজন। প্রথমে Docker Engine এবং Compose plugin সেট আপ করুন, যেমন VPS-এ Docker Compose নিয়ে আমাদের গাইডে দেখানো হয়েছে।

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 সম্পাদনা করুন। UPLOAD_LOCATION-এ আপনার মূল ছবিগুলো সংরক্ষিত থাকবে। DB_PASSWORD-এর default মান পরিবর্তন করতে হবে এবং সেখানে শুধু A-Za-z0-9-এর অক্ষর ব্যবহার করতে হবে, কারণ special character থাকলে connection string কাজ করে না। এরপর এটি চালু করুন।

docker compose up -d
docker compose ps

Web interface port 2283-এ সাড়া দেয়। ওই পেজের মাধ্যমে নিবন্ধিত প্রথম account-টি administrator হয়। তাই instance-টি Internet-এ উন্মুক্ত অবস্থায় না রেখে অবিলম্বে সেখানে গিয়ে register করুন।

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-এ বিষয়টি স্পষ্টভাবে বলা আছে: file-এ থাকা initial password দিয়েই app শুরু হয়, password-এর ন্যূনতম দৈর্ঘ্য 8 characters, এবং public server-এ default value কখনো ব্যবহার করা যাবে না। একই সময়ে originals volume-টি আপনার photos থাকা folder-এ সেট করুন।

docker compose up -d
docker compose logs -f photoprism

PhotoPrism port 2342-এ admin user হিসেবে সাড়া দেয়। কোনো app-ই সরাসরি Internet-এ উন্মুক্ত করা উচিত নয়। সামনে TLS (transport layer security) সহ একটি reverse proxy রাখুন। Docker, TLS এবং backup ব্যবহার করে self-hosted Nextcloud সেটআপের মতো একই ধরনের configuration ব্যবহার করুন।

কোনটির ফোন অ্যাপ ভালো

এই দিকটিতেই দুটি প্রকল্পের পার্থক্য সবচেয়ে বেশি। অধিকাংশ মানুষ শেষ পর্যন্ত Immich বেছে নেওয়ার মূল কারণও এটি।

Immich Android এবং iOS-এর জন্য official app প্রকাশ করে। এই অ্যাপগুলো background camera roll backup করে। অর্থাৎ, কাউকে কোনো কিছু খুলতে হয় না; নতুন ছবিগুলো ফোন থেকে স্বয়ংক্রিয়ভাবে backup হয়ে যায়। অ্যাপটির জন্য একটি HTTPS endpoint প্রয়োজন। তাই বাড়ির বাইরে থেকে ব্যবহার করার পরিকল্পনা থাকলে reverse proxy অপরিহার্য।

PhotoPrism-এর কোনো official native app নেই। এটি একটি progressive web app প্রকাশ করে। আপনি browser থেকে সেটি home screen-এ যোগ করতে পারেন। ফোন থেকে sync করার পদ্ধতি হিসেবে PhotoPrism WebDAV (web distributed authoring and versioning) ব্যবহারের নির্দেশনা দেয়। এই কাজের জন্য প্রকল্পটি PhotoSync নামের একটি third party app ব্যবহারের সুপারিশ করে। PhotoSync-এ WebDAV-এর মাধ্যমে /import/ অথবা /originals/ directory নির্দিষ্ট করতে হয়। পদ্ধতিটি কাজ করে। তবে এটি একটি paid third party app, যা Immich নিজস্ব client-এর মধ্যেই করে।

একাধিক family member-এর জন্য automatic phone backup প্রয়োজন হলে সিদ্ধান্তটি পরিষ্কার। Immich।

মেশিন লার্নিং আসলে কী সুবিধা দেয়

Immich CLIP ব্যবহার করে আপনার লাইব্রেরিতে semantic search চালায়। তাই "red bicycle in snow"-এর মতো query এমন ছবিও খুঁজে পায়, যেগুলো কেউ কখনও tag করেনি। এটি face detection, face clustering এবং duplicate detection-ও করে। CPU-তে বড় import index করতে background-এ কয়েক ঘণ্টা লাগতে পারে। এটি স্বাভাবিক এবং এর জন্য GPU (graphics processing unit) প্রয়োজন হয় না।

PhotoPrism TensorFlow ব্যবহার করে ছবিকে বিভিন্ন label-এ classify করে, face শনাক্ত করে সেগুলোকে people হিসেবে group করে, এবং location metadata পড়ে একটি places map তৈরি করে। এই map-ই এমন একটি feature, যার জন্য ব্যবহারকারীরা PhotoPrism ব্যবহার চালিয়ে যান। কোথায় ছবি তোলা হয়েছে তার ভিত্তিতে library index করা থাকলে বিশ বছরের ছবি ব্রাউজ করার পদ্ধতি সত্যিই আলাদা হয়। Face recognition বিনামূল্যের Community edition-এ অন্তর্ভুক্ত। Paid Essentials এবং Plus membership-এ আরও কিছু সুবিধা যোগ হয়, যেমন উন্নত map layer, আরও বেশি user role এবং একটি user management interface। July 2026 অনুযায়ী, এর দাম প্রতি মাসে কয়েক euro থেকে শুরু হয়।

Immich সম্পূর্ণ বিনামূল্যে এবং এতে কোনো paid tier নেই। PhotoPrism-এর মূল বৈশিষ্ট্যগুলো বিনামূল্যে, তবে অতিরিক্ত কিছু সুবিধা paid।

ব্যাকআপই নির্ধারণ করে আপনি ডেটা ধরে রাখতে পারবেন কি না

ব্যাকআপ ছাড়া একটি photo server-এ একটি disk failure হলেই পরিবারের বছরের পর বছর জমা করা সব ছবি হারিয়ে যেতে পারে। উভয় অ্যাপের জন্য দুটি ধরনের ব্যাকআপ প্রয়োজন: database এবং files।

Immich-এর ক্ষেত্রে Postgres container থেকে database 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-এর ব্যাকআপ নিন। অপরিবর্তনীয় ডেটা থাকা folder-গুলো হল upload, library এবং profilethumbs এবং encoded-video folder পুনরায় তৈরি করা যায়, তবে এতে কয়েক ঘণ্টা CPU time লাগতে পারে। শুধু database dump থেকে কোনো কিছু restore করা যায় না, কারণ এতে কেবল metadata থাকে।

PhotoPrism-এর index-এর জন্য নিজস্ব command রয়েছে।

docker compose exec photoprism photoprism backup -i -f

এটি storage/backup/-এর অধীনে একটি SQL dump লেখে। এরপর originals folder এবং storage folder কপি করুন। PhotoPrism প্রতিটি photo-এর বিবরণসহ sidecar YAML file-ও লেখে। তাই index হারিয়ে গেলেও শুধু file ব্যবহার করে এটি পুনর্নির্মাণ করা যায়। কয়েক দশক ধরে সংরক্ষণ করার পরিকল্পনা থাকা archive-এর জন্য এটি একটি গুরুত্বপূর্ণ সুবিধা।

আপনি যেটিই বেছে নিন, remote storage-এ encrypted, deduplicated restic backups ব্যবহার করে নির্ধারিত সময়সূচি অনুযায়ী ওই backup-গুলো server-এর বাইরে পাঠান। library থাকা একই disk-এ সংরক্ষিত backup প্রকৃত backup নয়।

কোনটি চালাবেন

আপনার ছবি যদি ফোনে থাকে, একাধিক ব্যক্তির camera roll backup করার প্রয়োজন হলে এবং আপনি সার্ভারকে 6 GB বা তার বেশি RAM দিতে পারলে Immich চালান। এটি নিজে host করা যায় এমন Google Photos-এর সবচেয়ে কাছের বিকল্প, এবং এর মূল সুবিধা হলো mobile experience। আমাদের ধাপে ধাপে Immich install guide-এ memory kill এবং upgrade-এর ঝুঁকিগুলো বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।

আপনার disk-এ আগে থেকেই photo archive থাকলে, maps ও metadata এবং নিজের folder structure বজায় রাখা গুরুত্বপূর্ণ হলে, অথবা আপনার VPS-এ 4 GB RAM থাকলে এবং swapping করা library-এর বদলে কার্যকর library চাইলে PhotoPrism চালান। এটি photo curation-এর জন্য ভালো এবং ছোট hardware-এর ওপর কম চাপ ফেলে।

দুটিই চালানো যুক্তিসঙ্গত হতে পারে। Immich প্রতিদিনের phone ingestion সামলাবে। বছরে একবার আপনি রাখতে চান এমন ছবিগুলো archive-এ সাজিয়ে PhotoPrism-কে সেগুলো index করতে দিতে পারেন। দুটির মধ্যে conflict হয় না, কারণ PhotoPrism folder পড়ে, আর Immich নিজের data নিজে পরিচালনা করে।

FAQ

PhotoPrism এবং Immich কি একই photo folder শেয়ার করতে পারে?

উভয় দিক থেকে নিরাপদে নয়। PhotoPrism একটি originals folder পড়ে এবং আপনার image-এর পাশে sidecar YAML file লেখে, অন্যদিকে Immich ধরে নেয় যে তার upload location-এর contents সে নিজেই পরিচালনা করবে। আপনি Immich-এর library folder-এর read-only copy PhotoPrism-এ browse করার জন্য নির্দিষ্ট করতে পারেন। তবে উভয় app-কে একই file পরিচালনা করতে দেবেন না, কারণ Immich indexing করার সময় তার storage template PhotoPrism-এর ব্যবহৃত asset সরিয়ে বা rename করতে পারে।

Immich কি আমার photo-এর একমাত্র copy রাখার মতো যথেষ্ট stable?

কোনো self-hosted app-এর কাছেই কখনও কোনো কিছুর একমাত্র copy রাখা উচিত নয়। Immich প্রায়ই breaking change release করে, এবং অসতর্ক docker compose pull database start হতে না পারার কারণ হতে পারে। তাই version pin করুন এবং upgrade-এর আগে release notes পড়ুন। মূল file server-এর বাইরে backup করে রাখুন। তাহলে ঝুঁকি কম থাকবে।

Immich machine learning container বারবার restart হচ্ছে কেন?

অতিরিক্ত memory ব্যবহার করার কারণে container-টি kill করা হচ্ছে। docker compose ps চালিয়ে machine learning service code 137 দিয়ে exit করছে কি না দেখুন। এটি kernel-এর out of memory killer সক্রিয় হওয়ার নির্দেশ। swap যোগ করুন, অথবা container-এর memory limit নির্ধারণ করুন, যাতে সেটি kill না হয়ে throttle হয়। 4 GB machine-এ machine learning সম্পূর্ণভাবে disable করাও যায়। এটি ছাড়া search কাজ করবে না, তবে Immich-এর বাকি অংশ স্বাভাবিকভাবে চলবে।

PhotoPrism-এর কি MariaDB দরকার, নাকি SQLite ব্যবহার করলেই হবে?

SQLite কাজ করে এবং ব্যক্তিগত library-এর জন্য যথেষ্ট। তবে এটি ব্যবহার করলে PhotoPrism সর্বোচ্চ চারটি worker-এ নিজেকে সীমাবদ্ধ রাখে। উচ্চ concurrency ভালোভাবে সামলানোর জন্য docs MariaDB-তে switch করার পরামর্শ দেয়। Project-এর প্রকাশিত compose file-এ MariaDB আগে থেকেই অন্তর্ভুক্ত আছে। তাই প্রস্তাবিত পদ্ধতিটিই default পদ্ধতি।

Library-এর আকারের অতিরিক্ত কত disk space রাখা উচিত?

উভয় app-এর ক্ষেত্রেই original file-এর মোট আকারের ওপর 10 থেকে 20 percent অতিরিক্ত রাখুন। এতে generated thumbnail এবং transcoded video preview-এর জন্য জায়গা থাকে। 200 GB collection-এর জন্য প্রায় 300 GB volume রাখুন। এতে database, local backup copy এবং ভবিষ্যৎ বৃদ্ধির জন্যও জায়গা থাকবে।