Keep getting 403 when trying to access fresh 1-click install on a Digitalocean droplet

According to two Youtube tutorials that seem to be working according to user comments I should be able to see a setup site after deploying the droplet when visiting the IP. Unfortunately even after multiple destryoed droplets and retries I keep getting a 403 when trying to visit a fresh installation. Any advice?

If you aren’t running the latest version of Ghost, the first thing we’ll ask you to do is update to the latest version of Ghost.
→ Did that for some droplets, destroyed others without doing it. Didn’t seem to make a difference.

  • What’s your URL? www.michaelkueng.com - (likely won’t help because I keep recreating droplets to try to get it to work and TTL min is 60min) after having run the Ghost update through the terminal the domain and IP alike revert to a 404 instead of the initial 403. Will redo the whole thing once again to reproduce the 403 issue.

  • What version of Ghost are you using? If it’s not the latest, please update Ghost first before opening your topic

Dialed in through the terminal as root user to do that multiple times, skipped it for other droplets, never seemed to make a difference.

  • How was Ghost installed and configured?
    1-click installation through Digitalocean marketplace

  • What Node version, database, OS & browser are you using?

node.js 18.17.1

database - never made it past the ghost update in the terminal to follow through with the initially proposed mysql installation

OS - Microsoft Windows 10 Pro, 10.0.19045 Build 19045

Browser - Google Chrome Version 120.0.6099.130 (Official Build) (64-bit)

  • What errors or information do you see in the console?

Downloading and installing Ghost v5.75.2
A ProcessError occurred.

Message: Command failed: yarn install --no-emoji --no-progress
warning ghost@5.75.2: The engine “cli” appears to be invalid.
warning Resolution field “@elastic/elasticsearch@8.5.0” is incompatible with requested version “@elastic/elasticsearch@8.10.0”
warning Resolution field “moment@2.24.0” is incompatible with requested version “moment@^2.29.1”
warning Resolution field “moment@2.24.0” is incompatible with requested version “moment@2.29.1”
warning Resolution field “moment@2.24.0” is incompatible with requested version “moment@^2.27.0”
warning Resolution field “moment-timezone@0.5.23” is incompatible with requested version “moment-timezone@^0.5.31”
warning Resolution field “moment@2.24.0” is incompatible with requested version “moment@2.29.4”
warning Resolution field “moment@2.24.0” is incompatible with requested version “moment@2.29.4”
warning Resolution field “moment-timezone@0.5.23” is incompatible with requested version “moment-timezone@0.5.34”
warning Resolution field “moment@2.24.0” is incompatible with requested version “moment@2.29.1”
warning Resolution field “moment@2.24.0” is incompatible with requested version “moment@2.29.3”
warning Resolution field “@tryghost/errors@1.2.26” is incompatible with requested version “@tryghost/errors@^1.2.27”
warning Resolution field “moment-timezone@0.5.23” is incompatible with requested version “moment-timezone@^0.5.33”
warning Resolution field “@tryghost/errors@1.2.26” is incompatible with requested version “@tryghost/errors@^1.2.27”
warning Resolution field “@tryghost/errors@1.2.26” is incompatible with requested version “@tryghost/errors@^1.2.27”
warning Resolution field “moment@2.24.0” is incompatible with requested version “moment@2.27.0”
warning Resolution field “@tryghost/errors@1.2.26” is incompatible with requested version “@tryghost/errors@1.2.25”
warning Resolution field “@tryghost/logging@2.4.8” is incompatible with requested version “@tryghost/logging@2.4.5”
warning Resolution field “moment@2.24.0” is incompatible with requested version “moment@^2.29.1”
warning “@tryghost/kg-default-nodes > @lexical/rich-text@0.12.2” has unmet peer dependency “@lexical/selection@0.12.2”.
warning “@tryghost/kg-default-nodes > @lexical/rich-text@0.12.2” has unmet peer dependency “@lexical/clipboard@0.12.2”.
warning “@tryghost/kg-default-nodes > @lexical/rich-text@0.12.2” has unmet peer dependency “@lexical/utils@0.12.2”.
warning " > bookshelf@1.2.0" has incorrect peer dependency “knex@>=0.15.0 <0.22.0”.

yarn install v1.22.19
[1/5] Validating package.json…
[2/5] Resolving packages…
[3/5] Fetching packages…
[4/5] Linking dependencies…
[5/5] Building fresh packages…

Debug Information:
OS: Ubuntu, v22.04.3 LTS
Node Version: v18.17.1
Ghost-CLI Version: 1.25.3
Environment: production
Command: ‘ghost install --auto --db=mysql --dbhost=127.0.0.1 --dbport=3306 --dbname=ghost_production --dbuser=root --dbpass=XYZ --dir=/var/www/ghost --start’

  • What steps could someone else take to reproduce the issue you’re having?
    Use the oneclick installer from the Digitalocean marketplace

The HTTP 403 status code means “Forbidden”, usually a permission problem.

You didn’t mention Nginx in your post but I presume that’s your web server that’s returning the 403, so I recommend looking in your Nginx logs, which may then report exactly what file you don’t have permission to access.

You can then review the permissions for the related file or directory to see if changes need to be made.

1 Like

Thank you markstos, will try to figure out how to do this. For the past few days I retried from the start over and over again, went into the terminal to try your advice although I always get sent directly through the installer when connecting as root. Should I just ignore the installer, setup a user as soon as the installer has ended with varying errors and use that user to go look for the Nginx logs, hopefully figuring out what permissions are set wrong, attempt to fix them and then start the installer again?