docs: rewrite README, remove upstream references
Replace old README that referenced rdgames1000 Docker images and goupkeep.org docs. New README reflects current feature set and credits the original project as the fork source.
This commit is contained in:
@@ -1,60 +1,63 @@
|
|||||||
# Go-Upkeep
|
# Go-Upkeep
|
||||||
|
|
||||||
  
|
Self-hosted uptime monitor with a TUI you can access over SSH. No browser, no install on the client — just `ssh -p 23234 your-server`.
|
||||||
|
|
||||||
**Go-Upkeep** is a self-hosted infrastructure monitor with a retro-futuristic TUI accessible via SSH. It supports High Availability, Push Monitoring, and Alerting.
|
Originally forked from [RDGames/go-upkeep](https://github.com/RDGames/go-upkeep). This is an independent fork with significant additions.
|
||||||
|
|
||||||
* 🌐 **Full Documentation:** [goupkeep.org/docs](https://goupkeep.org/docs)
|
## What it does
|
||||||
* 🐳 **Docker Hub:** [rdgames1000/go-upkeep](https://hub.docker.com/r/rdgames1000/go-upkeep)
|
|
||||||
|
|
||||||
---
|
- **6 check types**: HTTP, Push (heartbeat), Ping, Port, DNS, Groups
|
||||||
|
- **9 alert providers**: Discord, Slack, Email, Ntfy, Webhook, Telegram, PagerDuty, Pushover, Gotify
|
||||||
|
- **Config as code**: define monitors in YAML, apply declaratively, version control your setup
|
||||||
|
- **HA clustering**: leader/follower with automatic failover
|
||||||
|
- **Prometheus metrics**: `/metrics` endpoint for Grafana dashboards
|
||||||
|
- **Public status page**: HTML + JSON, toggle with an env var
|
||||||
|
- **SQLite or Postgres**: SQLite for single-node, Postgres for production
|
||||||
|
- **Uptime Kuma import**: migrate from Kuma with one command
|
||||||
|
|
||||||
## 🚀 Key Features
|
## Quick start
|
||||||
|
|
||||||
* **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)**
|
|
||||||
```bash
|
```bash
|
||||||
go mod tidy
|
|
||||||
go run cmd/goupkeep/main.go
|
go run cmd/goupkeep/main.go
|
||||||
# Connect: ssh -p 23234 localhost
|
ssh -p 23234 localhost
|
||||||
```
|
```
|
||||||
|
|
||||||
**Option B: Docker Compose (Full Stack)**
|
Seed some demo data to see it in action:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose -f docker-compose.dev.yml up --build
|
go run cmd/goupkeep/main.go -demo
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
## Config as code
|
||||||
|
|
||||||
## 📦 Production Deployment
|
Export your current monitors:
|
||||||
|
|
||||||
For critical infrastructure, we recommend Docker Compose.
|
```bash
|
||||||
|
goupkeep export -o monitors.yaml
|
||||||
|
```
|
||||||
|
|
||||||
### 1. The Compose File
|
Apply a config file:
|
||||||
Create `docker-compose.yml`:
|
|
||||||
|
```bash
|
||||||
|
goupkeep apply -f monitors.yaml
|
||||||
|
goupkeep apply -f monitors.yaml --dry-run # see what would change
|
||||||
|
goupkeep apply -f monitors.yaml --prune # delete anything not in the YAML
|
||||||
|
```
|
||||||
|
|
||||||
|
See [docs/config-as-code.md](docs/config-as-code.md) for the full reference.
|
||||||
|
|
||||||
|
## Docker
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
services:
|
services:
|
||||||
monitor:
|
monitor:
|
||||||
image: rdgames1000/go-upkeep:latest
|
build: .
|
||||||
container_name: go-upkeep
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
stdin_open: true # Required for initial setup console
|
stdin_open: true
|
||||||
tty: true
|
tty: true
|
||||||
ports:
|
ports:
|
||||||
- "23234:23234" # SSH
|
- "23234:23234"
|
||||||
- "8080:8080" # HTTP (Status Page & Push)
|
- "8080:8080"
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/data
|
- ./data:/data
|
||||||
- ./ssh_keys:/app/.ssh
|
- ./ssh_keys:/app/.ssh
|
||||||
@@ -62,28 +65,26 @@ services:
|
|||||||
- UPKEEP_DB_TYPE=sqlite
|
- UPKEEP_DB_TYPE=sqlite
|
||||||
- UPKEEP_DB_DSN=/data/upkeep.db
|
- UPKEEP_DB_DSN=/data/upkeep.db
|
||||||
- UPKEEP_STATUS_ENABLED=true
|
- UPKEEP_STATUS_ENABLED=true
|
||||||
- UPKEEP_CLUSTER_SECRET=ChangeMeToSomethingSecure
|
- UPKEEP_CLUSTER_SECRET=change-me
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Initial Setup (Identity Management)
|
First run: attach to the container (`docker attach go-upkeep`), go to the Users tab, add your SSH public key. Then detach with `Ctrl+P, Ctrl+Q` and connect normally over SSH.
|
||||||
**Important:** V2 stores SSH keys in the database. You must create the first user manually via the console.
|
|
||||||
|
|
||||||
1. Start the stack: `docker compose up -d`
|
## Environment variables
|
||||||
2. Attach to the container: `docker attach go-upkeep`
|
|
||||||
3. Inside the TUI:
|
|
||||||
* Press **[Tab]** to select the `Users` tab.
|
|
||||||
* Press **[n]** to create a user.
|
|
||||||
* Enter your username and paste your public key (`cat ~/.ssh/id_ed25519.pub`).
|
|
||||||
* Press **[Enter]** to save.
|
|
||||||
4. Detach: Press **Ctrl+P** then **Ctrl+Q**.
|
|
||||||
|
|
||||||
### 3. Usage
|
| Variable | Default | What it does |
|
||||||
Connect using your standard SSH client:
|
|---|---|---|
|
||||||
```bash
|
| `UPKEEP_PORT` | `23234` | SSH server port |
|
||||||
ssh -p 23234 your-server-ip
|
| `UPKEEP_HTTP_PORT` | `8080` | HTTP server port (status page, push, metrics) |
|
||||||
```
|
| `UPKEEP_DB_TYPE` | `sqlite` | `sqlite` or `postgres` |
|
||||||
|
| `UPKEEP_DB_DSN` | `upkeep.db` | Database path or connection string |
|
||||||
|
| `UPKEEP_STATUS_ENABLED` | `false` | Enable public status page |
|
||||||
|
| `UPKEEP_STATUS_TITLE` | `System Status` | Status page title |
|
||||||
|
| `UPKEEP_CLUSTER_MODE` | `leader` | `leader` or `follower` |
|
||||||
|
| `UPKEEP_PEER_URL` | | Leader URL for follower nodes |
|
||||||
|
| `UPKEEP_CLUSTER_SECRET` | | Shared key for cluster + API auth |
|
||||||
|
| `UPKEEP_INSECURE_SKIP_VERIFY` | `false` | Skip TLS verification for checks |
|
||||||
|
|
||||||
For advanced setups (Postgres, Clustering, Migration), please consult the [Official Documentation](https://goupkeep.org/docs).
|
## License
|
||||||
|
|
||||||
## 📄 License
|
MIT — see [LICENSE](LICENSE).
|
||||||
MIT License.
|
|
||||||
|
|||||||
Reference in New Issue
Block a user