52a54f9c5cc33c8832b3090c23d3d085cd4623a6
Expand alert provider count from 5 to 9. All new providers use the shared HTTPProvider with closure-based payload functions. Includes TUI form support and tests for each provider.
Go-Upkeep
Go-Upkeep is a self-hosted infrastructure monitor with a retro-futuristic TUI accessible via SSH. It supports High Availability, Push Monitoring, and Alerting.
- 🌐 Full Documentation: goupkeep.org/docs
- 🐳 Docker Hub: rdgames1000/go-upkeep
🚀 Key Features
- SSH Dashboard: Zero-install client. Manage monitors via
ssh -p 23234 your-server. - Protocols:
- HTTP/S: Active polling with SSL certificate expiration tracking.
- PUSH: Heartbeat endpoints for cron jobs/backup scripts.
- High Availability: Leader/Follower clustering with automatic failover.
- Alerting: Native support for Discord, Slack, Email (SMTP), and Webhooks.
- Backends: SQLite (default) or PostgreSQL (production).
🛠️ Quick Start (Local Dev)
Option A: Native Go (Fastest)
go mod tidy
go run cmd/goupkeep/main.go
# Connect: ssh -p 23234 localhost
Option B: Docker Compose (Full Stack)
docker compose -f docker-compose.dev.yml up --build
📦 Production Deployment
For critical infrastructure, we recommend Docker Compose.
1. The Compose File
Create docker-compose.yml:
services:
monitor:
image: rdgames1000/go-upkeep:latest
container_name: go-upkeep
restart: unless-stopped
stdin_open: true # Required for initial setup console
tty: true
ports:
- "23234:23234" # SSH
- "8080:8080" # HTTP (Status Page & Push)
volumes:
- ./data:/data
- ./ssh_keys:/app/.ssh
environment:
- UPKEEP_DB_TYPE=sqlite
- UPKEEP_DB_DSN=/data/upkeep.db
- UPKEEP_STATUS_ENABLED=true
- UPKEEP_CLUSTER_SECRET=ChangeMeToSomethingSecure
2. Initial Setup (Identity Management)
Important: V2 stores SSH keys in the database. You must create the first user manually via the console.
- Start the stack:
docker compose up -d - Attach to the container:
docker attach go-upkeep - Inside the TUI:
- Press [Tab] to select the
Userstab. - Press [n] to create a user.
- Enter your username and paste your public key (
cat ~/.ssh/id_ed25519.pub). - Press [Enter] to save.
- Press [Tab] to select the
- Detach: Press Ctrl+P then Ctrl+Q.
3. Usage
Connect using your standard SSH client:
ssh -p 23234 your-server-ip
For advanced setups (Postgres, Clustering, Migration), please consult the Official Documentation.
📄 License
MIT License.