Sami e5cd8678b0 fix: add pylon relay fallback to dashboard status endpoint
The dashboard uses /api/v1/services/status (not /api/health/services)
for live status cards. This endpoint was missing pylon relay fallback,
so services unreachable from the Docker container showed as OFF even
when the pylon was running. Also adds Windows VBS startup wrapper for
pylon persistence across reboots.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 16:50:24 -07:00
2026-03-05 02:26:12 -08:00
2026-03-05 02:26:12 -08:00
2026-03-05 02:26:12 -08:00
2026-03-05 02:26:12 -08:00

DashCaddy

Self-hosted dashboard for managing Docker apps with automatic SSL, DNS, and reverse proxy configuration.

Version License

What is DashCaddy?

DashCaddy is an all-in-one solution for self-hosting Docker applications. It combines:

  • 🎨 Beautiful Dashboard - Monitor all your services in one place
  • 🐳 Docker Management - Deploy 50+ pre-configured apps with one click
  • 🔒 Automatic SSL - Internal CA with automatic certificate generation
  • 🌐 DNS Integration - Automatic DNS record creation (Technitium DNS)
  • 🔄 Reverse Proxy - Caddy configuration managed automatically
  • 🔐 Tailscale Support - Secure remote access built-in

Features

Authentication & Security

  • Built-in TOTP two-factor authentication
  • Fine-grained access control per service
  • Secure session management
  • Group-based permissions

Dashboard

  • Real-time service health monitoring
  • Response time tracking
  • Status indicators with visual feedback
  • Weather widget
  • Multiple themes (dark/light/blue)
  • Import/export configuration

App Deployment

  • 50+ pre-configured app templates
  • One-click deployment
  • Automatic DNS + SSL + reverse proxy setup
  • Container health checking
  • Deployment status tracking
  • SSL certificate generation monitoring

Service Management

  • Add/edit/delete services
  • Restart containers
  • View logs
  • Update configurations
  • Silent deletions (no annoying popups)

Developer Tools

  • Error log viewer
  • API endpoints for automation
  • Import/export for testing
  • Comprehensive error logging

Quick Start

Prerequisites

  • Docker & Docker Compose
  • Caddy web server
  • Technitium DNS (optional, for automatic DNS)
  • Node.js 18+ (for API server)

Installation

  1. Clone the repository
git clone https://github.com/yourusername/dashcaddy.git
cd dashcaddy
  1. Install dependencies
cd caddy-api
npm install
  1. Configure environment
cp .env.example .env
# Edit .env with your settings
  1. Start the API server
npm start
  1. Configure Caddy Add to your Caddyfile:
