mirror of
https://gitverse.ru/kpa39l/gotosocial.git
synced 2026-09-29 09:55:10 +00:00
fix(trusted-proxies): add 10.8.0.4/32 (vps02 WG) to GTS_TRUSTED_PROXIES
- docker-compose.yml: GTS_TRUSTED_PROXIES now 10.8.0.4/32,127.0.0.1/32,::1,172.30.0.1/16 - config.yaml: trusted-proxies sync (172.29.0.1/16 -> 172.30.0.1/16, actual docker gw) - openspec: change fix-trusted-proxies (proposal/specs/design/tasks) - verified: warning gone (0 matches), external IP 178.176.197.2 in logs, HTTP 200
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
## Context
|
||||
|
||||
- GoToSocial работает в Docker на bigbox (WG 10.8.0.2), конфиг — **только через env**
|
||||
`GTS_*` (docker-образ не читает смонтированный config.yaml — падал «host must be set»)
|
||||
- Реверс-прокси: Caddy на vps02 (87.242.100.206, host net) → WireGuard 10.8.0.0/24 →
|
||||
bigbox 10.8.0.2:8082 → docker-NAT → контейнер gotosocial (сеть gotosocial_default,
|
||||
шлюз 172.30.0.1, контейнер 172.30.0.2)
|
||||
- Caddy передаёт `X-Forwarded-For` по умолчанию; в Caddyfile блока social.dedinit.ru
|
||||
только `header_up Host` и `header_up X-Forwarded-Proto https` (лишнего XFF нет)
|
||||
- Warning рекомендует `10.8.0.4/32` — это WG-адрес vps02 (peer в `sudo wg show` на bigbox)
|
||||
- Текущие значения: `GTS_TRUSTED_PROXIES=127.0.0.1/32,::1,172.30.0.1/16`
|
||||
(compose/config полностью синхронны)
|
||||
- Restart сервисов — только извне (SSH sudo) — **НЕ применимо**: bigbox локальная,
|
||||
docker compose доступен напрямую
|
||||
|
||||
## Goals / Non-Goals
|
||||
|
||||
**Goals:**
|
||||
|
||||
- Убрать предупреждение trusted-proxies (проверяется на главной странице)
|
||||
- Rate limiting и федеризация используют реальный клиентский IP
|
||||
- Синхронизировать compose (env) и config.yaml (reference)
|
||||
|
||||
**Non-Goals:**
|
||||
|
||||
- Не менять архитектуру проксирования (Caddy → WG → docker-NAT остаётся)
|
||||
- Не добавлять лишние заголовки в Caddy (XFF передаётся по умолчанию, X-Real-IP не нужен)
|
||||
- Не отключать rate limiting, не добавлять rate-limit exceptions
|
||||
|
||||
## Decisions
|
||||
|
||||
### D1: Добавить `10.8.0.4/32` в trusted-proxies
|
||||
|
||||
**Решение:** В `docker-compose.yml` env `GTS_TRUSTED_PROXIES` и в `config.yaml`
|
||||
`trusted-proxies` добавить `10.8.0.4/32`, сохранив `127.0.0.1/32,::1,172.30.0.1/16`.
|
||||
|
||||
**Обоснование:** Предупреждение прямо указывает недостающий диапазон. 10.8.0.4 — это
|
||||
WG-адрес vps02 (peer из `sudo wg show`, allowed-ips 10.8.0.4/32). Именно этот адрес
|
||||
видит GtS как источник входящих соединений от Caddy (после docker-NAT source-адрес —
|
||||
gateway 172.30.0.1, но GtS доверяет цепочке trusted proxies и берёт IP из XFF; чтобы
|
||||
корректно определить реальный client IP, адрес прокси-хопа 10.8.0.4 должен быть в
|
||||
списке доверия). Траст docker-gateway 172.30.0.1/16 тоже оставляем — он реальный
|
||||
source-адрес в контейнере.
|
||||
|
||||
**Альтернативы:**
|
||||
- Добавить только 10.8.0.4/32 без 172.30.0.1 — недостаточно: GtS всё равно видит
|
||||
docker-gateway как source и не сможет довериться XFF от него.
|
||||
- 10.8.0.0/24 целиком — избыточно: единственный прокси-хоп в этой сети — vps02.
|
||||
|
||||
### D2: Изменить только один файл-источник правды (compose) + синхронизировать config.yaml
|
||||
|
||||
**Решение:** Правим `docker-compose.yml` (рабочий) и `config.yaml` (reference) —
|
||||
оба, одинаково.
|
||||
|
||||
**Обоснование:** Образ GtS читает только env. Но config.yaml хранится в git как
|
||||
reference и документирует настройку; расхождение создавало бы ложное впечатление.
|
||||
|
||||
### D3: Пересоздание через docker compose, без ручного удаления контейнера
|
||||
|
||||
**Решение:** `docker compose up -d --force-recreate gotosocial` (env меняется → контейнер
|
||||
пересоздаётся). Данные не теряются (volume ./data).
|
||||
|
||||
## Risks / Trade-offs
|
||||
|
||||
- **Перезапуск контейнера**: кратковременный даунтайм (секунды), инстанс поднимется сам
|
||||
(restart: unless-stopped). Откат — вернуть старое значение env + recreate.
|
||||
- **Неправильный IP в trusted-proxies**: если 10.8.0.4 не является фактическим source,
|
||||
предупреждение останется (но поменяет SUGGESTED_IP_RANGE) — тогда добавить то, что
|
||||
предложит GtS. Проверяется сразу после рестарта.
|
||||
Reference in New Issue
Block a user