Bring the Swarm+Forgejo layer in line with the canonical topology in docs/runbooks/implementation-handoff.md: three nodes (prod, beta, and the desktop LAN dev machine) instead of two, with the Forgejo Actions runner registered on the desktop as a plain systemd service rather than a Swarm-scheduled Docker-in-Docker sidecar. - setup-wireguard.sh: full N-peer mesh instead of point-to-point - docker-stack.yml: drop the runner/runner-dind services, volumes, and runner-token secret; only forgejo_db_password remains - register-lan-runner.sh: register under both docker and thermograph-lan labels, since one runner now covers both job types - init-swarm.sh, join-swarm.sh, swarm/README.md, forgejo/README.md, INFRA.md: updated node lists, order of operations, and access-state table for three nodes - deploy.yml: renamed to "Deploy to beta VPS" and reconciled the main-vs-release branch question against terraform.tfvars.example (this workflow already targets beta; a release-triggered prod deploy doesn't exist yet and isn't invented here)
29 lines
1.1 KiB
Bash
Executable file
29 lines
1.1 KiB
Bash
Executable file
#!/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 all THREE nodes
|
|
# first (prod, beta, and the desktop — see
|
|
# docs/runbooks/implementation-handoff.md Track B steps 2-3).
|
|
set -euo pipefail
|
|
|
|
MY_WG_IP="${1:?usage: $0 <my_wg_ip>}"
|
|
|
|
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 EACH of the two workers — beta and"
|
|
echo " the desktop; the same token works for both):"
|
|
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 <manager_wg_ip> <token> on each worker.)"
|