İçeriğe geç

EğitimlerKendi sunucunuzdaki uygulamalar

Home Assistant Container bir sunucuda Docker ile nasıl çalıştırılır

Home Assistant'ı sunucuda Docker Compose ile çalıştırın, WireGuard veya Caddy HTTPS ile erişin, güvenilen proxy'leri ayarlayın, yedekleyip güncelleyin.

  • Orta
  • 35 dk okuma
  • Güncellendi

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

Bu sayfada
  1. Ön koşullar
  2. Uzak bir sunucuda neler çalışır
  3. Adım 1 — Compose dosyasını oluşturun
  4. Adım 2 — Güvenlik duvarını kapatın ve Home Assistant'ı başlatın
  5. Adım 3 — İlk kurulumu SSH tüneli üzerinden yapın
  6. Adım 4 — Caddy'yi reverse proxy olarak güvenilir yapın
  7. Adım 5 — Home Assistant'ı Caddy ile HTTPS üzerinden yayınlayın
  8. Adım 6 — Evdeki cihazlarınıza WireGuard üzerinden ulaşın
  9. Yedekleme ve geri yükleme
  10. Home Assistant güncelleme
  11. Sorun giderme
  12. Alan adını açtığınızda 400: Bad Request
  13. Ağ ayarları birkaç dakika sonra geri döndü
  14. Tarayıcınızdan 8123 numaralı porta ulaşılamıyor
  15. Evdeki cihazlar keşfedilmiyor
  16. configuration.yaml düzenlendikten sonra Home Assistant başlamıyor
  17. Sonraki adımlar

Home Assistant; binlerce entegrasyonu, görsel otomasyon düzenleyicisi ve özelleştirilebilir panoları olan açık kaynaklı bir ev otomasyonu platformudur. Home Assistant Container kurulumu, çekirdek uygulamayı resmi ghcr.io/home-assistant/home-assistant imajından Docker ile çalıştırır.

Onu evdeki bir cihaz yerine kiralık bir sunucuda çalıştırmak yapabileceklerini değiştirir: USB radyo yoktur ve cihaz keşfedilecek bir yerel ağ yoktur. Buna karşılık her zaman çevrim içi olan, her yerden erişilebilen ve evinizi bir VPN üzerinden yönetebilen bir hub elde edersiniz. Bu rehber Home Assistant Container'ı projenin belgelediği gibi Docker Compose ile kurar, ilk kurulumu bir SSH tüneli üzerinden yapar, onu Caddy ve gerekli güvenilen proxy ayarlarıyla HTTPS üzerinden yayınlar, WireGuard ile evinize bağlar ve yedekleme ile güncellemeyi anlatır.

Ön koşullar

Home Assistant donanım alt sınırlarını yalnızca Home Assistant OS sanal makinesi için yayınlar (2 GB RAM ve 2 vCPU), Container için yayınlamaz. Aşağıdaki öneriler temkinli bir başlangıç noktasıdır:

KaynakEn düşük (resmi)Önerilen başlangıç
RAMContainer için yayınlanmamış (OS sanal makinesi için 2 GB)2 GB
CPUContainer için yayınlanmamış (OS sanal makinesi için 2 vCPU)2 vCPU
DiskContainer için yayınlanmamış20 GB SSD; geçmiş veritabanı ve yedekler zamanla büyür

Uzak bir sunucuda neler çalışır

ÖzellikEvde Home Assistant OSUzak sunucuda Container
Otomasyonlar, panolar, entegrasyonlarEvetEvet
Uygulamalar (eski adıyla eklentiler) ve SupervisorEvetHayır; ek servisleri ayrı konteynerler olarak çalıştırın
Arayüzden yedeklemeEvetEvet
USB radyolar (Zigbee, Z-Wave, Thread) ve BluetoothEvet, yerel donanımlaHayır; yerel donanım yoktur
Evdeki cihazların otomatik keşfiEvet, ev ağındaHayır; cihazları VPN üzerinden IP adresiyle ekleyin

Home Assistant ayrıca Thread ve Z-Wave'in uygulamalar tarafından yönetildiğini, bu yüzden Container'da bunlar için hazır destek olmadığını belirtir.

Adım 1 — Compose dosyasını oluşturun

config alt klasörü olan bir proje klasörü, ardından Compose dosyasını oluşturun:

