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.
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)
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.
Podrzuciłbyś tutorial step by step?
- Zainstaluj
openvpn
na kliencie i na serwerze - na serwerze:
mkdir /var/log/openvpn
(jeżeli jeszcze nie istnieje) - Wygeneruj klucz na serwerze:
/usr/sbin/openvpn --genkey --secret /etc/openvpn/server/secret.key
- 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 - 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
- Otwórz port 1194 w firewallu yunohosta (udp i tcp)
- 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
- Uruchom openvpn na serwerze:
systemctl enable --now openvpn-server@hass
- Uruchom openvpn na kliencie:
systemctl enable --now openvpn-client@hass
-
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. wjournalctl
. -
Ustaw w yunohost aplikację Reverse Proxy tak, aby wskazywała na adres
http://10.8.1.2:80
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:
- Zainstaluj
openvpn
na serwerze, zainstalujopenvpn
w HA (https://github.com/MapGuy11/homeassistant-openvpn-client-addon) - Następnie na serwerze:
mkdir /var/log/openvpn
(jeżeli jeszcze nie istnieje) - Wygeneruj klucz na serwerze:
/usr/sbin/openvpn --genkey --secret /etc/openvpn/server/secret.key
- Pobierz ten plik z serwera do klienta, najprościej pewnie zrobić
cat /etc/openvpn/server/secret.key
i sobie przekopiować. - W kliencie stwórz plik
/config/openvpn-secret.key
i wklej skopiowaną zawartość - 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
- Otwórz port 1194 w firewallu yunohosta (udp i tcp)
- 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
- Uruchom openvpn na serwerze:
systemctl enable --now openvpn-server@hass
- Uruchom openvpn na kliencie, klikając start w Addons / OpenVPN Client / Start
- 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 - 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. - 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
Nie umiem ustawić WireGuarda, a OpenVPN potrafię OpenVPN wydaje mi się prościutki w konfiguracji, a jak czytam o WireGuard to mnie przerasta
Miałem to samo, choć pierwszy raz konfigurowałem openvpn, trochę zabawy było w debugowanie i czytanie logów