Упрощение интерфейса (удалены рамки) и актуализация README, версия 1.5.1

This commit is contained in:
Petro1990 2026-03-13 22:24:30 +03:00
parent e35bcc0aed
commit 7b09d55814
2 changed files with 32 additions and 23 deletions

View File

@ -27,22 +27,22 @@ rproxy
Откроется интерактивное меню: Откроется интерактивное меню:
``` ```
╔══════════════════════════════════════════════╗ rProxy v1.5.1
║ rProxy v1.0.0 ║
╚══════════════════════════════════════════════╝
VPS: 5.104.75.50 Сервисов: 2 Онлайн: 1 Серверов VPS: 1 Сервисов: 2 Онлайн: 1
────────────────────────────────────────────────── ──────────────────────────────────────────────────
1) 📋 Список сервисов и статус 1) 📋 Список сервисов и статус
2) Добавить сервис 2) Добавить сервис
3) ❌ Удалить сервис 3) 📝 Редактировать сервис
4) ❌ Удалить сервис
────────────────────────────────────────────────── ──────────────────────────────────────────────────
4) ▶️ Запустить туннель 5) ▶️ Запустить туннель
5) ⏹️ Остановить туннель 6) ⏹️ Остановить туннель
6) 🔄 Перезапустить туннель 7) 🔄 Перезапустить туннель
────────────────────────────────────────────────── ──────────────────────────────────────────────────
7) ⚙️ Настройки VPS 9) ⚙️ Настройки VPS
10) 🆙 Обновить rProxy
0) 🚪 Выход 0) 🚪 Выход
▸ Выберите действие: ▸ Выберите действие:
@ -51,7 +51,7 @@ rproxy
### 3. Первый запуск ### 3. Первый запуск
При первом запуске скрипт предложит настроить подключение к VPS: При первом запуске скрипт предложит настроить подключение к VPS:
- **IP-адрес VPS** - **IP-адрес VPS** (или домен)
- **SSH порт** (по умолчанию 22) - **SSH порт** (по умолчанию 22)
- **Пользователь** (по умолчанию root) - **Пользователь** (по умолчанию root)
- **Авторизация** — SSH-ключ или пароль - **Авторизация** — SSH-ключ или пароль
@ -69,14 +69,13 @@ rproxy
## 🏗 Архитектура ## 🏗 Архитектура
### На роутере (Keenetic + Entware) ### На роутере (Keenetic + Entware)
- **autossh** — устанавливает устойчивые обратные SSH-туннели до VPS - **autossh** — устанавливает устойчивые обратные SSH-туннели до VPS.
- Каждый сервис = отдельный туннель - Конфигурация: `/opt/etc/rproxy/`.
- Конфигурация: `/opt/etc/rproxy/` - **Автозависимости**: Скрипт сам ставит `openssl-util`, `sshpass` и `curl` при первом запуске.
- PID-файлы: `/opt/var/run/rproxy/`
### На VPS ### На VPS
- **nginx** — принимает входящие запросы и проксирует в SSH-туннели - **nginx** — принимает входящие запросы и проксирует в SSH-туннели.
- Конфиги сервисов: `/etc/nginx/sites-enabled/rproxy_*.conf` - Автоматическая настройка окружения (установка nginx, certbot, оптимизация SSH).
### Файлы ### Файлы
@ -92,10 +91,22 @@ rproxy
## 🔒 Безопасность ## 🔒 Безопасность
- SSH-ключ и конфиг хранятся с правами 600 - SSH-ключ и конфиг хранятся с правами 600.
- Все соединения зашифрованы через SSH - **Basic Auth**: Возможность защитить любой сервис паролем. Хеши паролей защищены от повреждения оболочкой.
- **SSH-ключи**: Рекомендуемый способ авторизации.
> **Рекомендация:** используйте авторизацию по SSH-ключу. ## 🔧 Возможности (v1.5.1)
- **Авто-авиатор**: Автоматическая установка всех необходимых пакетов Entware.
- **Умная авторизация**: Хранение «пароля по умолчанию» для быстрой публикации защищенных сервисов.
- **RCI/ndmq**: Локальное управление Keenetic без ввода пароля роутера.
- **SSL (HTTPS)**: Автоматическое получение сертификатов через Certbot.
- **Поддержка доменов**: Полная поддержка буквенных адресов VPS.
- **Стелс-режим**: Правильная трансляция Host-заголовков и Cookies для корректной работы веб-интерфейсов.
## 📝 Лицензия
MIT
## 🔧 Решение проблем ## 🔧 Решение проблем

6
rproxy
View File

@ -3,7 +3,7 @@
# Публикация локальных сервисов через SSH-туннели + nginx на VPS # Публикация локальных сервисов через SSH-туннели + nginx на VPS
# http://5.104.75.50:3000/Petro1990/rProxy # http://5.104.75.50:3000/Petro1990/rProxy
VERSION="1.5.0" VERSION="1.5.1"
CONF_DIR="/opt/etc/rproxy" CONF_DIR="/opt/etc/rproxy"
CONF_FILE="$CONF_DIR/rproxy.conf" CONF_FILE="$CONF_DIR/rproxy.conf"
SERVICES_DIR="$CONF_DIR/services" SERVICES_DIR="$CONF_DIR/services"
@ -34,9 +34,7 @@ clear_screen() { printf "\033[2J\033[H"; }
draw_box() { draw_box() {
local title="$1" local title="$1"
printf "${CYAN}╔══════════════════════════════════════════════╗${NC}\n" header "$title"
printf "${CYAN}║${NC} ${BOLD}%-44s${NC}${CYAN}║${NC}\n" "$title"
printf "${CYAN}╚══════════════════════════════════════════════╝${NC}\n"
} }
draw_separator() { draw_separator() {