lerko c80ef44256 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.
2026-05-15 22:02:48 -04:00

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.

Originally forked from RDGames/go-upkeep. This is an independent fork with significant additions.

What it does

  • 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

Quick start

go run cmd/goupkeep/main.go
ssh -p 23234 localhost

Seed some demo data to see it in action:

go run cmd/goupkeep/main.go -demo

Config as code

Export your current monitors:

goupkeep export -o monitors.yaml

Apply a config file:

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 for the full reference.

Docker

services:
  monitor:
    build: .
    restart: unless-stopped
    stdin_open: true
    tty: true
    ports:
      - "23234:23234"
      - "8080:8080"
    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=change-me

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.

Environment variables

Variable Default What it does
UPKEEP_PORT 23234 SSH server port
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

License

MIT — see LICENSE.

S
Description
Live uptime monitoring dashboard for your terminal. SSH-accessible. HTTP, ping, TCP, DNS, push checks with alerts, clustering, and Prometheus metrics.
Readme MIT 2.2 MiB
2026.05.6 Latest
2026-05-30 23:34:56 +00:00
Languages
Go 99.7%
Dockerfile 0.3%