Files
dashcaddy/status
..
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
2026-03-05 02:26:12 -08:00
2026-03-05 02:26:12 -08:00

SAMI-CLOUD Status Dashboard

A modern, cross-platform status dashboard with built-in app deployment capabilities.

Features

  • Real-time Service Monitoring - Monitor all your services with live status checks
  • Weather Integration - Display current weather conditions
  • One-Click App Deployment - Deploy new apps with automatic DNS and reverse proxy configuration
  • Cross-Platform - Works on Windows, Linux, and macOS
  • API-Driven - Uses Caddy Admin API and Technitium DNS API (no scripts required)
  • PWA Support - Install as a Progressive Web App
  • Responsive Design - Works on desktop, tablet, and mobile
  • Dark/Light Themes - Multiple theme options

Quick Start

1. Install Dependencies

cd api
npm install

2. Set Environment Variables

# Windows (PowerShell)
$env:CADDY_ADMIN_API="http://localhost:2019"
$env:DNS_SERVER_API="http://192.168.254.204:5380"
$env:TECHNITIUM_API_TOKEN="your_token_here"

# Linux/macOS
export CADDY_ADMIN_API=http://localhost:2019
export DNS_SERVER_API=http://192.168.254.204:5380
export TECHNITIUM_API_TOKEN=your_token_here

3. Start the API Server

# Windows
cd api
start.bat

# Linux/macOS
cd api
./start.sh

4. Configure Caddy

Add to your Caddyfile:

status.sami {
  tls internal

  handle /api/* {
    reverse_proxy localhost:3001
  }

  root * /path/to/sites/status
  file_server
}

5. Access Dashboard

Open your browser to:

https://status.sami

Documentation

Project Structure

status/
├── index.html              # Main dashboard page
├── apps.json              # Service configuration
├── sw.js                  # Service worker for PWA
├── assets/                # Images, fonts, and static assets
├── api/                   # Node.js API server
│   ├── caddy-api.js      # Main API server
│   ├── package.json      # Dependencies
│   ├── test-api.js       # API test script
│   ├── start.bat         # Windows startup script
│   ├── start.sh          # Linux/macOS startup script
│   └── README.md         # API documentation
├── DEPLOYMENT_GUIDE.md   # Complete deployment guide
└── README.md             # This file

Key Technologies

  • Frontend: Vanilla JavaScript, HTML5, CSS3
  • Backend: Node.js, Express.js
  • Web Server: Caddy v2
  • DNS: Technitium DNS Server
  • APIs:
    • Caddy Admin API (reverse proxy configuration)
    • Technitium DNS API (DNS record management)

How App Deployment Works

  1. User Input - User selects app template and enters configuration (subdomain, IP, port)
  2. DNS Creation - API creates A record in Technitium DNS
  3. Caddy Configuration - API adds reverse proxy route via Caddy Admin API
  4. Instant Access - App is immediately accessible at https://subdomain.sami
  5. Automatic Rollback - If any step fails, previous changes are rolled back

Features in Detail

Service Monitoring

  • HTTP/HTTPS status checks
  • Response time tracking
  • Visual status indicators
  • Configurable check intervals

App Deployment

  • Pre-configured app templates (Plex, Radarr, Sonarr, etc.)
  • Custom app deployment
  • Automatic DNS record creation
  • Automatic Caddy reverse proxy configuration
  • Internal CA or Let's Encrypt SSL
  • Private or public DNS options

Weather Widget

  • Current conditions
  • Temperature and wind speed
  • Location-based
  • Configurable via settings

PWA Support

  • Offline functionality
  • Install to home screen
  • App-like experience
  • Service worker caching

API Endpoints

Method Endpoint Description
POST /api/apps/deploy Deploy a new app
POST /api/apps/delete Delete an app
GET /api/services Get list of services
GET /api/caddy/config Get Caddy configuration
GET /api/caddy/test Test API connectivity
GET /health Health check

Configuration

Environment Variables

  • CADDY_ADMIN_API - Caddy Admin API URL (default: http://localhost:2019)
  • DNS_SERVER_API - Technitium DNS API URL (default: http://192.168.254.204:5380)
  • TECHNITIUM_API_TOKEN - API token for DNS operations (required)

Service Configuration

Edit apps.json to add/remove services:

[
  {
    "id": "myapp",
    "name": "My App",
    "logo": "assets/myapp.png",
    "url": "https://myapp.sami"
  }
]

Browser Support

  • Chrome/Edge (latest)
  • Firefox (latest)
  • Safari (latest)
  • Mobile browsers (iOS Safari, Chrome Mobile)

Security

  • CORS enabled (configure for production)
  • API access restricted to localhost by default
  • Environment-based configuration
  • Input validation on all endpoints
  • Automatic rollback on deployment failures

Troubleshooting

See DEPLOYMENT_GUIDE.md for detailed troubleshooting steps.

Common issues:

  • API not accessible: Check if Node.js server is running
  • DNS not working: Verify TECHNITIUM_API_TOKEN is set
  • Caddy routes not working: Check Caddy Admin API is enabled

Contributing

This is a personal project for SAMI-CLOUD infrastructure. Feel free to fork and adapt for your own use.

License

MIT

Author

SAMI-CLOUD