Go to file
Petro1990 eabfe726d8 Исправлена синтаксическая ошибка в функции RCI, версия 1.4.1 2026-03-13 21:39:41 +03:00
.cursorrules исправление: добавлен отсутствующий обработчик warn в установщике и описание sshpass в FAQ 2026-03-13 14:33:52 +03:00
GEMINI.md обновление: повышена версия до 1.2.1 и добавлено правило версионирования в GEMINI.md 2026-03-13 18:34:41 +03:00
README.md исправление: подавление предупреждений о hostname и расширенный вывод ошибок nginx 2026-03-13 15:29:11 +03:00
S98rproxy исправление: задержка и повторы при старте + правильный Host для nginx прокси (v1.1.5) 2026-03-13 18:05:50 +03:00
install.sh исправление: переход на ключи ed25519 и добавление openssh-keygen в зависимости для обхода ошибки libcrypto 2026-03-13 14:50:09 +03:00
rci_auth.ps1 Добавлена поддержка локального RCI через ndmq, обновлена версия до 1.4.0 2026-03-13 21:37:42 +03:00
rci_auth_test.sh Добавлена поддержка локального RCI через ndmq, обновлена версия до 1.4.0 2026-03-13 21:37:42 +03:00
rproxy Исправлена синтаксическая ошибка в функции RCI, версия 1.4.1 2026-03-13 21:39:41 +03:00
test_keenetic_auth.sh фикс: v1.3.9 - переход на нативную авторизацию Nginx (Basic Auth) для стабильности 2026-03-13 21:00:11 +03:00
verify_hash.py Добавлена поддержка локального RCI через ndmq, обновлена версия до 1.4.0 2026-03-13 21:37:42 +03:00

README.md

🔄 rProxy

Менеджер обратного прокси для роутеров Keenetic

Публикация локальных сервисов в интернет через VPS с nginx в качестве обратного прокси.

[LAN сервис] ← [Keenetic] ══SSH туннель══▶ [VPS:nginx] → Интернет

Быстрый старт

1. Установка (на роутере Keenetic)

Требуется Entware

curl -sSL http://5.104.75.50:3000/Petro1990/rProxy/raw/branch/main/install.sh | sh

2. Запуск

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-ключу.

🔧 Решение проблем

Туннель не подключается

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
  • Пакеты: openssh-client, autossh, curl, sshpass (ставятся автоматически)

VPS

  • Linux (Debian/Ubuntu/CentOS)
  • nginx (устанавливается автоматически)
  • SSH-доступ

FAQ (Часто задаваемые вопросы)

Что такое sshpass и нужен ли он?

sshpass — это утилита, которая позволяет передавать пароль SSH в автоматическом режиме.

  • Нужен ли он? Только если вы хотите заходить на VPS по паролю.
  • Если его нет? Ничего страшного. Скрипт просто потребует использовать SSH-ключ для подключения. Это намного безопаснее и является рекомендуемым способом.
  • Почему он может не ставиться? В некоторых версиях Entware для старых архитектур (например, старые Keenetic на MIPS) этого пакета просто нет в официальном репозитории. В этом случае используйте только авторизацию по ключу.

📝 Лицензия

MIT