diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..e602ad9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,11 @@ +# Внести вклад + +Буду рад любому вкладу в разработку проекта! Простой процесс для контрибьюторов: + +1. Форкните репозиторий на GitHub. +2. Создайте ветку с осмысленным именем, например `feature/add-README` или `fix/whitelist-load`. +3. Внесите изменения и добавьте короткое описание в коммите. +4. Запустите локально базовые проверки (если есть). +5. Отправьте ветку в ваш форк и создайте Pull Request в основной репозиторий. + +Советы: описывайте изменения в PR, указывайте цель и тестовые шаги. Если изменения большие — разделяйте на маленькие коммиты. \ No newline at end of file diff --git a/README.md b/README.md index c40ac99..3bf0c2a 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,12 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/install.sh) ``` -Краткое описание: запускает скрипт установки и разворачивает контейнеры и сервисы. +Краткое описание: запускает скрипт установки и разворачивает контейнеры и сервисы. +Если панель 3x-ui находится в Docker контейнере или на другом сервере, установите командой: + +```bash +REMOTE_PANEL=true bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/install.sh) +``` ## Обновление @@ -78,7 +83,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/update.sh) ``` -Краткое описание: подтягивает последние изменения и перезапускает контейнеры. +Краткое описание: подтягивает последние изменения и перезапускает контейнеры. ## Удаление @@ -88,7 +93,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/delete.sh) ``` -Краткое описание: удаляет контейнеры и файлы конфигурации, возвращая систему к состоянию до установки. +Краткое описание: удаляет контейнеры и файлы конфигурации, возвращая систему к состоянию до установки. --- @@ -103,7 +108,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/forwarding_install.sh) ``` -Краткое описание: добавляет правила перенаправления и создает сервис для обновления подписки. +Краткое описание: добавляет правила перенаправления и создает сервис для обновления подписки. ## Удаление перенаправления @@ -111,7 +116,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/forwarding_delete.sh) ``` -Краткое описание: удаляет правила и отключает сервис перенаправления. +Краткое описание: удаляет правила и отключает сервис перенаправления. --- @@ -123,7 +128,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main cd /opt/3dp-manager && docker compose exec node env | grep SUB_URL | cut -d'=' -f2 ``` -Краткое описание: выводит статичный URL подписки, который можно использовать в клиентах. Работает как на основном, так и на промежуточном сервере. +Краткое описание: выводит статичный URL подписки, который можно использовать в клиентах. Работает как на основном, так и на промежуточном сервере. ## Сбор доменов из мульти-подписок @@ -133,7 +138,7 @@ cd /opt/3dp-manager && docker compose exec node env | grep SUB_URL | cut -d'=' - node get_domains.js ``` -Краткое описание: добавьте ссылку на мульти-подписку в скрипт и запустите команду — на выходе получите список доменов. Необходим `Node.js` для работы скрипта. +Краткое описание: добавьте ссылку на мульти-подписку в скрипт и запустите команду — на выходе получите список доменов. Необходим `Node.js` для работы скрипта. ## Использование собственного белого списка @@ -144,7 +149,7 @@ node get_domains.js cd /opt/3dp-manager && docker cp ./app/my_whitelist.txt node:/app/my_whitelist.txt ``` -Краткое описание: добавляет ваш файл доменов в контейнер приложения. Чтобы сразу же сгенерировать инбаунды с новым списком, выполните `docker exec -it node sh` и затем `node index.js`. +Краткое описание: добавляет ваш файл доменов в контейнер приложения. Чтобы сразу же сгенерировать инбаунды с новым списком, выполните `docker exec -it node sh` и затем `node index.js`. --- @@ -164,7 +169,7 @@ cd /opt/3dp-manager && docker cp ./app/my_whitelist.txt node:/app/my_whitelist.t 4. Запустите локально базовые проверки (если есть). 5. Отправьте ветку в ваш форк и создайте Pull Request в основной репозиторий. -Советы: описывайте изменения в PR, указывайте цель и тестовые шаги. Если изменения большие — разделяйте на маленькие коммиты. +Советы: описывайте изменения в PR, указывайте цель и тестовые шаги. Если изменения большие — разделяйте на маленькие коммиты. --- diff --git a/README_CN.md b/README_CN.md index dbd90c4..76f986a 100644 --- a/README_CN.md +++ b/README_CN.md @@ -64,7 +64,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/install.sh) ``` -简要说明:运行安装脚本并部署容器和服务。 +简要说明:运行安装脚本并部署容器和服务。 ## 更新 @@ -74,7 +74,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/update.sh) ``` -简要说明:拉取最新更改并重启容器。 +简要说明:拉取最新更改并重启容器。 ## 删除 @@ -84,7 +84,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/delete.sh) ``` -简要说明:删除容器和配置文件,恢复到安装前状态。 +简要说明:删除容器和配置文件,恢复到安装前状态。 --- @@ -96,7 +96,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/forwarding_install.sh) ``` -简要说明:添加转发规则并创建用于更新订阅的服务。 +简要说明:添加转发规则并创建用于更新订阅的服务。 ## 删除转发 @@ -104,7 +104,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/forwarding_delete.sh) ``` -简要说明:删除规则并禁用转发服务。 +简要说明:删除规则并禁用转发服务。 --- @@ -116,7 +116,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main cd /opt/3dp-manager && docker compose exec node env | grep SUB_URL | cut -d'=' -f2 ``` -简要说明:打印可在客户端使用的静态订阅 URL,适用于主服务器和中继服务器。 +简要说明:打印可在客户端使用的静态订阅 URL,适用于主服务器和中继服务器。 ## 从多订阅收集域名 @@ -126,7 +126,7 @@ cd /opt/3dp-manager && docker compose exec node env | grep SUB_URL | cut -d'=' - node get_domains.js ``` -简要说明:在脚本中添加多订阅链接并运行命令 — 输出为域名列表。运行脚本需要 `Node.js`。 +简要说明:在脚本中添加多订阅链接并运行命令 — 输出为域名列表。运行脚本需要 `Node.js`。 ## 使用自定义白名单 @@ -137,7 +137,7 @@ node get_domains.js cd /opt/3dp-manager && docker cp ./app/my_whitelist.txt node:/app/my_whitelist.txt ``` -简要说明:将您的域名文件添加到应用容器中。 +简要说明:将您的域名文件添加到应用容器中。 --- @@ -157,7 +157,7 @@ cd /opt/3dp-manager && docker cp ./app/my_whitelist.txt node:/app/my_whitelist.t 4. 在本地运行检查(如有)。 5. 推送分支到您的 fork 并创建 Pull Request。 -建议:在 PR 中说明更改和测试步骤;较大更改请拆成小提交。 +建议:在 PR 中说明更改和测试步骤;较大更改请拆成小提交。 --- diff --git a/README_EN.md b/README_EN.md index d6de078..11feb04 100644 --- a/README_EN.md +++ b/README_EN.md @@ -64,7 +64,7 @@ Install the project on your server with: bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/install.sh) ``` -Short description: runs the installer script and deploys containers and services. +Short description: runs the installer script and deploys containers and services. ## Update @@ -74,7 +74,7 @@ Update to the latest version: bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/update.sh) ``` -Short description: pulls the latest changes and restarts containers. +Short description: pulls the latest changes and restarts containers. ## Removal @@ -84,7 +84,7 @@ Remove the service completely: bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/delete.sh) ``` -Short description: removes containers and configuration files, restoring the system to the pre-install state. +Short description: removes containers and configuration files, restoring the system to the pre-install state. --- @@ -96,7 +96,7 @@ The forwarding service allows proxying incoming ports from the intermediate serv bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/forwarding_install.sh) ``` -Short description: adds forwarding rules and creates a service to update the subscription. +Short description: adds forwarding rules and creates a service to update the subscription. ## Remove forwarding @@ -104,7 +104,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/forwarding_delete.sh) ``` -Short description: removes rules and disables the forwarding service. +Short description: removes rules and disables the forwarding service. --- @@ -116,7 +116,7 @@ Command to print the current subscription URL from the container environment: cd /opt/3dp-manager && docker compose exec node env | grep SUB_URL | cut -d'=' -f2 ``` -Short description: prints the static subscription URL that can be used in clients. Works on both main and intermediate servers. +Short description: prints the static subscription URL that can be used in clients. Works on both main and intermediate servers. ## Collect domains from multi-subscriptions @@ -126,7 +126,7 @@ The utility extracts domains from subscriptions and builds a `whitelist` for the node get_domains.js ``` -Short description: add a multi-subscription link to the script and run the command — the output will be a list of domains. `Node.js` is required to run the script. +Short description: add a multi-subscription link to the script and run the command — the output will be a list of domains. `Node.js` is required to run the script. ## Use your own whitelist @@ -137,7 +137,7 @@ node get_domains.js cd /opt/3dp-manager && docker cp ./app/my_whitelist.txt node:/app/my_whitelist.txt ``` -Short description: adds your domain file into the application container. +Short description: adds your domain file into the application container. --- @@ -157,7 +157,7 @@ Contributions are welcome! Simple contributor workflow: 4. Run local checks if available. 5. Push the branch to your fork and create a Pull Request to the main repository. -Tips: describe changes and testing steps in the PR. For large changes, split into smaller commits. +Tips: describe changes and testing steps in the PR. For large changes, split into smaller commits. --- diff --git a/README_IR.md b/README_IR.md index e573987..54d5375 100644 --- a/README_IR.md +++ b/README_IR.md @@ -64,7 +64,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/install.sh) ``` -توضیح کوتاه: اسکریپت نصب را اجرا کرده و کانتینرها و سرویس‌ها را راه‌اندازی می‌کند. +توضیح کوتاه: اسکریپت نصب را اجرا کرده و کانتینرها و سرویس‌ها را راه‌اندازی می‌کند. ## به‌روزرسانی @@ -74,7 +74,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/update.sh) ``` -توضیح کوتاه: تغییرات جدید را می‌کشد و کانتینرها را ری‌استارت می‌کند. +توضیح کوتاه: تغییرات جدید را می‌کشد و کانتینرها را ری‌استارت می‌کند. ## حذف @@ -84,7 +84,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/delete.sh) ``` -توضیح کوتاه: کانتینرها و فایل‌های پیکربندی را حذف می‌کند و سیستم را به وضعیت پیش از نصب برمی‌گرداند. +توضیح کوتاه: کانتینرها و فایل‌های پیکربندی را حذف می‌کند و سیستم را به وضعیت پیش از نصب برمی‌گرداند. --- @@ -96,7 +96,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/forwarding_install.sh) ``` -توضیح کوتاه: قوانین فورواردینگ را اضافه کرده و سرویسی برای به‌روزرسانی اشتراک ایجاد می‌کند. +توضیح کوتاه: قوانین فورواردینگ را اضافه کرده و سرویسی برای به‌روزرسانی اشتراک ایجاد می‌کند. ## حذف فورواردینگ @@ -104,7 +104,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/forwarding_delete.sh) ``` -توضیح کوتاه: قوانین را حذف کرده و سرویس فورواردینگ را غیرفعال می‌کند. +توضیح کوتاه: قوانین را حذف کرده و سرویس فورواردینگ را غیرفعال می‌کند. --- @@ -116,7 +116,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main cd /opt/3dp-manager && docker compose exec node env | grep SUB_URL | cut -d'=' -f2 ``` -توضیح کوتاه: URL ثابت اشتراک را نمایش می‌دهد که می‌توان در کلاینت‌ها استفاده کرد. هم در سرور اصلی و هم در سرور واسط کار می‌کند. +توضیح کوتاه: URL ثابت اشتراک را نمایش می‌دهد که می‌توان در کلاینت‌ها استفاده کرد. هم در سرور اصلی و هم در سرور واسط کار می‌کند. ## جمع‌آوری دامنه‌ها از چندین اشتراک @@ -126,7 +126,7 @@ cd /opt/3dp-manager && docker compose exec node env | grep SUB_URL | cut -d'=' - node get_domains.js ``` -توضیح کوتاه: لینک چندین اشتراک را در اسکریپت قرار داده و فرمان را اجرا کنید — خروجی فهرست دامنه‌ها خواهد بود. نیازمند `Node.js` است. +توضیح کوتاه: لینک چندین اشتراک را در اسکریپت قرار داده و فرمان را اجرا کنید — خروجی فهرست دامنه‌ها خواهد بود. نیازمند `Node.js` است. ## استفاده از whitelist شخصی @@ -137,7 +137,7 @@ node get_domains.js cd /opt/3dp-manager && docker cp ./app/my_whitelist.txt node:/app/my_whitelist.txt ``` -توضیح کوتاه: فایل دامنه شما را به کانتینر برنامه اضافه می‌کند. +توضیح کوتاه: فایل دامنه شما را به کانتینر برنامه اضافه می‌کند. --- @@ -157,7 +157,7 @@ cd /opt/3dp-manager && docker cp ./app/my_whitelist.txt node:/app/my_whitelist.t 4. در صورت وجود، بررسی‌های محلی را اجرا کنید. 5. شاخه را به fork خود پوش کرده و Pull Request ایجاد کنید. -نکات: تغییرات را در PR شرح دهید و مراحل تست را بنویسید. در صورت تغییرات بزرگ، آنها را به کامیت‌های کوچک تقسیم کنید. +نکات: تغییرات را در PR شرح دهید و مراحل تست را بنویسید. در صورت تغییرات بزرگ، آنها را به کامیت‌های کوچک تقسیم کنید. --- diff --git a/README_TK.md b/README_TK.md index 18545bc..e302b89 100644 --- a/README_TK.md +++ b/README_TK.md @@ -64,7 +64,7 @@ Taslamany serwera gurnamak üçin şu komandany ýerine ýetiriň: bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/install.sh) ``` -Gysgaça: gurnama skripti işledilýär we konteýnerler we hyzmatlar döredilýär. +Gysgaça: gurnama skripti işledilýär we konteýnerler we hyzmatlar döredilýär. ## Täzelik @@ -74,7 +74,7 @@ Soňky wersiýa çenli täzeläň: bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/update.sh) ``` -Gysgaça: iň soňky üýtgeşmeleri çekýär we konteýnerleri gaýtadan işledýär. +Gysgaça: iň soňky üýtgeşmeleri çekýär we konteýnerleri gaýtadan işledýär. ## Pozmak @@ -84,7 +84,7 @@ Hyzmaty doly pozmak üçin: bash <(curl -fsSL https://raw.githubusercontent.com/denpiligrim/3dp-manager/main/delete.sh) ``` -Gysgaça: konteýnerleri we konfigurasiýa faýllaryny pozup, systemany gurnamadan öňki ýagdaýyna getirer. +Gysgaça: konteýnerleri we konfigurasiýa faýllaryny pozup, systemany gurnamadan öňki ýagdaýyna getirer. --- diff --git a/install.sh b/install.sh index c5733aa..23e7cca 100644 --- a/install.sh +++ b/install.sh @@ -31,15 +31,16 @@ if [[ "$ID" != "ubuntu" && "$ID" != "debian" ]]; then die "Этот скрипт поддерживает только Ubuntu или Debian: $ID" fi -if ! x-ui status >/dev/null 2>&1; then - echo "❌ Панель 3x-ui не найдена или не работает." - echo " Чтобы установить, выполните:" - echo "bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)" - exit 1 +if [[ "$REMOTE_PANEL" != "true" ]]; then + if ! x-ui status >/dev/null 2>&1; then + echo "❌ Панель 3x-ui не найдена или не работает." + echo " Чтобы установить, выполните:" + echo " bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)" + exit 1 + fi + echo "✔ Панель 3x-ui найдена и работает" fi -echo "✔ Панель 3x-ui найдена и работает" - ################################# # ASCII-баннер ################################# @@ -83,6 +84,9 @@ echo "URL панели 3x-ui: $UI_URL" read -rp "Логин 3x-ui: " UI_LOGIN read -rsp "Пароль 3x-ui: " UI_PASSWORD echo + +UI_LOGIN=$(echo "$UI_LOGIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') +UI_PASSWORD=$(echo "$UI_PASSWORD" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') [[ -z "$UI_LOGIN" || -z "$UI_PASSWORD" ]] && die "Логин/пароль обязательны" # Check login @@ -92,7 +96,7 @@ if ! command -v curl >/dev/null 2>&1; then exit 1 fi -LOGIN_RESPONSE=$(curl -s -X POST "$UI_URL/login" -H "Content-Type: application/json" -d "{\"username\":\"$UI_LOGIN\",\"password\":\"$UI_PASSWORD\"}" || true) +LOGIN_RESPONSE=$(curl -s -k --connect-timeout 10 -X POST "$UI_URL/login" -H "Content-Type: application/json" -d "{\"username\":\"$UI_LOGIN\",\"password\":\"$UI_PASSWORD\"}" || true) if ! echo "$LOGIN_RESPONSE" | grep -q '"success":true'; then echo "Не удалось залогиниться в 3x-ui. Проверьте URL, логин и пароль." @@ -117,8 +121,8 @@ if [[ "$UI_PROTO" == "https" ]]; then log "Найдены сертификаты Let's Encrypt для $UI_HOST" else log "⚠ Сертификаты Let's Encrypt для $UI_HOST не найдены" - read -rp "Введите полный путь к SSL сертификату (fullchain.pem): " CERT_PATH - read -rp "Введите полный путь к SSL ключу (privkey.pem): " KEY_PATH + read -rp "Введите полный путь к сертификату (публичный ключ): " CERT_PATH + read -rp "Введите полный путь к ключу (приватный ключ): " KEY_PATH [[ -f "$CERT_PATH" ]] || die "Файл сертификата не найден: $CERT_PATH" [[ -f "$KEY_PATH" ]] || die "Файл ключа не найден: $KEY_PATH"