# 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 ```bash cd api npm install ``` ### 2. Set Environment Variables ```bash # 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 ```bash # Windows cd api start.bat # Linux/macOS cd api ./start.sh ``` ### 4. Configure Caddy Add to your Caddyfile: ```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](DEPLOYMENT_GUIDE.md)** - Complete deployment instructions - **[API Documentation](api/README.md)** - API server setup and configuration - **[Caddyfile](C:/caddy/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 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: ```json [ { "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](DEPLOYMENT_GUIDE.md#troubleshooting) 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