PhotoPrism mi Immich mi? En İyi Fotoğraf Sunucusu Seçimi
Kendi kendine barındırılan fotoğraf sunucuları PhotoPrism ve Immich karşılaştırması. RAM kullanımı, mobil uygulama yedekleme ve Docker kurulum farklarını inceleyin.
PhotoPrism ve Immich: kısa cevap
PhotoPrism ile Immich arasındaki seçim, aynı ürünün iki farklı sürümü arasında değil, iki farklı işlev arasındadır. Immich, Google Photos'un yerini alır: bir telefon uygulaması kamera rulosunu otomatik olarak yedekler ve elde ettiğiniz zaman çizelgesi, telefon galerisini geride bırakan herkes için tanıdık görünür. PhotoPrism ise halihazırda sahip olduğunuz bir fotoğraf kütüphanesini düzenler: diskteki dosya klasörlerini indeksler, meta verilerini okur, bunları bir harita üzerine yerleştirir ve dosyaları tam olarak bulundukları yerde bırakır.
Sorununuz "telefonum dolu ve Google Photos'tan kurtulmak istiyorum" ise Immich'i seçin. Sorununuz "bir sürücüde 400 GB fotoğrafım var ve içlerinde hiçbir şeyi bulamıyorum" ise PhotoPrism'i seçin. Her ikisi de açık kaynaklıdır, her ikisi de normal bir VPS üzerinde Docker container olarak çalışır ve her ikisi de üçüncü bir tarafa hiçbir şey göndermeden kütüphanenizi indeksler ve aramanıza olanak tanır.
Felsefi ayrım ve her şeyi belirleyen neden
Immich dosyaların sahibidir. Bir yükleme konumu belirlersiniz; mobil uygulama veya web yükleyicisi orijinalleri gönderir ve Immich bunları kendi yolu altında, kendi isimlendirme düzeniyle saklar. Veritabanı; albümler, yüzler ve arama ile ilgili gerçekleri tutar. Sunucu her varlığın tam durumunu her zaman bildiği için mobil deneyimi başarılı kılan tasarım budur.
PhotoPrism dosyaları okur. Hâlihazırda kontrolünüzde olan bir originals klasörünü mount edersiniz ve PhotoPrism bunun üzerinde bir dizin oluşturur. Dizin ağacınız size ait kalır. Yarın PhotoPrism'i kaldırırsanız, fotoğraflar aynı klasörlerde ve aynı isimlerle orada durmaya devam eder; PhotoPrism ise yanlarında, öğrendiklerini açıklayan sidecar YAML dosyaları bırakmış olur.
Bu tek fark, geri kalan her şeyi açıklar. Immich, veri girişini kontrol ettiği için güçlü bir mobil desteğe sahiptir. PhotoPrism, mevcut yapınızla asla çelişmediği için güçlü bir kütüphane düzenleme yeteneğine sahiptir. Immich, fotoğrafları telefonlarda yaşayan bir aile için daha iyi bir çözümdür. PhotoPrism ise disk üzerinde yaşayan bir arşiv için daha iyi bir çözümdür.
Donanım iştahı: Immich daha fazlasını talep ediyor
Belgelenen bellek taban değerleri birbirinden oldukça uzaktır ve küçük bir VPS üzerinde bu durum genellikle belirleyici faktördür.
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'i minimum, 8 GB RAM'i ise önerilen değer olarak belgelemektedir; ayrıca 4 GB'lık bir makinenin bu uygulamayı yalnızca makine öğrenimi kapalıyken çalıştırabileceğini belirtmektedir. PhotoPrism ise 3 GB fiziksel bellek ve iki CPU çekirdeği gereksinimi belirtmekte, RAM miktarının çekirdek sayısıyla eşleşmesi gerektiğini ifade etmektedir.
Bu fark gerçektir ve makine öğrenimi konteynerinden kaynaklanır. Immich, modellerini CLIP (contrastive language image pretraining) ve yüz tanıma modellerini belleğe yükleyen ayrı bir immich-machine-learning servisinde çalıştırır. 2 GB'lık bir sunucuda çekirdek bu konteyneri sonlandırır ve konteyner, Docker'dan gelen bellek yetersizliği kaynaklı sonlandırma sinyali olan 137 hata koduyla çıkar. PhotoPrism'in TensorFlow modelleri daha küçüktür ve uygulama çökmek yerine performans düşürür: 1 GB veya daha az belleğe sahip makinelerde RAW dönüştürme ve TensorFlow özelliklerini devre dışı bırakarak çalışmaya devam eder.
Her iki proje de swap alanı talep eder. PhotoPrism belgeleri, sunucuda en az 4 GB swap alanı olması gerektiğini açıkça belirtir. Her ikisinden birini kurmadan önce swap alanını ekleyin.
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 artık 4.0Gi değerini gösteren bir Swap: satırı yazdırmalıdır. Eğer 0B çıktısını veriyorsa, swapon başarısız olmuş demektir; bu durum genellikle dosya sisteminin fallocate özelliğini desteklememesinden kaynaklanır ve sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 yedek yöntem olarak kullanılır. Konteyner bellek sınırları burada da önem taşır ve Docker Compose içinde bellek sınırlarını ayarlamak, kaynak tüketen bir servisin tüm sunucuyu çökertmesini engellemenin yoludur.
Kullanıcıları zorlayan bir diğer gereksinim daha vardır. Immich'in Postgres veritabanı, yerel depolama üzerinde, gerçek sahiplik ve izinlere sahip standart bir Unix dosya sisteminde bulunmalıdır; asla bir ağ paylaşımı üzerinde olmamalıdır. PhotoPrism de veritabanı dosyaları için aynı şeyi belirtir. Her iki uygulamanın da veritabanlarını mount edilmiş bir nesne depolama (object store) üzerinde çalıştırmak güvenli değildir.
Her birinin kurulumu nasıl yapılır
Her iki kurulum da bir üretici compose dosyası ve tek bir komuttan oluşur. VPS üzerinde Docker Compose rehberimizde anlatıldığı şekilde önce Docker Engine ve Compose eklentisini kurun.
Immich, her sürümle birlikte kendi compose dosyasını ve örnek bir environment dosyasını yayınlar.
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.envHerhangi bir işleme başlamadan önce .env dosyasını düzenleyin. UPLOAD_LOCATION, orijinal dosyalarınızın bulunacağı yerdir ve DB_PASSWORD, varsayılan değerinden yalnızca A-Za-z0-9 karakterleri kullanılarak değiştirilmelidir; çünkü özel karakterler bağlantı dizgisini bozar. Ardından servisi başlatın.
docker compose up -d
docker compose psWeb arayüzü 2283 numaralı port üzerinden yanıt verir. Bu sayfa üzerinden kaydedilen ilk hesap yönetici yetkisine sahip olur; bu nedenle internete açık bir örneği boşta bırakmak yerine, hemen erişim sağlayıp kaydınızı oluşturun.
PhotoPrism, içerisinde MariaDB'yi de barındıran tek bir compose dosyası ile gelir.
sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yamlcompose.yaml dosyasını açın ve ilk başlatmadan önce PHOTOPRISM_ADMIN_PASSWORD değerini değiştirin. Dokümantasyon bu konuda nettir: uygulama, dosya içerisinde yer alan ilk parola ile başlar, minimum uzunluk 8 karakterdir ve varsayılan değer halka açık bir sunucuda asla kullanılmamalıdır. Aynı zamanda originals volume değerini fotoğraflarınızın bulunduğu klasöre göre ayarlayın.
docker compose up -d
docker compose logs -f photoprismPhotoPrism, 2342 numaralı port üzerinden admin kullanıcısı ile yanıt verir. Her iki uygulama da doğrudan dış dünyaya açılmamalıdır. Docker, TLS ve yedeklemeler ile self-hosted Nextcloud kurulumunda kullanılan yapının bir benzerini kullanarak, uygulamanın önüne TLS (transport layer security) destekli bir reverse proxy yerleştirin.
Hangi projenin mobil uygulaması daha iyi
İki projenin birbirinden en çok ayrıştığı nokta burasıdır ve çoğu kullanıcının Immich'i tercih etmesinin temel nedeni de budur.
Immich, Android ve iOS için resmi uygulamalar sunar. Bu uygulamalar arka planda kamera rulosu yedeklemesi yapar; yani yeni fotoğraflar, kullanıcı herhangi bir işlem yapmasına gerek kalmadan telefondan otomatik olarak aktarılır. Uygulama bir HTTPS uç noktası gerektirir, bu nedenle ev dışından erişim planlanıyorsa reverse proxy kullanımı zorunludur.
PhotoPrism'in resmi bir yerel (native) uygulaması yoktur. Proje, tarayıcı üzerinden ana ekrana eklenebilen bir progressive web app sunar ve telefondan eşitleme yöntemi olarak WebDAV (web distributed authoring and versioning) protokolünü kullanır. Proje, bu işlem için PhotoSync adlı üçüncü taraf bir uygulamanın kullanılmasını ve bu uygulamanın WebDAV üzerinden /import/ veya /originals/ dizinine yönlendirilmesini önerir. Bu yöntem çalışır, ancak Immich'in kendi istemcisi içinde sunduğu bir işlevi yerine getirmek için ücretli bir üçüncü taraf uygulamaya ihtiyaç duyulur.
Eğer birden fazla aile üyesi için otomatik telefon yedeklemesi bir gereksinimse, karar bellidir: Immich.
Makine öğrenimi size gerçekte ne sağlar
Immich, kütüphaneniz üzerinde CLIP kullanarak anlamsal arama yapar; bu sayede "karda kırmızı bisiklet" gibi bir sorgu, kimsenin etiketlemediği fotoğrafları bile bulur. Ayrıca yüz algılama, gruplandırma ve kopya tespiti özelliklerine sahiptir. Büyük bir içe aktarma işleminin CPU üzerinde dizinlenmesi arka planda saatler sürer; bu normaldir ve GPU (grafik işlem birimi) gerektirmez.
PhotoPrism, görüntüleri TensorFlow ile etiketlere göre sınıflandırır, yüzleri algılayıp kişilere göre gruplandırır ve konum meta verilerini okuyarak bir yerler haritası oluşturur. Harita, kullanıcıların kalmasını sağlayan özelliktir: yirmi yıllık fotoğrafları nerede çekildiklerine göre dizinlenmiş bir kütüphane üzerinden taramak, fotoğraflara göz atmanın tamamen farklı bir yoludur. Yüz tanıma özelliği ücretsiz Community sürümüne dahildir. Ücretli Essentials ve Plus üyelikleri; daha zengin harita katmanları, daha fazla kullanıcı rolü ve kullanıcı yönetim arayüzü gibi ekstralar sunar; Temmuz 2026 itibarıyla fiyatlar aylık birkaç avrodan başlamaktadır.
Immich tamamen ücretsizdir ve ücretli bir katmanı yoktur. PhotoPrism'in çekirdeği ücretsizdir, isteğe bağlı ücretli ekstraları mevcuttur.
Yedeklemeler verinizin kalıcılığını belirler
Yedeklemesi olmayan bir fotoğraf sunucusu, tek bir disk arızasıyla bir ailenin tüm anılarını kaybetmesine neden olabilir. Her iki uygulama da veritabanı ve dosyalar olmak üzere iki ayrı yedekleme gerektirir.
Immich için, Postgres container içinden veritabanı dökümünü alın ve yükleme dizinini kopyalayın.
docker exec -t immich_postgres pg_dump --clean --if-exists --dbname=immich --username=postgres | gzip > /backup/immich-db.sql.gzArdından UPLOAD_LOCATION dizinini yedekleyin. Yerine konulamaz verileri barındıran klasörler upload, library ve profile dizinleridir. thumbs ve encoded-video klasörleri, saatler süren CPU kullanımı karşılığında yeniden oluşturulabilir. Veritabanı dökümü tek başına bir şeyi geri yüklemez, çünkü yalnızca meta verileri içerir.
PhotoPrism için indeksleme işleminin kendine ait bir komutu vardır.
docker compose exec photoprism photoprism backup -i -fBu komut, storage/backup/ altında bir SQL dökümü oluşturur. Ardından originals klasörünü ve storage klasörünü kopyalayın. PhotoPrism her fotoğrafı tanımlayan sidecar YAML dosyaları da oluşturduğundan, kaybolan bir indeks yalnızca dosyalardan yeniden oluşturulabilir; bu, on yıllarca saklamayı planladığınız bir arşiv için büyük bir avantajdır.
Hangi uygulamayı seçerseniz seçin, bu yedekleri uzak depolama alanına şifrelenmiş ve tekilleştirilmiş restic yedekleri ile düzenli bir program dahilinde sunucu dışına aktarın. Kütüphane ile aynı diskte tutulan bir yedek, gerçek bir yedekleme değildir.
Hangisini çalıştırmalısınız
Fotoğraflarınız telefonlardaysa, birden fazla kişi kamera rulosunu yedekleyecekse ve sunucuya 6 GB veya daha fazla RAM ayırabiliyorsanız Immich çalıştırın. Kendi sunucunuzda barındırabileceğiniz Google Photos'a en yakın alternatiftir ve mobil deneyim temel odak noktasıdır. Adım adım Immich kurulum kılavuzumuz, bellek kaynaklı kapanmaları ve yükseltme tuzaklarını ayrıntılı olarak ele almaktadır.
Eğer diskte halihazırda bir fotoğraf arşiviniz varsa, haritalara, meta verilere ve kendi klasör yapınızı korumaya önem veriyorsanız veya VPS'niz 4 GB RAM'e sahipse ve sürekli takas (swap) yapan bir sistem yerine çalışan bir kütüphane tercih ediyorsanız PhotoPrism çalıştırın. Daha iyi bir düzenleme aracıdır ve düşük donanımlarda daha kararlı çalışır.
Her ikisini birden çalıştırmak da mantıklıdır. Immich günlük telefon yedeklemelerini yönetir; siz de yılda bir kez seçtiklerinizi arşivinize ayırır ve PhotoPrism'in bunları indekslemesini sağlarsınız. PhotoPrism klasörleri okurken Immich kendi veritabanını yönettiği için birbiriyle çakışmazlar.
FAQ
PhotoPrism ve Immich aynı fotoğraf klasörünü paylaşabilir mi?
Her iki yönde de güvenli değildir. PhotoPrism bir originals klasörünü okur ve görsellerinizin yanına sidecar YAML dosyaları yazar; Immich ise yükleme konumunun içeriğinin sahibi olmayı bekler. PhotoPrism'i, Immich'in library klasörünün salt okunur bir kopyasına yönlendirerek görselleri görüntüleyebilirsiniz, ancak her iki uygulamanın da aynı dosyaları yönetmesine izin vermeyin. Çünkü Immich'in depolama şablonu, PhotoPrism indeksleme yaparken varlıkları taşıyabilir veya yeniden adlandırabilir.
Immich, fotoğraflarımın tek kopyasını tutacak kadar kararlı mı?
Hiçbir self-hosted uygulama, herhangi bir verinin tek kopyasını tutmamalıdır. Immich sık sık köklü değişiklikler (breaking changes) içeren sürümler yayınlar ve dikkatsiz bir docker compose pull işlemi veritabanının başlatılamaz hale gelmesine neden olabilir; bu nedenle sürümünüzü sabitleyin ve yükseltme yapmadan önce sürüm notlarını okuyun. Orijinal dosyaların sunucu dışında yedeklerini tuttuğunuz sürece risk düşük kalır.
Immich makine öğrenimi container'ı neden sürekli yeniden başlıyor?
Çok fazla bellek kullandığı için sistem tarafından sonlandırılıyor. docker compose ps komutunu çalıştırın ve makine öğrenimi servisinin 137 koduyla kapandığını kontrol edin; bu, çekirdeğin bellek yetersizliği nedeniyle süreci öldürdüğü (OOM killer) anlamına gelir. Swap alanı ekleyin, container'a bir bellek sınırı koyarak öldürülmek yerine kısıtlanmasını sağlayın veya 4 GB belleğe sahip bir makinede makine öğrenimini tamamen devre dışı bırakın. Bu özellik olmadan arama işlevi çalışmaz, ancak Immich'in geri kalanı sorunsuz çalışmaya devam eder.
PhotoPrism için MariaDB mi gerekli, yoksa SQLite yeterli mi?
SQLite çalışır ve kişisel bir kütüphane için yeterlidir; ancak PhotoPrism SQLite kullanıldığında kendini dört iş parçacığı (worker) ile sınırlar. Belgeler, yüksek eşzamanlılığı daha iyi yönettiği için MariaDB'ye geçilmesini önerir. Projenin sunduğu compose dosyası zaten MariaDB içerir, bu nedenle önerilen yol aynı zamanda varsayılan yoldur.
Kütüphane boyutumun üzerinde ne kadar disk alanı ayırmalıyım?
Her iki uygulama için de orijinal dosyalarınızın boyutuna ek olarak yüzde 10 ila 20 oranında alan ekleyin. Bu pay, oluşturulan küçük resimler (thumbnails) ve dönüştürülmüş video önizlemeleri içindir. 200 GB'lık bir koleksiyon; veritabanı, yerel yedekleme kopyası ve büyüme payı bırakıldığında yaklaşık 300 GB'lık bir disk alanı gerektirir.