Ghost CMS Restart Not Working: Every Fix (CLI, Systemd, Local Mode)

Ghost CMS restart not working - CLI terminal fix guide

Quick answer: When ghost restart fails with "Systemd process manager has not been set up or is corrupted," run ghost setup linux-user systemd to rebuild the service file. If that's skipped because the service already exists, delete it from /lib/systemd/system/ and re-run setup. As a fallback, switch to local process manager: ghost config --process local && ghost restart.

Ghost CMS restart not working - CLI terminal fix guide

You just made a config change — maybe you updated the site URL, tweaked a mail setting, or patched Ghost to the latest version. You run ghost restart. Nothing happens, or worse, you get a wall of red error text.

This is one of the most common pain points for Ghost self-hosters. The Ghost CLI's relationship with systemd can break in several distinct ways, each with a different fix. A recent forum thread from March 2026 shows a user on Ghost 6.22.0 hitting exactly this wall right after setting up email — the service was "already set up" yet refused to restart. This guide covers every scenario.

What Does "Systemd process manager has not been set up or is corrupted" Mean?

This error means Ghost CLI can't find or communicate with the systemd service file it created during installation. Ghost CLI manages your Ghost process through a .service file in /lib/systemd/system/ — typically named something like ghost_yourdomain-com.service. When that file is missing, mismatched, or pointing to wrong paths, the CLI throws this error.

Three root causes cover 90% of cases:

  • Ghost was installed as root (the service file gets created with wrong ownership)
  • The server rebooted and the service file path drifted due to a Node.js update
  • A partial update left the systemd config out of sync with the Ghost install directory

How Do I Fix the "Systemd process manager not set up" Error?

Start with the official fix. From your Ghost install directory (not as root), run:

ghost setup linux-user systemd

If it says "Systemd service has already been set up. Skipping" — like the March 2026 forum case — the service file exists but is broken. Delete it and rebuild:

# Find the service file name
ls /lib/systemd/system/ | grep ghost

# Delete it (replace with your actual filename)
sudo rm /lib/systemd/system/ghost_yourdomain-com.service

# Reload systemd
sudo systemctl daemon-reload

# Rebuild the service
ghost setup linux-user systemd

# Now try restarting
ghost restart

After this, Ghost should restart cleanly. This fix works for most cases on Ubuntu 20.04, 22.04, and 24.04 — the same OS versions covered in the Ghost installation on Ubuntu guide.

How Do I Restart Ghost Without Systemd (The Local Process Fallback)?

If you don't want to debug systemd, switch Ghost to local process management. It's simpler and more stable for single-server setups:

ghost config --process local
ghost restart

This tells Ghost CLI to manage the process directly via Node instead of handing it off to systemd. You lose automatic startup on server reboot, but you can add that back manually. Many users find this approach more predictable — it's mentioned frequently as the easiest fix on the Ghost forum for situations where systemd setup keeps failing.

To restore auto-start on reboot when using local mode, add a cron job:

crontab -e
# Add this line:
@reboot cd /var/www/ghost && ghost start

Why Does Ghost Restart Fail After a Server Reboot?

Server reboots are the second most common trigger. When your VPS or dedicated server restarts, the systemd service should bring Ghost back up automatically — but it fails if the ExecStart path in the service file no longer matches where Node.js lives.

This frequently happens after a Node.js version upgrade (e.g., moving from Node 18 to Node 22). Check what your service file is pointing at:

cat /lib/systemd/system/ghost_yourdomain-com.service | grep ExecStart

Then check where Node actually lives:

which node
# or
ls -la $(which node)

If these paths don't match, the service will fail silently on reboot. Fix it by regenerating the service file using the same steps above — delete, daemon-reload, setup again. The 502 Bad Gateway guide covers what happens downstream when Ghost fails to start after a reboot.

How Do I Fix "Could Not Communicate With Ghost" During Restart?

This variant appears when Ghost CLI sends a restart signal but gets no response from the running process. It usually means Ghost is actually running fine, but the CLI can't reach it — often because the URL in config.production.json was recently changed.

Check your current config:

cat /var/www/ghost/config.production.json | grep url

If you recently updated the URL — say, from HTTP to HTTPS, or changed the domain — Ghost CLI gets confused about where to look. Reset to the correct URL and try again:

ghost config url https://yourdomain.com
ghost restart

If you're changing your Ghost URL more broadly, the Ghost URL migration guide walks through every config file and redirect you need to update.

What If Ghost Doctor Doesn't Find Any Issues?

Ghost CLI includes a diagnostic command that checks common problems:

ghost doctor

If it returns clean but restart still fails, the issue is often one of these edge cases:

SymptomLikely CauseFix
Service file exists but ghost won't startInstalled as root userMigrate to non-root user, re-run setup
ghost start works, ghost restart doesn'tStale PID fileDelete /var/www/ghost/.ghost-cli
Works locally but not in productionWrong environment flagAdd NODE_ENV=production
MySQL connection error on restartDatabase not yet up when Ghost startsAdd After=mysql.service to service file

