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
openvpnna serwerze, zainstalujopenvpnw 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.keyi sobie przekopiować. - W kliencie stwórz plik
/config/openvpn-secret.keyi 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