Repository files, collaboration, releases and project activity.
archforge-external-status / recover-admin.shmain
▤ recover-admin.sh1349 bytes
21 lines · Select a line number for a permalink
1
#!/usr/bin/env bash2
# Recover a partially-completed ArchForge External Status installation.3
# Safe on a running server: does not touch status.env, SQLite data, or systemd.4
set -Eeuo pipefail5
umask 0776
[[ $EUID -eq 0 ]] || { echo '[ERROR] Run sudo ./recover-admin.sh (or as root).' >&2; exit 1; }7
SRC=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)8
TARGET=/opt/archforge-status/app/src/cli.js9
CFG=/etc/archforge-status/status.env10
[[ -f "$SRC/src/cli.js" ]] || { echo '[ERROR] Cannot find src/cli.js in project directory.' >&2;exit 1; }11
[[ -f "$TARGET" && -f "$CFG" ]] || { echo '[ERROR] External Status is not installed yet. Use sudo ./install.sh instead.' >&2;exit 1; }12
id archforge-status >/dev/null 2>&1 || { echo '[ERROR] Linux service user archforge-status not found.' >&2;exit 1; }13
/usr/bin/node --check "$SRC/src/cli.js"14
# Only the broken CLI file is updated. Running Node.js processes are unchanged.15
install -o root -g root -m 644 "$SRC/src/cli.js" "$TARGET"16
cd /opt/archforge-status/app17
printf '%s\n' '[*] Admin recovery: prompts for password will accept typing without displaying characters.'18
runuser -u archforge-status -- env STATUS_ENV_FILE="$CFG" NODE_ENV=production /usr/bin/node src/cli.js create-admin19
printf '%s\n' '[OK] Admin setup finished (or an admin already existed).'20
echo 'Login: https://status.archforge.nl/admin/login'