rProxy/README.md

137 lines
5.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.

# 🔄 rProxy
**Менеджер обратного прокси для роутеров Keenetic**
Публикация локальных сервисов в интернет через VPS с nginx в качестве обратного прокси.
```
[LAN сервис] ← [Keenetic] ══SSH туннель══▶ [VPS:nginx] → Интернет
```
## ⚡ Быстрый старт
### 1. Установка (на роутере Keenetic)
> Требуется [Entware](https://help.keenetic.com/hc/ru/articles/360021214160)
```bash
curl -sSL http://5.104.75.50:3000/Petro1990/rProxy/raw/branch/main/install.sh | sh
```
### 2. Запуск
```bash
rproxy
```
Откроется интерактивное меню:
```
╔══════════════════════════════════════════════╗
║ rProxy v1.0.0 ║
╚══════════════════════════════════════════════╝
VPS: 5.104.75.50 Сервисов: 2 Онлайн: 1
──────────────────────────────────────────────────
1) 📋 Список сервисов и статус
2) Добавить сервис
3) ❌ Удалить сервис
──────────────────────────────────────────────────
4) ▶️ Запустить туннель
5) ⏹️ Остановить туннель
6) 🔄 Перезапустить туннель
──────────────────────────────────────────────────
7) ⚙️ Настройки VPS
0) 🚪 Выход
▸ Выберите действие:
```
### 3. Первый запуск
При первом запуске скрипт предложит настроить подключение к VPS:
- **IP-адрес VPS**
- **SSH порт** (по умолчанию 22)
- **Пользователь** (по умолчанию root)
- **Авторизация** — SSH-ключ или пароль
### 4. Добавление сервиса
Выберите пункт **2** в меню. Скрипт пошагово спросит:
- Название сервиса
- Адрес локального сервиса (IP:порт)
- Привязка к домену или внешнему порту
**Если указан домен** — nginx будет слушать порт 80 с этим доменом.
**Если без домена** — nginx будет слушать указанный внешний порт.
## 🏗 Архитектура
### На роутере (Keenetic + Entware)
- **autossh** — устанавливает устойчивые обратные SSH-туннели до VPS
- Каждый сервис = отдельный туннель
- Конфигурация: `/opt/etc/rproxy/`
- PID-файлы: `/opt/var/run/rproxy/`
### На VPS
- **nginx** — принимает входящие запросы и проксирует в SSH-туннели
- Конфиги сервисов: `/etc/nginx/sites-enabled/rproxy_*.conf`
### Файлы
```
/opt/etc/rproxy/
├── rproxy.conf # Параметры подключения к VPS
├── id_rsa # SSH-ключ (если выбран)
└── services/
├── nas.conf # Конфиг сервиса
├── camera.conf
└── ...
```
## 🔒 Безопасность
- SSH-ключ и конфиг хранятся с правами 600
- Все соединения зашифрованы через SSH
> **Рекомендация:** используйте авторизацию по SSH-ключу.
## 🔧 Решение проблем
### Туннель не подключается
```bash
rproxy # → пункт 1 — проверить статус
rproxy # → пункт 6 — перезапустить
```
### Сервис не доступен по домену
- Убедитесь, что DNS-запись домена указывает на IP VPS
- Проверьте nginx на VPS: `ssh root@VPS 'nginx -t'`
### Автозапуск
Туннели автоматически запускаются при старте роутера через init-скрипт `S98rproxy`.
## 📦 Требования
### Роутер
- Keenetic с [Entware](https://help.keenetic.com/hc/ru/articles/360021214160)
- Пакеты: `openssh-client`, `autossh`, `curl`, `sshpass` (ставятся автоматически)
### VPS
- Linux (Debian/Ubuntu/CentOS)
- nginx (устанавливается автоматически)
- SSH-доступ
## ❓ FAQ (Часто задаваемые вопросы)
### Что такое `sshpass` и нужен ли он?
`sshpass` — это утилита, которая позволяет передавать пароль SSH в автоматическом режиме.
- **Нужен ли он?** Только если вы хотите заходить на VPS по паролю.
- **Если его нет?** Ничего страшного. Скрипт просто потребует использовать SSH-ключ для подключения. Это **намного безопаснее** и является рекомендуемым способом.
- **Почему он может не ставиться?** В некоторых версиях Entware для старых архитектур (например, старые Keenetic на MIPS) этого пакета просто нет в официальном репозитории. В этом случае используйте только авторизацию по ключу.
## 📝 Лицензия
MIT