Własny cloud dla Home Assistanta

Pytanie do posiadaczy HA, czy macie jakieś rozwiązanie umożliwiające dostęp spoza sieci domowej do HA? Najlepiej gdyby dało się to osiągnąć z użyciem własnego VPSa. :slight_smile:

Mam postawiony tunel openvpn do mojego serwera na którym trzymam Yunohost, a w Yunohost ustawiam przekierowanie z konkretnej subdomeny na lokalny port tego tunelu (za pomocą aplikacji Reverse Proxy) :innocent:

1 Like

Ja mam po prostu otwarte porty 80,443, bo w taki sposób hostuję Yunohostem. Możesz również postawić jakiś VPN lub użyć Tailscale. Istnieje też opcja wykorzystania Cloudflare Tunnel, co robi mój brat np.

1 Like

Podrzuciłbyś tutorial step by step? :pray:

  1. Zainstaluj openvpn na kliencie i na serwerze
  2. 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 na klienta, najprościej pewnie zrobić cat /etc/openvpn/server/secret.key i sobie przekopiować. Na kliencie zapisz go w `/etc/openvpn/client/secret.key
  5. 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. Utwórz konfigurację openvpn na kliencie:

adres-hosta.pl zamień adresem serwera (może domenowy lub IP)

remote adres-hosta.pl 1994
dev tun
ifconfig 10.8.1.2 10.8.1.1
secret /etc/openvpn/client/secret.keyu
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. Uruchom openvpn na serwerze:
systemctl enable --now openvpn-server@hass
  1. Uruchom openvpn na kliencie:
systemctl enable --now openvpn-client@hass
  1. 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. w journalctl.

  2. Ustaw w yunohost aplikację Reverse Proxy tak, aby wskazywała na adres http://10.8.1.2:80

1 Like

O super dzięki, dzisiaj przetestuję!

Dlaczego OpenVPN? Jest jakiś konkretny powód dla którego używasz tego protokołu? WireGuard jest nowszy, szybszy i raczej bardziej zalecany dla sieci VPN.

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

Nie umiem ustawić WireGuarda, a OpenVPN potrafię :smiley: OpenVPN wydaje mi się prościutki w konfiguracji, a jak czytam o WireGuard to mnie przerasta

1 Like

Miałem to samo, choć pierwszy raz konfigurowałem openvpn, trochę zabawy było w debugowanie i czytanie logów :smiley:

1 Like