- phase1_gitea_unraid.sh: 9-step deploy (dirs, docker-compose, app.ini,
container start, wait, admin user, API token, save to .env, create org).
Every step has idempotency check — running twice changes nothing.
- phase1_post_check.sh: 5 independent verification checks
- phase1_teardown.sh: stop container + optionally remove data, with prompts
Also adds inline comments to lib/common.sh and preflight.sh explaining
WHY decisions were made (SSH flags, API tmpfile pattern, port checks, etc.)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
17 functions: logging (info/warn/error/success/step/phase_header),
env management (load_env/save_env_var/require_vars), SSH wrappers
(ssh_exec/ssh_check/scp_to), API wrappers (gitea_api/gitea_backup_api/
github_api), template rendering, and polling (wait_for_http/wait_for_ssh).
All logs go to stderr, JSON data to stdout. Shellcheck clean.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>