lift doctor

Run diagnostic checks on the server to verify all requirements. Use --cutover to run additional pre-handover safety checks.

lift doctor

Run diagnostic checks on the server to verify all requirements for running Lift are met. Performs 16 core health checks and reports pass/warn/fail for each. Additionally checks deployed app containers and (if a domain is configured) DNS and SSL status.

Diagnostic Checks

Infrastructure

CheckPassWarnFail
DockerInstalled, version shown-Not installed
Docker ComposePlugin installed, version shown-Not installed
Docker DaemonRunning-Not running
Disk Space>= 5 GB available2-5 GB available< 2 GB available
Memory>= 1024 MB total512-1024 MB total< 512 MB total
GitInstalled, version shown-Not installed
Docker Networkonelift-network existsNot found (will be created)-
OS InfoOS name displayed--

Security

CheckPassWarnFail
UFW FirewallActiveNot installed or inactive-
Fail2banInstalled and runningNot installed or not running-
SSH HardeningRoot login disabled, password auth offInsecure settings detected-
Unattended UpgradesInstalled and enabledNot installed or not enabled-
Kernel HardeningAll sysctl rules setMissing sysctl rules-

Services

CheckPassWarnFail
TraefikRunning, accessible-Not running or unhealthy
PostgreSQLRunning, accepting connectionsNot found (skip)Not responding
RedisRunning, PONG responseNot found (skip)Not responding

Example

$ lift doctor
Running server diagnostics...
 Docker 27.1.1
 Docker Compose v2.29.1
 Docker daemon is running
 42GB available
 4096MB total memory
 git version 2.43.0
 onelift-network exists
 Ubuntu 24.04 LTS
 UFW active
 Fail2ban running (2 jails)
 SSH hardening OK
 Unattended upgrades enabled
 Kernel hardening OK
 Traefik running
 PostgreSQL accepting connections
 Redis responding (PONG)
All 16 checks passed

Cutover Pre-Handover Checks

Use --cutover to run 5 additional checks that verify your server is ready for handover. These checks ensure you won't lose access after OneLift removes its platform SSH key.

$ lift doctor --cutover
CheckPassWarnFail
User SSH KeyAt least 1 non-platform key found-No user key — cutover would lock you out
All Services HealthyAll containers running-Stopped or exited containers found
Cron Jobs InstalledBackup/cleanup cron entries foundNo cron jobs found-
Backup RecentLast backup < 60 minutes agoLast backup > 60 minutes ago-
Disk Usage (<80%)Usage below 70%Usage 70-80%Usage above 80%

Example

$ lift doctor --cutover
Running server diagnostics...
 Docker 27.1.1
 Docker Compose v2.29.1
 Docker daemon is running
 42GB available
 4096MB total memory
 git version 2.43.0
 onelift-network exists
 Ubuntu 24.04 LTS

Running cutover pre-handover checks...
 User SSH Key          1 user SSH key(s) found
 All Services Healthy  All containers running
 Cron Jobs Installed   3 cron job(s) configured
 Backup Recent         Last backup 5 minutes ago
 Disk Usage (<80%)     Disk usage: 42%
All 13 checks passed

Run lift doctor --cutover before starting the handover from the dashboard. If any check fails, resolve it first — especially the SSH key check. Without your own SSH key, you will be locked out after cutover.