# Immich Docker Compose ve HTTPS ile nasıl kurulur

> Immich'i Docker Compose ile kurun: resmi compose dosyası, güvenli .env, Caddy HTTPS arkasında 2283 portu, veritabanı dökümleri, geri yükleme ve güncellemeler.

Zorluk: Orta\
Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13

Immich, kamera rulonuzu kendiliğinden yedekleyen mobil uygulamalara sahip, self-hosted bir fotoğraf ve video yönetim aracıdır. Albümler, paylaşım, zaman çizelgesi ve ayrı bir makine öğrenmesi konteynerinin sağladığı yüz tanıma ile akıllı arama sunar.

Bu rehber Immich'i, resmi belgelerde olduğu gibi Immich'in en son GitHub sürümüne eklenen dosyalarla **Docker Compose** kullanarak kurar. 2283 numaralı web portunu localhost'ta tutar, yönetici hesabını bir SSH tüneli üzerinden oluşturur, Immich'i Caddy ile HTTPS üzerinden yayınlar ve hem veritabanının hem de fotoğraf kütüphanesinin yedeklerini kurarsınız. Ayrıca geri yüklemeyi, güncellemeyi ve donanım hızlandırmanın nerede devreye girdiğini öğrenirsiniz.

> **Not**
>
> Immich'in kendi belgeleri 3-2-1 yedekleme stratejisi izlemenizi ister. Immich fotoğraflarınızın yaşadığı yerdir, onların yedeği değildir; bu yüzden kütüphanenizi yüklemeden önce bu rehberin yedekleme bölümünü planlayın.

## Ön koşullar

- **Ubuntu 24.04 veya 26.04 LTS** ya da **Debian 12 veya 13** çalıştıran 64 bit (amd64 veya arm64) bir sunucu. v3'ten beri amd64 üzerindeki makine öğrenmesi imajı x86-64-v2 mikro mimari düzeyini gerektirir; `/lib64/ld-linux-x86-64.so.2 --help | grep x86-64-v2` komutu bunu desteklenen (supported) olarak bildirmelidir.
- `sudo` yetkisi olan, root olmayan bir kullanıcı: [Yeni bir Linux sunucusunu güvenli hale getirin](/guides/secure-a-new-linux-server) ve [SSH anahtarlarını ayarlayın](/guides/ssh-keys) rehberlerine bakın.
- Docker'ın deposundan kurulmuş, Compose eklentili Docker Engine: [Ubuntu](/guides/install-docker-ubuntu) veya [Debian](/guides/install-docker-debian). Immich eski `docker-compose` komutunu artık desteklemez ve compose dosyası Docker Engine 25 veya daha yenisini gerektirir.
- [Caddy reverse proxy olarak nasıl kurulur](/guides/caddy-reverse-proxy) rehberiyle sunucuya kurulmuş Caddy ve sunucuyu gösteren `photos.example.com` gibi bir alt alan adı.

| Kaynak | En düşük (resmi) | Önerilen başlangıç |
|---|---|---|
| RAM | 6 GB (8 GB önerilir); makine öğrenmesi kapalıyken 4 GB mümkün | 8 GB |
| CPU | 2 çekirdek (4 önerilir) | 4 vCPU |
| Disk | Sahiplik ve izinleri destekleyen bir Unix dosya sistemi (ext4, ZFS); veritabanı yerel SSD'de, asla ağ paylaşımında değil | Kütüphanenize ek olarak küçük resimler ve dönüştürülmüş videolar için yüzde 10 ila 20 pay bırakan SSD |

## Adım 1 — Resmi dosyaları indirin

Bir proje klasörü oluşturun ve en son sürümden `docker-compose.yml` ile `example.env` dosyalarını indirin. Resmi rehber `immich-app` adlı bir klasör kullanır; bu kütüphane Docker uygulamalarını `/opt` altında tutar:

```bash
sudo mkdir -p /opt/immich
sudo chown $USER:$USER /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
ls -la
```