Bash
sudo mkdir -p /opt/homeassistant/config
sudo chown -R $USER:$USER /opt/homeassistant
cd /opt/homeassistant
nano compose.yaml

Config yolu doldurulmuş resmi örneği yapıştırın ve TZ değerini kendi saat diliminize ayarlayın:

YAML
services:
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    volumes:
      - /opt/homeassistant/config:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro
    restart: unless-stopped
    stop_grace_period: 60s
    privileged: true
    network_mode: host
    environment:
      TZ: Europe/Amsterdam

network_mode: host, Home Assistant'ın sunucunun ağını doğrudan kullanmasını sağlar; birçok entegrasyon bunu bekler. Bu aynı zamanda 8123 numaralı portun sıradan bir sunucu portu olduğu anlamına gelir; yani Docker'ın yayınladığı portların aksine ufw onu filtreler.

Adım 2 — Güvenlik duvarını kapatın ve Home Assistant'ı başlatın

8123 numaralı port internete kapalı kalsın diye yalnızca SSH'ye izin verin, ardından konteyneri başlatın:

Bash
sudo ufw allow OpenSSH
sudo ufw enable
docker compose up -d
docker compose ps
docker compose logs -f homeassistant

Log kurulum mesajlarını göstermeyi bırakana kadar bekleyin, ardından Ctrl+C'ye basın. Home Assistant'ın yerelde yanıt verdiğini kontrol edin:

Bash
curl -I http://127.0.0.1:8123
sudo ss -tlnp | grep 8123

curl HTTP başlıklarını yazdırır; ss ise Home Assistant'ın tüm adreslerde dinlediğini gösterir ve ufw bunu artık dışarıdan engeller.

Adım 3 — İlk kurulumu SSH tüneli üzerinden yapın

Home Assistant'ı ilk açan kişi sahip (owner) hesabını oluşturur. Bunu bir tünel üzerinden yapın. Kendi bilgisayarınızda şunu çalıştırın:

Bash
ssh -L 8123:127.0.0.1:8123 admin@203.0.113.10

http://localhost:8123 adresini açın, Create my smart home seçeneğini seçin ve bir ad, küçük harfli bir kullanıcı adı ve güçlü bir parola girin. Home Assistant sahip hesabı bilgilerinin kurtarılamayacağı konusunda uyarır; bu yüzden onları bir parola yöneticisinde saklayın. Ardından saat dilimini, birim sistemini ve para birimini de belirleyen ev konumunuzu ayarlayın, hangi anonim verileri paylaşacağınızı seçin (paylaşım varsayılan olarak kapalıdır) ve Finish seçeneğini seçin.

Çok aşamalı doğrulamayı hemen açın: kullanıcı profilinizi açın, Security sekmesine gidin ve kimlik doğrulayıcı uygulama (authenticator app) modülünü etkinleştirin.

Adım 4 — Caddy'yi reverse proxy olarak güvenilir yapın

Home Assistant, siz izin vermedikçe reverse proxy'lerden gelen istekleri engeller. Host ağında aynı sunucudaki Caddy 127.0.0.1 (veya ::1) adresinden bağlanır. 2026.8 sürümünden beri bu ayarlar configuration.yaml içinde değil, arayüzde bulunur:

  1. Settings → System → Network sayfasına gidin ve HTTP server bölümünü bulun.
  2. Trust X-Forwarded-For seçeneğini açın.
  3. Trusted proxies listesine 127.0.0.1 ve ::1 ekleyin.
  4. Enable IP banning seçeneğini açın ve Login attempts before ban değerini 5 gibi düşük bir sayıya ayarlayın.
  5. Kaydedin. Home Assistant yeniden başlar ve ardından yeni ayarları onaylamanız gerekir; aksi hâlde 5 dakika sonra önceki ayarlara döner.

configuration.yaml içinde hâlâ bir http: bloğu bulunan eski bir kurulumu yükseltirseniz Home Assistant bu bloğu bir kez bu ayarlara aktarır ve ardından bloğu kaldırmanızı isteyen bir onarım (repair) gösterir.

Adım 5 — Home Assistant'ı Caddy ile HTTPS üzerinden yayınlayın

Web portlarını açın ve /etc/caddy/Caddyfile dosyasına bir site bloğu ekleyin. Caddy, Home Assistant arayüzünün kullandığı WebSocket bağlantılarını ek ayar gerekmeden aktarır:

