Immich ile Fotoğraf Arşivinde Kopya Temizliği – Bölüm 3

Server rack with multiple servers and two large monitors showing system overview and network traffic data

Serinin ilk iki bölümünde, eski yavaş NAS cihazımızın mirasından kurtulup verilerimizi TrueNAS tabanlı yeni sunucumuza (emektar ama canavar i7-4770K / 24 GiB RAM altyapımıza) nasıl sıfır veri kaybıyla taşıdığımızı ve çok kullanıcılı eşitleme mantığını işlemiştik.

Altyapı hazırdı, harici kütüphaneler bağlanmıştı. Ancak asıl büyük macera, Immich’in o devasa kütüphaneyi tarayıp arkadaki yapay zeka motorunu çalıştırmasıyla başladı. Bu yazıda, evdeki 55.000 nesnelik (fotoğraf ve video) devasa arşivin tarama sürecinde neler yaşadığımızı, arkada dönen teknik işleri ve en önemlisi: Tam 8.308 adet kopya fotoğrafı tek tıkla nasıl eritip diski yükten kurtardığımızı anlatacağım.

🚀 1. Tarama Başlıyor: Donanımın Sınırlarını Zorlamak

Harici kütüphaneyi Immich’e ilk gösterdiğimiz an, sunucu adeta bir veri işleme merkezine dönüştü. TrueNAS üzerinde koşan Immich, arka planda sırayla şu mikroservisleri tetikler:

  1. EXIF/Meta Veri Ayıklama: Her bir fotoğrafın çekildiği tarih, saat, kamera modeli ve konum bilgileri tek tek okunur.
  2. Küçük Resim (Thumbnail) Üretimi: Fotoğrafların web ve mobil arayüzde tıkır tıkır, anında yüklenmesi için farklı çözünürlüklerde minik kopyaları oluşturulur.
  3. Yapay Zeka (Klip Komut Dosyaları ve Yüz Tanıma): Fotoğraflardaki nesneler, mekanlar ve yüzler taranarak akıllı arama algoritmasına dahil edilir.

Bizim emektar i7-4770K ve ZFS önbelleği (ARC) olarak çalışan 24 GiB RAM, bu aşamada rüştünü ispatladı. Ancak binlerce fotoğraf sisteme girdiğinde, bazı eski yedeklerden veya farklı cihazlardan kalan tarih kopuklukları fark ettik. Zaman tünelinin kusursuz görünmesi için ilk iş olarak Immich yönetim panelindeki “Extract Metadata” (Meta Verileri Çıkar) görevini (Job) tetikledik. Bu sayede tüm fotoğrafların kronolojik sırası milimetrik olarak yerine oturdu.

🧹 2. Büyük Kopya Avı: Neden ve Nasıl Yaptık?

Yıllarca farklı disklerde, eski telefon yedeklerinde ve “ne olur ne olmaz” diye açılan klasörlerde biriken fotoğraflar, zamanla tam bir veri çöplüğüne dönüşüyor. Aynı fotoğrafın 3 farklı klasörde durması hem ZFS havuzumuzda boşuna yer kaplıyor hem de kütüphaneyi gezerken görsel bir kirlilik yaratıyordu.

İşte bu noktada Immich’in en sevdiğim sysadmin dostu silahı devreye girdi: Administration -> Repair -> Utilities (Yardımcı Programlar) altındaki “Review Duplicates” (Kopyaları Gözden Geçir) sekmesi.

Immich Kopyaları Nasıl Buluyor?

Immich, kopyaları tespit ederken sadece dosya adına bakmaz. Eğer sadece isme baksaydı, farklı cihazların çektiği ama aynı adı taşıyan (IMG_0001.jpg gibi) farklı fotoğrafları silebilir ve veri kaybına yol açabilirdi.

Immich bunun yerine görsel algılama ve hash (özet) kontrolü yapar. Yani fotoğrafın içeriğini dijital olarak analiz eder; isimleri farklı olsa bile (foto_yedek.jpg ve orijinal.jpg gibi) pikselleri ve çekim değerleri aynıysa bunları tam eşleşen kopya olarak işaretler.

