Configure the instance domain from .env instead of compose.yml

compose.yml was tracked but had to be edited per deployment, so every
update collided with the local change ("your local changes would be
overwritten by merge"). The domain now comes from STOAT_DOMAIN via
compose interpolation, and host.docker.internal is mapped unconditionally
so a host-side proxy needs no edit either. Nothing in compose.yml has to
be touched any more.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Leonid Pershin
2026-09-09 00:26:08 +03:00
co-authored by Claude Opus 5
parent 71b9b7fe17
commit ea19a74c12
3 changed files with 34 additions and 32 deletions
+7 -11
View File
@@ -71,7 +71,8 @@ openssl rand -hex 32 # → JWT_SECRET
Минимум, что нужно указать:
```dotenv
STOAT_API_URL=https://stoat.example.com/api
STOAT_API_URL=https://chat.example.com/api
STOAT_DOMAIN=chat.example.com
STOAT_BOT_TOKEN=<токен бота>
PUBLIC_URL=https://music.example.com
JWT_SECRET=<случайные 32 байта>
@@ -80,18 +81,13 @@ JWT_SECRET=<случайные 32 байта>
`STOAT_API_URL` указывается публичный (`https://домен/api`): бот ведёт себя как обычный клиент —
ходит в API, gateway и LiveKit через тот же внешний прокси с валидным TLS, что и браузеры.
### 4. Указать домен инстанса в `compose.yml`
### 4. Про `STOAT_DOMAIN`
Бот запускается **отдельным compose-проектом** и с внутренним Caddy инстанса никак не связан.
В [compose.yml](compose.yml) поправьте одну строку — домен вашего Stoat:
```yaml
extra_hosts:
- "chat.example.com:host-gateway"
```
Эта запись заставляет контейнер резолвить домен инстанса в сам хост, где внешний Caddy держит
443 с валидным сертификатом. Так бот не зависит от NAT loopback на роутере.
`STOAT_DOMAIN` из `.env` подставляется в `extra_hosts`, и контейнер резолвит домен инстанса
в сам хост, где внешний Caddy держит 443 с валидным сертификатом — так бот не зависит от
NAT loopback на роутере. **Сам [compose.yml](compose.yml) править не нужно**, иначе `git pull`
будет конфликтовать с обновлениями.
### 5. Повесить панель на внешний Caddy