Tak jak obiecywałem pora na podniesienie bezpieczeństwa naszego systemu. Najważniejszym krokiem w tym kierunku to zmiana protokołu na jakim jest dostępny nasz system. Świeżo po instalacji HomeAssistant działa na nieszyfrowanym połączeniu HTTP. Dlatego musimy to zmienić na protokół szyfrowany HTTPS. Aby to zrobić wykorzystamy nasza wiedzę z wcześniejszych poradników.

Po pierwsze, instalujemy wymagane dodatki. Instalacja dodatków opisana jest tutaj.

Zaczynamy od DuckDNS (ten krok możemy pominąć jeżeli posiadamy własną domenę i chcemy jej użyć jako adres serwer HA). Kolejnym krokiem jest wejście na stronę DuckDNS.org i założenie konta dzięki któremu będziemy mogli docelowo używać nazwy domenowej, a nie adresu IP do połączenia z naszym HA. Ułatwi to ewentualne odwoływanie się do HA z zewnątrz naszej sieci. Ten krok można pominąć jeżeli jesteśmy właścicielem jakiejś domeny i stałego adresu IP. Jednak konfiguracja takiego przypadku nie jest zakresem tego poradnika.

Wracając do naszej konfiguracji, zakładamy konto na DuckDNS oraz dodajemy subdomenę. Jako IP powinniśmy podać adres zewnętrzny jaki mamy na naszym routerze/modemie internetowym (można go sprawdzić np.: tutaj). Następnie musimy przekopiować przypisany do naszego konta token. Teraz wracamy do konfiguracji dodatku i w sekcji Config dodajemy:

{
  "lets_encrypt": {
    "accept_terms": true,
    "certfile": "fullchain.pem",
    "keyfile": "privkey.pem"
  },
  "token": "tu wstawiamy token z konta duckdns.org",
  "domains": [
    "tu podajemy nasza_subdomena.duckdns.org"
  ],
  "seconds": 300
}

Ważne aby wartości dodawać w " " inaczej nie uda nam się zapisać konfiguracji gdyż będzie błąd składni i przycisk SAVE będzie niedostępny. Jeśli wszystko jest dobrze to zapisujemy konfigurację i uruchamiamy dodatek.

Kolejnym dodatkiem, który jest potrzebny do ukończenia tego zadania jest Let's Encrypt. Dzięki niemu otrzymamy darmowe certyfikaty SSL. Tradycyjnie instalujemy go jak każdy inny dodatek i w sekcji Config dodajemy email i nazwę domeny. Tak jak na poniższym przykładzie:

{
  "email": "tu_podajemy_email_kontaktowy",
  "domains": [
    "tu_podajemy_domenę_z_duckdns.org"
  ],
  "certfile": "fullchain.pem",
  "keyfile": "privkey.pem",
  "challenge": "http",
  "dns": {}
}

Następnie uruchamiamy dodatek i w sekcji Log powinniśmy zobaczyć pobieranie certyfikatu dla naszej domeny. Po zakończeniu tego procesu dodatek przejdzie w stan zatrzymany. Jest to prawidłowe zachowanie gdyż dodatek ten uruchamia się samoczynnie gdy należy odnowić certyfikat.

UWAGA
Aby poprawnie przejść weryfikację i pobrać certyfikat należy spełnić kilka warunków:
  • Domena w duckdns.org musi wskazywać zewnętrzny adres IP naszej lokalizacji/domu/routera/modemu
  • Na routerze trzeba przekierować port 80 aby kierował na serwer HA

Bez powyższych wymagań certyfikat może nie zostać pobrany. Wszystkie informacje o procesie pobierania certyfikatu są w logach dodatku Let's Encrypt.

Do zakończenia całego procesu pozostał nam jeden ostatni krok. Należy zmodyfikować główny plik konfiguracyjny HA. Zatem używając dodatku IDE (instalowaliśmy go w artykule o dodatkach) otwieramy plik configuration.yaml (w katalogu config) i dodajemy następujące wpisy na początku pliku:

http:
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem
Należy zwracać uwagę na wszystkie wcięcia gdyż jest to bardzo istotne dla poprawności składni plików .yaml.

Dodatkowo należy zmienić ustawienia konfiguracji. W tym celu wchodzimy do Konfiguracja -> Ogólne i ustawiamy adres wew i adres zewnętrzny naszego HA. Wszystko według poniższego rysunku:

Oczywiście zmiany zapisujemy.

Następnie pozostaje nam już tylko restart HA. Używamy do tego menu Konfiguracja sekcja Kontrola serwera. Jednak zanim zrobimy restart proponuję sprawdzić poprawność konfiguracji odpowiednim przyciskiem (zaznaczony na zdjęciu poniżej). Jeżeli wszystko jest ok to nie pozostaje nic innego jak nacisnąć Uruchom Ponownie (również zaznaczony na zdjęciu poniżej).

Od tej pory dostęp do naszego HA powinien działać po protokole https. Czyli wszystkie dotychczasowe adresy dostępowe powinniśmy zamienić na formę https://ip_adres:8123 lub https://domena_duckdns.org:8123 (przy łączeniu po IP może wyskoczyć błąd certyfikatu gdyż jest on powiązany z nazwą domenową). Oczywiście aby zadziałał dostęp z zewnątrz to musimy skonfigurować odpowiednio nasze routery ale to już inna bajka. Jako podpowiedź mogę dać, że należy zrobić przekierowanie portów. Oczywiście posiadanie stałego adresu IP ułatwia sprawę.

To tyle na ten temat. Jak zawsze zachęcam do kontaktu i komentowania. Przyjemnego korzystania z HA.

Drobne jeszcze przypomnienie. We wszystkich dodatkach w których w sekcji Config zmienialiśmy parametr SSL z true na false to jak łatwo się można domyślić teraz zmieniamy go ponownie na true.