🎯 3. 8.308 Kopyayı Eritmek: Güvenli İmha Protokolü

Sistem taramayı bitirdiğinde gözlerimize inanamadık: Tam 8.308 adet mükemmel eşleşen kopya listelenmişti! Bu, disk üzerinde yüzlerce gigabaytlık gereksiz bir yük ve binlerce mükerrer görsel demekti.

Ancak burada çok kritik bir veri güvenliği mimarisi var. Immich, yönetici (admin) olsanız bile “Ben hepsini buldum, hadi tek tıkla tüm kullanıcıların kütüphanesini sileyim” demez. Çünkü veri sahipliği gizlidir.

  • Kullanıcı Bazlı Temizlik: Kopyalar sistem tarafından listelenir ancak temizlik işlemi kullanıcı bazlı yürütülür. Admin hesabıyla girip kendi kütüphanemdeki kopyaları “Merge” (Birleştir) diyerek tek tıkla güvenle erittim.
  • Eşimin Kütüphanesi: Sistemdeki diğer kullanıcı olan eşimin kendi yedeklerindeki kopyaları temizlemesi için, onun kendi hesabı ile giriş yapıp aynı paneli onaylaması gerekiyordu. Bu mimari, aile bireylerinin yanlışlıkla birbirinin verisini silmesini engelleyen harika bir güvenlik protokolü.

📊 Sonuç ve Bir Sonraki Adım

Kopyaları eritip kütüphaneyi pürüzsüz hale getirdikten sonra Immich projemiz tam anlamıyla hedefine ulaştı. 55.000 nesnelik aile arşivimiz artık tek bir merkezde; güvenli, organize, yapay zeka destekli ve tamamen kopyalardan arınmış bir şekilde parlıyor.

Immich serimizi bu büyük temizlik zaferiyle taçlandırdığımıza göre, TrueNAS sunucumuzun o güçlü işlemci kaslarını esneteceğimiz bir sonraki büyük homelab projesine geçebiliriz.

Bir sonraki yazıda, abonelik ücretlerine meydan okuyarak evdeki bu canavar sunucu üzerinde kendi yerel Netflix ve Canlı TV (IPTV) altyapımızı (Jellyfin + Kodi) nasıl kurduğumuzu, arabada yüksek kaliteli müzik keyfi için geliştirdiğimiz akıllı senkronizasyon çözümlerini anlatacağım. Takipte kalın!

Bölüm 2: Verileri Taşımak Yetmez, Immich’e Ruhunu Üflemek (Çok Kullanıcılı Eşitleme)

User synchronization architecture diagram showing TrueNAS Core/Scale, Active Directory/LDAP servers, SSO provider, middleware components, and Immich application with data and authentication flow.

“Arkadaşlar, rsync ile yüz binlerce dosyayı yeni sunucunun diskine attık ama yeni Immich arayüzüne girdiğimizde bizi bomboş bir ekran karşılayacak. Panik yok! Çünkü Immich, dosyaları rastgele değil, her kullanıcıya özel atanmış UUID (örn: f81d4fae-7dec...) adı verilen gizli şifreli klasör odalarında tutar.

Continue reading “Bölüm 2: Verileri Taşımak Yetmez, Immich’e Ruhunu Üflemek (Çok Kullanıcılı Eşitleme)”

Bölüm 1: TrueNAS ile Sıfır Veri Kaybı: Immich Nasıl Taşınır?

Server racks in a data center with blue and orange data flow lines and a technician operating a console

Ev sunucusu (NAS) kullananların en büyük kabuslarından biri, sistem çökmeleri veya disk doluluğu nedeniyle canlıdaki verileri yeni bir sunucuya taşımak zorunda kalmaktır. Hele ki bu veri, içinde binlerce aile anısını, albüm yapılarını ve kullanıcı eşleşmelerini barındıran Immich gibi devasa bir fotoğraf arisviyse süreç daha da stresli bir hal alabilir.

