SSD Nodes Learn Hosting plans →
Rehberler Matt ConnorYazan Matt Connor · Güncellendi 2026-10-30

PhotoPrism mi Immich mi? Kendi Fotoğraf Sunucunuzu Seçin

Kendi kendine barındırılan fotoğraf sunucuları PhotoPrism ve Immich karşılaştırması. RAM kullanımı, mobil uygulama yedekleme süreçleri ve Docker kurulum farkları.

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 dosyalara sahip çıkar. Bir yükleme konumu belirlersiniz; telefon uygulaması 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 hakkındaki gerçekleri tutar. Bu tasarım, telefon deneyimini başarılı kılar çünkü sunucu her zaman her varlığın tam durumunu bilir.

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'in öğrendiklerini tanımlamak için yazdığı sidecar YAML dosyaları ise varsayılan olarak kendi depolama klasöründe kalır.

Bu tek fark, geri kalan her şeyi açıklar. Immich, veri girişini kontrol ettiği için güçlü bir mobil desteğine 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 diskte yaşayan bir arşiv için daha iyi bir çözümdür.

Donanım gereksinimleri: Immich daha fazlasını talep ediyor

Belgelenen bellek alt sınırları birbirinden oldukça farklıdır ve küçük bir VPS üzerinde bu genellikle belirleyici faktördür.

GrafikDocumented minimum memory, as of October 2026
Bu grafiğin arkasındaki veriler
[
  {
    "label": "Immich",
    "min_ram_gb": 6
  },
  {
    "label": "PhotoPrism",
    "min_ram_gb": 3
  }
]

Immich, minimum 6 GB RAM ve önerilen 8 GB RAM değerlerini belirtmekte; 4 GB bir makinede uygulamanın yalnızca makine öğrenimi devre dışı bırakıldığında çalışabileceğini not etmektedir. PhotoPrism ise 3 GB fiziksel bellek ve iki CPU çekirdeği gereksinimi sunmakta, bu minimum değerin ötesinde RAM miktarının çekirdek sayısıyla orantılı olması gerektiğini ifade etmektedir.

Bu fark gerçektir ve makine öğrenimi container'ından 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 bir makinede çekirdek (kernel) bu container'ı sonlandırır ve süreç, Docker'da bellek yetersizliği (OOM) durumunda görülen sinyal 9 ile sonlandırıldığını belirten 137 çıkış koduyla kapanır. PhotoPrism'in yerleşik modelleri ONNX üzerinde çalışır; belgelerine göre bu modeller her türlü donanımda genellikle iyi performans gösterir ve kısıtlı bellek için bir yedekleme mekanizmasına sahiptir: 1 GB veya daha az belleğe sahip makinelerde RAW dönüştürme ve yüz tanıma özelliklerini devre dışı bırakır. Ancak bu bir kararlılık garantisi değildir. Proje, 3 GB olan minimum değerin altında kararsızlık ve performans sorunları yaşanabileceği konusunda uyarıda bulunur; bu nedenle alt sınırı kesin bir sınır olarak kabul edin.

PhotoPrism belgeleri, sunucuda en az 4 GB swap alanı bulunması gerektiğini açıkça belirtir. Immich'in gereksinimler sayfası swap'tan bahsetmez ancak swap, küçük bir makinede makine öğrenimi container'ına ihtiyaç duyduğu alanı sağlar. Her iki uygulamayı da kurmadan önce swap 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 -h

free -h artık 4.0Gi değerini gösteren bir Swap: satırı yazdırmalıdır. Eğer 0B çıktısı alınıyorsa, swapon başarısız olmuş demektir; bunun nedeni genellikle dosya sisteminin fallocate özelliğini desteklememesi ve sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 yönteminin yedek olarak kullanılmasıdır. Container bellek sınırları burada da önem taşır ve tek bir aç servisin tüm sunucuyu çökertmesini engellemek için Docker Compose içinde bellek sınırlarını ayarlama yöntemi kullanılmalıdır. PhotoPrism'in kendisi bu konuda bir istisnadır: belgeleri, büyük dosyaların indekslenmesi sırasında kısa süreliğine ek belleğe ihtiyaç duyulduğu ve katı bir bellek sınırının beklenmedik yeniden başlatmalara yol açabileceği gerekçesiyle container üzerinde katı bir bellek sınırı uygulanmamasını tavsiye eder.

Kullanıcıları zorlayan bir diğer gereksinim ise şudur: Immich'in Postgres veritabanı, yerel depolama üzerinde, gerçek sahiplik ve izinlere sahip standart bir Unix dosya sisteminde bulunmalıdır; ağ paylaşımı üzerinde asla çalıştırılmamalıdır. PhotoPrism de veritabanı dosyalarının paylaşımlı bir ağ klasöründe saklanmaması konusunda uyarır ve yerel SSD depolamayı bu dosyalar için en uygun yer olarak tanımlar. Her iki uygulama da veritabanları mount edilmiş bir nesne depolama (object store) üzerinde çalıştırıldığında güvenli değildir.

