Evinizde çalışan Home Assistant akıllı ev otomasyon sisteminize dış ağdan, cep telefonunuzdaki Companion uygulamasıyla ya da web tarayıcınızdan kilit simgeli, uçtan uca şifreli (HTTPS) bir bağlantıyla erişmek istiyorsunuz. Ancak çoğu ev internet aboneliğinde internet servis sağlayıcısı (İSS), modem her yeniden başladığında değişen dinamik bir IP adresi atar ve “SSL sertifikası ile DDNS yapılandırması” ilk bakışta karmaşık görünebilir.
Bu kapsamlı rehberde, sabit IP ücreti ödemeden ve üçüncü taraf bulut tünellerine bağımlı kalmadan kendi alan adınızla güvenli uzaktan erişim altyapısını adım adım kuruyoruz. Rehberin sonunda şu yapıya sahip olacaksınız:
https://home.ornekalanadi.comgibi kendi özel alan adınızla çalışan kurumsal düzeyde bir Home Assistant adresi,- Ücretsiz ve otomatik olarak yenilenen bir Let’s Encrypt SSL/TLS sertifikası,
- Modem IP adresiniz değişse bile alan adınızı dakikalar içinde güncelleyen cPanel Dynamic DNS (DDNS) veya Cloudflare DNS mekanizması,
- Elektrik ve internet kesintilerinden sonra sistemi kendi kendine toparlayıp mobil bildirim gönderen ve sertifika süresini denetleyen iki hazır Home Assistant otomasyonu.
Neden Bu Rehberde DuckDNS Yok? DuckDNS uzun yıllar en popüler ücretsiz DDNS servisiydi ve eski rehberlerin büyük çoğunluğu onu temel alır. Ancak son dönemde yaşanan sık erişim kesintileri, IP güncellemelerinin gecikmesi ve Let’s Encrypt doğrulama zaman aşımları nedeniyle akıllı evinizin uzaktan erişimini DuckDNS’e emanet etmeyi artık önermiyoruz. Bu rehberde kendi alan adınızı kullandığınız, çok daha kararlı ve kontrolü tamamen sizde olan yöntemlere odaklanıyoruz.
Temel Kavramlar: DDNS, SSL ve Port Yönlendirme Nedir?
Uygulama adımlarına geçmeden önce beş temel ağ kavramını netleştirmek, kurulum sırasında veya ileride karşılaşabileceğiniz bağlantı sorunlarını dakikalar içinde teşhis etmenizi sağlar:
- Dış IP (WAN IP): İnternet servis sağlayıcınızın modeminize verdiği, internetteki “ev adresinizdir”. Standart ev aboneliklerinde bu adres dinamiktir; yani modem kapandığında veya servis sağlayıcı oturumu yenilediğinde değişir.
- İç IP (LAN IP): Modemin evinizdeki cihazlara dağıttığı
192.168.1.xbiçimindeki yerel adreslerdir. Örneğin Raspberry Pi üzerine kurulu işletim sisteminizin veya mini bilgisayarınızın yerel ağda192.168.1.50gibi sabit bir iç IP’si bulunur. - DDNS (Dinamik DNS): Alan adınızın (ör.
home.ornekalanadi.com) her zaman güncel dış IP adresinizi göstermesini sağlayan sistemdir. Evdeki Home Assistant sunucunuz belirli aralıklarla DNS sağlayıcınıza “benim güncel dış IP adresim şu an bu” bilgisini iletir ve A kaydı otomatik güncellenir. - SSL / HTTPS Sertifikası: Tarayıcıdaki kilit simgesidir. Cihazınız ile Home Assistant arasındaki veri trafiğinin şifrelendiğini ve gerçekten kendi sunucunuza bağlandığınızı kanıtlar. Let’s Encrypt bu sertifikaları ücretsiz üretir; sertifikalar 90 gün geçerlidir ve kalan süre 30 günün altına düştüğünde eklenti tarafından otomatik yenilenir.
- Port Yönlendirme (Port Forwarding): İnternetten modeminize gelen bir bağlantı isteğini evinizdeki doğru cihaza aktaran kuraldır. Bunu “modemin 443 numaralı kapısına gelen ziyaretçiyi içerideki Home Assistant’ın 8123 numaralı kapısına yönlendir” komutu gibi düşünebilirsiniz.
Sistem Mimarisi ve Bağlantı Akışı
[Mobil Cihaz / Dış Ağ (Mobil Veri)]
│ İstek: https://home.ornekalanadi.com (Port 443)
▼
[DNS Sunucusu: home.ornekalanadi.com ──► 85.x.x.x] ◄── (DDNS kaydı güncel tutar)
│
▼
[Ev Modemi (WAN IP: 85.x.x.x)]
│ Port Yönlendirme: Dış 443 ──► İç 192.168.1.50:8123
│ Port Yönlendirme: Dış 80 ──► İç 192.168.1.50:80 (Let's Encrypt HTTP doğrulaması)
▼
[Home Assistant (192.168.1.50:8123)]
└── Let's Encrypt SSL Sertifikası (/ssl/fullchain.pem & privkey.pem)
Başlamadan Önce CGNAT (Carrier-Grade NAT) Kontrolü
Bu adımı kesinlikle atlamayın; port yönlendirme tabanlı tüm uzaktan erişim yöntemlerinin çalışıp çalışmayacağını CGNAT durumu belirler. Bazı internet servis sağlayıcıları, IPv4 adresi kısıtlılığı ve maliyet nedeniyle birden fazla aboneye aynı dış IP adresini paylaştırır. CGNAT arkasındaysanız modeminizde port açsanız bile dış dünyadan gelen paketler modeminize ulaşamaz.
- Modem arayüzünüze (genellikle
192.168.1.1) giriş yapın ve WAN / İnternet Durumu sayfasındaki IPv4 adresini not edin. - Aynı ağa bağlı bir bilgisayardan veya telefondan api.ipify.org adresine girerek internette görünen dış IP adresinizi kontrol edin.
- İki adresi karşılaştırın:
- İki adres birebir aynıysa: Gerçek (public) bir dış IP adresiniz var demektir; rehberdeki adımlara doğrudan devam edebilirsiniz.
- Modemdeki WAN IP adresi
100.64.x.xile100.127.x.xaralığındaysa veya iki adres birbirinden farklıysa: CGNAT havuzundasınız demektir.
CGNAT Arkasındaysanız Çözüm Nedir? İnternet sağlayıcınızın müşteri hizmetlerini arayarak CGNAT havuzundan çıkarılmayı veya statik/dinamik gerçek IP tanımlanmasını talep edebilirsiniz. Eğer sağlayıcınız bunu sunmuyorsa port yönlendirme gerektirmeyen Home Assistant Link (Nabu Casa) veya Cloudflare Tunnel (cloudflared) çözümlerini tercih etmeniz gerekir.
Alan Adı ve DDNS Seçenekleri Karşılaştırması
Bu yapı için iki bileşene ihtiyacınız var: kendinize ait bir alan adı (domain) ve bu alan adının DNS A kaydını otomatik güncelleyebilen bir DDNS servisi.
Kendi Alan Adınızla DDNS Sunan Servisler
| Servis | Maliyet | Güncelleme Yöntemi | Kimler İçin Uygun? |
|---|---|---|---|
| cPanel Dynamic DNS | Mevcut hosting paketinize dahil | cPanel’in ürettiği özel webcall URL’sini curl ile çağırmak | Halihazırda cPanel tabanlı bir web hosting paketi kullananlar |
| Cloudflare DNS | Ücretsiz | Home Assistant resmi Cloudflare entegrasyonu veya API | Alan adının nameserver kayıtlarını Cloudflare’e taşıyabilenler (en popüler ücretsiz çözüm) |
| deSEC (desec.io) | Ücretsiz (Kâr amacı gütmeyen) | Standart dynDNS güncelleme protokolü / HTTPS isteği | Gizlilik ve veri güvenliğine öncelik veren Avrupa merkezli yapı arayanlar |
| FreeDNS (afraid.org) | Ücretsiz (Temel paket) | Özel güncelleme URL’si / curl | Kendi alan adını hızlıca basit bir URL ile güncellemek isteyenler |
| Dynu DNS | Ücretsiz (Temel paket) | Güncelleme URL’si veya REST API | Alternatif ücretsiz DDNS sağlayıcısı arayanlar |
Ücretsiz Alan Adı Seçenekleri ve Freenom Uyarısı
Henüz bir alan adınız yoksa ve ücretsiz alternatifleri değerlendirmek istiyorsanız şu iki servis öne çıkmaktadır:
- DigitalPlat FreeDomain:
.us.kg,.dpdns.org,.qzz.io,.xx.kgve.qd.jeuzantılı ücretsiz alan adları sağlar. Hesap başına 1 alan adı tanımlanabilir ve kendi ad sunucularınızı (nameserver) girmenize izin verdiği için Cloudflare ile tam uyumlu çalışır. - EU.org: 1996 yılından bu yana ücretsiz alt alan adı (ör.
adiniz.eu.org) sağlayan köklü ve kâr amacı gütmeyen bir kuruluştur. Başvurular manuel onaylandığı için aktifleşmesi birkaç gün sürebilir.
Önemli Uyarı: Eski rehberlerde sıkça önerilen Freenom (
.tk,.ml,.ga,.cf,.gq) uzantıları artık yeni kayıt almamaktadır ve Cloudflare API’si ile Home Assistant Cloudflare entegrasyonu bu uzantıları desteklememektedir. Uzun vadeli kararlılık için yıllık birkaç dolara standart bir.com,.netveya.com.tralan adı tescil etmeniz en sağlıklı yaklaşımdır.
Yöntem A: cPanel Dynamic DNS Kurulumu
Bir web siteniz varsa ve hosting panelinizde cPanel kullanıyorsanız, ek hiçbir servise üye olmadan doğrudan cPanel’in yerleşik Dynamic DNS özelliğini kullanabilirsiniz.
cPanel Üzerinde DDNS Alt Alan Adı Oluşturma
- cPanel’e giriş yapın ve Domains (Alan Adları) sekmesi altındaki Dynamic DNS simgesine tıklayın (bu simge görünmüyorsa hosting sağlayıcınızdan aktif etmelerini isteyebilirsiniz).
- Create (Oluştur) düğmesine tıklayın.
- Dynamic DNS Domain alanına alt alan adınızı yazın (ör.
home) ve açılır menüden ana alan adınızı seçin (sonuç:home.ornekalanadi.com). - Açıklama kısmına
Home Assistantyazıp Create düğmesiyle kaydedin. - cPanel size aşağıdaki formatta benzersiz bir webcall URL’si üretecektir:
https://ornekalanadi.com/cpanelwebcall/abcdefghijklmnopqrstuvwxyzabcdef
Güvenlik Notu: Bu URL bir parola niteliğindedir; adresi bilen herhangi biri alt alan adınızın IP yönlendirmesini değiştirebilir. Bu adresi kimseyle paylaşmayın. Yanlışlıkla ifşa olursa cPanel üzerinden Action > Recreate URL seçeneğiyle eski bağlantıyı geçersiz kılıp yeni bir anahtar üretebilirsiniz.
Home Assistant’a DDNS Güncelleme Komutunu Tanıtma
Home Assistant’ın bu gizli adresi periyodik olarak çağırabilmesi için bir shell_command tanımlayacağız. Gizli webcall adresini doğrudan yapılandırma dosyasına yazmak yerine secrets.yaml içinde saklıyoruz.
File Editor veya Studio Code Server eklentisiyle secrets.yaml dosyanızı açıp şu satırı ekleyin:
# secrets.yaml — bu dosyayı asla herkese açık paylaşmayın
cpanel_ddns_komut: "curl -s https://ornekalanadi.com/cpanelwebcall/abcdefghijklmnopqrstuvwxyzabcdef"
Ardından configuration.yaml dosyanıza aşağıdaki bloğu ekleyin:
# configuration.yaml
shell_command:
update_ddns: !secret cpanel_ddns_komut
Dosyayı kaydettikten sonra Geliştirici Araçları > YAML > YAML yapılandırmasını kontrol et adımıyla sözdizimini doğrulayın ve Home Assistant’ı yeniden başlatın. Yeniden başlatma sonrasında Geliştirici Araçları > Eylemler (Actions) sekmesinden shell_command.update_ddns servisini çağırarak cPanel ekranında IP adresinizin güncellendiğini hemen test edebilirsiniz.
Yöntem B: Cloudflare ile Ücretsiz DDNS Kurulumu
cPanel hosting kullanmıyorsanız en güçlü ücretsiz alternatif Home Assistant’ın resmi Cloudflare entegrasyonudur.
Alan Adını Cloudflare’e Bağlama ve A Kaydı Ekleme
- Cloudflare üzerinde ücretsiz bir hesap açın, Add a site diyerek alan adınızı ekleyin ve Free planı seçin.
- Cloudflare’in size verdiği iki nameserver adresini, alan adınızı satın aldığınız firmanın paneline girerek ad sunucularınızı güncelleyin.
- Cloudflare DNS sekmesinde yeni bir A kaydı oluşturun:
- Name:
home - IPv4 address: Mevcut dış IP adresiniz
- Proxy status: DNS only (Gri Bulut). Turuncu bulut (Proxy) açık bırakılırsa özel portlara erişimde veya SSL doğrulamasında yönlendirme döngüsü (ERR_TOO_MANY_REDIRECTS) ve bağlantı hataları yaşanabilir.
- Name:
Cloudflare API Token ve Entegrasyon Ayarları
- Cloudflare’de sağ üstteki profil menüsünden My Profile > API Tokens > Create Token sayfasına gidin ve Edit zone DNS şablonunu seçin.
- Permissions bölümünde hem
Zone > Zone > Readhem deZone > DNS > Editizinlerinin ekli olduğundan emin olun. - Zone Resources kısmında
Include > Specific zone > ornekalanadi.comseçip token’ı üretin ve kopyalayın. - Home Assistant’ta Ayarlar > Cihazlar ve Hizmetler > Entegrasyon Ekle > Cloudflare yolunu izleyin; API anahtarınızı yapıştırıp
homealt alan adını seçin.
Resmi entegrasyon IP adresinizi varsayılan olarak saatte bir günceller. Kesintilerden sonra daha hızlı tepki vermesi için aşağıdaki otomasyonla her 10 dakikada bir ve sistem açılışında güncelleme tetikleyebilirsiniz:
alias: "DDNS: Cloudflare IP Güncelle"
description: >-
Home Assistant açıldığında ve her 10 dakikada bir Cloudflare üzerindeki
A kaydını güncel dış IP adresiyle günceller.
triggers:
- trigger: homeassistant
event: start
- trigger: time_pattern
minutes: /10
conditions: []
actions:
- action: cloudflare.update_records
data: {}
mode: single
Modemde Port Yönlendirme: Hangi Portlar ve Neden Açılmalı?
Kurulumların en sık takıldığı aşama modem üzerindeki port yönlendirme kurallarıdır. Öncelikle Home Assistant’ın çalıştığı cihazın yerel ağdaki IP adresinin (ör. 192.168.1.50) zamanla değişmemesi için modeminizin DHCP Statik IP Rezervasyonu menüsünden MAC adresini sabitleyin veya Home Assistant’ta Ayarlar > Sistem > Ağ altından IPv4 adresini Statik olarak ayarlayın.
| Dış Port (WAN) | İç IP (LAN) | İç Port (LAN) | Protokol | Kullanım Amacı | Zorunluluk Durumu |
|---|---|---|---|---|---|
| 80 | 192.168.1.50 | 80 | TCP | Let’s Encrypt HTTP-01 doğrulaması. İlk sertifika alımında ve her 60-90 günlük yenilemede doğrulama sunucuları bu porttan bağlanır. | HTTP doğrulaması (cPanel DDNS vb.) kullanıyorsanız ZORUNLU. Cloudflare DNS doğrulamasında gerekmez. |
| 443 | 192.168.1.50 | 8123 | TCP | Dış ağdan standart HTTPS erişimi. Tarayıcı veya uygulamada sonuna port yazmadan doğrudan https://home.ornekalanadi.com ile bağlanmanızı sağlar. | Uzaktan erişim için kesinlikle önerilir. |
| (Alternatif) 8123 | 192.168.1.50 | 8123 | TCP | 443 yerine tercih edilirse bağlantı adresi https://home.ornekalanadi.com:8123 şeklinde kullanılır. | Yalnızca 443 kuralı tanımlanmadıysa. |
Port Yönlendirmede Kritik Kurallar
- 80 Portu “Bir Kere Açılıp Kapatılacak” Bir Port Değildir: HTTP doğrulaması kullanıyorsanız sertifika her yenilendiğinde Let’s Encrypt sunucuları 80 portunu tekrar kontrol eder. Kuralı silerseniz sistem ilk 90 gün çalışır ancak ilk yenilemede sertifika süresi dolar ve mobil uygulamanız kilitlenir.
- 80 Portu Güvenlik Açığı Oluşturmaz mı? 80 portundan Home Assistant arayüzüne erişilmez. Bu portu yalnızca Let’s Encrypt eklentisi, doğrulama yaptığı birkaç saniye boyunca geçici mini web sunucusu için açar ve işlem biter bitmez kapatır; diğer zamanlarda port üzerinde dinleyen hiçbir servis yoktur.
- Modem Uzaktan Yönetim Çakışması: Modeminizin kendi “Uzaktan Web Yönetimi (Remote Management)” özelliği 80 veya 443 portunu kullanıyorsa mutlaka devre dışı bırakın veya farklı bir porta taşıyın.
- Asla Açılmaması Gereken Portlar: SSH (
22), MQTT (1883), Samba veya veritabanı portlarını kesinlikle internete açmayın; ESP32 tabanlı akıllı ev sensörleriniz ve yerel MQTT trafiğiniz yalnızca ev içi LAN üzerinde kalmalıdır.
Let’s Encrypt Eklentisinin Kurulumu ve Yapılandırılması
- Home Assistant’ta Ayarlar > Eklentiler > Eklenti Mağazası menüsüne girin.
- Resmi Let’s Encrypt eklentisini bulup Yükle düğmesine basın.
- Yapılandırma tamamlanana kadar Başlangıçta başlat (Start on boot) seçeneğini kapalı tutun.
HTTP Doğrulaması ile Yapılandırma (cPanel ve Genel DDNS İçin)
Eklentinin Yapılandırma sekmesinde sağ üstteki üç nokta menüsünden YAML olarak düzenle seçeneğine tıklayın ve aşağıdaki ayarları girin:
domains:
- home.ornekalanadi.com
email: eposta@ornek.com
keyfile: privkey.pem
certfile: fullchain.pem
challenge: http
Aynı sayfanın altındaki Ağ (Network) bölümünde 80/tcp karşısında 80 yazdığından emin olun ve kaydedin.
DNS Doğrulaması ile Yapılandırma (Cloudflare Kullanıcıları İçin – 80 Portu Gerekmez)
Alan adınızı Cloudflare üzerinde yönetiyorsanız 80 portunu hiç açmadan doğrudan DNS-01 doğrulaması kullanabilirsiniz:
domains:
- home.ornekalanadi.com
email: eposta@ornek.com
keyfile: privkey.pem
certfile: fullchain.pem
challenge: dns
dns:
provider: dns-cloudflare
cloudflare_api_token: BURAYA_CLOUDFLARE_API_TOKENINIZ
Eklentiyi Başlatma ve Sertifika Üretimini Doğrulama
Eklentinin Bilgi sekmesinden Başlat düğmesine basın ve Günlük (Log) sekmesini izleyin. Doğrulama başarılı olduğunda şu çıktıyı göreceksiniz:
Successfully received certificate.
Certificate is saved at: /data/letsencrypt/live/home.ornekalanadi.com/fullchain.pem
Sertifika alındıktan birkaç saniye sonra eklentinin kendiliğinden durması tamamen normaldir. Let’s Encrypt eklentisi arka planda sürekli çalışan bir daemon değildir; tetiklendiğinde sertifika süresini kontrol eder, süresi yaklaşmışsa yeniler ve kapanır.
Home Assistant’ı HTTPS Moduna Geçirmek
Üretilen sertifika dosyaları artık /ssl/ dizininde hazırdır. configuration.yaml dosyanızı açın ve aşağıdaki http: bloğunu ekleyin:
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
ip_ban_enabled: true
login_attempts_threshold: 5
YAML kontrolünü yapıp Home Assistant’ı yeniden başlattıktan sonra Ayarlar > Sistem > Ağ menüs에서 İnternet (Harici) URL alanına https://home.ornekalanadi.com adresini tanımlayın.
Önemli Değişiklik: Bu adımdan itibaren şifresiz
http://192.168.1.50:8123adresi artık yanıt vermez; Home Assistant yalnızca HTTPS bağlantılarını kabul eder. Yerel IP üzerindenhttps://192.168.1.50:8123ile girdiğinizde tarayıcının sertifika uyarısı vermesi normaldir çünkü SSL sertifikası IP adresine değil alan adına (home.ornekalanadi.com) düzenlenmiştir. Hem mobil uygulamada hem tarayıcıda her zaman alan adınızı kullanın.
Otomasyon 1: Elektrik Kesintisi Takibi ve Otomatik DDNS Kurtarma
Evde elektrik kesilip geldiğinde genellikle iki sorun aynı anda yaşanır: Modem yeni bir dış IP adresi alır ve Home Assistant cihazı (ör. Raspberry Pi) fiber/VDSL modemden daha hızlı açıldığı için ilk açılış anında henüz internet bağlantısı yoktur. Sahada aktif kullandığımız bu otomasyon dört görevi tek çatı altında çözer:
- Nabız Kaydı: Her dakika
input_datetime.son_nabizyardımcısına güncel zaman damgasını yazar. - Kesinti Tespiti ve Gecikmeli Kurtarma: Sistem açıldığında son nabız ile mevcut zaman arasındaki fark 2 dakikadan (120 sn) fazlaysa kesinti olduğunu algılar; modemin internete bağlanması için 1 dakika bekler, ardından DDNS’i günceller, güncel dış IP adresiyle telefonunuza bildirim gönderir ve Let’s Encrypt eklentisini tetikler.
- Periyodik Güncelleme: Her 10 dakikada bir DDNS kaydını tazeler.
- Canlı Test Modu: Gerçek kesinti beklemeden
elektrik_kesintisi_testolayıyla bildirim akışını test etmenizi sağlar.
Ön Hazırlık: Yardımcı (Helper) ve Dış IP Sensörü
İlk olarak Ayarlar > Cihazlar ve Hizmetler > Yardımcılar > Yardımcı Oluştur > Tarih ve/veya saat adımlarını izleyerek Son Nabız adında, hem tarih hem saat içeren (input_datetime.son_nabiz) bir yardımcı oluşturun. Ardından bildirim mesajında güncel dış IP adresinizi görmek için configuration.yaml dosyasına şu REST sensörünü ekleyin:
sensor:
- platform: rest
name: Dis IP Adresi
resource: https://api.ipify.org?format=json
value_template: "{{ value_json.ip }}"
scan_interval: 600
Elektrik Kesintisi ve DDNS Otomasyon YAML Kodu
alias: "Elektrik Kesintisi Takibi ve DDNS"
description: >-
Her dakika nabız kaydeder. Açılışta 2 dakikadan uzun kesinti tespit ederse
bildirim gönderir, DDNS'i günceller ve Let's Encrypt eklentisini çalıştırır.
Ayrıca her 10 dakikada bir DDNS'i günceller.
triggers:
- trigger: time_pattern
minutes: /1
id: nabiz_guncelle
- trigger: homeassistant
event: start
id: sistem_baslangic
- trigger: time_pattern
minutes: /10
id: dns_guncelle
- trigger: event
event_type: elektrik_kesintisi_test
id: elektrik_kesintisi_test
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id: nabiz_guncelle
sequence:
- action: input_datetime.set_datetime
target:
entity_id: input_datetime.son_nabiz
data:
timestamp: "{{ now().timestamp() }}"
- conditions:
- condition: trigger
id: sistem_baslangic
- condition: template
value_template: >
{{ states('input_datetime.son_nabiz') not in
['unknown', 'unavailable', 'none', ''] }}
sequence:
- variables:
kesinti_saniye: >
{{ (now().timestamp() -
as_timestamp(states('input_datetime.son_nabiz'), 0)) | int }}
kesinti_dakika: >
{{ ((now().timestamp() -
as_timestamp(states('input_datetime.son_nabiz'), 0)) / 60)
| round(1) }}
- condition: template
value_template: "{{ kesinti_saniye > 120 }}"
- action: input_datetime.set_datetime
target:
entity_id: input_datetime.son_nabiz
data:
timestamp: "{{ now().timestamp() }}"
- delay:
minutes: 1
- action: shell_command.update_ddns
data: {}
- variables:
dis_ip: >
{% set ip = states('sensor.dis_ip_adresi') %}
{% if ip not in ['unknown', 'unavailable', 'none', ''] %}{{ ip }}{% else %}Bilinmiyor{% endif %}
- action: notify.mobile_app_telefonum
data:
title: "Muhtemel Elektrik Kesintisi"
message: >
Yeniden başlama algılandı. Sistem yaklaşık {{ kesinti_dakika }}
dakika kapalı kaldı. Güncel IP adresi: {{ dis_ip }}.
DDNS güncellendi, sertifika kontrolü başlatıldı.
- action: hassio.addon_start
data:
addon: core_letsencrypt
- conditions:
- condition: trigger
id: elektrik_kesintisi_test
sequence:
- variables:
test_kesinti_saniye: 900
test_kesinti_dakika: "{{ (900 / 60) | round(1) }}"
dis_ip: >
{% set ip = states('sensor.dis_ip_adresi') %}
{% if ip not in ['unknown', 'unavailable', 'none', ''] %}{{ ip }}{% else %}Bilinmiyor{% endif %}
- action: notify.mobile_app_telefonum
data:
title: "TEST - Muhtemel Elektrik Kesintisi"
message: >
Elektrik kesintisi testi başarıyla çalıştı. Simüle edilen kesinti:
{{ test_kesinti_dakika }} dakika ({{ test_kesinti_saniye }} saniye).
IP adresi: {{ dis_ip }}. Test sırasında DDNS ve Let's Encrypt
çalıştırılmadı.
- conditions:
- condition: trigger
id: dns_guncelle
sequence:
- action: shell_command.update_ddns
data: {}
mode: single
max_exceeded: silent
Otomasyon 2: Günlük SSL Sertifika Kontrolü ve Otomatik Yeniden Başlatma
Çoğu kullanıcının gözden kaçırdığı kritik bir teknik detay vardır: Let’s Encrypt eklentisi sertifikayı diskte yenilese bile, Home Assistant yeniden başlatılana kadar bellekteki (RAM) eski sertifikayı sunmaya devam eder.
Bunu tam otomatik hale getirmek için önce Ayarlar > Cihazlar ve Hizmetler > Entegrasyon Ekle > Certificate Expiry entegrasyonunu kurup alan adınızı (home.ornekalanadi.com, port 443 veya 8123) ekleyin. Ardından oluşan sensör adını (ör. sensor.sertifika_bitis) aşağıdaki otomasyonda kullanarak her gece 04:00’te sertifikayı kontrol ettirebilir ve yenilendiğinde Home Assistant’ın kendisini otomatik yeniden başlatmasını sağlayabilirsiniz:
alias: "SSL: Günlük Sertifika Kontrolü"
description: >-
Her gün Let's Encrypt eklentisini çalıştırır. Yenilenmiş sertifikayı
devreye almak için gerekirse Home Assistant'ı yeniden başlatır ve
yenileme başarısızsa uyarı gönderir.
triggers:
- trigger: time
at: "04:00:00"
conditions: []
actions:
- action: hassio.addon_start
data:
addon: core_letsencrypt
- delay:
minutes: 3
- action: homeassistant.update_entity
target:
entity_id: sensor.sertifika_bitis
- delay:
seconds: 30
- variables:
kalan_gun: >
{% set bitis = states('sensor.sertifika_bitis') %}
{% if bitis in ['unknown', 'unavailable', 'none', ''] %}-1
{% else %}{{ ((as_timestamp(bitis) - now().timestamp()) / 86400) | int }}{% endif %}
- choose:
- conditions:
- condition: template
value_template: "{{ kalan_gun | int < 0 }}"
sequence:
- action: notify.mobile_app_telefonum
data:
title: "SSL Kontrolü: Sertifika okunamadı"
message: >
Sertifika bitiş tarihi okunamadı. Alan adınızın ve port
yönlendirmenizin çalıştığını kontrol edin.
- conditions:
- condition: template
value_template: "{{ kalan_gun | int < 14 }}"
sequence:
- action: notify.mobile_app_telefonum
data:
title: "SSL UYARISI: Sertifika yenilenemiyor"
message: >
Sertifikanın bitmesine {{ kalan_gun }} gün kaldı ve hâlâ
yenilenmedi. Let's Encrypt eklentisinin günlüğüne bakın;
en sık neden modemde 80 portunun yönlendirilmemiş olmasıdır.
- action: homeassistant.restart
- conditions:
- condition: template
value_template: "{{ kalan_gun | int < 29 }}"
sequence:
- action: notify.mobile_app_telefonum
data:
title: "SSL: Sertifika yenilendi"
message: >
Kullanılan sertifikanın bitmesine {{ kalan_gun }} gün kalmıştı.
Yeni sertifikayı devreye almak için Home Assistant yeniden
başlatılıyor.
- action: homeassistant.restart
mode: single
Gerçek Bir Vaka Analizi: 80 Portu Yüzünden Açılmayan Android Uygulaması
İlk kurulumdan yaklaşık üç ay sonra Home Assistant Android Companion uygulaması aniden bağlantıyı kesti ve ekranda şu hata belirdi:
“SSL anlaşması gerçekleştirilemedi, lütfen sertifikanızın geçerli olduğundan emin olun.”
Let’s Encrypt eklentisinin günlük (Log) kayıtları incelendiğinde ise şu hata satırı görüldü:
Timeout during connect (likely firewall problem)
Kök Neden ve Çözüm Adımları: İlk kurulumda açılan 80 portu yönlendirmesi daha sonra modem sıfırlanırken silinmişti. Let’s Encrypt 90 günlük sürenin sonunda HTTP-01 doğrulaması için 80 portundan sunucuya ulaşamayınca sertifikayı yenileyemedi. Sorunu gidermek için:
- Modemde Dış 80 ──► İç 192.168.1.50:80 (TCP) kuralı kalıcı olarak yeniden tanımlandı.
- Let’s Encrypt eklentisi başlatıldı ve günlükte
Successfully received certificatemesajı görüldü. - Yeni sertifikanın RAM’e yüklenmesi için tarayıcıdan (gelişmiş güvenlik uyarısı geçilerek) girilip Home Assistant yeniden başlatıldı.
- Android uygulamasında Uygulama Bilgileri > Depolama > Önbelleği Temizle yapılarak eski geçersiz TLS oturum önbelleği sıfırlandı ve bağlantı anında normale döndü.
Sık Karşılaşılan Hatalar, NAT Loopback ve Çözüm Tablosu
| Belirti / Hata Mesajı | Olası Kök Neden | Çözüm Yöntemi |
|---|---|---|
Günlükte Timeout during connect | Modemde 80 portu yönlendirilmemiş, iç IP değişmiş veya hat CGNAT arkasında | Modem WAN IP’sini CGNAT için kontrol edin; 80 portunun Home Assistant sabit iç IP’sine yönlendirildiğini doğrulayın. |
Günlükte Connection refused | Modem uzaktan yönetim arayüzü veya NGINX gibi başka bir eklenti 80 portunu işgal ediyor | Modemin uzaktan web yönetimini kapatın; 80 portunu kullanan diğer eklentileri yenileme sırasında durdurun. |
| Dış ağdan (mobil veri) açılıyor, ev Wi-Fi ağında açılmıyor | Modem NAT Loopback (Hairpin NAT) özelliğini desteklemiyor | Modem ayarlarında NAT Loopback özelliğini açın veya AdGuard Home / Pi-hole üzerinde DNS Yeniden Yazma (DNS Rewrite) kuralı ekleyerek home.ornekalanadi.com adresini ev içinde doğrudan 192.168.1.50 IP’sine yönlendirin (bu durumda iç/dış port aynı, ör. 8123 olmalıdır). |
| Sertifika yenilendi ancak uygulama hâlâ hata veriyor | Home Assistant yeniden başlatılmadı veya Android TLS önbelleği takılı kaldı | Home Assistant’ı yeniden başlatın ve telefon uygulamasını zorla durdurup önbelleğini temizleyin. |
Günlükte cp: can't create '/ssl//ssl/privkey.pem' | Eklenti yapılandırmasında dosya adı yerine tam klasör yolu yazılmış | keyfile ve certfile satırlarına yalnızca privkey.pem ve fullchain.pem yazın; başında /ssl/ olmasın. |
Kaynaklar ve Referanslar
Bu makale hazırlanırken aşağıdaki kaynaklardan ve orijinal teknik dökümantasyonlardan faydalanılmıştır:
- Home Assistant Community – How to configure Let’s Encrypt SSL certificates for Home Assistant
- Home Assistant Community – Automate Let’s Encrypt certificate renewals
- cPanel Documentation – Dynamic DNS (DDNS) Configuration
- Home Assistant Documentation – Cloudflare Integration
- Cloudflare Developers – Create API Token Guide
- DigitalPlat FreeDomain – GitHub Repository
- EU.org – Free Domain Name Service











