5.4 KiB
5.4 KiB
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
- Deployment Guide - Complete deployment instructions
- API Documentation - API server setup and configuration
- Caddyfile - Production Caddyfile example
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
- User Input - User selects app template and enters configuration (subdomain, IP, port)
- DNS Creation - API creates A record in Technitium DNS
- Caddy Configuration - API adds reverse proxy route via Caddy Admin API
- Instant Access - App is immediately accessible at
https://subdomain.sami - 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_TOKENis 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