From af72540aa84a79b9c5475f7e5e9dee1d872b26e0 Mon Sep 17 00:00:00 2001 From: Dokril Date: Mon, 29 Dec 2025 11:22:28 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B0=20=D0=B2=D0=B5=D0=B1-=D0=BF?= =?UTF-8?q?=D0=B0=D0=BD=D0=B5=D0=BB=D1=8C=20=D1=83=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=20=D0=B8=D0=BD=D1=82?= =?UTF-8?q?=D0=B5=D0=B3=D1=80=D0=B0=D1=86=D0=B8=D1=8F=20Sing-box=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA?= =?UTF-8?q?=D0=B8=20VPN.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.server.yml | 13 ++++++++----- docker-compose.yml | 15 +++++++-------- docker/Dockerfile.singbox | 5 ++++- docker/entrypoint.sh | 12 ++++++++---- web/index.html | 2 +- web/server.py | 9 +++++---- 6 files changed, 33 insertions(+), 23 deletions(-) diff --git a/docker-compose.server.yml b/docker-compose.server.yml index fd1b2bb..441d145 100644 --- a/docker-compose.server.yml +++ b/docker-compose.server.yml @@ -15,14 +15,18 @@ services: build: context: . dockerfile: docker/Dockerfile.singbox - args: - VLESS_URL: ${VLESS_URL-} # HOST MODE — контейнер использует сеть хоста напрямую # Это решает проблему UDP ASSOCIATE для SOCKS5 # ВАЖНО: работает только на Linux, не на Windows/macOS! network_mode: host + environment: + # Порт веб-интерфейса (по умолчанию 3456) + - PORT=${PORT:-3456} + # Порт прокси HTTP/SOCKS5 (по умолчанию 8080) + - PROXY_PORT=${PROXY_PORT:-8080} + volumes: - ./data:/app/data restart: unless-stopped @@ -33,6 +37,5 @@ services: # Порты при network_mode: host не нужно пробрасывать, # они автоматически доступны на хосте: -# - 8082: HTTP/SOCKS прокси (TCP) -# - 1080: SOCKS5 прокси (TCP + UDP) -# - 3456: Веб-интерфейс +# - 3456: Веб-интерфейс (PORT) +# - 8080: SOCKS5/HTTP прокси (PROXY_PORT) diff --git a/docker-compose.yml b/docker-compose.yml index 1457da9..d5c4c79 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,13 +5,14 @@ services: build: context: . dockerfile: docker/Dockerfile.singbox - args: - # Передайте URL через переменную окружения VLESS_URL при сборке: - # export VLESS_URL="vless://..." - VLESS_URL: ${VLESS_URL-} ports: - - "8082:8082" - - "3456:3456" + # Веб-интерфейс (можно переопределить: PORT=9090 docker compose up) + - "${PORT:-3456}:${PORT:-3456}" + # Прокси HTTP/SOCKS5 (можно переопределить: PROXY_PORT=8082 docker compose up) + - "${PROXY_PORT:-8080}:${PROXY_PORT:-8080}" + environment: + - PORT=${PORT:-3456} + - PROXY_PORT=${PROXY_PORT:-8080} volumes: - ./data:/app/data restart: unless-stopped @@ -19,5 +20,3 @@ services: resources: limits: memory: 256m - # Для Docker Desktop лимит также можно задать через mem_limit (устаревшее поле, но работает вне swarm) - # mem_limit: 256m diff --git a/docker/Dockerfile.singbox b/docker/Dockerfile.singbox index bd736aa..de257dd 100644 --- a/docker/Dockerfile.singbox +++ b/docker/Dockerfile.singbox @@ -21,5 +21,8 @@ COPY --chown=suser:suser web/ /app/web/ # Исправляем окончания строк (важно для Windows пользователей) и даем права на запуск RUN dos2unix /app/*.sh && chmod +x /app/entrypoint.sh -EXPOSE 8082 9090 3456 +# Порты по умолчанию (можно переопределить через ENV) +# PORT - веб-интерфейс, PROXY_PORT - прокси +EXPOSE 3456 8080 9090 + ENTRYPOINT ["/app/entrypoint.sh"] \ No newline at end of file diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 3238d64..8a1e019 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -4,6 +4,10 @@ set -e CONFIG_FILE="/app/data/client.json" SINGBOX_PID="" +# Порты из ENV (по умолчанию: 3456 для веба, 8080 для прокси) +PORT="${PORT:-3456}" +PROXY_PORT="${PROXY_PORT:-8080}" + # Ensure data directory exists mkdir -p /app/data @@ -14,7 +18,7 @@ start_singbox() { SINGBOX_PID=$! echo "$(date): sing-box started with PID $SINGBOX_PID" else - echo "$(date): Config file not found. Use web UI at :3456 to apply config." + echo "$(date): Config file not found. Use web UI at :$PORT to apply config." SINGBOX_PID="" fi } @@ -35,9 +39,9 @@ restart_singbox() { start_singbox -# Start Web UI Server -echo "$(date): Starting Web UI on port 3456..." -python3 /app/web/server.py & +# Start Web UI Server with configurable port +echo "$(date): Starting Web UI on port $PORT..." +PORT=$PORT PROXY_PORT=$PROXY_PORT python3 /app/web/server.py & WEBUI_PID=$! # HTTP Control Server (Simple Netcat loop) diff --git a/web/index.html b/web/index.html index 4519aa9..4e4a2c7 100644 --- a/web/index.html +++ b/web/index.html @@ -270,7 +270,7 @@ class="max-w-[1400px] mx-auto px-6 flex justify-between items-center text-[9px] uppercase tracking-[0.2em] opacity-40 text-[#00ff41]">
Core: 4.1.0-Release - Proxy: HTTP/8082 + Proxy: HTTP/8080