Прод на Pi: качественный единый compose, все настройки в .env

- docker-compose.yml: слот туннеля параметризован (${VPS_TUNNEL_PORT:-9000}), VPS_TUNNEL_HOST
  стал обязательным (${...:?}), лимиты ресурсов из .env (APP_MEM_LIMIT/APP_CPUS),
  stop_grace_period 30s (чек-пойнт WAL SQLite), security_opt no-new-privileges на обоих сервисах;
  healthcheck/логирование/тома сохранены (имена томов не менялись — данные не осиротеют).
- .env.example: VPS_TUNNEL_PORT по умолчанию НЕ задаётся (каждый контур берёт свой слот:
  dev→9001, prod→9000, test→9001); добавлены ADMIN_NICKNAME, DEV/PROD_ACHIEVEMENTS_DIR,
  APP_MEM_LIMIT/APP_CPUS.
- deploy/pi/README: чек-лист .env для Pi; запуск одним `docker compose up -d --build`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-26 23:46:33 +03:00
co-authored by Claude Opus 4.8
parent 32c74abc43
commit b3db5a4047
3 changed files with 59 additions and 27 deletions
+11 -3
View File
@@ -15,14 +15,22 @@ ssh-copy-id -i deploy/tunnel/id_tunnel.pub tunnel@186.246.51.17
```
## 2. .env
Все настройки приложения и туннеля — в одном `.env` (контейнер форсит `APP_ENV=production`):
```bash
cp .env.example .env # заполни секреты; APP_ENV контейнер форсит в production
cp .env.example .env
```
Проверь, что заданы параметры VPS (их читает сервис `tunnel`):
Минимально заполнить на Pi:
```
VPS_TUNNEL_HOST=186.246.51.17
SECRET_KEY=... # python -c "import secrets;print(secrets.token_urlsafe(48))"
ADMIN_USERNAME=... # логин/пароль секретной админки
ADMIN_PASSWORD=...
TELEGRAM_BOT_TOKEN=... # бот @BotFather; /setdomain → forbiddenstars.ru
TELEGRAM_BOT_USERNAME=...
VPS_TUNNEL_HOST=186.246.51.17 # читает сервис tunnel
VPS_TUNNEL_USER=tunnel
```
`VPS_TUNNEL_PORT` задавать не нужно — прод-контейнер по умолчанию берёт слот **9000**.
Ресурсы (`APP_MEM_LIMIT`/`APP_CPUS`) и оффсайт-бэкап (`BACKUP_*`) — по желанию.
## 3. Запуск
```bash