forked from wrenn/wrenn
- Internal ECDSA P-256 CA (WRENN_CA_CERT/WRENN_CA_KEY env vars); when absent the system falls back to plain HTTP so dev mode works without certificates - Host leaf cert (7-day TTL, IP SAN) issued at registration and renewed on every JWT refresh; fingerprint + expiry stored in DB (cert_expires_at column replaces the removed mtls_enabled flag) - CP ephemeral client cert (24-hour TTL) via CPCertStore with atomic hot-swap; background goroutine renews it every 12 hours without restarting the server - Host agent uses tls.Listen + httpServer.Serve so GetCertificate callback is respected (ListenAndServeTLS always reads cert from disk) - Sandbox reverse proxy now uses pool.Transport() so it shares the same TLS config as the Connect RPC clients instead of http.DefaultTransport - Credentials file renamed host-credentials.json with cert_pem/key_pem/ ca_cert_pem fields; duplicate register/refresh response structs collapsed to authResponse
43 lines
1.9 KiB
Plaintext
43 lines
1.9 KiB
Plaintext
# Database
|
|
DATABASE_URL=postgres://wrenn:wrenn@localhost:5432/wrenn?sslmode=disable
|
|
|
|
# Redis
|
|
REDIS_URL=redis://localhost:6379/0
|
|
|
|
# Control Plane
|
|
WRENN_CP_LISTEN_ADDR=:8080
|
|
|
|
# Host Agent
|
|
WRENN_HOST_LISTEN_ADDR=:50051
|
|
WRENN_DIR=/var/lib/wrenn
|
|
WRENN_HOST_INTERFACE=eth0
|
|
WRENN_CP_URL=http://localhost:8080
|
|
|
|
# Lago (billing — external service)
|
|
LAGO_API_URL=http://localhost:3000
|
|
LAGO_API_KEY=
|
|
|
|
# Object Storage (hibernate snapshots — Hetzner Object Storage, S3-compatible)
|
|
S3_BUCKET=wrenn-snapshots
|
|
S3_REGION=fsn1
|
|
S3_ENDPOINT=https://fsn1.your-objectstorage.com
|
|
AWS_ACCESS_KEY_ID=
|
|
AWS_SECRET_ACCESS_KEY=
|
|
|
|
# Auth
|
|
JWT_SECRET=
|
|
|
|
# mTLS — CP→Agent channel
|
|
# Generate a self-signed CA with:
|
|
# openssl ecparam -genkey -name P-256 -noout -out ca.key
|
|
# openssl req -new -x509 -key ca.key -days 3650 -out ca.crt -subj "/CN=wrenn-internal-ca"
|
|
# Then set these to the file contents (newlines replaced with \n or use multiline env).
|
|
WRENN_CA_CERT=-----BEGIN CERTIFICATE-----\nMIIBjTCCATOgAwIBAgIUJ61AjKri7lTAEIpmCXA+B/Gm0pwwCgYIKoZIzj0EAwIw\nHDEaMBgGA1UEAwwRd3Jlbm4taW50ZXJuYWwtY2EwHhcNMjYwMzMwMTIwNDI5WhcN\nMzYwMzI3MTIwNDI5WjAcMRowGAYDVQQDDBF3cmVubi1pbnRlcm5hbC1jYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABDkwv8a1Y7Xx7a5yUDLwDUUBn1fSfUlq6sGr\nVociS2Za+vo1353K61IFMNF9A3wvLXpsEAGZKbaw1iEfRs6LERijUzBRMB0GA1Ud\nDgQWBBQkuWu9flN+C/e4wPFtbWEDVWNjFjAfBgNVHSMEGDAWgBQkuWu9flN+C/e4\nwPFtbWEDVWNjFjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMCA0gAMEUCIBL0\nHmdBQy/76eLKM/X/Qtsrt2yktfxIrWQBbrXOlBd2AiEAzx8n5O0r/ebxwmAxL3y7\nVM7hllXxL6AdxJtU2vsEoA0=\n-----END CERTIFICATE-----
|
|
WRENN_CA_KEY=-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEIOjpTSFMhhR9Yi2mWtrzJ/FINEImtmz32GkwZ9eYUbDkoAoGCCqGSM49\nAwEHoUQDQgAEOTC/xrVjtfHtrnJQMvANRQGfV9J9SWrqwatWhyJLZlr6+jXfncrr\nUgUw0X0DfC8temwQAZkptrDWIR9GzosRGA==\n-----END EC PRIVATE KEY-----
|
|
|
|
# OAuth
|
|
OAUTH_GITHUB_CLIENT_ID=
|
|
OAUTH_GITHUB_CLIENT_SECRET=
|
|
OAUTH_REDIRECT_URL=https://app.wrenn.dev
|
|
CP_PUBLIC_URL=https://api.wrenn.dev
|