Bu yazıda, eski bir TrueNAS SCALE sunucusunda alanı tamamen dolmuş olan ve web arayüzüne bile erişmekte zorlanan 41.008 adet görsel/videodan (38.923 fotoğraf, 2.085 video) oluşan dev bir Immich arşivini, yeni bir TrueNAS SCALE sunucusuna Docker katmanları ve SSH tünelleri kullanarak nasıl “sıfır veri kaybı” ve “karıştırma riski olmadan” taşıdığımızı, yaşadığımız pratik zorluklarla birlikte adım adım anlatıyoruz.

Continue reading “Bölüm 1: TrueNAS ile Sıfır Veri Kaybı: Immich Nasıl Taşınır?”

PowerShell: How to find whether the machine is waiting for Restart

The machine is waiting for restart, you can reach it simply by using the PowerShell command below.

Invoke-WmiMethod -Namespace "ROOTccmClientSDK" -Class CCM_ClientUtilities -Name DetermineIfRebootPending

One of my customers’ most inquiries was how to get the user machines to restart regularly.

First, we need to check whether the machine really needs restarts. If the machine wants to restart, we can produce various scenarios.
If the machine wants to restart, we can send the machine restart command.

Restart-Computer -ComputerName "ComputerName" -Force

Or it shows a warning to the user and the importance of restarting the machine can be explained. Such an interface can be improved either by HTML or again with PowerShell, allowing the user to confront it.

PowerShell ile makinenin Restart için bekleyip beklemediği nasıl bulunur?

Bir çok sistem yöneticisinin en büyük sorunlarından birisi de ağ üzerindeki makinelerin restart yapmasıdır. Peki bu bilgiye nasıl ulaşacağız ve bu bilgi bizim ne işimize yarayabilir?
Makinenin restart için beklediğini aşağıdaki PowerShell komutu ile basit bir şekilde öğrenebilirsiniz.

Continue reading “PowerShell ile makinenin Restart için bekleyip beklemediği nasıl bulunur?”

PowerShell: Change Port and URL quickly and accurately in multiple configuration files

PowerShell: Birden çok yapılandırma dosyasında Port ve URL’u hızlı ve doğru değiştirin

PowerShell_ISE

TR: Eğer bir çok uluslu bir şirkette altyapı yönetiyorsanız, bir küçük dosyayı tek tek düzenlemeniz gerekebilir. çünkü şirketin bir çok ülkeye hizmet veren bir web sayfası olacaktır. web sayfasının küçük ayar dosyası olacaktır. Bu dosyaları tek tek açıp düzenlemeye gerek yok. tüm ayarlamaları yapan bir script ile her ayarı hızlı ve doğru bir şekilde yapabilirsiniz.

EN: If you are managing the infrastructure in a multinational corporation, you may need to edit a small file one by one. because the company will have a web page that serves many countries. web page will be the small setting file. There is no need to open these files individually. With a script that makes all the adjustments you can make every setting quickly and accurately. Continue reading “PowerShell: Change Port and URL quickly and accurately in multiple configuration files”

If the folder exist, appy the .reg file

Klasör varsa, .reg dosyasını uygulayın.

regedit

Bazı uygulamaları makine kurduktan sonra ayarlarını her makinede tek tek yapmak gerekebilir. Yada aşağıdaki gibi bir script ile, eğer yüklediğimiz uygulamanın klasörü makinede var ise ayarları Regedit’e yükleyen daha hızlı bir yöntem seçebiliriz.

After installing some applications on the computers, you may need to adjust the settings of the applications one by one. Or, with a script such as the following, we can choose a faster method that installs the settings into Regedit if the machine has the application folder. Continue reading “If the folder exist, appy the .reg file”

PowerShell: Get information for an update installation when it is started, finished, and how long take

Microsoft’s updates never end. According to some system administrators, this is a headache. According to some system administrators, it is necessary for security. Although you are working with too many updates, in some cases you may need detailed information about the update installation. When did the update begin? When was the update installed? How long was the update set up?

PowerShell_ISE
In such situations grab the PowerShell help 🙂 Continue reading “PowerShell: Get information for an update installation when it is started, finished, and how long take”