- DashCaddy was born from the frustration of managing dozens of
- Docker containers, SSL certificates, and DNS records by hand. We
- built the tool we wished existed — and then made it AI-powered.
-
-
-
-
- {/* Story */}
-
-
-
Our Story
-
-
- Self-hosting is powerful. You own your data, you control your
- infrastructure, and you're not at the mercy of SaaS
- providers who can change their terms, raise prices, or shut down
- overnight. But let's be honest — it can also be a
- pain.
-
-
- Every new service means editing Caddyfiles, creating DNS
- records, configuring SSL certificates, writing Docker Compose
- files, and hoping everything plays nicely together. Multiply that
- by 20, 30, or 50 services, and you've got a full-time
- operations job on your hands.
-
-
- DashCaddy was built to solve this. One click to deploy an app.
- SSL, DNS, and reverse proxy configuration happen automatically.
- A beautiful dashboard with real-time WebSocket updates to monitor
- everything. Natural language AI commands so you can just say
- “deploy Plex” and it happens. And when something
- goes wrong, you know about it immediately — not when a
- family member texts you that Plex is down.
-
-
- We believe self-hosting should be accessible to everyone, not
- just people who enjoy writing YAML at 2 AM. DashCaddy makes it
- beautiful, effortless, and intelligent.
-
-
-
-
-
- {/* Values */}
-
-
-
- What We Believe In
-
-
- {[
- {
- icon: "🔒",
- title: "Proprietary & Polished",
- description:
- "DashCaddy is proprietary software built with care. The core platform is free to use, with Premium features for advanced orchestration.",
- },
- {
- icon: "🏠",
- title: "Your Data, Your Server",
- description:
- "DashCaddy runs entirely on your hardware. No cloud dependency, no telemetry, no phoning home. Your data never leaves your network.",
- },
- {
- icon: "🤖",
- title: "AI-Native",
- description:
- "From the AI Intent Router to MCP server integration, DashCaddy is built for the AI era. Control your homelab with natural language or let AI assistants manage it for you.",
- },
- ].map((value) => (
-
-
-
-
- >
- );
-}
+import Navbar from "@/components/Navbar";
+import Footer from "@/components/Footer";
+import Link from "next/link";
+
+export default function AboutPage() {
+ return (
+ <>
+
+
+ {/* Hero */}
+
+
+
+
+ Built for the{" "}
+ Self-Hosting Community
+
+
+ DashCaddy was born from the frustration of managing dozens of
+ Docker containers, SSL certificates, and DNS records by hand. We
+ built the tool we wished existed — and then made it AI-powered.
+
+
+
+
+ {/* Story */}
+
+
+
Our Story
+
+
+ Self-hosting is powerful. You own your data, you control your
+ infrastructure, and you're not at the mercy of SaaS
+ providers who can change their terms, raise prices, or shut down
+ overnight. But let's be honest — it can also be a
+ pain.
+
+
+ Every new service means editing Caddyfiles, creating DNS
+ records, configuring SSL certificates, writing Docker Compose
+ files, and hoping everything plays nicely together. Multiply that
+ by 20, 30, or 50 services, and you've got a full-time
+ operations job on your hands.
+
+
+ DashCaddy was built to solve this. One click to deploy an app.
+ SSL, DNS, and reverse proxy configuration happen automatically.
+ A beautiful dashboard with real-time WebSocket updates to monitor
+ everything. Natural language AI commands so you can just say
+ “deploy Plex” and it happens. And when something
+ goes wrong, you know about it immediately — not when a
+ family member texts you that Plex is down.
+
+
+ We believe self-hosting should be accessible to everyone, not
+ just people who enjoy writing YAML at 2 AM. DashCaddy makes it
+ beautiful, effortless, and intelligent.
+
+
+
+
+
+ {/* Values */}
+
+
+
+ What We Believe In
+
+
+ {[
+ {
+ icon: "🔒",
+ title: "Proprietary & Polished",
+ description:
+ "DashCaddy is proprietary software built with care. The core platform is free to use, with Premium features for advanced orchestration.",
+ },
+ {
+ icon: "🏠",
+ title: "Your Data, Your Server",
+ description:
+ "DashCaddy runs entirely on your hardware. No cloud dependency, no telemetry, no phoning home. Your data never leaves your network.",
+ },
+ {
+ icon: "🤖",
+ title: "AI-Native",
+ description:
+ "From the AI Intent Router to MCP server integration, DashCaddy is built for the AI era. Control your homelab with natural language or let AI assistants manage it for you.",
+ },
+ ].map((value) => (
+
The template library covers the most popular self-hosted applications — media servers, dashboards,
databases, note apps, automation tools, and more. Each template bundles sane defaults for ports,
@@ -62,7 +62,7 @@ export default function DocsFirstServicePage() {
Step 1: Open the template library
From the dashboard sidebar, click New Service → From Template. The template library
- opens with a searchable grid of 93 applications.
+ opens with a searchable grid of 77 applications.
Before installing DashCaddy, verify that your host meets these minimum requirements:
-
-
-
-
-
Component
-
Minimum
-
Recommended
-
-
-
-
-
Operating System
-
Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+)
-
Ubuntu 22.04 LTS or Debian 12
-
-
-
CPU
-
2 cores
-
4+ cores
-
-
-
RAM
-
2 GB
-
4+ GB (8 GB for 20+ services)
-
-
-
Disk
-
10 GB free
-
50+ GB SSD
-
-
-
Docker
-
20.10+
-
Latest stable
-
-
-
Docker Compose
-
v2.0+
-
Latest stable
-
-
-
Node.js
-
20.x LTS
-
20.x LTS or 22.x LTS
-
-
-
Caddy
-
2.6+ with Admin API
-
Latest stable
-
-
-
Technitium DNS
-
Optional
-
Latest stable (for auto DNS)
-
-
-
-
-
-
Quick start with start.sh
+
Before you start
- The fastest path to a running DashCaddy is the bundled start.sh script. It performs environment
- checks, pulls the required containers, generates configuration, and brings the stack up in a single command.
+ You only need three things to install DashCaddy:
+
+
+
A Linux host that stays on — Ubuntu 22.04 LTS, Debian 12, or any recent Linux distribution. 2 GB RAM and a few GB of disk are enough to start.
+
Root or sudo access — the installer writes to /etc/dashcaddy, /opt/dockerdata, and the system Docker daemon.
+
A hostname — a domain you own, a custom-TLD like dashcaddy.home, or just your machine's IP for local-only use.
+
+
+
Pick your hostname
+
+ DashCaddy uses a single base hostname and creates subdomains under it for every service you add (for example
+ plex.dashcaddy.home, homeassistant.dashcaddy.home). Choose the option that matches
+ your situation:
- The script is idempotent — re-running it will reconcile the stack rather than clobber an existing install.
- If DashCaddy is already running, start.sh detects this and offers to update configuration or
- restart services instead of reinstalling from scratch.
+ If you own example.com, register dashcaddy.example.com as a DNS A record pointing at
+ your host's public IP. You can buy a domain for about $10/year from any registrar (Namecheap, Cloudflare,
+ Porkbun, Google Domains). With a real domain, DashCaddy automatically gets a trusted Let's Encrypt
+ certificate on first launch — no certificate warnings, no client setup.
-
What start.sh does
-
Under the hood, the script performs these steps:
-
-
Dependency validation — checks for Docker, Docker Compose, Node.js, and Caddy
-
Port availability check — verifies ports 80, 443, and 2019 (Caddy Admin API) are free
-
Configuration generation — creates .env file with sensible defaults
-
Docker image pull — fetches the DashCaddy API and dashboard images
-
Container startup — launches the stack via Docker Compose
-
Health check — waits for the API to respond on /healthz
-
Dashboard URL display — prints the access URL and initial admin credentials
-
-
-
Docker Compose configuration
+
Option B — A custom TLD on your home network
- If you prefer to inspect or customize the Docker Compose configuration before launching, here's the
- default docker-compose.yml that start.sh generates:
+ Use a domain like dashcaddy.home, dashcaddy.lan, or dashcaddy.local.
+ These will not resolve on the public internet, which is exactly what you want for a home server. Two ways to
+ make them resolve:
Router DNS — most home routers let you add a local DNS entry. Point *.dashcaddy.home at your server's LAN IP. All devices on your network pick it up automatically.
+
Tailscale MagicDNS — install Tailscale on the host and your devices. Their MagicDNS gives every machine a stable name.tailnet.ts.net name, no DNS editing needed.
+
- DashCaddy's behavior is controlled through environment variables in the .env file. Here's
- a complete reference:
+ Custom TLDs require installing DashCaddy's internal CA certificate (DashCA) on each device that connects.
+ The setup wizard walks you through this on first run.
+
+
+
Option C — A direct IP address
+
+ If you don't want to set up DNS at all, you can reach DashCaddy at https://192.168.x.x:port.
+ This works for a single machine on a LAN, but the URL changes when the host gets a new IP and you lose
+ subdomain support. Useful for a quick test, not a permanent setup.
-
-
-
-
-
Variable
-
Default
-
Description
-
-
-
-
-
NODE_ENV
-
production
-
Runtime environment (development or production)
-
-
-
DASHCADDY_PORT
-
3001
-
Port for the DashCaddy API server
-
-
-
CADDY_ADMIN_URL
-
http://caddy:2019
-
Caddy Admin API endpoint
-
-
-
TECHNITIUM_API_URL
-
http://technitium:5380
-
Technitium DNS API endpoint
-
-
-
TECHNITIUM_API_TOKEN
-
(required)
-
API token for Technitium DNS authentication
-
-
-
JWT_SECRET
-
(auto-generated)
-
Secret key for JWT token signing
-
-
-
DASHCA_ENABLED
-
true
-
Enable internal certificate authority
-
-
-
BASE_DOMAIN
-
local
-
Base domain for service hostnames
-
-
-
PROMETHEUS_ENABLED
-
true
-
Expose Prometheus metrics at /metrics
-
-
-
LOG_LEVEL
-
info
-
Logging verbosity (debug, info, warn, error)
-
-
-
DATA_DIR
-
./data
-
Path for persistent state storage
-
-
-
-
-
The Smart Defaults Wizard
- Smart Defaults Wizard: On first launch, the dashboard opens to the Smart Defaults Wizard. It surveys your host and pre-fills sensible choices so you can go from install to a working deployment in minutes. Every default is editable — the wizard simply gives you a known-good starting point instead of a blank slate.
+ No port forwarding? If your ISP puts you behind CGNAT or you
+ don't want to open ports 80 and 443, DashCaddy works fine behind a Tailscale tunnel or Cloudflare
+ Tunnel. Set up the tunnel first, point your hostname at the tunnel's origin, then run the installer
+ with --no-caddy and let the tunnel handle HTTPS termination.
-
The wizard performs these tasks automatically:
-
-
Caddy detection — detects the Caddy Admin API endpoint and validates connectivity
-
Technitium detection — detects Technitium DNS (if installed) and configures the API token and zone
-
Domain suggestion — proposes a base domain and naming convention for new services
-
DashCA initialization — initializes the internal certificate authority and offers the root certificate for download
-
Admin account creation — creates the initial admin account and offers TOTP 2FA enrollment
-
Network scanning — scans for existing Docker containers and offers to adopt them via Service Discovery
-
-
-
Manual setup
+
Run the installer
- If you want direct control over paths, services, Caddy, and DNS integration, you can deploy manually
- instead of using start.sh:
+ Open a terminal on the host you want to install DashCaddy on and run one of these:
+
+
+
Three-command install (most users)
+
{`# 1. Download and run the installer
+curl -fsSL https://get.dashcaddy.net | bash
+
+# 2. Answer the prompts (domain, install location, storage size)
+# Defaults are sensible — just press Enter to accept.
+
+# 3. Open the URL the installer prints at the end`}
+
+
Two-keystroke install (no typing)
+
{`# Install with a public domain — only thing you type is the domain
+curl -fsSL https://get.dashcaddy.net | bash -s -- --domain dashcaddy.example.com
+
+# Or use a custom TLD (your router / Tailscale handles DNS)
+curl -fsSL https://get.dashcaddy.net | bash -s -- --domain dashcaddy.home
+
+# Or skip DNS entirely and use a local address (good for a first test)
+curl -fsSL https://get.dashcaddy.net | bash -s -- quick`}
+
+
What the installer does
+
+ The installer is a single shell script that runs in seven steps, all idempotent — re-running it on an existing
+ install reconciles the stack rather than clobbering your config:
-
Run the installer: curl -fsSL https://get.dashcaddy.net | bash
-
Install the API dependencies: cd dashcaddy && npm ci
-
Prepare Caddy and confirm the Admin API is reachable on port 2019
-
Prepare Technitium DNS if you want automatic DNS changes (optional)
-
Copy .env.example to .env and configure environment variables
-
Start the DashCaddy API: npm run start (or use your process manager like systemd or PM2)
-
Serve the dashboard through Caddy by adding a reverse proxy rule to your Caddyfile
+
Detect your environment — operating system, package manager, free disk space, available memory, public and LAN IP addresses
+
Install prerequisites — Docker Engine and the Docker Compose plugin if missing
+
Write configuration — generates /etc/dashcaddy/, /opt/dockerdata/, and the DashCaddy config file with sensible defaults
+
Pull the DashCaddy container image — fetches the latest release from the public registry
+
Start the DashCaddy container — launches dashcaddy-api on port 3001, mounts persistent data volumes
+
Health check — waits for the API to respond on /healthz before continuing
+
Print the access URL — shows the dashboard address and any follow-up commands
-
Common installation issues
-
If you encounter problems during installation, check this troubleshooting table:
+
+ If the installer ever hits a problem, it stops at the step that failed and tells you exactly which command to
+ re-run to retry. It does not silently leave a half-installed state behind.
+
+
+
The first-run setup wizard
+
+ When you open the dashboard URL the installer printed, you land on the setup wizard. It runs once and writes
+ your configuration to disk — every choice is editable later from the settings page.
+
+
+
The wizard walks through these screens:
+
+
Pick a configuration profile — Professional Home Lab (recommended for most users), Simple (minimal config), or Public (for VPS deployments exposed to the internet)
+
Configure your network — your domain, the LAN IP that'll be used for service routing, and whether you want to use Tailscale for remote access
+
Set storage limits — max disk usage for Docker data and how much headroom to keep free
+
Review your choices — a summary screen with the resolved values so you can sanity-check before saving
+
Disk-safety confirmation — confirms you understand that bound storage will be created and what happens on uninstall
+
+
+
+ After the wizard saves, you're asked to create the first admin account. Pick a strong password — this
+ account controls every service DashCaddy manages.
+
+
+
Set up two-factor authentication
+
+ Right after creating your admin account, the dashboard prompts you to enroll a TOTP authenticator
+ (Google Authenticator, Authy, 1Password, or any RFC 6238 app). Scan the QR code with your phone, enter the
+ 6-digit code to confirm, and store the recovery codes somewhere safe — they are the only way back into your
+ account if you lose your phone.
+
+
+
+ Don't skip 2FA. DashCaddy can manage DNS records, start and
+ stop containers, and read credentials for the services it deploys. A leaked password without a second
+ factor is a full compromise. A leaked password with 2FA is just a login screen.
+
+
+
+
Install the DashCA root certificate (custom-TLD installs only)
+
+ If you chose Option B (a custom TLD like dashcaddy.home) or Option C (a direct IP), your browser
+ will warn that the certificate is not trusted — because it isn't, to anyone outside your network. DashCaddy
+ ships an internal certificate authority called DashCA so internal hostnames get a real TLS
+ certificate instead of self-signed warnings.
+
+
+ Visit the DashCA page in the dashboard and follow the per-platform instructions:
+
+
+
macOS — open the downloaded .crt, add it to the System keychain, set it to “Always Trust”
+
Windows — double-click the .crt, install to “Trusted Root Certification Authorities”
+
Linux — copy to /usr/local/share/ca-certificates/ and run sudo update-ca-certificates
+
iOS / Android — download the profile, install it via Settings, then enable full trust for the CA
+
+
+ You need to install the root certificate on every device that connects to your DashCaddy services, not just
+ the server. There's no way around this for custom-TLD installs — TLS is what keeps your traffic private.
+
+
+
Harden the host right after install
+
+ DashCaddy protects the services it manages, but it runs on top of a normal Linux box that's still exposed
+ on your network. Spend five minutes on these four steps:
+
+
+
1. Enable the firewall
+
{`# UFW (Ubuntu / Debian)
+sudo ufw default deny incoming
+sudo ufw allow ssh # if you SSH in
+sudo ufw allow 80/tcp # HTTP (Let's Encrypt + redirect)
+sudo ufw allow 443/tcp # HTTPS
+sudo ufw enable
+
+# If you put DashCaddy behind a tunnel (Tailscale / Cloudflare), skip 80/443 above
+# and only allow the tunnel interface — see your tunnel provider's docs`}
+
+
2. Disable password SSH login
+
{`# Edit /etc/ssh/sshd_config and set:
+PasswordAuthentication no
+PermitRootLogin prohibit-password # or "no" if you use a sudo user
+
+sudo systemctl restart sshd`}
+ All your DashCaddy state — services, config, encrypted credentials, DashCA — lives in
+ /opt/dockerdata and /etc/dashcaddy. Snapshot those two directories somewhere off
+ the host. Any tool works: rsync to a NAS, restic to Backblaze B2, a systemd timer
+ that tars them up nightly. The dashboard's Backup button exports a single JSON file you can store
+ anywhere if you want a no-setup option.
+
+
+
Verify the install
+
+ After the wizard finishes and you've logged in, run through this checklist to confirm everything is wired
+ up correctly:
+
+
+
Container is running — docker ps should show dashcaddy-api with status Up
+
API is healthy — from the host, curl http://localhost:3001/healthz returns {`{"status":"alive"}`} and /readyz returns 200 with all checks passing
+
Dashboard responds — opening the URL the installer printed shows the dashboard, not a browser error
+
TLS works — the address bar shows a padlock with no warnings (a real cert if you used Option A; trusted if you used Option B with DashCA installed)
+
2FA works — log out and back in with your password + TOTP code
+
Updates work — the dashboard shows the current version in the footer and the update button is enabled
+
+
+
Troubleshooting a fresh install
Symptom
-
Cause
-
Solution
+
Likely cause
+
Fix
-
Port 80 or 443 already in use
-
Another web server (nginx, Apache) is running
-
Stop the conflicting service or change Caddy's ports in docker-compose.yml
+
Installer says “Docker not found”
+
Docker Engine isn't installed or you're not in the docker group
+
Run sudo usermod -aG docker $USER, log out, log back in. Re-run the installer.
-
Docker permission denied
-
Current user not in docker group
-
Run sudo usermod -aG docker $USER and log out/in
+
Installer fails on “port 80/443 already in use”
+
Another web server (nginx, Apache, another Caddy) is bound to those ports
+
Stop the conflicting service, or move it to different ports and re-run the installer
-
Caddy Admin API unreachable
-
Caddy not running or Admin API disabled
-
Ensure Caddy is running with admin :2019 in its config
+
Dashboard URL gives a connection refused
+
Container failed to start, or the host firewall is blocking the port
+
docker ps — if the container exited, docker logs dashcaddy-api shows why. If running, check the firewall.
-
Technitium API token invalid
-
Token not set or expired
-
Generate a new token in Technitium web console and update .env
+
Browser shows “Your connection is not private”
+
Custom-TLD install with no DashCA trust, OR the domain doesn't point at this host
+
For custom TLDs, install the DashCA root certificate. For real domains, check DNS: dig +short your-hostname should return the host's public IP.
-
Dashboard shows 502 Bad Gateway
-
API server not responding
-
Check docker logs dashcaddy-api for errors
-
-
-
Out of memory during deployment
-
Insufficient RAM for container workloads
-
Increase host RAM or reduce concurrent service deployments
+
Let's Encrypt certificate never issues
+
Domain doesn't resolve publicly, OR port 80 is blocked by your ISP
+
Verify the A record with dig. If you're on CGNAT, switch to Tailscale Funnel or Cloudflare Tunnel.
-
Certificate trust errors in browser
-
DashCA root cert not installed on client
-
Download root cert from DashCA page and install on client device
+
Setup wizard loops back to step 1
+
Browser stored a stale config from a previous install
+
Open DevTools → Application → Local Storage → clear the dashcaddy-setup key, then reload
-
Post-install verification
-
After the stack is up, verify each layer with these commands:
+
Uninstall
+
+ If you want to remove DashCaddy cleanly, the installer has an uninstall mode that stops the container,
+ removes the systemd unit, and (optionally) deletes the data volumes:
+
+
{`# Remove DashCaddy but keep your config and data (you can reinstall later)
+curl -fsSL https://get.dashcaddy.net | bash -s -- --uninstall
-
Open your browser and navigate to http://localhost:3000 (or your configured domain). You should see the DashCaddy dashboard login screen.
+# Remove everything including config and data (irreversible)
+curl -fsSL https://get.dashcaddy.net | bash -s -- --uninstall --purge`}
Next steps
- Once install checks pass, head to the Deploy Your First Service guide to
- bring your first application online.
+ With DashCaddy installed and hardened, head to the Deploy Your First Service guide
+ to bring an application online through the App Selector.
- If you need to understand the architecture in more depth, see the Product Overview.
+ If you want to understand the architecture before adding services, see the Product Overview.
+ For problems during or after install, the Troubleshooting page
+ walks each layer bottom-up.
diff --git a/src/app/docs/integrations/page.tsx b/src/app/docs/integrations/page.tsx
index fb9d439..885acc0 100644
--- a/src/app/docs/integrations/page.tsx
+++ b/src/app/docs/integrations/page.tsx
@@ -27,7 +27,7 @@ export default function DocsIntegrationsPage() {
Docker (and Docker Compose) is the runtime foundation for every deployment workflow, container lifecycle action,
service discovery sweep, and template-based launch. DashCaddy communicates with the Docker daemon over the
Unix socket (/var/run/docker.sock) to start, stop, restart, inspect, and adopt containers, and to
- deploy the 93 one-click application templates from the catalog.
+ deploy the 77 one-click application templates from the catalog.
The daemon connection is established at startup. If the socket is missing or permissioned for a different user,
diff --git a/src/app/docs/overview/page.tsx b/src/app/docs/overview/page.tsx
index 75b2cbc..834b4f4 100644
--- a/src/app/docs/overview/page.tsx
+++ b/src/app/docs/overview/page.tsx
@@ -162,7 +162,7 @@ export default function DocsOverviewPage() {
Docker deployment
Manual compose files
-
93 one-click templates
+
77 one-click templates
Templates + Recipes
@@ -217,7 +217,7 @@ export default function DocsOverviewPage() {
Pricing
Time + complexity
Free forever
-
$20–$99 one-time
+
$20–$99 / license duration
@@ -250,8 +250,8 @@ export default function DocsOverviewPage() {
Premium licensing
- DashCaddy Premium is a one-time purchase (not a subscription) that unlocks advanced orchestration
- features. Pricing tiers:
+ DashCaddy Premium is a fixed-duration license. You buy the duration you want; Premium features unlock
+ for that duration and deactivate when it expires. You purchase a new license to renew. Pricing tiers:
$20 — 30-day license
diff --git a/src/app/docs/premium/page.tsx b/src/app/docs/premium/page.tsx
index 5599e99..d72a94d 100644
--- a/src/app/docs/premium/page.tsx
+++ b/src/app/docs/premium/page.tsx
@@ -39,7 +39,7 @@ export default function DocsPremiumPage() {
- Premium is sold as one-time payments for fixed license durations. There is a single Premium tier — no ladder
- of plans to navigate. Longer durations are discounted relative to the monthly rate.
+ Premium is sold as a fixed-duration license. You pick the duration that fits your needs; the license unlocks
+ Premium features for that period and then expires. You manually purchase a new license when the current
+ one expires. There is a single Premium tier — no ladder of plans to navigate. Longer durations are
+ discounted relative to the short-term rate.
One-time payments — no auto-renewing subscription; your license runs for the purchased duration and then expires.
+
Fixed-duration license — your license runs for the purchased duration and then expires. You re-purchase manually when you want to renew.
One Premium tier — every duration unlocks the same features.
One active machine per license — a license is bound to a single host at a time.
7-day grace period after expiry — services keep running while you renew; Premium features are read-only during grace.
diff --git a/src/app/features/page.tsx b/src/app/features/page.tsx
index 73e0c72..5b355d0 100644
--- a/src/app/features/page.tsx
+++ b/src/app/features/page.tsx
@@ -1,457 +1,457 @@
-'use client';
-
-import Link from 'next/link';
-import Navbar from '@/components/Navbar';
-import Footer from '@/components/Footer';
-import FeatureCard from '@/components/FeatureCard';
-
-interface FeatureItem {
- icon: string;
- label: string;
- premium?: boolean;
-}
-
-interface FeatureSection {
- id: string;
- title: string;
- description: string;
- icon: string;
- badge?: string;
- features: FeatureItem[];
-}
-
-export default function FeaturesPage() {
- const features: FeatureSection[] = [
- {
- id: 'ai-self-hosting',
- title: 'AI-Powered Self-Hosting',
- description:
- 'Talk to your homelab. DashCaddy\'s AI Intent Router understands natural language commands, and the built-in MCP Server lets AI assistants like Claude and GPT control your infrastructure directly. The first self-hosting platform built for the agentic era.',
- icon: '🤖',
- badge: 'New',
- features: [
- { icon: '🎯', label: 'AI Intent Router — natural language commands' },
- { icon: '🔌', label: 'MCP Server for Claude & GPT control' },
- { icon: '💬', label: '"deploy Plex", "check SSL status", "restart jellyfin"' },
- { icon: '🧠', label: 'Context-aware infrastructure reasoning' },
- ],
- },
- {
- id: 'app-deployment',
- title: 'App Deployment',
- description:
- 'Deploy from a library of 93 pre-configured Docker templates with one click. Automatic configuration, smart defaults, and service discovery that auto-detects running containers and lets you adopt them instantly. From zero to live in seconds.',
- icon: '🚀',
- features: [
- { icon: '⚡', label: 'One-click deployment' },
- { icon: '📦', label: '93 app templates' },
- { icon: '⚙️', label: 'Automatic configuration' },
- { icon: '🔍', label: 'Service Discovery & auto-adopt' },
- { icon: '🧙', label: 'Smart Defaults Wizard' },
- ],
- },
- {
- id: 'ssl-security',
- title: 'SSL & Security',
- description:
- 'Enterprise-grade security, baked in. Automatic SSL via Caddy\'s internal CA, TOTP 2FA with email magic link, multi-user admin with role-based access, encrypted credential vault, comprehensive audit logs, and a Security Center that unifies events from every source.',
- icon: '🔒',
- features: [
- { icon: '🔐', label: 'Automatic SSL certificates' },
- { icon: '📱', label: 'TOTP 2FA + email magic link' },
- { icon: '👥', label: 'Multi-user admin (RBAC + invites)' },
- { icon: '🔑', label: 'Encrypted credential vault' },
- { icon: '📝', label: 'Audit logging' },
- { icon: '🛡️', label: 'Security Center (multi-source events)' },
- ],
- },
- {
- id: 'dns-networking',
- title: 'DNS & Networking',
- description:
- 'Full DNS automation powered by Technitium DNS, plus a Caddyfile-as-code visual builder for crafting reverse proxy rules without touching config files. Manage subdomains, routes, and proxies from a single dashboard.',
- icon: '🌐',
- features: [
- { icon: '✨', label: 'Automatic DNS records' },
- { icon: '🔗', label: 'Technitium DNS integration' },
- { icon: '🏗️', label: 'Caddyfile-as-code visual builder' },
- { icon: '🔁', label: 'Reverse proxy management' },
- ],
- },
- {
- id: 'monitoring-ops',
- title: 'Monitoring & Operations',
- description:
- 'Real-time visibility into every container and service. WebSocket live updates keep your dashboard in sync instantly, health checks catch problems early, and Prometheus metrics export feeds your existing observability stack.',
- icon: '📊',
- features: [
- { icon: '🟢', label: 'Real-time health monitoring' },
- { icon: '⚡', label: 'WebSocket live updates' },
- { icon: '📈', label: 'Prometheus metrics export' },
- { icon: '💓', label: 'Container health checks' },
- { icon: '⏱️', label: 'Response time & resource tracking' },
- ],
- },
- {
- id: 'backup-recovery',
- title: 'Backup & Recovery',
- description:
- 'One-click backup and disaster recovery built for peace of mind. Full-system backups with checksum verification, point-in-time restore, and a disaster recovery workflow that gets you back online fast when it matters most.',
- icon: '💾',
- features: [
- { icon: '🔙', label: 'One-click backup & restore' },
- { icon: '🆘', label: 'Disaster Recovery mode' },
- { icon: '✅', label: 'Full-system backup w/ checksums' },
- { icon: '⏮️', label: 'Point-in-time restore' },
- ],
- },
- {
- id: 'developer-platform',
- title: 'Developer Platform',
- description:
- 'DashCaddy isn\'t just a UI—it\'s a platform. A full REST API with JSON endpoints, a plugin/extension system for custom workflows, and internationalization across 31 languages including full RTL support.',
- icon: '🛠️',
- features: [
- { icon: '🌐', label: 'REST API (JSON, MCP protocol)' },
- { icon: '🔌', label: 'Plugin / Extension system' },
- { icon: '🔄', label: 'Auto-update manager' },
- { icon: '🌍', label: 'i18n: EN/ES/FR/DE/AR (RTL)' },
- ],
- },
- {
- id: 'premium',
- title: 'Premium Features',
- description:
- 'Power features for production and multi-host deployments. Auto-Login SSO across your apps, multi-container Recipes, Docker Swarm orchestration, and Fleet Management to register remote instances with parallel health probes and multi-host deploy plans.',
- icon: '⭐',
- features: [
- { icon: '🔑', label: 'Auto-Login SSO', premium: true },
- { icon: '📚', label: 'Recipes (multi-container stacks)', premium: true },
- { icon: '🐳', label: 'Docker Swarm orchestration', premium: true },
- { icon: '📡', label: 'Multi-Host Fleet Management', premium: true },
- { icon: '🚀', label: 'Priority support', premium: true },
- ],
- },
- ];
-
- return (
-
-
-
- {/* Hero Section */}
-
-
-
-
-
-
-
-
-
-
-
- AI-native self-hosting platform
-
-
- Every Tool You Need to Self-Host
-
-
- From AI-powered deployment to enterprise security, real-time monitoring, and multi-host fleet management — DashCaddy brings the entire self-hosting stack under one roof.
-
- );
-}
+'use client';
+
+import Link from 'next/link';
+import Navbar from '@/components/Navbar';
+import Footer from '@/components/Footer';
+import FeatureCard from '@/components/FeatureCard';
+
+interface FeatureItem {
+ icon: string;
+ label: string;
+ premium?: boolean;
+}
+
+interface FeatureSection {
+ id: string;
+ title: string;
+ description: string;
+ icon: string;
+ badge?: string;
+ features: FeatureItem[];
+}
+
+export default function FeaturesPage() {
+ const features: FeatureSection[] = [
+ {
+ id: 'ai-self-hosting',
+ title: 'AI-Powered Self-Hosting',
+ description:
+ 'Talk to your homelab. DashCaddy\'s AI Intent Router understands natural language commands, and the built-in MCP Server lets AI assistants like Claude and GPT control your infrastructure directly. The first self-hosting platform built for the agentic era.',
+ icon: '🤖',
+ badge: 'New',
+ features: [
+ { icon: '🎯', label: 'AI Intent Router — natural language commands' },
+ { icon: '🔌', label: 'MCP Server for Claude & GPT control' },
+ { icon: '💬', label: '"deploy Plex", "check SSL status", "restart jellyfin"' },
+ { icon: '🧠', label: 'Context-aware infrastructure reasoning' },
+ ],
+ },
+ {
+ id: 'app-deployment',
+ title: 'App Deployment',
+ description:
+ 'Deploy from a library of 77 pre-configured Docker templates with one click. Automatic configuration, smart defaults, and service discovery that auto-detects running containers and lets you adopt them instantly. From zero to live in seconds.',
+ icon: '🚀',
+ features: [
+ { icon: '⚡', label: 'One-click deployment' },
+ { icon: '📦', label: '77 app templates' },
+ { icon: '⚙️', label: 'Automatic configuration' },
+ { icon: '🔍', label: 'Service Discovery & auto-adopt' },
+ { icon: '🧙', label: 'Smart Defaults Wizard' },
+ ],
+ },
+ {
+ id: 'ssl-security',
+ title: 'SSL & Security',
+ description:
+ 'Enterprise-grade security, baked in. Automatic SSL via Caddy\'s internal CA, TOTP 2FA with email magic link, multi-user admin with role-based access, encrypted credential vault, comprehensive audit logs, and a Security Center that unifies events from every source.',
+ icon: '🔒',
+ features: [
+ { icon: '🔐', label: 'Automatic SSL certificates' },
+ { icon: '📱', label: 'TOTP 2FA + email magic link' },
+ { icon: '👥', label: 'Multi-user admin (RBAC + invites)' },
+ { icon: '🔑', label: 'Encrypted credential vault' },
+ { icon: '📝', label: 'Audit logging' },
+ { icon: '🛡️', label: 'Security Center (multi-source events)' },
+ ],
+ },
+ {
+ id: 'dns-networking',
+ title: 'DNS & Networking',
+ description:
+ 'Full DNS automation powered by Technitium DNS, plus a Caddyfile-as-code visual builder for crafting reverse proxy rules without touching config files. Manage subdomains, routes, and proxies from a single dashboard.',
+ icon: '🌐',
+ features: [
+ { icon: '✨', label: 'Automatic DNS records' },
+ { icon: '🔗', label: 'Technitium DNS integration' },
+ { icon: '🏗️', label: 'Caddyfile-as-code visual builder' },
+ { icon: '🔁', label: 'Reverse proxy management' },
+ ],
+ },
+ {
+ id: 'monitoring-ops',
+ title: 'Monitoring & Operations',
+ description:
+ 'Real-time visibility into every container and service. WebSocket live updates keep your dashboard in sync instantly, health checks catch problems early, and Prometheus metrics export feeds your existing observability stack.',
+ icon: '📊',
+ features: [
+ { icon: '🟢', label: 'Real-time health monitoring' },
+ { icon: '⚡', label: 'WebSocket live updates' },
+ { icon: '📈', label: 'Prometheus metrics export' },
+ { icon: '💓', label: 'Container health checks' },
+ { icon: '⏱️', label: 'Response time & resource tracking' },
+ ],
+ },
+ {
+ id: 'backup-recovery',
+ title: 'Backup & Recovery',
+ description:
+ 'One-click backup and disaster recovery built for peace of mind. Full-system backups with checksum verification, point-in-time restore, and a disaster recovery workflow that gets you back online fast when it matters most.',
+ icon: '💾',
+ features: [
+ { icon: '🔙', label: 'One-click backup & restore' },
+ { icon: '🆘', label: 'Disaster Recovery mode' },
+ { icon: '✅', label: 'Full-system backup w/ checksums' },
+ { icon: '⏮️', label: 'Point-in-time restore' },
+ ],
+ },
+ {
+ id: 'developer-platform',
+ title: 'Developer Platform',
+ description:
+ 'DashCaddy isn\'t just a UI—it\'s a platform. A full REST API with JSON endpoints, a plugin/extension system for custom workflows, and internationalization across 31 languages including full RTL support.',
+ icon: '🛠️',
+ features: [
+ { icon: '🌐', label: 'REST API (JSON, MCP protocol)' },
+ { icon: '🔌', label: 'Plugin / Extension system' },
+ { icon: '🔄', label: 'Auto-update manager' },
+ { icon: '🌍', label: 'i18n: EN/ES/FR/DE/AR (RTL)' },
+ ],
+ },
+ {
+ id: 'premium',
+ title: 'Premium Features',
+ description:
+ 'Power features for production and multi-host deployments. Auto-Login SSO across your apps, multi-container Recipes, Docker Swarm orchestration, and Fleet Management to register remote instances with parallel health probes and multi-host deploy plans.',
+ icon: '⭐',
+ features: [
+ { icon: '🔑', label: 'Auto-Login SSO', premium: true },
+ { icon: '📚', label: 'Recipes (multi-container stacks)', premium: true },
+ { icon: '🐳', label: 'Docker Swarm orchestration', premium: true },
+ { icon: '📡', label: 'Multi-Host Fleet Management', premium: true },
+ { icon: '🚀', label: 'Priority support', premium: true },
+ ],
+ },
+ ];
+
+ return (
+
+
+
+ {/* Hero Section */}
+
+
+
+
+
+
+
+
+
+
+
+ AI-native self-hosting platform
+
+
+ Every Tool You Need to Self-Host
+
+
+ From AI-powered deployment to enterprise security, real-time monitoring, and multi-host fleet management — DashCaddy brings the entire self-hosting stack under one roof.
+
- Just say “deploy Plex” — DashCaddy’s AI Intent Router handles the rest.
- Deploy Docker apps with one click, automatic SSL, DNS, and reverse proxy.
- 93 templates, fleet management, and an MCP control plane for AI assistants.
- Everything you need for self-hosted perfection.
-
- AI-native self-hosting — from one-click deploys to fleet management and a full MCP control plane.
-
-
-
- {/* Feature Grid */}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/* How It Works Section */}
-
-
- {/* Section Header */}
-
-
- How It Works
-
-
- Get up and running in minutes, not hours.
-
-
-
- {/* Steps */}
-
- {/* Step 1 */}
-
-
- {/* Number Circle */}
-
-
- 1
-
- {/* Connector line (hidden on mobile, visible on larger screens) */}
-
-
-
- {/* Content */}
-
-
- Install & Setup Wizard
-
-
- Install DashCaddy, then answer one question — “What do you want to self-host?” The Smart Defaults Wizard matches your hardware profile and configures everything automatically.
-
-
-
-
-
- {/* Step 2 */}
-
-
- {/* Number Circle */}
-
-
- 2
-
- {/* Connector line */}
-
-
-
- {/* Content */}
-
-
- Deploy
-
-
- Click “Deploy” on any template, or just ask the AI Intent Router in plain English. SSL certificates and DNS records are automatically configured.
-
-
-
-
-
- {/* Step 3 */}
-
-
- {/* Number Circle */}
-
- 3
-
-
- {/* Content */}
-
-
- Done
-
-
- Your app is live with SSL and DNS configured. Monitor health in real time, manage containers, and run one-click backups from the dashboard.
-
- Ready to Transform Your
-
- Self-Hosting Setup?
-
-
- Join developers and self-hosting enthusiasts who’ve simplified their infrastructure management with DashCaddy’s AI-native platform.
-
-
-
-
- Get Started
-
-
-
- View Documentation
-
-
-
- {/* Trust badges */}
-
-
-
Self-Hosted
-
Your Data, Your Rules
-
-
-
-
AI-Native
-
Intent Router + MCP
-
-
-
-
24/7
-
Real-Time Monitoring
-
-
-
-
-
- {/* Footer */}
-
-
- );
-}
+'use client';
+
+import Link from 'next/link';
+import Navbar from '@/components/Navbar';
+import Footer from '@/components/Footer';
+import FeatureCard from '@/components/FeatureCard';
+import AppShowcase from '@/components/AppShowcase';
+import InstallCommand from '@/components/InstallCommand';
+import CompetitorComparison from '@/components/CompetitorComparison';
+import FaqSection from '@/components/FaqSection';
+
+export default function Home() {
+ return (
+
+ Just say “deploy Plex” — DashCaddy’s AI Intent Router handles the rest.
+ Deploy Docker apps with one click, automatic SSL, DNS, and reverse proxy.
+ 77 templates, fleet management, and an MCP control plane for AI assistants.
+ Everything you need for self-hosted perfection.
+
+ AI-native self-hosting — from one-click deploys to fleet management and a full MCP control plane.
+
+
+
+ {/* Feature Grid */}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/* How It Works Section */}
+
+
+ {/* Section Header */}
+
+
+ How It Works
+
+
+ Get up and running in minutes, not hours.
+
+
+
+ {/* Steps */}
+
+ {/* Step 1 */}
+
+
+ {/* Number Circle */}
+
+
+ 1
+
+ {/* Connector line (hidden on mobile, visible on larger screens) */}
+
+
+
+ {/* Content */}
+
+
+ Install & Setup Wizard
+
+
+ Install DashCaddy, then answer one question — “What do you want to self-host?” The Smart Defaults Wizard matches your hardware profile and configures everything automatically.
+
+
+
+
+
+ {/* Step 2 */}
+
+
+ {/* Number Circle */}
+
+
+ 2
+
+ {/* Connector line */}
+
+
+
+ {/* Content */}
+
+
+ Deploy
+
+
+ Click “Deploy” on any template, or just ask the AI Intent Router in plain English. SSL certificates and DNS records are automatically configured.
+
+
+
+
+
+ {/* Step 3 */}
+
+
+ {/* Number Circle */}
+
+ 3
+
+
+ {/* Content */}
+
+
+ Done
+
+
+ Your app is live with SSL and DNS configured. Monitor health in real time, manage containers, and run one-click backups from the dashboard.
+
Deploy your favorite apps instantly with pre-configured templates, automatic SSL certificates, and integrated DNS management.
@@ -232,7 +216,7 @@ export default function AppShowcase() {
+ DashCaddy isn't the right tool for everyone. Here's where it wins and where the alternatives are stronger.
+
+
+
+
+
+
+
+
+ Capability
+
+
+ DashCaddy
+
+ {[...competitors].map((c) => (
+
+ {c}
+
+ ))}
+
+
+
+ {rows.map((row, i) => (
+
+
{row.feature}
+
+
+
+ {competitors.map((c) => (
+
+
+
+ ))}
+
+ ))}
+
+
+
+
+
+
+
🎯
+
Where DashCaddy wins
+
+ AI-native control plane, MCP server, automatic DNS+SSL chain, internal PKI for private TLDs, unified security events.
+
+
+
+
🤝
+
Where it ties
+
+ One-click apps, real-time updates, plugin systems, user accounts with RBAC are table stakes. DashCaddy does all of them.
+
+
+
+
🏆
+
Where others win
+
+ YunoHost has 500+ packaged apps. Unraid has a mature community app store. If raw app count is the only thing you care about, those are better.
+
+
+
+
+
+ );
+}
diff --git a/src/components/FaqSection.tsx b/src/components/FaqSection.tsx
new file mode 100644
index 0000000..9500179
--- /dev/null
+++ b/src/components/FaqSection.tsx
@@ -0,0 +1,173 @@
+'use client';
+
+import { useState } from 'react';
+import Link from 'next/link';
+
+interface Faq {
+ question: string;
+ answer: React.ReactNode;
+}
+
+const faqs: Faq[] = [
+ {
+ question: 'Is DashCaddy really free?',
+ answer: (
+ <>
+ Yes. The core platform — Docker deployment, Caddy + DNS + TLS automation, the full 77-app template catalog,
+ AI Intent Router, MCP Server, Security Center, monitoring, backups, REST API, plugin system, and 31-language
+ i18n — is free forever. Premium adds a focused set of advanced features (SSO, Recipes, Docker Swarm,
+ Multi-Host Fleet) available as a fixed-duration license. The license runs for the duration you buy
+ and then expires; you re-purchase manually to renew.
+ >
+ ),
+ },
+ {
+ question: 'Where does my data live?',
+ answer: (
+ <>
+ On your own hardware. DashCaddy runs on a Linux host you control — a desktop, a NUC, a Raspberry Pi 5, or a VPS.
+ No cloud dependency, no telemetry, no phoning home. Your services, your credentials, your DNS records, your SSL
+ keys — all live on your network. A license validation ping is the only outbound call, and you can run unlicensed
+ without it.
+ >
+ ),
+ },
+ {
+ question: 'What if I already have Docker containers running?',
+ answer: (
+ <>
+ Use Service Discovery. DashCaddy scans the Docker socket, lists every running container, and
+ lets you adopt any of them with one click. It adds the Caddy reverse-proxy route, DNS record, and TLS
+ certificate — without touching the running container. Your existing data, volumes, and network config stay
+ exactly as they are.
+ >
+ ),
+ },
+ {
+ question: 'Do I need a public domain?',
+ answer: (
+ <>
+ No. You can use a custom TLD (dashcaddy.home, dashcaddy.lan) on your home network,
+ or a direct IP for a quick test. Custom TLDs need DashCA’s internal CA root certificate installed on
+ each device that connects — the setup wizard walks you through that. A real domain is the easiest path: it
+ auto-issues trusted Let’s Encrypt certificates and you skip the CA install step.
+ >
+ ),
+ },
+ {
+ question: 'Can my AI assistant actually control DashCaddy?',
+ answer: (
+ <>
+ Yes, two ways. The AI Intent Router understands plain-English commands like “deploy
+ Plex” or “check SSL status.” The MCP Server exposes DashCaddy as a tool
+ endpoint for Claude, GPT, and any MCP-compatible AI assistant — your assistant can list services, deploy
+ templates, manage DNS, and rebuild the catalog, all through the standardized Model Context Protocol.
+ >
+ ),
+ },
+ {
+ question: 'What happens to my services if I uninstall DashCaddy?',
+ answer: (
+ <>
+ By default, the uninstall stops the DashCaddy container but leaves your Docker containers and volumes
+ untouched. If you want a clean removal, the uninstaller has a --purge flag that also deletes
+ the DashCaddy config and data directories. Either way, your services keep running until you stop them.
+ >
+ ),
+ },
+ {
+ question: 'How does Premium compare to other paid dashboards?',
+ answer: (
+ <>
+ Premium is a fixed-duration license. $99 covers a full year (365 days) of SSO, Recipes, Docker Swarm, and
+ Fleet Management on one machine. The license expires at the end of its term and you purchase a new one
+ to renew. There’s no per-user fee and no per-app fee. The free tier already covers everything a single
+ host needs, so Premium only makes sense if you specifically want SSO across deployed apps,
+ multi-container stacks, or to orchestrate a fleet.
+ >
+ ),
+ },
+ {
+ question: 'Is DashCaddy open source?',
+ answer: (
+ <>
+ DashCaddy is proprietary software, but it’s built on a fully open-source stack — Caddy, Docker, Node.js,
+ Express, Technitium DNS, Tailscale. The AI Intent Router, MCP Server, plugin system, and Security Center are
+ all built on open standards. You get vendor-friendly source-available documentation, and your data never
+ leaves your hardware.
+ >
+ ),
+ },
+];
+
+export default function FaqSection() {
+ const [open, setOpen] = useState(0);
+
+ return (
+
+
+
+
+ FAQ
+
+
+ Questions, answered
+
+
+ The most common things people ask before installing DashCaddy.
+
+
+
+
+ {faqs.map((faq, idx) => (
+
+
+ {open === idx && (
+
+
{faq.answer}
+
+ )}
+
+ ))}
+
+
+
+ Have a question that’s not here?{' '}
+
+ Read the docs
+ {' '}
+ or{' '}
+
+ email support
+
+ .
+