Настройка VPS как реверс-прокси

📁 ~/Projects/docs-a2v/content/guides/vps-reverse-proxy.md

Общая схема

Mac Studio (локальная сеть)
    → autossh (SSH-туннели)
    → VPS 95.163.232.9 (Debian)
    → nginx (HTTPS reverse proxy)
    → интернет

Что нужно на VPS

1. Установленные пакеты

apt update
apt install nginx certbot python3-certbot-nginx

2. SSH-доступ

  • Авторизация только по ключам
  • Публичный ключ с Mac Studio добавлен в /root/.ssh/authorized_keys

3. nginx

Для каждого домена создать server block:

  • HTTP → редирект на HTTPS
  • HTTPS с SSL-сертификатом Let’s Encrypt
  • proxy_pass на localhost-порт туннеля

Пример структуры:

/etc/nginx/sites-available/
    claw.a2v.space.conf
    code.a2v.space.conf
    sand.a2v.space.conf

4. SSL-сертификаты

certbot certonly --nginx -d <domain>
certbot renew --dry-run  # проверить автообновление

Что нужно на Mac Studio

autossh через launchd

Plist: ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist

Один plist с несколькими -R флагами:

<key>ProgramArguments</key>
<array>
    <string>/usr/local/bin/autossh</string>
    <string>-M</string>
    <string>0</string>
    <string>-R</string>
    <string>8080:localhost:18789</string>
    <string>-R</string>
    <string>8081:localhost:4096</string>
    <string>-R</string>
    <string>8082:localhost:4200</string>
    <string>-R</string>
    <string>8083:localhost:8080</string>
    <string>root@95.163.232.9</string>
    <string>-N</string>
    <string>-i</string>
    <string>/Users/<user>/.ssh/id_rsa</string>
</array>

Управление launchd

launchctl load ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist
launchctl start com.openclaw.sshtunnel
launchctl stop com.openclaw.sshtunnel

Проверка

# На VPS
ss -tlnp | grep -E '808[0-3]'

# Снаружи
curl -I https://claw.a2v.space
curl -I https://code.a2v.space
curl -I https://sand.a2v.space