selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Caddy UI logo

Self-host Caddy UI

v2.68.6

Modern web UI for managing Caddy reverse proxy

ReleaseOpen SourceApache-2.0
Updated9 hours ago
LanguageGo
Setup difficultyModerate
MobilePWA
ThemeDark mode
Stars
278
Ports
8080 (Caddy UI web interface), 9019 (Structured log ingest for analytics and certificate lifecycle)
Requires
Caddy
Docker
applegater/caddyui
Install with Docker
Dashboard overviewProxy hosts listEdit proxy host formCertificates managementCaddy servers fleet viewConfiguration snapshotsUser managementSettings and notifications

What is Caddy UI?

Caddy UI provides a browser-based control plane for the Caddy web server and reverse proxy. You configure proxy hosts, redirections, SSL certificates (including DNS-01 wildcards), and advanced routes without hand-editing Caddyfiles. One instance manages multiple Caddy nodes over their admin APIs, often linked via WireGuard or Tailscale. Access control uses three roles (admin, user, view) with per-user ownership and team groups. Authentication options include local passwords with TOTP, plus OIDC/SSO via Authelia, Authentik, Keycloak, or Google. The interface offers dark mode, installs as a PWA, and includes an optional AI assistant for Caddy/TLS/DNS questions and resource creation. Observability covers fleet-wide request attribution, Prometheus metrics, visitor analytics, upstream health checks, and structured log streaming. Data lives in embedded SQLite by default, with MariaDB as an optional backend. The application is packaged as a single Go executable inside a minimal Docker container (non-root UID 10001) with multi-arch images for amd64 and arm64.

Should you self-host Caddy UI?

Caddy UI scores 50/100 on selfhost.directory (how scoring works) and ranks #14 of 24 in Reverse Proxy. It has 278 GitHub stars.

It shipped 10 stable releases in the past year. The latest, v2.68.6, came out on 26 October 2026.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is Apache-2.0-licensed and written mostly in Go.

Its closest alternative on selfhost.directory is Traefik (87/100, 65 398 stars). It scores higher overall, so compare the two before you pick. See Caddy UI vs Traefik side by side.

Features

  • Advanced Routes
  • AI Assistant
  • Certificate Management
  • Configuration Snapshots
  • Email & Webhook Notifications
  • Fleet Observability
  • Managed DNS
  • Multi-server fleet management
  • OIDC/SSO Authentication
  • Progressive Web App (PWA)
  • Proxy Host Management
  • Redirections
  • Role-based Access Control
  • Two-factor authentication (TOTP)

Caddy UI README

How to install Caddy UI

Install Caddy UI with Docker

Docker; separate Caddy instance
Environment variables
CADDY_ADMIN_URL, CADDYUI_DB, CADDYUI_LISTEN, CADDYUI_INGEST_LISTEN

docker run -d
--name caddyui
-p 8081:8080
-v caddyui_data:/data
-e CADDY_ADMIN_URL=http://your-caddy-host:2019
applegater/caddyui:latest

Standalone Caddy UI container; requires separate Caddy instance with admin API reachable

How to configure Caddy UI

  • CADDY_ADMIN_URLhttp://caddy:2019Caddy admin API base URL

    Caddy admin API base URL

  • CADDYFILE_PATH/etc/caddy/CaddyfileOptional — path to a Caddyfile mounted into the CaddyUI container. Its snippet definitions are auto-loaded

    Optional — path to a Caddyfile mounted into the CaddyUI container. Its snippet definitions are auto-loaded

  • CADDYUI_ADMIN_ALLOWLISTOverride the stored admin IP allowlist; =off disables the gate

    Override the stored admin IP allowlist; =off disables the gate

    values: off

  • CADDYUI_DB/data/caddyui.dbPath to the SQLite database

    Path to the SQLite database

  • CADDYUI_DB_DRIVERsqliteDatabase backend: sqlite or mariadb

    Database backend: sqlite or mariadb

    values: sqlite, mariadb

  • CADDYUI_DB_DSNMariaDB DSN; required when CADDYUI_DB_DRIVER=mariadb

    MariaDB DSN; required when CADDYUI_DB_DRIVER=mariadb

  • CADDYUI_INGEST_LISTEN:9019Structured Caddy log ingest for analytics, certificate lifecycle, and temporary runtime streams; set empty to disable all three

    Structured Caddy log ingest for analytics, certificate lifecycle, and temporary runtime streams; set empty to disable all three

  • CADDYUI_LISTEN:8080Listen address

    Listen address

  • CADDYUI_PUBLIC_URLExternally visible origin, e.g. https://caddyui.example.com. Used for links in password-reset and invitation emails

    Externally visible origin, e.g. https://caddyui.example.com. Used for links in password-reset and invitation emails

  • CADDYUI_SYNC_ON_STARTSet to 1 to push DB state to Caddy on startup

    Set to 1 to push DB state to Caddy on startup

    values: 1

  • CF_API_TOKENCloudflare API token for DNS-01 challenges (wildcard certs)

    Cloudflare API token for DNS-01 challenges (wildcard certs)

  • TZUTCTimezone for Caddy access logs and cert-renewal timestamps

    Timezone for Caddy access logs and cert-renewal timestamps

    values: Any IANA zone name

Caddy UI releases & version history

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…