Panel Updates
BetterDesk can update itself through Settings → Updates in the web panel, or via betterdesk.sh / betterdesk.ps1.
Native install (recommended flow)
- Log in as super_admin or server_admin
- Open Settings → Updates
- Review available version and changelog preview
- Run Preflight (checks disk space, build tools, server binary)
- Click Install — panel downloads GitHub changes, merges
.env keys, rebuilds Go server if needed, restarts services
What is preserved
- Database files (
auth.db, db_v2.sqlite3, PostgreSQL data)
- User passwords and TOTP secrets
- SSL certificates and API keys
- Operator secrets in
.env (only missing keys appended from .env.example)
Update channels
| Channel |
Branch |
Use |
| Stable |
main |
Production (default) |
| Development |
dev |
Latest work-in-progress |
Switch under Settings → Updates → Update channel, or via installer script.
Script-based update
Script updates also clear stale panel warning banners from failed in-panel attempts.
Docker (GHCR images)
When running pre-built images from GHCR (docker-compose.quick.yml):
- In-panel Install is disabled — use image pull instead
- Panel shows pull instructions:
Each console image embeds its build commit; startup syncs data/.update_sha.
Troubleshooting updates
| Symptom |
Fix |
| Red banner after successful script update |
Update to latest build — banner cleared on script/Docker success (#192) |
| Go server build failed |
Check preflight; use Rebuild server binary in Updates |
Permission errors on /opt/ |
Run panel update as root or fix ownership |
| Stale server binary |
Updates force full server source sync before compile |
See also