245 lines
14 KiB
Markdown
245 lines
14 KiB
Markdown
[English](/README_EN.md) | [中文](/README_CN.md) | [فارسی](/README_IR.md) | [Türkmençe](/README_TK.md)
|
||
|
||
<p><img src="https://denpiligrim.ru/storage/images/3dp-manager.png" alt="3dp-manager preview"></p>
|
||
|
||
  [](https://www.gnu.org/licenses/gpl-3.0) [](https://t.me/denpiligrim_web) [](https://www.youtube.com/@denpiligrim)
|
||
|
||
# 3DP-MANAGER
|
||
|
||
Утилита для автогенерации инбаундов к панели [3x-ui](https://github.com/MHSanaei/3x-ui), формирования единых подписок, управления несколькими 3x-ui нодами и настройки relay-перенаправления трафика с промежуточных серверов на основные. Начиная с версии 2.0.0 проект имеет графический интерфейс и простые пользовательские настройки.
|
||
|
||
**Поддержать проект**
|
||
|
||
- Банковским переводом:
|
||
- :credit_card: Карта МИР: `2204320436318077`
|
||
- :credit_card: Карта MasterCard: `5395452209474530`
|
||
- На электронный кошелек:
|
||
- :moneybag: ЮМоney: `4100116897060652`
|
||
- :moneybag: PayPal: `vasiljevdenisx@gmail.com`
|
||
- Криптовалютой:
|
||
- :coin: USDT | ETH (ERC20 | BEP20): `0x6fe140040f6Cdc1E1Ff2136cd1d60C0165809463`
|
||
- :coin: USDT | TRX (TRC20): `TEWxXmJxvkAmhshp7E61XJGHB3VyM9hNAb`
|
||
- :coin: Bitcoin: `bc1qctntwncsv2yn02x2vgnkrqm00c4h04c0afkgpl`
|
||
- :coin: TON: `UQCZ3MiwyYHXftPItMMzJRYRiKHugr16jFMq2nfOQOOoemLy`
|
||
- :coin: Bybit ID: `165292278`
|
||
|
||
## Описание
|
||
|
||
Главная цель утилиты — сделать так, чтобы ваш трафик не выглядел одинаковым. 3DP-MANAGER генерирует по заданному интервалу набор подключений с разными параметрами:
|
||
|
||
- протоколы: `vless`, `vmess`, `shadowsocks`, `hysteria2`, `trojan`;
|
||
- порты: `443`, `8443` (фиксированные) и случайные из диапазона `10000-60000`;
|
||
- транспорт: `tcp`, `websocket`, `grpc`, `xhttp`;
|
||
- SNI берутся из белого списка доменов (whitelist) или задаются вручную;
|
||
- нода, relay-сервер, порт и флаг могут настраиваться отдельно для каждого инбаунда.
|
||
|
||
Все подключения объединяются в одну подписку со статичным URL. 3DP-MANAGER работает с панелью `3x-ui` и не вмешивается в её работу напрямую, используя открытое API панели.
|
||
|
||
Вторичная цель — стабильность подключения: клиент получает несколько вариантов подключений и может выбрать любой из них. В одну подписку можно добавлять инбаунды с разных нод, использовать relay-серверы и добавлять собственные внешние ссылки как кастомные подключения.
|
||
|
||
Дополнительно: 3DP-MANAGER можно использовать в каскадной схеме. Сервис перенаправления автоматически настроит переадресацию подписки и трафика к выбранной ноде.
|
||
|
||
Рекомендации:
|
||
|
||
- Используйте HTTPS для подписки (домен + SSL сертификат).
|
||
- Интервал генерации задавайте ≥ 10 минут; для стабильности рекомендуется — раз в сутки (1440 минут).
|
||
- В клиенте установите автообновление чаще (например, каждый час), чтобы была синхронизация с сервером.
|
||
|
||
## Возможности
|
||
|
||
- Генерация разнообразных подключений для одной или нескольких подписок
|
||
- Формирование единой подписки со статичным URL
|
||
- Управление несколькими нодами `3x-ui`
|
||
- Авторизация нод по логину/паролю или токену
|
||
- Автоопределение IP, страны и флага ноды по URL панели
|
||
- Выбор ноды, relay-сервера, флага, SNI и порта для каждого инбаунда
|
||
- Поддержка фиксированного порта или значения `random`
|
||
- Кастомные подключения: можно добавить готовую внешнюю ссылку в подписку
|
||
- Отдельные пути к `fullchain.pem` и `privkey.pem` для Hysteria2 UDP
|
||
- Поддержка кастомного `whitelist` доменов
|
||
- Автоматическая настройка relay-перенаправления трафика (опционально)
|
||
- Установка Web UI через HTTP или HTTPS: Let's Encrypt, self-signed или свои сертификаты
|
||
|
||
## Требования
|
||
|
||
- Ubuntu 20.04 (и выше), Debian 12.11 (и выше)
|
||
- Панель `3x-ui` v2.9.4 (и выше)
|
||
- Root-доступ на сервере
|
||
- Docker и Docker Compose; если их нет, установочный скрипт попробует установить их автоматически
|
||
- Домен + SSL сертификат (опционально)
|
||
|
||
---
|
||
|
||
## Установка
|
||
|
||
У вас должна быть установлена панель управления `3x-ui`, которую можно поставить командой: `bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)`
|
||
|
||
Установите проект на сервер командой:
|
||
|
||
```bash
|
||
bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/install.sh)
|
||
```
|
||
|
||
Во время установки скрипт:
|
||
|
||
- проверит ОС, root-доступ, Docker и Docker Compose;
|
||
- при нехватке RAM создаст swap-файл 2 GB, если swap отсутствует;
|
||
- предложит выбрать режим доступа к Web UI:
|
||
- HTTPS через Let's Encrypt;
|
||
- HTTPS с self-signed сертификатом;
|
||
- HTTPS со своими сертификатами;
|
||
- HTTP без шифрования;
|
||
- сгенерирует случайный порт Web UI;
|
||
- сгенерирует логин и пароль администратора;
|
||
- развернёт контейнеры `postgres`, `backend` и `frontend`.
|
||
|
||
После завершения установки в терминале будут показаны URL, логин и пароль. Сразу смените пароль в настройках 3DP-MANAGER.
|
||
|
||
<sup>Краткое описание: запускает интерактивный скрипт установки, подготавливает окружение и разворачивает контейнеры проекта.</sup>
|
||
|
||
## Обновление
|
||
|
||
Обновление до последней версии:
|
||
|
||
```bash
|
||
bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/update.sh)
|
||
```
|
||
|
||
<sup>Краткое описание: подтягивает последние изменения, применяет совместимые исправления конфигурации, обновляет контейнеры и перезапускает сервис.</sup>
|
||
|
||
## Удаление
|
||
|
||
Полное удаление сервиса:
|
||
|
||
```bash
|
||
bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/delete.sh)
|
||
```
|
||
|
||
<sup>Краткое описание: удаляет контейнеры и файлы конфигурации, возвращая систему к состоянию до установки.</sup>
|
||
|
||
---
|
||
|
||
## Первый вход и доступы
|
||
|
||
Логин и пароль администратора выводятся в конце установки. Если нужно посмотреть их повторно:
|
||
|
||
```bash
|
||
grep -E "ADMIN_LOGIN|ADMIN_PASSWORD" /opt/3dp-manager/docker-compose.yml | sed 's/^[ \t]*//; s/^- //'
|
||
```
|
||
|
||
Web UI доступен по адресу, который показал установщик, например:
|
||
|
||
- `https://example.com:PORT` для HTTPS;
|
||
- `http://SERVER_IP:PORT` для HTTP.
|
||
|
||
Если включён `ufw`, установщик открывает рабочие диапазоны портов для инбаундов: `443`, `8443` и `10000-60000` для TCP/UDP.
|
||
|
||
---
|
||
|
||
## Ноды
|
||
|
||
Раздел **Ноды** позволяет подключить одну или несколько панелей `3x-ui`.
|
||
|
||
Для каждой ноды указываются:
|
||
|
||
- название;
|
||
- URL панели `3x-ui`;
|
||
- IP ноды;
|
||
- флаг/страна;
|
||
- тип авторизации: `password` или `token`;
|
||
- признак основной ноды.
|
||
|
||
После ввода URL приложение пытается определить IP и страну ноды автоматически. Флаг используется в названиях подключений внутри подписки, чтобы в клиенте было проще отличать серверы.
|
||
|
||
> [!NOTE]
|
||
> Основная нода используется как значение по умолчанию для подписок, инбаундов и relay-серверов.
|
||
|
||
---
|
||
|
||
## Подписки
|
||
|
||
Раздел **Подписки** управляет статичными URL подписок и составом инбаундов.
|
||
|
||
Для каждого инбаунда можно настроить:
|
||
|
||
- тип подключения;
|
||
- ноду;
|
||
- relay-сервер;
|
||
- флаг;
|
||
- порт: конкретное число `1-65535` или `random`;
|
||
- SNI: конкретный домен или `random`;
|
||
- готовую внешнюю ссылку для типа `custom`.
|
||
|
||
Для `hysteria2-udp` можно указать отдельные пути к сертификату и ключу:
|
||
|
||
- `certificateFile`, например `/root/cert/example.com/fullchain.pem`;
|
||
- `keyFile`, например `/root/cert/example.com/privkey.pem`.
|
||
|
||
Если порт или SNI указаны как `random`, значение будет выбрано при ротации из доступного диапазона или whitelist доменов.
|
||
|
||
---
|
||
|
||
## Установка сервиса перенаправления (forwarding)
|
||
|
||
> [!WARNING]
|
||
> Сервис перенаправления работает на промежуточном сервере
|
||
|
||
Сервис перенаправления позволяет проксировать входящие порты с промежуточного сервера на выбранную ноду. В Web UI такие серверы настраиваются в разделе **Relay серверы** и могут быть привязаны к конкретной ноде.
|
||
|
||
Relay-сервер можно добавить по IP или домену. Если указан домен, backend попытается определить IP автоматически.
|
||
|
||
Для ручной установки forwarding на промежуточном сервере замените `IP_ADDRESS` на IP основной ноды:
|
||
|
||
```bash
|
||
sudo ORIGIN_IP="IP_ADDRESS" bash -c "$(curl -sSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/forwarding_install.sh)"
|
||
```
|
||
|
||
<sup>Краткое описание: добавляет правила перенаправления.</sup>
|
||
|
||
## Удаление перенаправления
|
||
|
||
```bash
|
||
bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/forwarding_delete.sh)
|
||
```
|
||
|
||
<sup>Краткое описание: удаляет правила перенаправления. После удаления, чтобы изменения вступили в силу, перезапустите фаервол `ufw reload` и перезапустите систему `reboot`</sup>
|
||
|
||
---
|
||
|
||
## Сбор доменов из мульти-подписок
|
||
|
||
Утилита извлекает домены из подписок и формирует `whitelist` для генератора.
|
||
|
||
```bash
|
||
node get_domains.js
|
||
```
|
||
|
||
<sup>Краткое описание: добавьте ссылку на мульти-подписку в скрипт и запустите команду — на выходе получите список доменов. Необходим `Node.js` для работы скрипта.</sup>
|
||
|
||
---
|
||
|
||
## Замечания и текущие ограничения
|
||
|
||
- Общий список доменов работает не у всех провайдеров, поэтому рекомендуется составить и использовать свой whitelist.
|
||
|
||
---
|
||
|
||
## Внести вклад
|
||
|
||
Буду рад любому вкладу в разработку проекта! Простой процесс для контрибьюторов:
|
||
|
||
1. Форкните репозиторий на GitHub.
|
||
2. Создайте ветку с осмысленным именем, например `feature/add-README` или `fix/whitelist-load`.
|
||
3. Внесите изменения и добавьте короткое описание в коммите.
|
||
4. Запустите локально базовые проверки (если есть).
|
||
5. Отправьте ветку в ваш форк и создайте Pull Request в основной репозиторий.
|
||
|
||
<sup>Советы: описывайте изменения в PR, указывайте цель и тестовые шаги. Если изменения большие — разделяйте на маленькие коммиты.</sup>
|
||
|
||
---
|
||
|
||
## Обсуждение
|
||
|
||
- Телеграм: [@denpiligrim_web](https://t.me/denpiligrim_web)
|
||
- Раздел Issues в данном репозитории
|