rProxy/README.md

156 lines
7.3 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.5.1
Серверов VPS: 1 Сервисов: 2 Онлайн: 1
──────────────────────────────────────────────────
1) 📋 Список сервисов и статус
2) Добавить сервис
3) 📝 Редактировать сервис
4) ❌ Удалить сервис
──────────────────────────────────────────────────
5) ▶️ Запустить туннель
6) ⏹️ Остановить туннель
7) 🔄 Перезапустить туннель
──────────────────────────────────────────────────
9) ⚙️ Настройки VPS
10) 🆙 Обновить rProxy
0) 🚪 Выход
▸ Выберите действие:
```
### 3. Первый запуск
При первом запуске скрипт предложит настроить подключение к VPS:
- **IP-адрес VPS** (или домен)
- **SSH порт** (по умолчанию 22)
- **Пользователь** (по умолчанию root)
- **Авторизация** — SSH-ключ или пароль
### 4. Добавление сервиса
Выберите пункт **2** в меню. Скрипт пошагово спросит:
- Название сервиса
- Адрес локального сервиса (IP:порт)
- Привязка к домену или внешнему порту
**Если указан домен** — nginx будет слушать порт 80 с этим доменом.
**Если без домена** — nginx будет слушать указанный внешний порт.
## 🏗 Архитектура
### На роутере (Keenetic + Entware)
- **autossh** — устанавливает устойчивые обратные SSH-туннели до VPS.
- Конфигурация: `/opt/etc/rproxy/`.
- **Автозависимости**: Скрипт сам ставит `openssl-util`, `sshpass` и `curl` при первом запуске.
### На VPS
- **nginx** — принимает входящие запросы и проксирует в SSH-туннели.
- Автоматическая настройка окружения (установка nginx, certbot, оптимизация SSH).
### Файлы
```
/opt/etc/rproxy/
├── rproxy.conf # Параметры подключения к VPS
├── id_rsa # SSH-ключ (если выбран)
└── services/
├── nas.conf # Конфиг сервиса
├── camera.conf
└── ...
```
## 🔒 Безопасность
- SSH-ключ и конфиг хранятся с правами 600.
- **Basic Auth**: Возможность защитить любой сервис паролем. Хеши паролей защищены от повреждения оболочкой.
- **SSH-ключи**: Рекомендуемый способ авторизации.
## 🔧 Возможности (v1.5.1)
- **Авто-авиатор**: Автоматическая установка всех необходимых пакетов Entware.
- **Умная авторизация**: Хранение «пароля по умолчанию» для быстрой публикации защищенных сервисов.
- **RCI/ndmq**: Локальное управление Keenetic без ввода пароля роутера.
- **SSL (HTTPS)**: Автоматическое получение сертификатов через Certbot.
- **Поддержка доменов**: Полная поддержка буквенных адресов VPS.
- **Стелс-режим**: Правильная трансляция Host-заголовков и Cookies для корректной работы веб-интерфейсов.
## 📝 Лицензия
MIT
## 🔧 Решение проблем
### Туннель не подключается
```bash
rproxy # → пункт 1 — проверить статус
rproxy # → пункт 6 — перезапустить
```
### Сервис не доступен по домену
- Убедитесь, что DNS-запись домена указывает на IP VPS
- Проверьте nginx на VPS: `ssh root@VPS 'nginx -t'`
### Возможности
- Полноценное интерактивное меню (TUI)
- Поддержка SSH-ключей и паролей (автоматическая настройка)
- Автоматическая конфигурация Nginx на VPS
- **Поддержка HTTPS (SSL) через Certbot**
- Управление состоянием сервисов (Start/Stop/Reload)
- Автозапуск туннелей при загрузке роутера
### Автозапуск
Туннели автоматически запускаются при старте роутера через 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