591643d364
ADMIN_TG_ID нигде не читается с тех пор, как admin_guard заменили на ролевую систему (owner/staff/node_manage/partner_guard) — оставлять его в примерах вводит в заблуждение. PROXY_INTERNAL_SECRET, наоборот, обязателен (main.rs падает без него при старте), но отсутствовал во всех трёх .env*.example. Заодно поправлен src/modules/auth/README.md — описывал admin_guard, которого больше не существует.
74 lines
5.5 KiB
Bash
74 lines
5.5 KiB
Bash
# =====================================================================
|
||
# DEV VPS (docker-compose.dev-remote.yml). Скопируй в .env прямо на
|
||
# сервере (в DEPLOY_DIR) — файл гитигнорится, в репозиторий не попадает.
|
||
#
|
||
# ВАЖНО: Telegram Login Widget не работает на голом IP — /setdomain в
|
||
# BotFather принимает только доменное имя. На этот dev VPS (45.76.161.137)
|
||
# заведён DNS A-record dev.netrunner-vpn.com — используй его во всех
|
||
# URL ниже (и в аналогичном .env для netrunner-landing), а не IP напрямую.
|
||
#
|
||
# ВАЖНО #2: Telegram Web Apps (кнопки бота "Личный Кабинет"/"Тарифы"/
|
||
# "Синдикат") требуют https:// URL, а Telegram Login Widget в обычном браузере
|
||
# требует именно порт 443 (его CSP frame-ancestors не учитывает порт и всегда
|
||
# подразумевает дефолтный для схемы) — оба жёсткие требования платформы, не
|
||
# нашего кода. HTTPS для dev поднят через Caddy (docker-compose.dev-remote.yml)
|
||
# на порту 443, сертификат — через DNS-01 challenge (Cloudflare, порт 80
|
||
# закрыт — обычный HTTP-01 не пройдёт). Нужен CF_API_TOKEN ниже. Порт 443
|
||
# раньше занимала VPN-нода — перенесена на другой порт на этом же VPS.
|
||
# =====================================================================
|
||
DB_USER=netrunner_admin
|
||
DB_PASSWORD=CHANGE_ME_DEV_DB_PASSWORD
|
||
DB_NAME=netrunner
|
||
|
||
# Токен Cloudflare для DNS-01 (выпуск TLS-сертификата Caddy'ем без открытых
|
||
# 80/443) — создать в Cloudflare: My Profile → API Tokens → Create Token →
|
||
# шаблон "Edit zone DNS", ограниченный зоной netrunner-vpn.com. НЕ Global API Key.
|
||
CF_API_TOKEN=CHANGE_ME_CLOUDFLARE_DNS_EDIT_TOKEN
|
||
|
||
JWT_SECRET=CHANGE_ME_DEV_JWT_SECRET
|
||
ARGON_SALT=CHANGE_ME_DEV_ARGON_SALT_MIN_16_CHARS
|
||
TON_MASTER_WALLET=UQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKK8y
|
||
|
||
# Общий секрет с прокси-нодами этого dev-стенда (--require-auth) — обязателен,
|
||
# без него бэкенд не стартует. То же значение должно быть в .env.example
|
||
# netrunner-proxy на самих нодах.
|
||
PROXY_INTERNAL_SECRET=CHANGE_ME_DEV_PROXY_INTERNAL_SECRET
|
||
|
||
# Опционально: без него оплата через @CryptoBot просто вернёт "provider not
|
||
# supported", остальное продолжает работать как раньше. Токен берётся у
|
||
# @CryptoBot: /pay -> Create App -> Payment Token (лучше завести отдельное
|
||
# приложение для dev, чтобы инвойсы не путались с прод-платежами).
|
||
CRYPTOBOT_API_TOKEN=CHANGE_ME_CRYPTOBOT_API_TOKEN
|
||
CRYPTOBOT_TESTNET=true
|
||
|
||
BOT_ENABLED=true
|
||
# ОТДЕЛЬНЫЙ dev-бот, не прод-бот: у прод-бота в BotFather уже прописан
|
||
# прод-домен через /setdomain, и один бот не может обслуживать два разных
|
||
# домена одновременно. Заведи через @BotFather нового бота специально для
|
||
# dev и здесь, и в BOT_USERNAME у netrunner-landing (см. её .env на этом
|
||
# же сервере) укажи именно его username — иначе виджет логина молча
|
||
# использует прод-бота и Telegram ответит "Bot domain invalid".
|
||
TELOXIDE_TOKEN=123456789:YOUR_DEV_BOT_TOKEN_HERE
|
||
BOT_USERNAME=your_dev_bot_username
|
||
# https, порт 443 — через Caddy (см. выше), не порт 8080 напрямую: WebApp
|
||
# от Telegram по http:// открывать откажется.
|
||
WEB_APP_BASE_URL=https://dev.netrunner-vpn.com
|
||
|
||
SUBSCRIPTION_CHECK_INTERVAL=1800
|
||
RUST_LOG=netrunner_control_plane=debug,axum=info,tower_http=debug,sqlx=warn
|
||
|
||
# dev.netrunner-vpn.com:3000 — netrunner-landing, задеплоенный на этот же dev
|
||
# VPS (docker-compose.dev-remote.yml в репозитории netrunner-landing), обычный
|
||
# HTTP. dev.netrunner-vpn.com — сам бэкенд через Caddy (см. выше).
|
||
# COOKIE_DOMAIN нарочно пуст: host-only cookie уже расшаривается между
|
||
# портами одного и того же хоста браузером — Domain нужен только для
|
||
# реальных сабдоменов (прод).
|
||
CORS_ALLOWED_ORIGINS=http://localhost:1420,http://localhost:5173,tauri://localhost,http://tauri.localhost,http://dev.netrunner-vpn.com:3000,https://dev.netrunner-vpn.com
|
||
CSRF_ALLOWED_ORIGINS=http://localhost:1420,http://localhost:5173,http://dev.netrunner-vpn.com:3000,https://dev.netrunner-vpn.com
|
||
COOKIE_DOMAIN=
|
||
# true (как в проде): теперь у бэкенда есть настоящий TLS через Caddy на 443.
|
||
# Прямой доступ на голый :8080 (без Caddy) для браузерных auth-флоу больше не
|
||
# годится — Secure-cookie по нему браузер по-прежнему отбросит, это ожидаемо:
|
||
# все клиентские сценарии (бот, лендинг) идут через Caddy на 443.
|
||
COOKIE_SECURE=true
|