I’ve been trying to deploy a production Ghost blog on a clean Ubuntu 22.04 server, but I keep running into issues where the blog won’t start via ghost start
. I’ve reinstalled Ghost four times from scratch but keep facing the same error.
What I’ve Done:
- Installed Node.js v20.19.2 via NodeSource
- Installed MySQL and created a new database
- Installed Ghost-CLI (v1.27.0)
- Ran
ghost install
and everything seemed fine - Selected to set up a custom MySQL user
- Skipped SSL and Nginx config (already had existing config)
- On
ghost start
, I get:
✖ Starting Ghost
One or more errors occurred.
1) GhostError
Message: Could not communicate with Ghost
Suggestion: journalctl -u ghost_tobevee-shop -n 50
When I run journalctl -u ghost_tobevee-shop -n 50
, it shows:
-- No entries --
Running ghost run
gives this:
[INFO] Ghost is running in production...
[INFO] Your site is now available on https://tobevee.shop/
[WARN] Can't connect to the bootstrap socket (localhost 8000) ECONNREFUSED.
It repeats the warning with Tries: 0
, Tries: 1
, etc., but still continues booting.
Here’s a part of the config.production.json
:
"server": {
"port": 2368,
"host": "127.0.0.1"
},
"bootstrap-socket": {
"port": 8000,
"host": "localhost"
},
"database": {
"client": "mysql",
"connection": {
"host": "127.0.0.1",
"user": "ghost-244",
"password": "[hidden]",
"database": "shayan_prod"
}
}
Running ghost doctor
shows no issues.
What I Need Help With:
- Why is
ghost start
failing with “Could not communicate with Ghost” even thoughghost run
works? - What is the purpose of the bootstrap socket and why is it failing with
ECONNREFUSED
? - How can I fix this issue so
ghost start
properly starts the systemd service?
Other Info:
- Server specs:
- OS: Ubuntu 22.04.5 LTS
- vCPU: 1 core
- RAM: 2 GB
- Disk: 20 GB
- Region:
eu-north1
- Ghost Version: 5.120.0
- MySQL: Installed and running on localhost, DB is accessible
- Systemd service exists:
/etc/systemd/system/ghost_tobevee-shop.service
is present
Domain & Deployment Info:
- Website URL: https://tobevee.shop
- Deployed via
ghost install
with default settings - Nginx config already existed for this domain (so skipped during setup)
- No SSL setup via Ghost (already had it externally)
Any ideas or suggestions would be greatly appreciated. I’m stuck and can’t get the blog to run under systemd (ghost start
) even though it boots manually with ghost run
. Thanks in advance!