Caddyfile
ha.example.com {
    reverse_proxy 127.0.0.1:8123
}
Bash
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo systemctl reload caddy
curl -I https://ha.example.com

Geçerli bir sertifikayla HTTP yanıtı almalısınız. Bağlantıların ve yardımcı (companion) uygulamaların bu adresi kullanması için Settings → System → Network altında internet için Home Assistant adresini https://ha.example.com olarak ayarlayın.

Adım 6 — Evdeki cihazlarınıza WireGuard üzerinden ulaşın

Sunucudaki Home Assistant yalnızca ağ üzerinden ulaşabildiği cihazları yönetebilir. Olağan düzen siteden siteye (site-to-site) bir VPN'dir: sunucu WireGuard çalıştırır, evdeki bir yönlendirici veya küçük bir cihaz ise ev alt ağınızı (örneğin 192.168.1.0/24) yönlendiren bir eş (peer) olarak katılır. Bunu WireGuard VPN sunucusu nasıl kurulur rehberiyle kurun ve ev alt ağını o eşin izin verilen IP'lerine (allowed IPs) ekleyin.

Sunucudan evdeki bir cihazın yanıt verdiğini kontrol edin, ardından entegrasyonunu Home Assistant'ta IP adresiyle ekleyin:

Bash
ping -c 3 192.168.1.10

Otomatik keşif (mDNS, SSDP) yönlendirilen bir VPN'i aşamaz; bu yüzden cihazlar kendiliğinden bulunmaz, ancak çoğu entegrasyon adresi elle girmenize izin verir. VPN'i, Home Assistant'ı Caddy ile yayınlamak yerine telefonunuzdan açmak için de kullanabilirsiniz. Porta yalnızca VPN arayüzünde izin verin:

Bash
sudo ufw allow in on wg0 to any port 8123 proto tcp

Yedekleme ve geri yükleme

Home Assistant'ın bildiği her şey config klasöründe, /opt/homeassistant/config içinde durur: configuration.yaml, panoları ve entegrasyonları tutan gizli .storage klasörü ve geçmiş veritabanı.

Arayüzden yedekler. Settings → System → Backups sayfasına gidin, Backup now ve ardından Manual backup seçeneğini seçin ya da eski yedekleri de silen otomatik yedeklemeyi kurun. Acil durum kitini (emergency kit) indirin ve güvenli bir yerde saklayın; şifreli yedekleri geri yüklemek için gereken anahtarı içerir. Container'da yerel yedekler, koruduğu klasörün içine, /opt/homeassistant/config/backups konumuna yazılır; bu yüzden onları başka bir yere kopyalayın veya aynı ekrandan bir ağ ya da bulut yedek konumu ekleyin.

Klasör yedeği. Konteyneri durdurun, config klasörünün tamamını arşivleyin ve konteyneri yeniden başlatın:

Bash
sudo mkdir -p /opt/backups
cd /opt/homeassistant
docker compose stop
sudo tar czf /opt/backups/homeassistant-config-$(date +%F).tar.gz -C /opt/homeassistant config
docker compose start

/opt/backups klasörünü rsync veya scp ile başka bir makineye kopyalayın.

Geri yükleme. Arayüzde Settings → System → Backups sayfasını açın, bir yedek seçin ve Restore seçeneğini seçin. Yeni bir kurulumda karşılama ekranı, yeni bir ev oluşturmak yerine bir yedek yüklemenize izin verir. Klasör arşivini geri yüklemek için konteyneri durdurun, mevcut klasörü kenara taşıyın ve arşivi açın:

Bash
cd /opt/homeassistant
docker compose down
sudo mv config config.old
sudo tar xzf /opt/backups/homeassistant-config-2026-10-09.tar.gz -C /opt/homeassistant
docker compose up -d

Home Assistant güncelleme

Önce sürüm notlarını, özellikle Backward-incompatible changes bölümünü okuyun ve bir yedek alın. Ardından Container belgelerinde anlatıldığı gibi yeni imajı çekin ve konteyneri yeniden oluşturun:

Bash
cd /opt/homeassistant
docker compose pull homeassistant
docker compose up -d
docker image prune

Sonrasında Settings → System → Repairs sayfasını ve logları kontrol edin. stable etiketi her zaman en son kararlı sürümü gösterir. Güncellemeleri denetlemek için onu 2026.10.0 gibi belirli bir sürüm etiketiyle değiştirin; bu aynı zamanda önceki bir sürüme dönmenizi de sağlar.