status.yourdomain.com {
    root * /path/to/dashcaddy/status
    file_server
    reverse_proxy /api/* localhost:3001
}
  1. Access the dashboard Open https://status.yourdomain.com in your browser

Configuration

Environment Variables

Create a .env file in the caddy-api directory:

# Caddy Configuration
CADDYFILE_PATH=/path/to/Caddyfile
CADDY_ADMIN_URL=http://localhost:2019

# DNS Configuration (optional)
DNS_SERVER=192.168.1.1
DNS_TOKEN=your-dns-token

# File Paths
SERVICES_FILE=/path/to/services.json
ERROR_LOG_FILE=/path/to/dashcaddy-errors.log

DNS Integration

DashCaddy works with Technitium DNS for automatic DNS record creation:

  1. Install Technitium DNS
  2. Create an API token with DNS management permissions
  3. Configure DNS credentials in dashboard (🔑 Tokens button)

Tailscale Integration

For secure remote access:

  1. Install Tailscale on your server
  2. Services can be restricted to Tailscale-only access
  3. Configure in deployment settings

Usage

Deploying an App

  1. Click "App Selector" button
  2. Choose an app from the template library
  3. Configure:
    • Subdomain (e.g., jellyfinjellyfin.yourdomain.com)
    • Port (auto-suggested)
    • IP address (defaults to localhost)
    • Tailscale-only access (optional)
  4. Click "Deploy"
  5. Wait for SSL certificate generation (30-60 seconds)
  6. Access your app!

Managing Services

  • View Status: Cards show real-time health and response times
  • Open Service: Click "Open" button
  • Restart: Click restart button (for Docker containers)
  • Delete: Click delete button (removes everything: container, DNS, Caddy config)
  • Edit: Click settings button to modify configuration

Viewing Error Logs

  1. Click "📋 Logs" button in toolbar
  2. View all errors with timestamps and context
  3. Refresh to see latest errors
  4. Clear logs when resolved

Backup & Restore

Export Configuration:

  1. Click "📤 Export" button
  2. JSON file downloads with all your services
  3. Save safely

Import Configuration:

  1. Click "📥 Import" button
  2. Select your backup JSON file
  3. Confirm import
  4. Dashboard reloads with restored configuration

Note: API tokens are not exported for security. Reconfigure after import.

App Templates

DashCaddy includes 50+ pre-configured templates:

Media & Entertainment

  • Plex, Jellyfin, Emby
  • Navidrome, Airsonic
  • Tautulli, Overseerr

Downloads

  • Sonarr, Radarr, Lidarr, Readarr
  • Prowlarr, Bazarr
  • qBittorrent, Transmission
  • SABnzbd, NZBGet

Productivity

  • Nextcloud
  • Paperless-ngx
  • BookStack, Outline
  • Standard Notes

Management

  • Portainer
  • Homepage, Homarr
  • Uptime Kuma
  • Grafana

Security & Authentication

  • Vaultwarden (Password Manager)

Development

  • Gitea
  • VS Code Server
  • Jenkins, Drone CI

And many more!

API Endpoints

Services

  • GET /api/services - List all services
  • POST /api/services - Add service
  • PUT /api/services - Bulk import services
  • DELETE /api/services/:id - Remove service

App Deployment

  • GET /api/apps/templates - List app templates
  • POST /api/apps/deploy - Deploy new app
  • DELETE /api/apps/:id - Remove deployed app

Error Logs

  • GET /api/error-logs - Get error logs
  • DELETE /api/error-logs - Clear error logs

DNS Management

  • POST /api/dns/record - Create DNS record
  • DELETE /api/dns/record - Delete DNS record

Caddy Management

  • GET /api/caddy/config - Get Caddyfile content
  • POST /api/caddy/reload - Reload Caddy configuration

Troubleshooting

SSL Certificate Errors

Problem: "Secure Connection Failed" when accessing new service

Solution:

  • Wait 30-60 seconds for certificate generation
  • Check dashboard notification for SSL status
  • Manually reload Caddy: caddy reload --config /path/to/Caddyfile
  • Check error logs in dashboard

DNS Not Resolving

Problem: Service URL doesn't resolve

Solution:

  • Verify DNS server is running
  • Check DNS credentials in 🔑 Tokens menu
  • Manually add DNS record in Technitium DNS
  • Flush DNS cache: ipconfig /flushdns (Windows) or sudo systemd-resolve --flush-caches (Linux)

Container Won't Start

Problem: Deployment succeeds but service is offline

Solution:

  • Check Docker logs: docker logs [container-id]
  • Verify port isn't already in use
  • Check container resource limits
  • View error logs in dashboard

Import/Export Issues

Problem: Import fails or data is incomplete

Solution:

  • Validate JSON format
  • Check file has version and services fields
  • Reconfigure API tokens after import
  • Check error logs for details

Development

Project Structure

dashcaddy/
├── status/                 # Dashboard frontend
│   ├── index.html         # Main dashboard
│   └── assets/            # Logos, icons, fonts
├── caddy-api/             # API backend
│   ├── server.js          # Express server
│   ├── app-templates.js   # App template definitions
│   └── package.json       # Dependencies
├── dashcaddy-installer/   # Electron installer (WIP)
└── docs/                  # Documentation

Adding Custom App Templates

Edit caddy-api/app-templates.js:

"myapp": {
  name: "My App",
  description: "Description of my app",
  icon: "🚀",
  logo: "https://cdn.example.com/logo.png",
  category: "Productivity",
  docker: {
    image: "myapp/myapp:latest",
    ports: ["{{PORT}}:8080"],
    volumes: ["/opt/myapp:/data"],
    environment: {
      "APP_ENV": "production"
    }
  },
  subdomain: "myapp",
  defaultPort: 8080,
  healthCheck: "/health"
}

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

Roadmap

  • Service groups/categories
  • Container log viewer
  • DNS management UI
  • Backup automation
  • Multi-user support
  • Mobile app
  • Analytics dashboard
  • Template marketplace

License

MIT License - see LICENSE file for details

Credits

Support

Acknowledgments

Built with ❤️ for the self-hosting community.


DashCaddy - Making self-hosting beautiful and effortless.

Description
No description provided
Readme 11 MiB
Languages
JavaScript 84.7%
HTML 6.2%
CSS 5.1%
Shell 2.7%
PowerShell 1.1%
Other 0.2%