Her birinin kurulumu

Her iki kurulum da bir üretici compose dosyası ve tek bir komuttan oluşur. VPS üzerinde Docker Compose rehberimizde açıklandığı üzere önce Docker Engine ve Compose eklentisini kurun.

Immich, her sürümle birlikte 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.env

Herhangi bir işleme başlamadan önce .env dosyasını düzenleyin. UPLOAD_LOCATION, orijinal dosyalarınızın bulunacağı yerdir. DB_PASSWORD varsayılan olarak çalışır durumda gelir; Immich zorunlu tutmasa da rastgele bir parola ile değiştirilmesini önerir. Postgres dış dünyaya açık değildir, bu nedenle parola yalnızca yerel kimlik doğrulama için kullanılır ancak rastgele bir parola belirlemenin bir maliyeti yoktur. Yalnızca A-Za-z0-9 karakterlerini kullanın; Immich belgeleri, diğer karakterlerin Docker değeri ayrıştırırken sorunlara yol açabileceğini belirtmektedir. Ardından servisi başlatın.

docker compose up -d
docker compose ps

Web arayüzü 2283 numaralı port üzerinden yanıt verir. Bu sayfa üzerinden kaydedilen ilk hesap yönetici hesabı olur; bu nedenle açık bir örneği internette bırakmak yerine hemen erişip kaydı tamamlayın.

PhotoPrism, MariaDB'yi halihazırda içeren tek bir compose dosyası ile gelir.

sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yaml

compose.yaml dosyasını açın ve ilk başlatmadan önce PHOTOPRISM_ADMIN_PASSWORD değerini değiştirin. Belgeler bu konuda nettir: uygulama dosyadaki 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 photoprism

PhotoPrism, 2342 numaralı port üzerinden admin kullanıcısı ile yanıt verir. Hiçbir uygulama doğrudan dış dünyaya açılmamalıdır. Docker, TLS ve yedekleme ile self-hosted Nextcloud kurulumunda kullanılan yapının aynısını kullanarak önüne TLS (transport layer security) destekli bir reverse proxy koyun veya sunucuyu gizli tutarak bir VPN üzerinden erişin. Eğer bu VPS üzerinde sadece fotoğraflar dışında başka servisler de barındırılacaksa, eklediğiniz her servis için aynı kısıtlamayı uygulayın; çünkü bir self-hosted RustDesk relay sadece kendi iki portunun erişilebilir olmasına ihtiyaç duyar, başka hiçbir şeye değil.

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, herhangi bir uygulama açılmasına gerek kalmadan telefondan otomatik olarak aktarılır. Ev dışından erişim için Immich üç yöntem önerir: WireGuard veya OpenVPN gibi bir VPN, Tailscale veya HTTPS üzerinden hizmet veren bir reverse proxy. Reverse proxy, telefon uygulamalarının her cihazda ayrı bir VPN uygulamasına ihtiyaç duymadan bağlanmasını sağlar. Immich, ek yapılandırma yapmadan 2283 numaralı portun doğrudan internete açılmaması konusunda uyarıda bulunur.

PhotoPrism'in resmi bir yerel uygulaması yoktur. Proje, tarayıcı üzerinden ana ekrana eklenebilen bir progressive web app sunar ve telefondan eşitleme yapmak için WebDAV (web distributed authoring and versioning) yöntemini belgeler. 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 işlevi, ücretli bir üçüncü taraf uygulama ile yerine getirir.

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ı bulmanızı sağlar. Ayrıca yüz algılama, kümeleme ve kopya tespiti özelliklerine de sahiptir. Büyük bir içe aktarma işleminin CPU üzerinde indekslenmesi arka planda saatler sürebilir; bu normaldir ve GPU (grafik işlem birimi) gerektirmez.

PhotoPrism, yerleşik bir ONNX modeliyle görüntüleri etiketlere göre sınıflandırır, yüzleri algılayıp ONNX yüz modelleriyle kişilere göre gruplandırır ve konum meta verilerini okuyarak bir yerler haritası oluşturur. Yapılandırma klasöründeki bir vision.yml dosyası, etiketler ve açıklamalar için dilerseniz Ollama veya OpenAI servislerini kullanmanıza olanak tanır. Harita özelliği, kullanıcıların bu yazılımı tercih etme nedenidir: Yirmi yıllık fotoğraflara, nerede çekildiklerine göre indekslenmiş bir kütüphane üzerinden göz atmak, fotoğrafları incelemenin tamamen farklı bir yoludur. Aynı mantık diğer medya koleksiyonlarında da çalışır; Jellyfin için Halcyon'un 90'lar video mağazası arayüzü, film dünyası için bunun bir karşılığıdır ve listeler yerine raflar üzerinden gezinme imkanı sunar. 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 bir kullanıcı yönetim arayüzü gibi ekstralar sunar. Ekim 2026 itibarıyla fiyatlar yıllık faturalandırılmak üzere aylık birkaç avrodan başlamaktadır.

