The in-app updater schedules update.sh via systemd-run --no-block, which
starts a transient unit with a minimal environment. With no $HOME, go build
aborts with "GOCACHE is not defined and neither $XDG_CACHE_HOME nor $HOME are
defined", killing the upload-server build step. Because build_upload_server
runs before start_service in main() and exits hard on failure, the home-server
service is left stopped and the recovery screen waits forever.
- Pass HOME=/root and an explicit PATH (incl. /usr/local/go/bin) to
systemd-run so the updater inherits the env an interactive root shell has. - Defensively export HOME/GOCACHE/GOPATH inside build_upload_server so the
step is safe regardless of how update.sh is invoked.
Note: this fix can only protect future updates. Servers already stuck must
recover manually (systemctl start home-server, then rebuild upload-server
with HOME=/root).
Co-Authored-By: Claude Opus 4.7 noreply@anthropic.com
What this PR does
Type of change
- Bug fix
- New feature
- Refactor
- Docs / chore
Checklist
-
npm run testpasses -
npm run lintpasses - If UI change — screenshot or description of how to verify included below