Files
ForbiddenStarsApp/deploy/vps/README.md
T

3.6 KiB

VPS (186.246.51.17) — реверс-прокси Caddy + точка входа SSH-туннелей

Единственная публичная точка. На VPS: Caddy терминирует HTTPS твоими сертификатами для двух доменов и проксирует трафик в SSH reverse-туннели от Pi (прод) и ПК (dev/test).

forbiddenstars.ru   → 127.0.0.1:9000  ← Pi  (autossh, постоянно)   PROD
forbidden-stars.ru  → 127.0.0.1:9001  ← ПК  (по требованию)        DEV/TEST

Туннель ssh -R по умолчанию слушает на loopback VPS (127.0.0.1) — ровно туда смотрит Caddy. GatewayPorts включать НЕ нужно. Снаружи порты 9000/9001 недоступны.

0. DNS

A-записи обоих доменов → 186.246.51.17:

forbiddenstars.ru    A   186.246.51.17
forbidden-stars.ru   A   186.246.51.17

Проверка: dig +short forbiddenstars.ru (и второго) должны вернуть этот IP.

1. Зайти на VPS

ssh root@186.246.51.17     # пароль введёшь сам

2. Обновление + файрвол

apt update && apt -y upgrade
apt -y install ufw curl gnupg
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable

3. Установить Caddy (официальный репозиторий)

apt -y install debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
  | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
  | tee /etc/apt/sources.list.d/caddy-stable.list
apt update && apt -y install caddy

4. Пользователь под туннели

useradd -m -s /bin/bash tunnel
install -d -m 700 -o tunnel -g tunnel /home/tunnel/.ssh
install -m 600 -o tunnel -g tunnel /dev/null /home/tunnel/.ssh/authorized_keys

Публичные ключи Pi и ПК добавишь в /home/tunnel/.ssh/authorized_keys на шагах настройки Pi (deploy/pi/README.md) и ПК (через ssh-copy-id).

5. Сертификаты

mkdir -p /etc/caddy/certs/forbiddenstars.ru /etc/caddy/certs/forbidden-stars.ru

Залей свои файлы с локальной машины (с каждого домена — свой fullchain.pem + privkey.pem):

# на локальной машине:
scp fullchain.pem privkey.pem root@186.246.51.17:/etc/caddy/certs/forbiddenstars.ru/
scp fullchain.pem privkey.pem root@186.246.51.17:/etc/caddy/certs/forbidden-stars.ru/
  • fullchain.pem = твой сертификат + промежуточные GlobalSign одним файлом (сначала leaf, затем chain).
  • privkey.pem = приватный ключ (без пароля).
# на VPS — права:
chown -R caddy:caddy /etc/caddy/certs && chmod -R 640 /etc/caddy/certs

6. Caddyfile

Скопируй deploy/vps/Caddyfile из репозитория в /etc/caddy/Caddyfile, затем:

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

7. Проверка

  1. Подними туннель прода на Pi (см. deploy/pi/README.md) и/или dev/test на ПК (run.ps1 при LOCAL_PUBLIC=vps).
  2. Открой https://forbiddenstars.ru и https://forbidden-stars.ru.
  3. Пока соответствующий туннель не поднят — Caddy отдаёт 502, это ожидаемо.

Логи Caddy: journalctl -u caddy -f.