install.sh is the `curl -fsSL <url> | sudo bash -s -- --token ...` bootstrap:
preflight (root/arch/apt/SDR) → install docker + compose + git + jq → clone
node-26 at a pinned ref (default `v1`, `--track-main` opt-in) → write .env
non-interactively from flags/env with a /dev/tty interactive fallback →
enroll with C2 (POST /nodes/enroll, poll GET /nodes/{id}/credentials, matches
drb-c2-core/app/routers/enrollment.py exactly) and write configs/credentials.json
→ docker compose pull && up -d (prebuilt; --build opts into the ~1h op25 build)
→ print the admin-approval step. Idempotent: re-run picks up the api_key after
approval; existing .env is preserved.
- setup.sh deleted — two scripts writing .env drift. install.sh owns it now.
- Makefile `setup:` no longer calls the removed script (cp .env.example fallback).
- README Setup section rewritten around the one-liner; `make setup`/`make up`
kept as the local-dev path.
Notes carried in the script header: git.vpn.cusano.net is public (D1, settled);
`v1` must be re-cut at this change's merge commit so the tag actually contains
install.sh. Standing hazard D3: docker-compose.yml bind-mounts the app source
over the image, so a pinned ref and the pulled image tags must not diverge.
Client-side enrollment still belongs in the edge-node app (mqtt_manager.py:73-85);
install.sh doing it is the interim. Tracked for follow-up.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
40 lines
1.2 KiB
Makefile
40 lines
1.2 KiB
Makefile
.PHONY: setup test up up-prebuilt pull down logs
|
|
|
|
# Local-dev only: seed .env from the example so `make up` has something to read.
|
|
# A real edge node is provisioned with install.sh (one-shot bootstrap for a
|
|
# clean Pi — clones, enrolls with C2, pulls prebuilt images):
|
|
# curl -fsSL https://git.vpn.cusano.net/logan/node-26/raw/tag/v1/install.sh | sudo bash -s -- --help
|
|
setup:
|
|
@test -f .env || cp .env.example .env
|
|
@echo ".env ready — edit it, then 'make up' (local build) or 'make up-prebuilt'"
|
|
|
|
# Run pytest inside the running edge-node container.
|
|
# Requires: docker compose up (or at least the edge-node image built).
|
|
test:
|
|
docker compose run --no-deps --rm edge-node pytest -v
|
|
|
|
# Build all images locally and start (dev mode with local code mounted).
|
|
up:
|
|
docker compose up -d --build
|
|
|
|
# Pull pre-built images from the registry and start (no local build).
|
|
# Requires IMAGE_REGISTRY, DOCKER_ORG, DOCKER_REPO set in .env.
|
|
up-prebuilt:
|
|
docker compose pull
|
|
docker compose up --no-build -d
|
|
|
|
pull:
|
|
docker compose pull
|
|
|
|
# Helper to pull the latest git commits and rebuild/restart the dev stack.
|
|
update-git:
|
|
git pull
|
|
docker compose build
|
|
docker compose up -d
|
|
|
|
down:
|
|
docker compose down
|
|
|
|
logs:
|
|
docker compose logs -f edge-node
|