Home
Softono
3dp-manager

3dp-manager

Open source TypeScript
445
Stars
38
Forks
6
Issues
12
Watchers
1 week
Last Commit

About 3dp-manager

Inbound generator for 3x-ui

Platforms

Web Self-hosted

Languages

TypeScript

English | 中文 | فارسی | Türkmençe

3dp-manager preview

Version Downloads License Telegram YouTube Channel Subscribers

3DP-MANAGER

Утилита для автогенерации инбаундов к панели 3x-ui, формирования единых подписок, управления несколькими 3x-ui нодами и настройки relay-перенаправления трафика с промежуточных серверов на основные. Начиная с версии 2.0.0 проект имеет графический интерфейс и простые пользовательские настройки.

Поддержать проект

  • Банковским переводом:
    • :credit_card: Карта МИР: finance.ozon.ru
    • :credit_card: Карта MasterCard: 5395452209474530
  • На электронный кошелек:
  • Криптовалютой:
    • :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 <(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.

Краткое описание: запускает интерактивный скрипт установки, подготавливает окружение и разворачивает контейнеры проекта.

Обновление

Обновление до последней версии:

bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/update.sh)

Краткое описание: подтягивает последние изменения, применяет совместимые исправления конфигурации, обновляет контейнеры и перезапускает сервис.

Удаление

Полное удаление сервиса:

bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/delete.sh)

Краткое описание: удаляет контейнеры и файлы конфигурации, возвращая систему к состоянию до установки.


Первый вход и доступы

Логин и пароль администратора выводятся в конце установки. Если нужно посмотреть их повторно:

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 основной ноды:

sudo ORIGIN_IP="IP_ADDRESS" bash -c "$(curl -sSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/forwarding_install.sh)"

Краткое описание: добавляет правила перенаправления.

Удаление перенаправления

bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/forwarding_delete.sh)

Краткое описание: удаляет правила перенаправления. После удаления, чтобы изменения вступили в силу, перезапустите фаервол ufw reload и перезапустите систему reboot


Сбор доменов из мульти-подписок

Утилита извлекает домены из подписок и формирует whitelist для генератора.

node get_domains.js

Краткое описание: добавьте ссылку на мульти-подписку в скрипт и запустите команду — на выходе получите список доменов. Необходим Node.js для работы скрипта.


Замечания и текущие ограничения

  • Общий список доменов работает не у всех провайдеров, поэтому рекомендуется составить и использовать свой whitelist.

Внести вклад

Буду рад любому вкладу в разработку проекта! Простой процесс для контрибьюторов:

  1. Форкните репозиторий на GitHub.
  2. Создайте ветку с осмысленным именем, например feature/add-README или fix/whitelist-load.
  3. Внесите изменения и добавьте короткое описание в коммите.
  4. Запустите локально базовые проверки (если есть).
  5. Отправьте ветку в ваш форк и создайте Pull Request в основной репозиторий.

Советы: описывайте изменения в PR, указывайте цель и тестовые шаги. Если изменения большие — разделяйте на маленькие коммиты.


Обсуждение

  • Телеграм: @denpiligrim_web
  • Раздел Issues в данном репозитории