From 05e1418efa56a773c295a2e072796e220d8d8f51 Mon Sep 17 00:00:00 2001 From: yyamashita Date: Sat, 31 Oct 2026 22:45:58 +0900 Subject: hetzner-admin: stop/start individual services, shown as STOPPED on status page - run-command.sh: services / stop / start 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 Claude-Session: https://claude.ai/code/session_01N5eS3U54gzjRXzm65Np1RS --- hetzner-admin/app.py | 57 +++++++++++++++++++++++++++++++++++++++++++- hetzner-admin/run-command.sh | 41 +++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 1 deletion(-) (limited to 'hetzner-admin') diff --git a/hetzner-admin/app.py b/hetzner-admin/app.py index 90a1cca..ac3178c 100644 --- a/hetzner-admin/app.py +++ b/hetzner-admin/app.py @@ -65,6 +65,9 @@ COMMANDS = [ COMMAND_MAP = {label: cmd for label, cmd in COMMANDS} +# 個別に停止・起動できるサービス(run-command.sh の SERVICES と status/targets.txt の名前に合わせる) +SERVICES = ["golive", "whoisband", "blog", "todo", "git", "vpn", "ntfy", "mail"] + # ブラウザ側: JSON ⇔ WebAuthn の変換はブラウザ組み込みの # parseCreationOptionsFromJSON / parseRequestOptionsFromJSON / toJSON に任せる PASSKEY_JS = """