`docker-compose.yml` ve `.env` dosyalarını görmelisiniz. Compose dosyası dört servis tanımlar: `immich-server`, `immich-machine-learning`, `redis` (bir Valkey imajı) ve `database` (VectorChord eklentili PostgreSQL).

## Adım 2 — .env dosyasını yapılandırın

Önce rastgele bir veritabanı parolası belirleyin. Immich özel karakter ve boşluk içermeyen, yalnızca harf ve rakamlardan oluşan bir parola ister; bu yüzden onaltılık (hex) bir dize idealdir. Ardından dosyayı koruyun ve açın:

```bash
sed -i "s/^DB_PASSWORD=.*/DB_PASSWORD=$(openssl rand -hex 24)/" .env
chmod 600 .env
nano .env
```

Değişkenleri gözden geçirin. `TZ` satırının başındaki `#` işaretini kaldırın ve saat diliminizi ayarlayın. Sonuç kendi parolanız ve saat diliminizle şuna benzemelidir:

```env
UPLOAD_LOCATION=./library
DB_DATA_LOCATION=./postgres
TZ=Etc/UTC
IMMICH_VERSION=v3
DB_PASSWORD=generated-by-openssl
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
```

- `UPLOAD_LOCATION` yüklemeleri, küçük resimleri, dönüştürülmüş videoları ve otomatik veritabanı dökümlerini tutar. Ayrı bir veri diskiniz varsa yeterli alanı olan o diski gösterin.
- `DB_DATA_LOCATION` PostgreSQL dosyalarını tutar. Onu yerel SSD depolamada tutun; ağ paylaşımları desteklenmez.
- `IMMICH_VERSION=v3` en son v3 sürümünü izler. Tam bir sürüme sabitlemek için değeri [sürümler sayfasındaki](https://github.com/immich-app/immich/releases) bir etikete ayarlayın; örneğin bu rehber yazılırken en son sürüm olan `v3.3.1`.

## Adım 3 — 2283 numaralı portu localhost'ta tutun

Compose dosyası web portunu `'2283:2283'` olarak yayınlar; Docker bunu ufw'den bağımsız olarak tüm adreslerde açar. Yalnızca Caddy'nin ulaşabilmesi için portu localhost'a bağlayın:

```bash
sed -i "s/- '2283:2283'/- '127.0.0.1:2283:2283'/" docker-compose.yml
grep -n "2283" docker-compose.yml
```

`grep` çıktısı `127.0.0.1:2283:2283` göstermelidir. `docker-compose.yml` dosyasını daha yeni bir sürüm dosyasıyla her değiştirdiğinizde bu düzenlemeyi tekrarlayın.

## Adım 4 — Immich'i başlatın

```bash
docker compose up -d
docker compose ps
curl -I http://127.0.0.1:2283
```

İlk başlatma birkaç imaj çeker ve birkaç dakika sürer. `docker compose ps`; `immich_server`, `immich_machine_learning`, `immich_redis` ve `immich_postgres` konteynerlerini çalışıyor ve kısa bir süre sonra `healthy` olarak listelemelidir. `curl` komutu HTTP `200` yanıtı döndürür. Bir sorun olursa logları `docker compose logs -f immich-server` ile okuyun.

## Adım 5 — Yönetici hesabını SSH tüneli üzerinden oluşturun

Kaydolan ilk kullanıcı yönetici olur. Bu hesabı Immich internetten erişilebilir olmadan önce oluşturun. **Kendi bilgisayarınızda** bir tünel açın:

```bash
ssh -L 2283:127.0.0.1:2283 admin@203.0.113.10
```

Tarayıcıda `http://localhost:2283` adresine gidin, **Getting Started** seçeneğini seçin ve güçlü bir parolayla yönetici hesabını oluşturun. Aile üyeleri veya arkadaşlar için hesapları daha sonra **Administration → Users** altında **Create user** ile ekleyin. Diskte okunabilir klasörler istiyorsanız **Administration → Settings → Storage Template** altında depolama şablonunu açın; varsayılan desen dosyaları önce yıla, sonra tarihe göre sıralar ve özgün dosya adını korur.

**Administration → Settings → Notification Settings** altında bir SMTP sunucusu ayarladığınızda Immich yeni kullanıcılara, albüm davetlerine ve paylaşılan albüm güncellemelerine e-posta gönderir; örneğin `smtp.example.com` sunucusu, `587` numaralı port ve STARTTLS kullanın.

> **Not**
>
> HyperDC VPS'lerde giden 25 numaralı port varsayılan olarak kapalıdır. 3 ay veya daha uzun süreyle satın alınan hizmetlerde talep üzerine açılır: [destek talebi açın](/guides/support-tickets). O zamana kadar e-postaları 587 numaralı port üzerinden bir SMTP relay ile gönderin.

## Adım 6 — Immich'i Caddy ile HTTPS üzerinden yayınlayın

Henüz yapmadıysanız ufw'de web trafiğine izin verin ve `/etc/caddy/Caddyfile` dosyasına bir site bloğu ekleyin:

```caddyfile
photos.example.com {
    reverse_proxy 127.0.0.1:2283
}
```

Immich bir adresin kökünden sunulmalıdır; alt yollar desteklenmez. Reverse proxy belgesi büyük yüklemelere ve uzun zaman aşımlarına izin verilmesini ister. Caddy varsayılan olarak istek boyutunu sınırlamaz ve resmi Caddy örneği tam olarak bu bloğu kullanır. Bunun yerine Nginx kullanıyorsanız Immich'in ayarlarını (`client_max_body_size 50000M` ve 600 saniyelik zaman aşımları) [Nginx reverse proxy ve Certbot](/guides/nginx-reverse-proxy-certbot) rehberiyle uygulayın.

Caddy'yi yeniden yükleyin ve sonucu kontrol edin:

```bash
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo systemctl reload caddy
curl -I https://photos.example.com
```

Geçerli bir sertifikayla HTTP `200` yanıtı almalısınız. Immich mobil uygulamasında sunucu adresi olarak `https://photos.example.com` girin, giriş yapın, yedekleme ekranını açın, albümleri seçin ve yedeklemeyi açın.

## Yedekleme ve geri yükleme

Immich durumunu iki yerde tutar: **veritabanı** (kullanıcılar, albümler, kişiler, meta veriler) ve **yükleme konumu** (fotoğrafların ve videoların kendisi). İkisini de, ayrıca `.env` ve `docker-compose.yml` dosyalarını yedekleyin.

**Otomatik veritabanı dökümleri.** Immich varsayılan olarak her gün saat 02:00'de bir veritabanı dökümü yazar ve son 14 dökümü `UPLOAD_LOCATION/backups` içinde, burada `/opt/immich/library/backups` klasöründe saklar. Zamanlamayı **Administration → Settings → Database Dump Settings** altında değiştirin. Bu dökümler fotoğraf içermez.

**Elle döküm.** Her güncellemeden önce bir döküm alın:

```bash
sudo mkdir -p /opt/backups
sudo chown $USER:$USER /opt/backups
docker exec -t immich_postgres pg_dump --clean --if-exists --dbname=immich --username=postgres | gzip > /opt/backups/immich-db-$(date +%F).sql.gz
cp /opt/immich/.env /opt/immich/docker-compose.yml /opt/backups/
```

**Kütüphane.** Yükleme konumundaki `library`, `upload` ve `profile` klasörleri özgün içeriği tutar; Immich `backups`, `thumbs` ve `encoded-video` dahil yükleme konumunun tamamını yedeklemeyi önerir. Onu yalnızca değişiklikleri aktaran rsync ile başka bir sunucuya kopyalayın:

```bash
sudo rsync -aAX --delete /opt/immich/library/ backup@198.51.100.20:/backups/immich-library/
```

**Geri yükleme.** Immich web arayüzünde **Administration → Maintenance → Restore database backup** altında bir geri yükleme ve yeni bir kurulumun karşılama ekranında **Restore from backup** seçeneği sunar. Komut satırından yapmak için kütüphaneyi yükleme konumuna geri kopyalayın, ardından boş bir veritabanıyla başlayan resmi yöntemi izleyin:

> **Tehlike**
>
> `docker compose down -v` ve `rm -rf ./postgres` mevcut Immich veritabanını siler. Bunları yalnızca yeni bir kurulumda veya her şeyi yedekle değiştirmek istediğinizden eminseniz çalıştırın.

```bash
cd /opt/immich
docker compose down -v
sudo rm -rf ./postgres
docker compose create
docker start immich_postgres
sleep 10
gunzip --stdout "/opt/backups/immich-db-2026-10-09.sql.gz" \
| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
| docker exec -i immich_postgres psql --dbname=immich --username=postgres --single-transaction --set ON_ERROR_STOP=on
docker compose up -d
```

Yedeği, onu oluşturan Immich sürümüne geri yükleyin; sürüm düşürme desteklenmez.

## Immich güncelleme

Önce sürüm notlarını okuyun: geriye dönük uyumsuz değişiklikler GitHub'da duyurulur ve ana sürümlerle sınırlı tutulmaya çalışılır. Elle bir veritabanı dökümü alın, ardından konteynerleri çekip yeniden oluşturun:

```bash
cd /opt/immich
docker compose pull && docker compose up -d
docker image prune
```

`IMMICH_VERSION` değerini tam bir etikete sabitlediyseniz çekmeden önce onu `.env` içinde değiştirin. Aynı ara sürüm içinde bile sürüm düşürme desteklenmez. Immich, büyük bir sunucu yükseltmesinden önce mobil uygulamaları güncellemenizi önerir. Yeni bir ana sürüm çıktığında `docker-compose.yml` ve `.env` dosyalarınızı yeni sürümün dosyalarıyla karşılaştırın ve compose dosyasını değiştirirseniz `127.0.0.1` bağlamasını yeniden uygulayın.

## Makine öğrenmesi ve donanım hızlandırma

`immich-machine-learning` konteyneri yüz tanıma ve akıllı aramayı sağlar. CPU üzerinde çalışır ve modellerini ilk kullanımda `model-cache` volume'una indirir. Az RAM'li bir sunucuda makine öğrenmesini yönetim ayarlarından kapatıp Immich'in geri kalanını kullanmaya devam edebilirsiniz.

Çoğu sanal sunucuda GPU yoktur; bu nedenle makine öğrenmesi ve video dönüştürme CPU üzerinde çalışır. Bu çalışır, ancak büyük kütüphanelerde daha uzun sürer. Immich, sürümdeki iki ek dosya üzerinden makine öğrenmesi (CUDA, ROCm, OpenVINO, ARM NN, RKNN) ve dönüştürme (NVENC, Quick Sync, VAAPI, RKMPP) için donanım hızlandırmayı destekler:

```bash
cd /opt/immich
wget -O hwaccel.ml.yml https://github.com/immich-app/immich/releases/latest/download/hwaccel.ml.yml
wget -O hwaccel.transcoding.yml https://github.com/immich-app/immich/releases/latest/download/hwaccel.transcoding.yml
```

NVIDIA için belgeler, hesaplama yeteneği (compute capability) 5.2 veya üzeri bir GPU, 545 veya daha yeni bir sürücü ve NVIDIA Container Toolkit gerektirir. Ardından makine öğrenmesi imaj etiketine `-cuda` sonekini ekler ve `docker-compose.yml` içindeki `extends` bölümünün yorumunu kaldırırsınız. Desteklenen NVIDIA GPU'lu bir sunucu için [GPU sunucuları](/gpu-servers) sayfasına bakın.

## Sorun giderme

### Konteynerler yeniden başlıyor ve loglarda start_interval geçiyor

Docker Engine'iniz 25 sürümünden eski. Güncel Docker Engine'i Docker'ın deposundan kurun; geçici çözüm olarak belgeler `database` bölümündeki `start_interval` satırını yorum satırı yapmanıza izin verir.

### unknown shorthand flag: 'd' in -d

`docker compose` eklentisi eksik veya eski olduğu için Docker komutu anlamıyor. Compose eklentisini Docker'ın deposundan kurun ve eski `docker-compose` programını kullanmayın.

### Büyük videoların yüklenmesi alan adı üzerinden başarısız oluyor ama tünelden çalışıyor

Reverse proxy istek boyutunu sınırlıyor veya zaman aşımına uğruyor. Caddy'de varsayılan olarak böyle sınırlar yoktur; Nginx için Immich'in reverse proxy belgesindeki `client_max_body_size` ve zaman aşımı değerlerini ayarlayın. Alan adının önünde yüklemeleri sınırlayan bir CDN proxy'si olmadığını da kontrol edin.

### Veriler taşındıktan sonra veritabanı konteyneri başlamıyor

Veritabanı klasörü bir ağ paylaşımında veya Unix sahiplik ve izinlerini desteklemeyen bir dosya sisteminde. `DB_DATA_LOCATION` klasörünü yerel bir ext4 veya ZFS dosya sistemine, tercihen SSD'ye geri taşıyın ve gerekirse bir dökümden geri yükleyin.

### Yüz tanıma veya akıllı arama hiç bitmiyor

`docker compose logs immich-machine-learning` çıktısına bakın. Bellek yetersizliği (out-of-memory) nedeniyle sonlandırılan süreçler RAM'in az olduğunu gösterir; bellek ekleyin veya makine öğrenmesini kapatın. amd64 üzerinde x86-64-v2 desteği olmayan bir CPU, v3 makine öğrenmesi imajını çalıştıramaz.

## Sonraki adımlar

- Compose dosya biçimini [Docker Compose temelleri](/guides/docker-compose-basics) rehberinde öğrenin.
- Site blokları ve sertifikalar hakkında daha fazlasını [Caddy reverse proxy olarak nasıl kurulur](/guides/caddy-reverse-proxy) rehberinde okuyun.
- Fotoğraflarınızın yanına [Nextcloud All-in-One](/guides/install-nextcloud-aio) ile dosya eşitleme ekleyin.
- Fotoğraf kütüphaneleri için sunucuları [Immich hosting](/immich-hosting) sayfasında karşılaştırın.
- Harici kütüphaneler, OAuth ve daha fazlası için [Immich belgelerini](https://docs.immich.app/) okuyun.

## Sık sorulan sorular

### Immich ne kadar RAM gerektirir?

Immich'in gereksinimler sayfası en az 6 GB RAM verir ve 8 GB önerir; CPU için en az 2 çekirdek, önerilen 4 çekirdektir. 4 GB'lık bir sunucuda Immich'i makine öğrenmesi özellikleri kapalı olarak çalıştırabilirsiniz.

### Immich'in otomatik veritabanı yedekleri yeterli mi?

Hayır. Otomatik dökümler yalnızca albümler, kişiler ve kullanıcılar gibi meta verileri tutan veritabanını içerir. Fotoğraflarınız ve videolarınız yükleme konumunda durur; bu yüzden o klasörü de yedeklemeli ve bir kopyasını sunucunun dışında tutmalısınız.

### Immich'i example.com/photos gibi bir alt yolda yayınlayabilir miyim?

Hayır. Immich bir alt yoldan sunulmayı desteklemez. Ona photos.example.com gibi kendi alan adını veya alt alan adını verin ve reverse proxy'yi o adresin köküne yönlendirin.

### Immich için GPU gerekli mi?

Hayır. Yüz tanıma, akıllı arama ve video dönüştürme varsayılan olarak CPU üzerinde çalışır. Makine öğrenmesi veya dönüştürme için donanım hızlandırma isteğe bağlıdır; desteklenen bir GPU ve sürümdeki ek hwaccel dosyalarını gerektirir.

### Immich hangi HyperDC sunucularında çalışır?

Immich, root erişimi olan bir HyperDC Linux VPS, VDS veya dedicated sunucuda Docker içinde çalışır. En az 6 GB RAM, veritabanı için SSD depolama ve küçük resimler ile dönüştürülmüş videolar için yüzde 10 ila 20 ek payla kütüphanenize yetecek disk planlayın.

---

Kaynak: <https://hyperdc.com/tr/guides/tutorials/install-immich>\
Son güncelleme: 2026-10-09