Immich'te ödeme duvarı arkasında kalan hiçbir özellik yoktur ve proje ekibi asla olmayacağını belirtmektedir. Immich, Temmuz 2024'te duyurduğu fiyatlarla tek kullanıcı için 25 dolar veya tüm sunucu için 100 dolar tutarında isteğe bağlı ömür boyu ürün anahtarları satmaktadır; ancak bir anahtar satın almak herhangi bir kısıtlamayı kaldırmaz ve Immich hiçbir ödeme yapmasanız dahi kısıtlamasız çalışır. PhotoPrism'in çekirdeği ücretsizdir ve isteğe bağlı ücretli ekstralar sunar.

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.gz

Ardı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 -f

Bu 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.

Hangisini seçerseniz seçin, bu yedekleri uzak depolamaya şifrelenmiş ve tekilleştirilmiş restic yedekleri olarak bir zamanlamaya bağlı biçimde sunucunun dışına aktarın. Kütüphaneyle aynı diskte bulunan bir yedek, yedek sayılmaz. İş başarısız olduğunda bildirim göndermesini sağlayın. Çünkü Mart ayında sessizce çalışmayı durduran bir yedek, ihtiyaç duyacağınız güne kadar önceki gece çalışmış bir yedekten ayırt edilemez. Self-host edilen bir ntfy sunucusu bu hatayı aynı akşam telefonunuza iletir.

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, originals klasörünü indeksler ve salt okunur modda çalışmadığı sürece bu klasöre yazma işlemi yapar; Immich ise yükleme konumundaki içeriklerin yönetiminin kendisinde olmasını bekler. PhotoPrism'i, Immich'in library klasörünün salt okunur bir kopyasına yönlendirerek fotoğraflara göz atabilirsiniz; 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ı tutmak için kullanılmamalıdır. Immich artık anlamsal sürümleme (semantic versioning) kullanmaktadır ve köklü değişikliklerin yalnızca ana sürümlerde olacağını belirtmektedir. Bu nedenle IMMICH_VERSION sürümünü v3 gibi bir ana sürüm etiketine sabitleyin, sürüm notlarını okuyun ve ardından docker compose pull && docker compose up -d ile yükseltme yapın. Sürüm düşürme, aynı alt sürüm içinde dahi desteklenmemektedir; bu yüzden her yükseltme öncesinde veritabanı yedeği alın. Orijinal dosyaları sunucu dışında yedekli tuttuğunuz sürece risk düşük kalacaktır.

Immich makine öğrenimi container'ı neden sürekli yeniden başlıyor?

Genellikle çok fazla bellek kullandığı için sonlandırılmaktadır. docker compose ps --all komutunu çalıştırın; çünkü durdurulan container'lar bu bayrak olmadan gizlenir. Makine öğrenimi servisinin 137 koduyla kapandığını kontrol edin. Bu kod, sürecin 9 numaralı sinyal ile öldürüldüğü anlamına gelir; genellikle çekirdeğin (kernel) "out of memory" (OOM) katili buna neden olur ancak tek sebep bu değildir, bu yüzden sudo dmesg | grep -i 'out of memory' ile durumu doğrulayın. 4 GB belleğe sahip bir makinede swap alanı ekleyin veya makine öğrenimini tamamen devre dışı bırakın. Container üzerindeki bellek sınırı, süreci yavaşlatmaz; sınıra ulaşıldığında süreç yine öldürülür ancak sunucunun geri kalanının kaynak açlığı çekmesi engellenmiş olur. Makine öğrenimi olmadan akıllı arama ve yüz tanıma çalışmaz, ancak Immich'in geri kalanı sorunsuz çalışmaya devam eder.

PhotoPrism için MariaDB gerekli mi, yoksa SQLite yeterli olur mu?

SQLite çalışır ve kişisel bir kütüphane için yeterlidir; ancak PhotoPrism SQLite kullanıldığında kendisini dört işçi (worker) ile sınırlar. Dokümantasyon, 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çermektedir, 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 ile 20 arasında bir alan ekleyin. Bu alan, oluşturulan küçük resimler (thumbnails) ve dönüştürülmüş video önizlemeleri için gereklidir. 200 GB'lık bir koleksiyon, yalnızca kütüphane için yaklaşık 220 ila 240 GB alana, artı veritabanı ve büyüme payına ihtiyaç duyar. Eğer aynı birim üzerinde tam bir yerel yedek kopya da tutuyorsanız, orijinal dosyalar ve bu kopya için başka hiçbir şey hesaba katılmadan en az 400 GB gerekir; bu yüzden yaklaşık 450 GB bütçe ayırın veya kopyayı ayrı bir birimde tutun.

Bu yazı işinize yaradı mı?