2.8 KiB
2.8 KiB
Публикация: домены, 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 могут работать одновременно.
Настройка по шагам:
- VPS —
vps/README.md: Caddy, файрвол, пользовательtunnel, сертификаты,Caddyfile. - Pi (прод) —
pi/README.md: Docker-приложение + autossh-служба туннеля. - ПК (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).