Elle yaptığınız YAML değişikliklerinden sonra yeniden başlatmadan önce yapılandırmayı doğrulayın:

Bash
docker exec homeassistant python -m homeassistant --script check_config --config /config

Sorun giderme

Alan adını açtığınızda 400: Bad Request

Home Assistant proxy'ye güvenmiyor. Adım 4'ü tekrarlayın, güvenilen proxy'ler arasında hem 127.0.0.1 hem de ::1 bulunduğundan emin olun, ardından docker compose logs homeassistant ile logda reverse proxy'den gelen bir istekle ilgili mesaj olup olmadığına bakın.

Ağ ayarları birkaç dakika sonra geri döndü

HTTP server ayarlarını kaydettikten sonra Home Assistant yeniden başlar ve bir yöneticinin onları onaylamasını bekler. 5 dakika içinde kimse onaylamazsa önceki ayarları geri yükler. Yeniden kaydedin ve onaylayın.

Tarayıcınızdan 8123 numaralı porta ulaşılamıyor

Bu amaçlanan davranıştır: ufw portu engeller. SSH tünelini, VPN'i veya Caddy alan adını kullanın. WireGuard üzerinden erişim bekliyorsanız wg0 kuralının var olduğunu sudo ufw status ile kontrol edin.

Evdeki cihazlar keşfedilmiyor

Keşif protokolleri VPN'i aşamaz. Sunucunun cihaza ping ile ulaşabildiğini kontrol edin, ardından entegrasyonu cihazın IP adresiyle elle ekleyin. ping başarısız olursa ev alt ağı WireGuard eşinin izin verilen IP'lerinde eksiktir veya ev yönlendiricisi onu yönlendirmiyordur.

configuration.yaml düzenlendikten sonra Home Assistant başlamıyor

Bir YAML hatası yapılandırmanın yüklenmesini durdurur. Güncelleme bölümündeki check_config komutunu çalıştırın, bildirilen satırları düzeltin ve konteyneri docker compose up -d ile yeniden başlatın.

Sonraki adımlar

Sık sorulan sorular

Home Assistant OS ile Home Assistant Container arasındaki fark nedir?

Home Assistant OS; uygulamaları (eski adıyla eklentileri) ve tek tıkla güncellemeleri yöneten Supervisor'ı içeren eksiksiz bir işletim sistemidir. Home Assistant Container ise aynı çekirdek uygulamanın Docker imajıdır: uygulama desteği yoktur ve yeni bir imaj çekerek güncellenir.

Uzak bir sunucudaki Home Assistant ile Zigbee veya Z-Wave çubukları kullanabilir miyim?

Doğrudan hayır. USB radyolar ve Bluetooth, Home Assistant'ı çalıştıran makineye takılı olmalıdır ve bir veri merkezi sunucusunun evinize erişimi yoktur. Evinizin ağına VPN üzerinden ulaşılan, ağ tabanlı cihazları ve entegrasyonları kullanın.

Home Assistant Caddy arkasında neden 400 Bad Request döndürüyor?

Home Assistant güvenmediği reverse proxy'lerden gelen istekleri engeller. Settings, System, Network sayfasını açın, HTTP server bölümünde Trust X-Forwarded-For seçeneğini açın, güvenilen proxy olarak 127.0.0.1 ve ::1 ekleyin ve yeniden başlatmadan sonra yeni ayarları onaylayın.

Home Assistant Container yedeklemeyi destekliyor mu?

Evet. Yedekleme entegrasyonu tüm kurulum türlerinde yedek oluşturur ve geri yükler. Container'da yerel yedekler config klasörünün içindeki backups klasöründe saklanır; bu yüzden onları sunucunun dışına kopyalayın veya uzak bir yedek konumu ekleyin.

Home Assistant hangi HyperDC sunucularında çalışır?

Home Assistant Container, root erişimi ve Docker Engine 23 veya daha yenisi olan bir HyperDC Linux VPS, VDS veya dedicated sunucuda çalışır. Orada en çok, VPN üzerinden ulaşılan ağ ve bulut entegrasyonları için merkezi bir hub olarak işe yarar.

Kaynaklar

Şifre Oluştur

Lütfen onaylayın