fix(docker): исправить сборку, добавить compose, убрать VLESS_BOND

- 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 дополнена
This commit is contained in:
samosvalishe
2026-05-21 16:26:04 +03:00
parent f3166c0bae
commit dfbfae2901
4 changed files with 79 additions and 58 deletions
+6 -6
View File
@@ -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"]
+16
View File
@@ -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"
@@ -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
+51 -46
View File
@@ -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=<host-ip>: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=<host-ip>: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 .
```