Skip to content

Repository files, collaboration, releases and project activity.

ARCHFORGE HISTORY

Blame · recover-admin.sh

Branch main · the Commit author is not necessarily a verified ArchForge account.

f1897d33c0archadmin2026-10-111 #!/usr/bin/env bash
f1897d33c0archadmin2026-10-112 # Recover a partially-completed ArchForge External Status installation.
f1897d33c0archadmin2026-10-113 # Safe on a running server: does not touch status.env, SQLite data, or systemd.
f1897d33c0archadmin2026-10-114 set -Eeuo pipefail
f1897d33c0archadmin2026-10-115 umask 077
f1897d33c0archadmin2026-10-116 [[ $EUID -eq 0 ]] || { echo '[ERROR] Run sudo ./recover-admin.sh (or as root).' >&2; exit 1; }
f1897d33c0archadmin2026-10-117 SRC=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
f1897d33c0archadmin2026-10-118 TARGET=/opt/archforge-status/app/src/cli.js
f1897d33c0archadmin2026-10-119 CFG=/etc/archforge-status/status.env
f1897d33c0archadmin2026-10-1110 [[ -f "$SRC/src/cli.js" ]] || { echo '[ERROR] Cannot find src/cli.js in project directory.' >&2;exit 1; }
f1897d33c0archadmin2026-10-1111 [[ -f "$TARGET" && -f "$CFG" ]] || { echo '[ERROR] External Status is not installed yet. Use sudo ./install.sh instead.' >&2;exit 1; }
f1897d33c0archadmin2026-10-1112 id archforge-status >/dev/null 2>&1 || { echo '[ERROR] Linux service user archforge-status not found.' >&2;exit 1; }
f1897d33c0archadmin2026-10-1113 /usr/bin/node --check "$SRC/src/cli.js"
f1897d33c0archadmin2026-10-1114 # Only the broken CLI file is updated. Running Node.js processes are unchanged.
f1897d33c0archadmin2026-10-1115 install -o root -g root -m 644 "$SRC/src/cli.js" "$TARGET"
f1897d33c0archadmin2026-10-1116 cd /opt/archforge-status/app
f1897d33c0archadmin2026-10-1117 printf '%s\n' '[*] Admin recovery: prompts for password will accept typing without displaying characters.'
f1897d33c0archadmin2026-10-1118 runuser -u archforge-status -- env STATUS_ENV_FILE="$CFG" NODE_ENV=production /usr/bin/node src/cli.js create-admin
f1897d33c0archadmin2026-10-1119 printf '%s\n' '[OK] Admin setup finished (or an admin already existed).'
f1897d33c0archadmin2026-10-1120 echo 'Login: https://status.archforge.nl/admin/login'