summaryrefslogtreecommitdiff
path: root/status/app.py
AgeCommit message (Collapse)AuthorLines
12 dayshetzner-admin: stop/start individual services, shown as STOPPED on status pageyyamashita-15/+42
- run-command.sh: services / stop <name> / start <name> for app and infra stacks (not caddy, hetzner-admin, status). Stopped names go to status/stopped.txt (gitignored). - status: a stopped service that does not respond is STOPPED (gray), excluded from uptime and DOWN alerts. If it responds it is UP as usual. - Infra deploy.sh skips stopped stacks; app repo pushes clear the flag. - claude-code@.service: Restart=on-failure, and restart-sessions.sh restarts one unit at a time, to avoid the tmux "server exited unexpectedly" race. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N5eS3U54gzjRXzm65Np1RS
12 daysstatus: add ntfy app deep link to status pageyyamashita-1/+6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
12 daysstatus: send daily uptime summary to ntfy at 08:00 JSTyyamashita-8/+49
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
12 daysAdd status pages, ntfy alerts, and license-slot-checker repoyyamashita-0/+198
- status/: lightweight status checker (status.yyamashita.com, /api/status) with ntfy DOWN/recovered alerts after consecutive failures - uptime-kuma/: Uptime Kuma at uptime.yyamashita.com - hetzner-admin: authenticated /status page (status-app results + docker ps -a) - ntfy/: self-hosted ntfy at ntfy.yyamashita.com (deny-all auth, install.sh creates admin user and status-app token) - Caddyfile, DNS, post-receive hook, tests/check.sh, docs updated - license-slot-checker: add to repos.txt, hook, and Claude sessions Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>