#!/usr/bin/env bash # Run ONCE, on the manager node only (prod — the new 48 GB box). Initializes # the Swarm advertising the WireGuard address, so cluster traffic never # touches the public interface. Run setup-wireguard.sh on both boxes first. set -euo pipefail MY_WG_IP="${1:?usage: $0 }" if docker info 2>/dev/null | grep -q "Swarm: active"; then echo "Swarm is already active on this node. Current state:" docker node ls echo echo "Worker join token:" docker swarm join-token -q worker exit 0 fi echo "==> docker swarm init, advertising ${MY_WG_IP} (the WireGuard address, not the public IP)" docker swarm init --advertise-addr "$MY_WG_IP" --listen-addr "${MY_WG_IP}:2377" echo echo "==> Worker join command (run this on the worker/beta node):" TOKEN="$(docker swarm join-token -q worker)" echo " docker swarm join --token ${TOKEN} ${MY_WG_IP}:2377" echo echo "(Or run deploy/swarm/join-swarm.sh on the worker.)"