For the stale PID issue specifically, clearing the lock file often resolves it:

rm /var/www/ghost/.ghost-cli
ghost start

If you're also seeing database-related errors in the logs, check the Ghost 500 error guide — database connectivity failures after restart produce similar CLI output.

How Do I Check Ghost Logs to Diagnose the Restart Failure?

Before trying fixes blindly, read the logs. Ghost writes errors to two places:

# Ghost application logs
ghost log

# Or view directly
cat /var/www/ghost/content/logs/https___yourdomain_com.error.log

# Systemd service logs
sudo journalctl -u ghost_yourdomain-com.service -n 50 --no-pager

The systemd journal is especially useful — it captures errors that happen before Ghost's own logger initializes. Look for lines mentioning ExecStart path errors, permission denied, or missing modules. If Ghost is crashing due to a memory issue (common on 1 GB RAM servers), the OOM crash fix guide is your next stop.

Can I Restart Ghost Without Using Ghost CLI?

Yes. If Ghost CLI itself is broken, you can control Ghost directly through systemd:

# Restart via systemd
sudo systemctl restart ghost_yourdomain-com.service

# Check status
sudo systemctl status ghost_yourdomain-com.service

# Stop
sudo systemctl stop ghost_yourdomain-com.service

# Start
sudo systemctl start ghost_yourdomain-com.service

This bypasses Ghost CLI entirely and works as long as the systemd service file itself is intact. Useful for quick restarts after config changes where you don't want to wait for the CLI health checks.

You can also restart Nginx separately, which sometimes resolves "Ghost is running but site is down" situations:

sudo systemctl restart nginx

If you're running Ghost behind Cloudflare, purging the cache after restarting can also clear stale responses — the Ghost Cloudflare caching guide has the details.

If the restart failure is part of a larger issue:

Frequently Asked Questions

Why does ghost restart say "Systemd process manager has not been set up or is corrupted"?

Ghost CLI uses systemd to manage the Ghost process on Linux servers. This error appears when the systemd service file is missing, was created by the wrong user (root), or points to incorrect Node.js paths. Running ghost setup linux-user systemd rebuilds the service file. If the setup is skipped because the file already exists, delete it from /lib/systemd/system/ and run setup again.

How do I restart Ghost CMS from the command line?

Run ghost restart from your Ghost installation directory as a non-root user. If the CLI isn't working, use sudo systemctl restart ghost_yourdomain-com.service to restart via systemd directly. Replace yourdomain-com with your actual domain (dots replaced with hyphens) to match your service file name.

What is Ghost CLI?

Ghost CLI is the official command-line tool for installing, configuring, and managing Ghost CMS on a Linux server. It handles Ghost updates (ghost update), configuration changes (ghost config), process management (ghost start/stop/restart), and diagnostics (ghost doctor). It's installed via npm: npm install -g ghost-cli.

Why doesn't ghost restart after a server reboot?

Ghost relies on a systemd service to auto-start on server reboot. If the service file's ExecStart path points to an old Node.js version or wrong directory, the service fails silently. Regenerate the service file by deleting it from /lib/systemd/system/, running sudo systemctl daemon-reload, then ghost setup linux-user systemd.

How do I turn off the Ghost CLI and use systemd directly?

You can bypass Ghost CLI entirely by using systemd commands: sudo systemctl start ghost_yourdomain-com, sudo systemctl stop ghost_yourdomain-com, and sudo systemctl restart ghost_yourdomain-com. This is useful when Ghost CLI itself is broken or you want faster restarts without CLI health checks.

What is a Ghost 404 page not found error?

A Ghost 404 error means the page doesn't exist or Ghost routing can't find a match for the requested URL. Common causes include deleted posts, changed slugs, misconfigured custom routes in routes.yaml, or Nginx proxy rules pointing to the wrong port after a URL change.

How do I check if Ghost is running?

Run ghost ls to see Ghost process status via the CLI. For a systemd-level check: sudo systemctl is-active ghost_yourdomain-com.service — it returns "active" if running. You can also check sudo systemctl status ghost_yourdomain-com.service for detailed process info including memory usage and recent log lines.

Can I restart Ghost without root access?

Yes — and you should. Ghost is designed to run as a non-root user. The ghost restart command runs without sudo from the Ghost installation directory. If you need to interact with the systemd service (e.g., systemctl restart), you'll need sudo, but the Ghost user should have been set up with the necessary systemd permissions during installation.

If you're on Ghost 5.x or 6.x and the ghost restart command keeps failing after trying all of the above, check whether your Ghost CLI version is current with ghost --version — running npm install -g ghost-cli@latest resolves a class of restart bugs that were patched in recent CLI releases.

Subscribe to Ghost SEO

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe