68 lines
5.4 KiB
Bash
68 lines
5.4 KiB
Bash
# ═══════════════════════════════════════════════════════════════════════════
|
||
# Forbidden Stars — единый .env (dev / test / prod)
|
||
# Скопируйте в .env, заполните секреты. Реальный .env в git НЕ идёт.
|
||
# Окружение — строкой APP_ENV (ниже); публикация локалки наружу — LOCAL_PUBLIC.
|
||
# ═══════════════════════════════════════════════════════════════════════════
|
||
|
||
# ─── ГЛАВНЫЙ ПЕРЕКЛЮЧАТЕЛЬ ────────────────────────────────────────────────────
|
||
# Этот параметр читает ЛАУНЧЕР (run.ps1 / run.sh) и решает, что запускать:
|
||
# development — нативно: uvicorn --reload + vite, БД в ./data/dev/, вход TG+ник
|
||
# test — прод-клон в Docker локально (порт 8080), вход только TG
|
||
# production — НЕ запускается лаунчером; деплой на Pi отдельно (docker compose up -d).
|
||
# Прод-контейнер ИГНОРИРУЕТ это значение и всегда production.
|
||
APP_ENV=development
|
||
|
||
# ─── ПУБЛИКАЦИЯ ЛОКАЛКИ ЧЕРЕЗ ДОМЕН (VPS-туннель) ─────────────────────────────
|
||
# Только для dev/test на твоём ПК. local — приложение лишь на localhost; vps —
|
||
# лаунчер дополнительно поднимает SSH-туннель на VPS, и dev/test виден снаружи на
|
||
# https://forbidden-stars.ru. Прод (Pi) сюда не относится — у него свой autossh-туннель.
|
||
LOCAL_PUBLIC=local
|
||
# Параметры туннеля (нужны только при LOCAL_PUBLIC=vps):
|
||
VPS_TUNNEL_HOST=186.246.51.17
|
||
VPS_TUNNEL_USER=tunnel
|
||
VPS_TUNNEL_PORT=9001 # порт VPS, который слушает Caddy для forbidden-stars.ru
|
||
|
||
# ─── АДМИНИСТРАТОР (вход по логину/паролю, отдельно от Telegram) ──────────────
|
||
ADMIN_USERNAME=admin
|
||
ADMIN_PASSWORD=change-me-admin-password
|
||
ADMIN_BOOTSTRAP_ENABLED=true
|
||
|
||
# ─── АУТЕНТИФИКАЦИЯ ИГРОКОВ ───────────────────────────────────────────────────
|
||
# Методы входа задаёт APP_ENV: dev → Telegram + stub (вход по нику), prod → только
|
||
# Telegram. Для Telegram нужны токен и юзернейм бота (@BotFather). /setdomain у
|
||
# BotFather укажи на ОБА домена, где открывается виджет: forbiddenstars.ru (prod)
|
||
# и forbidden-stars.ru (dev/test).
|
||
TELEGRAM_BOT_TOKEN=
|
||
TELEGRAM_BOT_USERNAME=
|
||
# Внешний адрес (зарезервировано): prod https://forbiddenstars.ru; dev/test https://forbidden-stars.ru.
|
||
PUBLIC_BASE_URL=
|
||
|
||
# ─── БЕЗОПАСНОСТЬ / СЕССИИ ────────────────────────────────────────────────────
|
||
# Сгенерировать: python -c "import secrets;print(secrets.token_urlsafe(48))"
|
||
# ВАЖНО: в секретах НЕ используйте символ '$' — docker compose трактует его как
|
||
# подстановку переменной (token_urlsafe даёт только [A-Za-z0-9_-], это безопасно).
|
||
SECRET_KEY=change-me-dev-secret-not-for-production
|
||
JWT_ALGORITHM=HS256
|
||
JWT_USER_TTL_MINUTES=10080
|
||
JWT_ADMIN_TTL_MINUTES=480
|
||
# COOKIE_SECURE задаётся АВТОМАТИЧЕСКИ по окружению (HTTPS-домен ⇒ Secure-cookie):
|
||
# dev+localhost → false; dev через VPS, test, prod → true. Вручную задавать НЕ нужно.
|
||
COOKIE_DOMAIN=
|
||
|
||
# ─── БАЗА ДАННЫХ (структура общая, файлы РАЗНЫЕ; выбор по APP_ENV) ────────────
|
||
# dev → DEV_DATABASE_URL (файл в ./data/dev/); test и prod → PROD_DATABASE_URL
|
||
# (том /data; у test и prod это РАЗНЫЕ тома контейнера, см. docker-compose*.yml).
|
||
DEV_DATABASE_URL=sqlite:///./data/dev/forbidden_stars.db
|
||
PROD_DATABASE_URL=sqlite:////data/forbidden_stars.db
|
||
|
||
# Каталог загрузок (зарезервировано под фото/видео), тоже раздельно.
|
||
DEV_UPLOAD_DIR=./data/dev/uploads
|
||
PROD_UPLOAD_DIR=/data/uploads
|
||
|
||
# ─── ПРОЧЕЕ ───────────────────────────────────────────────────────────────────
|
||
# Часовой пояс приложения (фикс. смещение в часах; МСК = 3)
|
||
APP_TZ_OFFSET_HOURS=3
|
||
# CORS нужен только в dev (фронт и API на разных портах); в prod single-origin
|
||
CORS_ORIGINS=http://localhost:5173,http://127.0.0.1:5173
|
||
LOG_LEVEL=INFO
|