Hi Ghost Forum, I’m hoping you can help me solve a rather odd and hard-to-trace bug that I seem to have found with a Ghost 6.x upgrade. (I’m a full-stack web dev and happy to help debug in detail.) Any insights would be very helpful. Thanks!
Issue Summary
- After upgrading to 6.0.4, including the related
node
upgrade, I’m no longer able to log into the Ghost/admin/
panel. - On the Ghost admin login page, using a previously-known-good-and-working user/password login combo, I get an error, (with the big red “Retry” button) with a very cryptic error description, (please read below for the details.)
- The error text seems to indicate an SSL problem, but I’ve double checked the SSL certificates from before-and-after the upgrade and nothing has changed with them. (They are LetsEncrypt / certbot certs, and up until this 6.x upgrade, I’ve had absolutely no issues with them.)
- On one computer, (running macOS and Safari) with a previously-logged-in session, the Ghost admin panel is still available as usual.
- On all other computers and browsers, the login error appears.
- The Ghost website (i.e. the regular front-end I’m hosting) is still accessible and live to the public.
Steps to Reproduce
- Upgraded from 5.81.x to 6.0.4.
- Ran
ghost doctor
and no had obvious problems pointed out by the script. - Checked over my
config.production.json
file, thinking there might be a Mailgun (TLS) issue, but I haven’t find errors from there.
Setup information
Ghost Version
6.0.4, ghost-cli version 1.28.3
Node.js Version
22.18.0
How did you install Ghost?
Originally installed via DigitalOcean “one-click deployment” script, on a DO VM. Upgraded from 5.x to 6.x via ghost-mgr: ghost upgrade
in terminal on VM.
Provide details of your host & operating system
Ubuntu 22.04.5 LTS
Database type
MySQL 8 (? – Sorry, I can’t confirm via sudo mysqladmin version
, and don’t want to possibly break permissions by forcing access to it. My version is whatever shipped with “one-click-deployment” 5.x installations.)
Browser & OS version
Chrome 139.0.x
Relevant log / error output
Shown below the Ghost admin login form, i.e. below the “Retry” button:
Failed to send email. Reason: 8078E587427F0000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:354: .
Last log entry from ghost_mgr/.ghost/logs
:
at Promise._settlePromise (/usr/lib/node_modules/ghost-cli/node_modules/bluebird/js/release/promise.js:604:18)at Promise._settlePromise0 (/usr/lib/node_modules/ghost-cli/node_modules/bluebird/js/release/promise.js:649:10)at Promise._settlePromises (/usr/lib/node_modules/ghost-cli/node_modules/bluebird/js/release/promise.js:729:18)at _drainQueueStep (/usr/lib/node_modules/ghost-cli/node_modules/bluebird/js/release/async.js:93:12)at _drainQueue (/usr/lib/node_modules/ghost-cli/node_modules/bluebird/js/release/async.js:86:9)at Async._drainQueues (/usr/lib/node_modules/ghost-cli/node_modules/bluebird/js/release/async.js:102:5)at Async.drainQueues (/usr/lib/node_modules/ghost-cli/node_modules/bluebird/js/release/async.js:15:14)at process.processImmediate (node:internal/timers:485:21)Code: EACCESPath: /var/www/ghost/config.production.json
Here’s myghost doctor
output:
Checking system Node.js version - found v22.18.0
Checking logged in user
Ensuring user is not logged in as ghost user
Checking if logged in user is directory owner
Checking current folder permissions
Checking system compatibility
Checking for a MySQL installation
sudo systemctl is-active ghost_{website, actual TLD redacted}-com
Instance is currently running
Validating config [skipped]
Checking folder permissions
Checking file permissions
Checking content folder ownership
Checking memory availability
Checking binary dependencies
Checking free space
Checking systemd unit file
Checking systemd node version - found v22.18.0`
config.production.json
contents:
{
"url": "https://{redacted}.com",
"server": {
"port": {redacted},
"host": "127.0.0.1"
},
"database": {
"client": "mysql",
"connection": {
"host": "127.0.0.1",
"user": "ghost-{redacted}",
"password": "{redacted}",
"port": 3306,
"database": "ghost_production"
}
},
"mail": {
"transport": "SMTP",
"from": "{redacted}",
"options": {
"service": "Mailgun",
"host": "smtp.mailgun.org",
"port": 587,
"requireTLS": true,
"auth": {
"user": "postmaster@mail.{redacted}.com",
"pass": "{redacted}"
}
}
},
"logging": {
"transports": [
"file",
"stdout"
]
},
"process": "systemd",
"paths": {
"contentPath": "/var/www/ghost/content"
},
"security": {
"staffDeviceVerification": true
}
}