Project

go-dance

active

Local-first private CA for homelabs — ACME, single binary, step-ca embedded.

Overview

dance is a dead-simple private certificate authority for LAN and homelab use. A single Go binary wraps an embedded step-ca backend and exposes a browser-friendly landing page, a password-protected admin UI, and a fully functional ACME endpoint — so Caddy and other ACME clients enroll without any extra plumbing.

How it works

step-ca runs in-process, writing to SQLite. dance fronts it with session-authenticated admin routes, a certificate inventory view, passive revocation, and EAB token management. Root certificate onboarding pages handle macOS, iOS, and other platforms. Everything is a single binary launched with environment variables — no daemon config files, no systemd units, no service mesh.

Features
🔐
Embedded private CA

step-ca runs in-process; no separate daemon needed.

📜
ACME endpoint

Compatible with Caddy, certbot, and any RFC 8555 client.

🖥
Admin UI

Certificate inventory, revocation, EAB token creation — all in-browser.

📲
Trust onboarding

Root cert download pages for macOS, iOS, and generic platforms.

🗄
SQLite state

Audit log and admin state in a single local file.

📦
Single binary

go build ./cmd/dance — one file, no runtime deps.

Architecture
Browser enrollment page Go HTTP server embedded step-ca Private CA root + intermediate Certificates TLS · mTLS · ACME HTTPS Local-first private CA with web enrollment UI