Files
local_machine/docs/connectivity/PROXY_GUIDE.md
2026-03-14 20:03:57 +03:00

152 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🔐 Прокси ru.hunab.app — руководство
**Сервер:** 149.154.64.19 | **Домен:** ru.hunab.app | **Прод:** hunab.app (209.38.32.21)
---
## Оглавление
1. [Доступ и файлы](#-доступ-и-файлы)
2. [Команды управления](#-команды-управления)
3. [Безопасность](#-безопасность)
4. [Запросы-сканеры (serverless и др.)](#-запросы-сканеры-serverless-и-др)
5. [Редирект на прокси](#-автоматический-редирект)
6. [Скорость и тесты](#-проверка-скорости)
7. [Telegram и SOCKS при старте](#-telegram-и-socks-при-старте)
---
## 🔑 Доступ и файлы
| Параметр | Значение |
|----------|----------|
| **SSH** | `ssh hsites-ahau` или `ssh -i ~/.ssh/id_ed25519 ahau@149.154.64.19` |
| **SSH root** | `ssh -o StrictHostKeyChecking=accept-new -i ~/.ssh/hsites_new_deploy_key root@149.154.64.19` или `ssh hsites-new` |
| **Пользователь** | ahau (sudo), root через ключ `hsites_new_deploy_key` |
| **ОС** | Ubuntu 24.10 |
**Важные пути на сервере:**
- Nginx: `/etc/nginx/sites-available/ru.hunab.app` (активный сайт может быть в `sites-enabled` как `ru.hunab.app.proxy`)
- Логи: `/var/log/nginx/ru.hunab.app.proxy.access.log`, `ru.hunab.app.proxy.error.log`
- SSL: `/etc/letsencrypt/live/ru.hunab.app/`
- Кеш: `/var/cache/nginx/`
**Проверка:**
- Сайт: https://ru.hunab.app/
- Health: https://ru.hunab.app/proxy-health
- API: https://ru.hunab.app/api/health
---
## 🔧 Команды управления
**Nginx:** `sudo nginx -t``sudo systemctl reload nginx`
**SSL:** `sudo certbot certificates`, `sudo certbot renew --dry-run`
**Безопасность:** `sudo ufw status`, `sudo fail2ban-client status`
**Логи:** `sudo tail -f /var/log/nginx/ru.hunab.app.proxy.access.log`
**Кеш:** `sudo du -sh /var/cache/nginx/`; очистка: `sudo rm -rf /var/cache/nginx/*` + reload
**Backup конфига:** `sudo cp /etc/nginx/sites-available/ru.hunab.app /home/ahau/nginx-backup-$(date +%Y%m%d).conf`
**Экстренно:** `sudo systemctl stop nginx`; после правок: `sudo nginx -t && sudo systemctl start nginx`
---
## 🛡️ Безопасность
Чеклист и готовые конфиги (rate limiting, fail2ban, отсечение сканеров, доверенный прокси на проде, логи без утечек):
📖 **[SECURITY.md](./SECURITY.md)** — чеклист и nginx/fail2ban-сниппеты.
Связь с общими стандартами:
📖 **[docs/security/SECURITY_STANDARDS.md](../../security/SECURITY_STANDARDS.md)** — раздел **Proxy & Edge Security (ru.hunab.app)**.
---
## 🔍 Запросы-сканеры (serverless и др.)
В логах прода с IP 149.154.64.19 видны запросы к `/api/serverless/*`, `serverless.yml`, `.serverless/` и т.п. — это **внешние боты**, не скрипты на прокси. Чтобы не гонять их на прод, на прокси добавляют `location` с `return 404` (см. [SECURITY.md](./SECURITY.md)).
---
## 🇷🇺 Автоматический редирект
Редирект пользователей из РФ на ru.hunab.app реализован на фронтенде (HTML + JS). Детали и тесты:
📖 **[AUTOMATIC_REDIRECT_SOLUTION.md](./AUTOMATIC_REDIRECT_SOLUTION.md)**
---
## 📤 Загрузка файлов на прод через туннель (scp)
Для передачи больших файлов (например, git bundle для очистки истории) на production (209.38.32.21) из РФ используйте SSH ProxyCommand через прокси:
```bash
# Туннель: локальная машина → 149.154.64.19 (прокси) → 209.38.32.21 (прод)
PROXY_CMD="ssh -i $HOME/.ssh/id_ed25519 -o StrictHostKeyChecking=accept-new -W %h:%p hsites-ahau"
scp -i ~/.ssh/hunab_deploy_key -o ProxyCommand="$PROXY_CMD" -o ServerAliveInterval=15 \
/path/to/file.bundle hunab@209.38.32.21:/home/hunab/
```
Проверка размера файла на сервере (через тот же туннель):
```bash
ssh -i ~/.ssh/hunab_deploy_key -o ProxyCommand="$PROXY_CMD" hunab@209.38.32.21 "ls -la /home/hunab/file.bundle"
```
---
## 📊 Проверка скорости
Через прокси соединение до прода быстрее, чем прямо из РФ. Замеры: ~0.29s через ru.hunab.app vs ~3.2s напрямую. Для проверки с прокси-сервера к проду: `expect temp/check_connection_speed.sh` (с локальной машины).
---
## Cursor IDE (PING timeout из РФ)
Если Cursor выдаёт **PING timed out** при работе из России, трафик можно пустить через тот же сервер по SOCKS (SSH -D). Подробно:
📖 **[docs/cursor/README.md](../docs/cursor/README.md)** — обход PING timeout через SOCKS-туннель (без отключения HTTP/2).
---
## 📱 Telegram и SOCKS при старте
Для стабильной связи Telegram (и других приложений) через тот же прокси поднимают SOCKS5 на **127.0.0.1:1081**:
```bash
ssh -D 1081 ahau@149.154.64.19
```
Порт **1081** не пересекается с туннелем Cursor (**10809**).
### Запуск при входе в систему (macOS)
Чтобы туннель поднимался при логине и перезапускался при обрыве:
```bash
cp connectivity/launchd/com.hunab.telegram-socks.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.hunab.telegram-socks.plist
```
Подробности и снятие с автозапуска: **[connectivity/launchd/README.md](./launchd/README.md)**.
### Ручное управление
Скрипт из репо (start/stop/status):
```bash
./connectivity/scripts/telegram-socks-tunnel.sh start # поднять
./connectivity/scripts/telegram-socks-tunnel.sh status # проверить
./connectivity/scripts/telegram-socks-tunnel.sh stop # остановить
```
В Telegram (или другом клиенте) укажите прокси: **SOCKS5**, **127.0.0.1**, порт **1081**.
---
## SSL
Сертификат Let's Encrypt, обновление через certbot (timer). При первичной настройке или смене домена: временно nginx без SSL → certbot → включить полный конфиг с SSL. Скрипты в папке: `get-ssl-certificate.sh`, `setup-ssl-auto-renewal.sh` (при необходимости).