wg-easy + Traefik docker-compose stack (Phase 1) plus a stdlib-only control-plane API for box registration, WireGuard peer provisioning via wg-easy, and per-box route publish/unpublish backed by Traefik's file provider (Phase 2, single-tenant mode). SQLite holds accounts/boxes/routes so a later multi-tenant shared instance is the same schema with more rows, not a reshape. wg-easy's actual REST API was verified against its source rather than assumed: it has no bearer-token auth (session-cookie login via POST /api/auth/password) and no way to accept an externally-generated public key (it always mints the keypair itself, private key included) — both corrected from the original plan during implementation.
7 lines
156 B
Docker
7 lines
156 B
Docker
FROM python:3.12-slim
|
|
|
|
WORKDIR /app
|
|
COPY . /app/control_plane
|
|
|
|
EXPOSE 8090
|
|
CMD ["python", "-m", "control_plane.app", "--host", "0.0.0.0", "--port", "8090"]
|