Coolify Kurulumu: Self-Hosted PaaS ile Uygulama Deployment
Coolify kurulumu, Docker ve Git entegrasyonu, uygulama deployment, veritabanı yönetimi, SSL sertifikaları, environment variables ve Heroku/Netlify alternatifi self-hosted PaaS.
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.
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, fotoğraf ve video koleksiyonunuzu kendi sunucunuzda barındırmanızı sağlar:
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
UPLOAD_LOCATION=/data/immich/upload
DB_PASSWORD=GucluSifre123!
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
# 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.
http://SUNUCU_IP:2283 adresine gidinAdministration → User Management
- Yeni kullanıcı ekle (e-posta, ad, şifre)
- Depolama kotası belirle
- Harici kütüphane erişimi ver
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;
}
}
https://photos.example.comMevcut fotoğraf koleksiyonunuzu Immich'e eklemek için:
# 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
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.
# 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
# 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.
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.
Disk alanı tamamen fotoğraf/video koleksiyonunuzun boyutuna bağlıdır. Immich orijinal dosyaları saklar ve ek olarak thumbnail'ler oluşturur (orijinalin ~%10-15'i kadar ek alan). 10.000 fotoğraf için yaklaşık 50-100 GB, video koleksiyonu varsa çok daha fazla gerekebilir. ML model cache için ek ~2 GB alan gerekir.
Kontrol edilecekler: 1) Sunucu URL'sinin doğru olduğunu doğrulayın (https:// dahil), 2) Port 2283'ün firewall'da açık olduğunu kontrol edin, 3) Nginx reverse proxy kullanıyorsanız WebSocket desteğinin etkin olduğunu doğrulayın, 4) SSL sertifikasının geçerli olduğunu kontrol edin (self-signed sertifika mobilde sorun çıkarabilir).
ML container'ının çalıştığını kontrol edin (docker ps). İlk tarama büyük koleksiyonlarda saatler sürebilir. Minimum 4 GB RAM gerekir (8 GB önerilir). Administration → Machine Learning'den yüz tanımanın etkin olduğunu doğrulayın. docker logs immich_machine_learning ile hataları kontrol edin.
İki yöntem: 1) Harici kütüphane — fotoğraf dizinini read-only volume olarak bağlayın ve Administration → External Libraries'den tarayın. 2) CLI aracı — immich-cli ile toplu yükleme yapın: npx immich upload --recursive /path/to/photos. Harici kütüphane dosyaları kopyalamaz, yerinde okur.
Veritabanı yedeğiniz varsa geri yükleyebilirsiniz. docker compose down ile tüm container'ları durdurun. docker compose pull ile imajları tekrar çekin. docker compose up -d ile başlatın. Logları kontrol edin: docker logs immich_server. Sorun devam ederse GitHub Issues'da arayın veya önceki sürüme dönün.
Immich avantajları: Verileriniz sizde kalır, depolama limiti yok (disk alanınız kadar), ücretsiz ve açık kaynak. Dezavantajları: Kendi sunucunuzu yönetmeniz gerekir, Google'ın AI özellikleri kadar gelişmiş değil (ama hızla gelişiyor), henüz stabil 1.0 sürümüne ulaşmadı. Temel özellikler (yedekleme, yüz tanıma, arama, paylaşım) mevcut.
Coolify kurulumu, Docker ve Git entegrasyonu, uygulama deployment, veritabanı yönetimi, SSL sertifikaları, environment variables ve Heroku/Netlify alternatifi self-hosted PaaS.
Nextcloud kurulumu Docker ile, Apache/Nginx yapılandırması, veritabanı kurulumu, SSL sertifikası, dosya senkronizasyonu, uygulama mağazası ve performans optimizasyonu.
Portainer CE kurulumu, Docker ve Kubernetes yönetimi, stack deployment, volume/network yönetimi, kullanıcı yetkilendirme, webhook ve GitOps entegrasyonu.