−25%

на годовую оплату Windows, до 31.10. К тарифам

EQVPS

VPS для удалённого доступа к Home Assistant

Home Assistant из любой точки мира без проброса портов дома: VPS держит WireGuard и HTTPS, а дом сам подключается к нему. Настройка, цена, ограничения.

Хочется открыть дашборд Home Assistant из электрички, а роутер против: провайдер держит вас за CGNAT, или проброс технически возможен, но вешать всю домашнюю сеть на интернет ради одной лампочки не хочется. Маленький VPS решает обе проблемы. Дом сам подключается наружу к VPS по WireGuard, а публичное лицо — только этот сервер: с настоящим доменом, настоящим сертификатом и без единого домашнего порта, открытого миру.

Как это устроено

phone ──HTTPS──> VPS (Caddy :443) ──WireGuard──> Home Assistant :8123 at home
                       ▲
              home box dials out on UDP 51820

На VPS работают две вещи: сервер WireGuard и Caddy как reverse proxy. Дома клиент WireGuard (на хосте Home Assistant, на Raspberry Pi или на роутере) держит туннель открытым. Когда вы заходите на https://ha.example.com, Caddy отправляет запрос через туннель на 10.8.0.2:8123.

Что понадобится

1. Сервер WireGuard на VPS

apt update && apt install -y wireguard caddy
wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub
chmod 600 /etc/wireguard/server.key

cat > /etc/wireguard/wg0.conf <<EOF
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = $(cat /etc/wireguard/server.key)

[Peer]
# the home side
PublicKey = HOME_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32
EOF

systemctl enable --now wg-quick@wg0
ufw allow 51820/udp && ufw allow 80,443/tcp

2. Домашняя сторона

На любой Linux-машине дома (или в аддоне-клиенте WireGuard для Home Assistant) создайте пир. Keepalive здесь важен: он держит туннель открытым сквозь NAT домашнего роутера.

[Interface]
Address = 10.8.0.2/24
PrivateKey = HOME_PRIVATE_KEY

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = ha-vps.example.com:51820
AllowedIPs = 10.8.0.1/32
PersistentKeepalive = 25

Если клиент WireGuard стоит не на той машине, где Home Assistant, перенаправьте 10.8.0.2:8123 на хост HA в локальной сети — или проще: поставьте клиент прямо на хост HA.

3. HTTPS через Caddy

cat > /etc/caddy/Caddyfile <<'EOF'
ha.example.com {
    reverse_proxy 10.8.0.2:8123
}
EOF
systemctl reload caddy

Caddy сам получит сертификат и обработает WebSocket-соединение, на котором держится мобильное приложение Home Assistant.

4. Разрешите Home Assistant доверять прокси

Без этого HA отклоняет запросы через прокси. В configuration.yaml:

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 10.8.0.1

Перезапустите Home Assistant, откройте https://ha.example.com и укажите этот адрес как внешний в мобильном приложении.

Честно о компромиссах

HTTPS заканчивается на VPS, так что этот сервер видит трафик дашборда в открытом виде, прежде чем тот уйдёт в туннель. Сервер ваш — в этом и смысл, — но относитесь к нему как к части домашней сети: только SSH-ключи, автообновления, больше ничего на нём не запускать. Пароль и двухфакторный вход самого Home Assistant оставьте включёнными: прокси — не слой аутентификации.

Платный официальный облачный сервис от команды Home Assistant делает то же самое без всякого обслуживания и заодно финансирует проект. Если сервер вам не нужен вовсе — это вполне достойный вариант. Путь через VPS выигрывает, когда вы уже держите свои сервисы, хотите свой домен или планируете позже спрятать за тем же туннелем и другие домашние сервисы.

Полезные инструкции

Готовы развернуть? Оплата криптой, без KYC — сервер за минуту.

Развернуть →

Частые вопросы

Зачем VPS, если можно пробросить порт на роутере?

Многие домашние подключения стоят за CGNAT — пробрасывать просто нечего. А даже если можно, выставлять домашний IP и роутер в интернет — лишний риск. С VPS дом сам открывает исходящее WireGuard-соединение, а наружу смотрит только маленький сервер, который пересоздаётся за минуты.

Какой тариф нужен?

Хватит Nano-IP ($8/мес) — он лишь пересылает трафик и держит HTTPS. Нужен тариф с выделенным IP: VPS должен принимать входящий HTTPS и UDP-порт WireGuard, а NAT-тарифы не принимают входящие соединения, кроме вашего SSH-порта.

Видит ли VPS мой трафик Home Assistant?

HTTPS заканчивается на VPS, поэтому ваш сервер видит расшифрованные запросы перед отправкой в туннель. Это та же модель доверия, что у любого reverse proxy, — только сервер ваш. Встроенный вход Home Assistant и двухфакторку оставьте включёнными в любом случае.

Будет ли задержка?

Один лишний хоп. От дома в Европе до VPS в Германии или Финляндии это обычно 10–40 мс туда-обратно — на дашбордах, выключателях и снимках с камер незаметно. Почувствовать можно разве что живое видео.

Что будет, если VPS упадёт?

Пропадёт удалённый доступ, а автоматизации дома продолжат работать — Home Assistant от VPS никогда не зависел. Внутри дома всё работает как раньше по локальному адресу.

Комментарии

Пока нет комментариев. Будьте первым.

Оставить комментарий

Комментарии проходят модерацию перед публикацией.