Własny cloud dla Home Assistanta

Korzystam z HomeAssistanta postawionego na RaspberryPi za pomocą ich oficjalnej instrukcji, więc to nie jest typowy system + obraz dockerowy, a Home Assistant Image (https://www.home-assistant.io/installation/raspberrypi/). Poniżej przygotowałem instrukcję pasującą pod takie rozwiązanie:

  1. Zainstaluj openvpn na serwerze, zainstaluj openvpn w HA (https://github.com/MapGuy11/homeassistant-openvpn-client-addon)
  2. Następnie na serwerze: mkdir /var/log/openvpn (jeżeli jeszcze nie istnieje)
  3. Wygeneruj klucz na serwerze: /usr/sbin/openvpn --genkey --secret /etc/openvpn/server/secret.key
  4. Pobierz ten plik z serwera do klienta, najprościej pewnie zrobić cat /etc/openvpn/server/secret.key i sobie przekopiować.
  5. W kliencie stwórz plik /config/openvpn-secret.key i wklej skopiowaną zawartość
  6. Utwórz plik z konfiguracją na serwerze:
dev tun
port 1194
ifconfig 10.8.1.1 10.8.1.2
secret /etc/openvpn/server/secret.key
cipher AES-128-CBC
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
log-append /var/log/openvpn/hass.log

Zapisz ją w pliku /etc/openvpn/server/hass.conf

  1. Otwórz port 1194 w firewallu yunohosta (udp i tcp)
  2. Stwórz plik na kliencie /config/.ovpn, z następującą zawartością:
    (adres-hosta.pl zamień na adres serwera (adres domenowy lub IP))
remote adres-hosta.pl 1194
dev tun
ifconfig 10.8.1.2 10.8.1.1
secret /config/openvpn-secret.key
cipher AES-128-CBC
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
log-append /var/log/openvpn/hass.log

  1. Uruchom openvpn na serwerze:
systemctl enable --now openvpn-server@hass
  1. Uruchom openvpn na kliencie, klikając start w Addons / OpenVPN Client / Start
  2. Sprawdź łączność. Na kliencie odpal ping 10.8.1.1. Jeżeli przechodzi, to znaczy, że openvpn się połączył i działa. Jeżeli nie, to trzeba sprawdzić logi np. Addons / OpenVPN Client / Log
  3. Ustaw w yunohost aplikację Redirect z typem przekierowania Reverse Proxy tak, aby wskazywała na adres http://10.8.1.2:8123. Przy okazji mozna ograniczyc dostepnosc tylko do admina.
  4. Dodaj sekcję do /config/configuration.yaml:
http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 10.8.1.1 # IP Yunohost w tunelu VPN
    - 127.0.0.1

  • warto sprawdzić logi, bo mogą brakować pliku logów np. /var/log/openvpn/hass.log
1 Like