docs(agents): route domain access through the owner's VPS over WireGuard
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
36d98230bf
commit
5598d2f38e
1 changed files with 29 additions and 14 deletions
|
|
@ -84,21 +84,36 @@ Production-конфигурация на этот хост:
|
||||||
|
|
||||||
**Приёмка:** локальный прогон стека в production-режиме, восстановление из бэкапа на чистую базу.
|
**Приёмка:** локальный прогон стека в production-режиме, восстановление из бэкапа на чистую базу.
|
||||||
|
|
||||||
### R5. Доступ по домену `random.ochenstarik.ru`
|
### R5. Доступ по домену `random.ochenstarik.ru` через VPS владельца
|
||||||
Шаг 1 (loopback) делается сразу. Домен добавляется вторым шагом, без переделки шага 1:
|
Схема (решение владельца 19.10): **интернет → VPS (185.26.122.80, на нём A-запись домена) →
|
||||||
- Порт 80 занят Apache из snap Nextcloud, его не трогать. Порт 443 свободен. TLS — через
|
WireGuard → домашний сервер → приложение.** Проброса портов на домашнем роутере нет и не нужно.
|
||||||
reverse proxy на 443 (например, Caddy в контейнере `randomayzer-proxy`) с выпуском сертификата
|
|
||||||
по TLS-ALPN-01 на 443 или DNS-01. HTTP-01 на 80 недоступен.
|
|
||||||
- Пользователь один — владелец. Поэтому перед приложением дополнительный слой доступа:
|
|
||||||
basic auth или allowlist IP на прокси, плюс собственный вход через VK.
|
|
||||||
- Redirect URI VK ID — `https://<домен>/api/auth/vk/callback`. Production-проверки (HTTPS,
|
|
||||||
Secure-cookie, origin) — в обычном строгом режиме, профиль «local» для домена не использовать.
|
|
||||||
- Открыть 443 в firewall хоста только для прокси. Приложение и БД по-прежнему на loopback
|
|
||||||
и во внутренней сети.
|
|
||||||
|
|
||||||
**Приёмка:** сертификат выпущен; без авторизации на прокси — 401; вход через VK ID работает
|
Что известно о сети: на домашнем сервере есть WireGuard-интерфейс `krona-wg` с адресом
|
||||||
по домену; приложение напрямую извне недоступно.
|
`10.77.0.3/24`, peer `10.77.0.1` отвечает (около 58 мс). VPS — предположительно `10.77.0.1`,
|
||||||
|
владелец подтверждает. Туннель уже используется другим проектом (krona): его конфигурацию
|
||||||
|
не менять, только использовать.
|
||||||
|
|
||||||
|
Сделать:
|
||||||
|
1. **Домашний сервер.** Приложение дополнительно слушает `10.77.0.3:<порт>` (не `0.0.0.0`).
|
||||||
|
На хосте firewall разрешает этот порт только с `10.77.0.1`. БД по-прежнему не публикуется.
|
||||||
|
2. **VPS.** Фрагмент конфигурации reverse proxy под существующий на VPS веб-сервер
|
||||||
|
(nginx или Caddy — определить по runbook, не ставить второй на 443):
|
||||||
|
- TLS для `random.ochenstarik.ru` (Let's Encrypt, HTTP-01 на VPS);
|
||||||
|
- `proxy_pass http://10.77.0.3:<порт>`, заголовки `X-Forwarded-*` и `Host`;
|
||||||
|
- basic auth или allowlist IP владельца — пользователь один;
|
||||||
|
- лимиты тела запроса и таймауты.
|
||||||
|
3. **Приложение.** Доверять `X-Forwarded-*` только от `10.77.0.1`, через существующую в проекте
|
||||||
|
настройку trusted proxy, если она есть; production-проверки (HTTPS, Secure-cookie, origin)
|
||||||
|
в строгом режиме. Redirect URI VK ID — `https://random.ochenstarik.ru/api/auth/vk/callback`.
|
||||||
|
4. **Runbook** для двух машин: что выполнять на VPS и что на домашнем сервере, проверки, откат.
|
||||||
|
Выполняет Claude или владелец.
|
||||||
|
|
||||||
|
**Приёмка:** локально — тест, что `X-Forwarded-*` от чужого адреса не принимается. На стенде (Claude):
|
||||||
|
- сертификат выпущен;
|
||||||
|
- без авторизации на прокси — 401;
|
||||||
|
- вход через VK ID работает по домену;
|
||||||
|
- порт приложения не виден ни из интернета, ни из локальной сети — только из туннеля.
|
||||||
|
|
||||||
## После R1–R4 от владельца нужно
|
## После R1–R4 от владельца нужно
|
||||||
Приложение VK ID и сервисный токен в 0600-файле. Тогда — живая проверка по R3
|
Приложение VK ID и сервисный токен в 0600-файле. Тогда — живая проверка по R3
|
||||||
и исправление найденного. Для R5 домен уже есть: `random.ochenstarik.ru`, A → 185.26.122.80. Сервер стоит за NAT (192.168.1.81), поэтому нужен проброс TCP 443 с роутера или внешнего адреса на 192.168.1.81 — подтверждает владелец. Исходящий трафик сервера идёт через прозрачный прокси xray: на выпуск сертификата это не влияет, но внешний IP по запросам «изнутри» определять нельзя.
|
и исправление найденного. Для R5 — подтвердить, что `10.77.0.1` в WireGuard — это VPS 185.26.122.80, и какой веб-сервер на нём стоит.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue