Initial commit: local_machine docs and scripts
This commit is contained in:
151
docs/connectivity/PROXY_GUIDE.md
Normal file
151
docs/connectivity/PROXY_GUIDE.md
Normal file
@@ -0,0 +1,151 @@
|
||||
# 🔐 Прокси 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` (при необходимости).
|
||||
Reference in New Issue
Block a user