From dfbfae29014b3cd246550589640e871ee424807e Mon Sep 17 00:00:00 2001 From: samosvalishe Date: Thu, 21 May 2026 16:26:04 +0300 Subject: [PATCH] =?UTF-8?q?fix(docker):=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D1=82=D1=8C=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D1=83?= =?UTF-8?q?,=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82=D1=8C=20compose,?= =?UTF-8?q?=20=D1=83=D0=B1=D1=80=D0=B0=D1=82=D1=8C=20VLESS=5FBOND?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Dockerfile: путь ./cmd/vk-turn-server → ./cmd/server (образ был сломан) - docker-entrypoint.sh → docker/entrypoint.sh; удалён VLESS_BOND (флаг удалён ранее, падал при VLESS_BOND=true); добавлен DEBUG env - docker-compose.yml: host network, WireGuard-дефолт, все опции закомментированы inline; достаточно docker compose up -d - docs/deploy.md: compose как primary workflow, таблица env дополнена --- Dockerfile | 12 +-- docker-compose.yml | 16 ++++ docker-entrypoint.sh => docker/entrypoint.sh | 12 +-- docs/deploy.md | 97 ++++++++++---------- 4 files changed, 79 insertions(+), 58 deletions(-) create mode 100644 docker-compose.yml rename docker-entrypoint.sh => docker/entrypoint.sh (67%) diff --git a/Dockerfile b/Dockerfile index a257809..9b945c9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ FROM golang:1.25-alpine AS builder WORKDIR /build COPY . . -RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o vk-turn-proxy ./cmd/vk-turn-server +RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o server ./cmd/server FROM alpine:3.23 @@ -11,11 +11,11 @@ RUN apk add --no-cache ca-certificates tzdata WORKDIR /app -COPY docker-entrypoint.sh . -COPY --from=builder /build/vk-turn-proxy . -RUN sed -i 's/\r$//' docker-entrypoint.sh && chmod +x docker-entrypoint.sh +COPY docker/entrypoint.sh . +COPY --from=builder /build/server . +RUN sed -i 's/\r$//' entrypoint.sh && chmod +x entrypoint.sh -EXPOSE 56000/tcp EXPOSE 56000/udp +EXPOSE 56000/tcp -ENTRYPOINT ["./docker-entrypoint.sh"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5961402 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,16 @@ +services: + btp: + image: ghcr.io/samosvalishe/btp:latest + # build: . + network_mode: host + restart: unless-stopped + environment: + # Backend address: WireGuard → 127.0.0.1:51820 | VLESS/Xray → 127.0.0.1:443 + CONNECT_ADDR: "127.0.0.1:51820" + # LISTEN_ADDR: "0.0.0.0:56000" + # VLESS_MODE: "true" + # WRAP_MODE: "true" + # WRAP_KEY: "" # 64 hex chars; required when WRAP_MODE=true + # VK_TURN_KCP_PROFILE: "balanced" # fast | balanced | slow + # VK_TURN_KCP_FEC: "10:3" # Reed-Solomon FEC, data:parity + # DEBUG: "false" diff --git a/docker-entrypoint.sh b/docker/entrypoint.sh similarity index 67% rename from docker-entrypoint.sh rename to docker/entrypoint.sh index 521dc00..c215014 100644 --- a/docker-entrypoint.sh +++ b/docker/entrypoint.sh @@ -9,11 +9,6 @@ if [ "${VLESS_MODE}" = "true" ]; then VLESS_FLAG="-vless" fi -BOND_FLAG="" -if [ "${VLESS_BOND}" = "true" ]; then - BOND_FLAG="-vless-bond" -fi - WRAP_FLAG="" WRAP_KEY_FLAG="" if [ "${WRAP_MODE}" = "true" ]; then @@ -22,4 +17,9 @@ if [ "${WRAP_MODE}" = "true" ]; then WRAP_KEY_FLAG="-wrap-key $WRAP" fi -exec ./vk-turn-proxy -listen "$LISTEN" -connect "$CONNECT" $VLESS_FLAG $BOND_FLAG $WRAP_FLAG $WRAP_KEY_FLAG +DEBUG_FLAG="" +if [ "${DEBUG}" = "true" ]; then + DEBUG_FLAG="-debug" +fi + +exec ./server -listen "$LISTEN" -connect "$CONNECT" $VLESS_FLAG $WRAP_FLAG $WRAP_KEY_FLAG $DEBUG_FLAG diff --git a/docs/deploy.md b/docs/deploy.md index a566c3d..dfd032b 100644 --- a/docs/deploy.md +++ b/docs/deploy.md @@ -1,5 +1,56 @@ # Развёртывание +## Docker Compose (рекомендуется) + +```bash +# Скопируйте docker-compose.yml на VPS и отредактируйте CONNECT_ADDR +docker compose up -d +docker compose logs -f +``` + +По умолчанию: WireGuard backend `127.0.0.1:51820`, host network, порт `56000/udp`. + +Для VLESS/Xray раскомментируйте `VLESS_MODE: "true"` и смените `CONNECT_ADDR` на `127.0.0.1:443`. + +## Docker Run + +**Host network** (backend на хосте): + +```bash +docker run -d --name btp --network host --restart unless-stopped \ + -e CONNECT_ADDR=127.0.0.1:51820 \ + ghcr.io/samosvalishe/btp:latest +``` + +**Bridge mode:** + +```bash +docker run -d --name btp -p 56000:56000/udp --restart unless-stopped \ + -e CONNECT_ADDR=:51820 \ + ghcr.io/samosvalishe/btp:latest +``` + +> В bridge mode `CONNECT_ADDR=127.0.0.1:...` указывает внутрь контейнера. Используйте host network или IP хоста. + +**Переменные окружения:** + +| Переменная | По умолчанию | Описание | +| --- | --- | --- | +| `CONNECT_ADDR` | **обязательна** | backend сервера | +| `LISTEN_ADDR` | `0.0.0.0:56000` | адрес прослушивания | +| `VLESS_MODE` | `false` | включает `-vless` | +| `WRAP_MODE` | `false` | включает `-wrap` | +| `WRAP_KEY` | пусто | значение `-wrap-key` | +| `DEBUG` | `false` | включает `-debug` | +| `VK_TURN_KCP_PROFILE` | `balanced` | профиль KCP: `fast` \| `balanced` \| `slow` | +| `VK_TURN_KCP_FEC` | `0:0` | Reed-Solomon FEC: `data:parity` (напр. `10:3`) | + +Сборка образа: + +```bash +docker build -t btp . +``` + ## systemd `/etc/systemd/system/btp.service`: @@ -26,49 +77,3 @@ sudo systemctl daemon-reload sudo systemctl enable --now btp.service sudo systemctl status btp.service ``` - -## Docker - -Образ: - -```bash -docker pull ghcr.io/samosvalishe/btp:latest -``` - -**Host network** (backend на хосте): - -```bash -docker run --rm --network host \ - -e CONNECT_ADDR=127.0.0.1:51820 \ - ghcr.io/samosvalishe/btp:latest -``` - -**Bridge mode:** - -```bash -docker run --rm -p 56000:56000/udp \ - -e CONNECT_ADDR=:51820 \ - ghcr.io/samosvalishe/btp:latest -``` - -> В bridge `CONNECT_ADDR=127.0.0.1:...` указывает внутрь контейнера. Используйте host network или IP хоста. - -**Переменные:** - -| Переменная | По умолчанию | Описание | -| --- | --- | --- | -| `CONNECT_ADDR` | **обязательна** | backend сервера | -| `LISTEN_ADDR` | `0.0.0.0:56000` | адрес прослушивания | -| `VLESS_MODE` | `false` | включает `-vless` | -| `WRAP_MODE` | `false` | включает `-wrap` | -| `WRAP_KEY` | пусто | значение `-wrap-key` | -| `VK_TURN_KCP_PROFILE` | `balanced` | профиль KCP | -| `VK_TURN_KCP_MTU` | `1200` | MTU для KCP | - -> `VLESS_BOND` в `docker-entrypoint.sh` ещё передаёт `-vless-bond` серверу, но серверный флаг удалён в V2-0 (bond автоопределяется по magic-префиксу). Не устанавливайте `VLESS_BOND=true` — сервер не запустится. - -Сборка образа: - -```bash -docker build -t btp . -```