Files
netrunner-backend/templates/init_node.sh
T
nineap c617c05233
Build & Push Image / Build and push to Gitea Registry (push) Failing after 14s
Build & Push Image / Build and push Caddy (Cloudflare DNS) image (push) Failing after 13s
CI / fmt + clippy + test (push) Has been cancelled
Переезд с ghcr.io на встроенный Container Registry Gitea
CI (build/deploy) и рантайм самого бэкенда (провижининг новых нод через
NodeService::provision_node_via_ssh — раньше читал GHCR_TOKEN, теперь
GITEA_REGISTRY_TOKEN) теперь используют gitea.netrunner-vpn.com вместо
ghcr.io. .github/workflows остались нетронутыми — та копия для настоящего
GitHub CI, там ghcr.io уместен и дальше (свой GITHUB_TOKEN, не наш секрет).
2026-07-10 20:44:03 +07:00

57 lines
2.3 KiB
Bash

#!/bin/bash
set -e
echo "[*] Step 1: Updating system packages..."
apt-get update -y && apt-get install -y ca-certificates libssl3
echo "[*] Step 2: Installing Docker..."
if ! command -v docker &> /dev/null; then
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
fi
echo "[*] Step 3: Logging into Gitea Registry via Control Plane token..."
echo "$GH_TOKEN" | docker login gitea.netrunner-vpn.com -u nineap --password-stdin
echo "[*] Step 4: Pulling the latest Netrunner image..."
docker pull gitea.netrunner-vpn.com/nineap/netrunner-proxy:latest
echo "[*] Step 5: Starting Netrunner Proxy at port ${NODE_PORT}..."
# NODE_PORT/SNI_DOMAIN/BACKEND_URL/PROXY_INTERNAL_SECRET подставляет
# NodeService::provision_node_via_ssh (см. src/modules/nodes/service.rs) —
# конкретные для ЭТОЙ ноды значения, а не общий дефолт на все ноды разом.
# Раньше control-plane URL был захардкожен прямо тут на конкретный IP, а
# --decoy-host/--require-auth/--health-port вообще не передавались — нода
# всегда стартовала с дефолтным декоем (www.debian.org, одинаковым для всех
# нод сразу) и БЕЗ проверки токена/лимитов трафика, независимо от того, что
# админ вводил при добавлении ноды.
docker run -d \
--name netrunner-proxy \
--restart always \
--network host \
--cap-add NET_ADMIN \
--cap-add NET_RAW \
--cap-add DAC_OVERRIDE \
--device /dev/net/tun:/dev/net/tun \
-e PROXY_INTERNAL_SECRET="$PROXY_INTERNAL_SECRET" \
gitea.netrunner-vpn.com/nineap/netrunner-proxy:latest \
./netrunner-proxy \
--port "$NODE_PORT" \
--decoy-host "$SNI_DOMAIN" \
--require-auth \
--backend-url "$BACKEND_URL" \
--health-port 9091 \
--metrics-port 9093
echo "[*] Step 6: Starting Watchtower for auto-updates..."
docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /root/.docker/config.json:/config.json:ro \
containrrr/watchtower \
--interval 300 \
--cleanup \
netrunner-proxy
echo "[+] Node deployment complete. Proxy and Watchtower are running."