Files
ForbiddenStarsApp/deploy

Публикация: домены, VPS, туннели

Приложение крутится дома (Pi — прод) и на твоём ПК (dev/test). Дома белого IP нет (CGNAT), поэтому наружу выставляем через VPS-привратник: на нём Caddy терминирует HTTPS твоими сертификатами и проксирует трафик в SSH reverse-туннели, которые приложение само открывает к VPS.

                       ┌──────────── VPS 186.246.51.17 (Caddy) ───────────┐
 forbiddenstars.ru ───►│ :443 (cert твой) → 127.0.0.1:9000               │
                       │                        ▲ autossh (постоянно)     │
                       │                        └── Pi : app:8000   PROD   │
 forbidden-stars.ru ──►│ :443 (cert твой) → 127.0.0.1:9001               │
                       │                        ▲ ssh (по требованию)      │
                       │                        └── ПК : 5173(dev)/8080(test)│
                       └───────────────────────────────────────────────────┘
  • PROD — Pi, forbiddenstars.ru, туннель постоянный (autossh-служба). См. pi/.
  • DEV/TEST — ПК, forbidden-stars.ru, туннель по требованию: в .env поставь LOCAL_PUBLIC=vps и запусти run.ps1 (dev → туннель на vite:5173; test → на :8080). Dev и test делят порт 9001 — по очереди.
  • Разделение окружений сохраняется на уровне приложения (свои APP_ENV, БД, контейнеры); домены разные, поэтому прод и dev/test могут работать одновременно.

Настройка по шагам:

  1. VPS — vps/README.md: Caddy, файрвол, пользователь tunnel, сертификаты, Caddyfile.
  2. Pi (прод) — pi/README.md: Docker-приложение + autossh-служба туннеля.
  3. ПК (dev/test) — ключ для tunnel@VPS (ssh-copy-id), затем LOCAL_PUBLIC=vps + run.ps1.

Секреты не в git: сертификаты/ключи (*.pem, *.key, SSH-ключи) живут на VPS/Pi/ПК, в репозитории только Caddyfile и юнит-шаблон.

Telegram-вход требует HTTPS-домен: у BotFather /setdomain укажи оба домена (forbiddenstars.ru и forbidden-stars.ru).