Ana içeriğe geç
Kategoriye Dön

Immich Kurulumu: Self-Hosted Fotoğraf ve Video Yedekleme

Immich Docker kurulumu, fotoğraf ve video otomatik yedekleme, yüz tanıma, harita görünümü, paylaşılan albümler, mobil uygulama ve Google Photos alternatifi self-hosted çözüm.

Okuma süresi: 14 dk Self-Hosting
immichfotoğrafvideoyedeklemeself-hostingdockergoogle photos alternatifi

İçindekiler

Immich Kurulumu: Self-Hosted Fotoğraf ve Video Yedekleme

Immich, Google Photos'a açık kaynaklı bir alternatif olarak geliştirilen self-hosted fotoğraf ve video yedekleme platformudur. Mobil uygulamalar ile otomatik yedekleme, yüz tanıma, harita görünümü ve paylaşılan albümler gibi modern özellikler sunar.

Immich Nedir?

Immich, fotoğraf ve video koleksiyonunuzu kendi sunucunuzda barındırmanızı sağlar:

  • Otomatik yedekleme: iOS ve Android uygulamaları ile arka plan yedekleme
  • Yüz tanıma: Makine öğrenmesi ile otomatik yüz algılama ve gruplama
  • Harita görünümü: GPS verisi ile fotoğrafları harita üzerinde görüntüleme
  • Paylaşılan albümler: Aile ve arkadaşlarla albüm paylaşımı
  • Zaman çizelgesi: Kronolojik fotoğraf tarayıcı
  • Arama: Nesne, sahne ve metin bazlı akıllı arama

Sistem Gereksinimleri

  • Docker ve Docker Compose
  • Minimum 4 GB RAM (8 GB önerilir — ML modelleri için)
  • Yeterli disk alanı (fotoğraf/video koleksiyonuna göre)
  • PostgreSQL 14+ (Docker Compose ile otomatik kurulur)

Docker ile Kurulum

docker-compose.yml

hljs yaml
version: '3.8'

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:release
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - "2283:2283"
    depends_on:
      - redis
      - database
    restart: always

  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:release
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: always

  redis:
    container_name: immich_redis
    image: redis:6.2-alpine
    restart: always
    healthcheck:
      test: redis-cli ping || exit 1

  database:
    container_name: immich_postgres
    image: tensorchord/pgvecto-rs:pg14-v0.2.0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: always
    healthcheck:
      test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  pgdata:
  model-cache:

.env Dosyası

hljs bash
# .env
UPLOAD_LOCATION=/data/immich/upload
DB_PASSWORD=GucluSifre123!
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

Kurulumu Başlatma

hljs bash
# Dizin oluştur
mkdir -p /data/immich/upload

# Container'ları başlat
docker compose up -d

# Logları kontrol et
docker logs immich_server -f

# Durumu kontrol et
docker compose ps

Immich web arayüzüne http://SUNUCU_IP:2283 adresinden erişebilirsiniz. İlk girişte admin hesabı oluşturmanız gerekir.

İlk Yapılandırma

Admin Hesabı Oluşturma

  1. http://SUNUCU_IP:2283 adresine gidin
  2. "Getting Started" butonuna tıklayın
  3. Admin e-posta ve şifre belirleyin
  4. Depolama yolunu onaylayın

Kullanıcı Yönetimi

Administration → User Management
- Yeni kullanıcı ekle (e-posta, ad, şifre)
- Depolama kotası belirle
- Harici kütüphane erişimi ver

Nginx Reverse Proxy

hljs nginx
server {
    listen 80;
    server_name photos.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name photos.example.com;

    ssl_certificate /etc/letsencrypt/live/photos.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/photos.example.com/privkey.pem;

    client_max_body_size 50000M;  # Büyük video yüklemeleri için

    location / {
        proxy_pass http://127.0.0.1:2283;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket desteği
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # Büyük dosya yükleme timeout
        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
    }
}

Mobil Uygulama Kurulumu

iOS / Android

  1. App Store veya Google Play'den "Immich" uygulamasını indirin
  2. Sunucu URL'sini girin: https://photos.example.com
  3. Kullanıcı adı ve şifre ile giriş yapın
  4. Otomatik yedekleme ayarlarını yapılandırın:
    • Arka plan yedekleme: Etkin
    • Wi-Fi'da yedekle: Etkin
    • Mobil veride yedekle: İsteğe bağlı
    • Video yedekleme: Etkin/Devre dışı

Harici Kütüphane

Mevcut fotoğraf koleksiyonunuzu Immich'e eklemek için:

hljs yaml
# docker-compose.yml'e volume ekle
services:
  immich-server:
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /mnt/photos:/mnt/photos:ro  # Harici kütüphane (salt okunur)
Administration → External Libraries
- Import Path: /mnt/photos
- Scan frequency: Her 24 saatte bir
- Exclusion patterns: *.tmp, Thumbs.db

Makine Öğrenmesi Ayarları

Administration → Machine Learning
- Yüz tanıma: Etkin
- Akıllı arama (CLIP): Etkin
- Nesne algılama: Etkin
- Minimum yüz güven skoru: 0.7

ML modelleri ilk çalıştırmada indirilir ve önbelleğe alınır. İlk tarama büyük koleksiyonlarda saatler sürebilir. model-cache volume'u sayesinde yeniden başlatmalarda tekrar indirilmez.

Yedekleme

hljs bash
# Veritabanı yedeği
docker exec immich_postgres pg_dumpall -U postgres | \
  gzip > /backups/immich-db-$(date +%Y%m%d).sql.gz

# Upload dizini yedeği (büyük olabilir!)
rsync -avz /data/immich/upload/ /backups/immich-upload/

# Otomatik yedekleme
cat > /etc/cron.daily/immich-backup << 'EOF'
#!/bin/bash
BACKUP_DIR="/backups/immich"
mkdir -p $BACKUP_DIR
docker exec immich_postgres pg_dumpall -U postgres | \
  gzip > $BACKUP_DIR/db-$(date +%Y%m%d).sql.gz
find $BACKUP_DIR -name "db-*.sql.gz" -mtime +30 -delete
EOF
chmod +x /etc/cron.daily/immich-backup

Güncelleme

hljs bash
# Yedek al
docker exec immich_postgres pg_dumpall -U postgres > immich-backup.sql

# Yeni imajları indir
docker compose pull

# Container'ları yeniden başlat
docker compose up -d

# Logları kontrol et
docker logs immich_server -f

Immich henüz aktif geliştirme aşamasındadır. Büyük sürüm güncellemelerinde breaking change olabilir. Güncelleme öncesi mutlaka veritabanı yedeği alın ve release notlarını okuyun.

Sonuç

Immich, Google Photos'a güçlü bir self-hosted alternatiftir. Fotoğraf ve videolarınızı kendi sunucunuzda güvenle saklayabilir, yüz tanıma ve akıllı arama gibi modern özelliklerden yararlanabilirsiniz. REXE sunucularında 8 GB RAM ile binlerce fotoğrafı sorunsuz yönetebilirsiniz.