Getting started
This page summarizes how to run KubeNDT. For the authoritative, always up-to-date instructions see the project README.
Requirements
- Kubernetes 1.20+ with the Meshnet CNI plugin installed.
- A valid kubeconfig with a cluster context.
- Docker & Docker Compose (for production deployment).
- Optional: QEMU support for VM-based node types (requires
/dev/kvm).
For local development you also need Go 1.26+ (CGO enabled) and Node.js 24 LTS.
See Cluster setup for how to bootstrap one (Minikube, kind, or kubeadm) and install the required Meshnet CNI.
Run with Docker Compose
Run the published images (nothing to compile):
curl -O https://raw.githubusercontent.com/emigcm98/kubendt/main/docker-compose.prod.yml
docker compose -f docker-compose.prod.yml up -d
Pin a release with KUBENDT_TAG=1.0.0 (defaults to latest). Or build from
source instead:
git clone https://github.com/emigcm98/kubendt.git
cd kubendt
docker compose up --build
Either way, open http://localhost in your browser.
Authentication
The dashboard and API require login. The compose files ship a default password
admin123 - override it with KUBENDT_ADMIN_PASSWORD before any real use.
For scripts and CI, create an API token in the dashboard and send it as
Authorization: Bearer <token>. To run without auth on a trusted network, set
KUBENDT_AUTH_DISABLED=true. Full reference in the
deployment guide.
Run from source (development)
Backend:
cd backend
go run .
# serves the API on http://localhost:8080
Frontend (in a second terminal):
cd frontend
npm ci
npm start
# serves the dashboard on http://localhost:3000
Your first topology
- Create a namespace in the KubeNDT dashboard.
- Import a topology JSON (
topology-network-*.json). - Apply a network configuration JSON (
network_conf.json). - Open shells into nodes and test connectivity.
KubeNDT ships 6 reference deployments under deploy/examples/ - from a
basic hosts-and-switches topology to a full 5G core with Open5GS. Start with
1-test-small
and work up.
Talking to the API
Every dashboard action is backed by the REST API. Once the backend is running,
explore the endpoints interactively in the API Reference - each
operation includes a "Try it" panel and ready-to-copy curl / Go / Python /
JavaScript snippets.
See the troubleshooting guide in the repository.