This small guide explains how to install the latest version of ghost on your Uberspace 7 using the
ghost-cli. Inspired by this guide by Arthur Mühlbeier (German) for the beta and the old guide for Uberspace 6 (also German).
Update: Uberspace is so great, they already had a guide for Ghost, which does the exact same thing as mine, just better.
- Point your url to your Uberspace using the following command (also see Uberspace Manual):
uberspace web domain add yourdomain.tld
- Find an empty port by entering this into your shell:
If there's no output you found one. You can get it by entering
GHOSTPORT=$(( $RANDOM % 4535 + 61000)); netstat -tulpen | grep $GHOSTPORT && echo "versuch's nochmal"
- Find your MySQL password in
~/.my.cnf. See also Uberspace Manual for MySQL. Be careful not to get the wrong one! The second account is read only; this will result in lots of errors when you start the server.
Install the ghost-cli first:
npm install -g ghost-cli@latest
Now we either execute
ghost install -d ~/ghost --no-setup-linux-user and prompt our way through (you dont want to setup anything that is managed by the Uberspace team such as mysql, nginx, systemd and ssl) or execute the command below with the right parameters. You should change everything written in CAPS.
ghost install -d ~/ghost --no-stack --url https://YOURDOMAIN.TLD --port $GHOSTPORT --db mysql --dbuser $USER --dbpass YOURDBPASSWORD --dbname $USER --process local --no-start --no-setup-mysql --no-setup-nginx --no-setup-ssl --no-setup-systemd --no-setup-linux-user --no-prompt
Ghost should now be installed in
Make Ghost accessible from the outside
To make the Ghost server, which will only be running locally, accessible to the outside we need to proxy the requests to the server. For this we create a directory with the name of your (sub-)domain.
Now we create an
.htaccess file which redirects all requests to the port where your ghost instance is running. Just copy the whole thing into your shell:
cat <<__EOF__ >/var/www/virtual/$USER/comments.yourdomain.tld DirectoryIndex disabled RewriteEngine On RewriteRule ^(.*) http://localhost:GHOSTPORT/$1 [P] __EOF__
Create a service file
Now we create the service file for ghost
~/etc/services.d/ghost.ini with the following content (as explained on the Uberspace Manual to supervisord). Again just copy the command right into your shell:
cat <<__EOF__ >~/etc/services.d/ghost.ini [program:ghost] directory=/home/$USER/ghost command=/home/$USER/bin/ghost run environment = NODE_ENV="production" autorestart=true __EOF__
Lastly reread the services directory and update the services:
supervisorctl reread supervisorctl update
If everything worked Ghost is now available on yourdomain.tld, or alternatively under yourusername.uber.space
You can now go to https://yourdomain.tld/ghost and start writing your blog!
Thanks for reading! If you have questions, leave a comment below!
If you also want a comment section on your blog, check out my post on comments
P.S.: Here's a small and "stupid" script that just executes the aforementioned commands in order, but reads your domain and passwords automatically. Just execute it and hit Enter if the url is correct. Use at your own risk!
- Download this script
curl -O 'https://raw.githubusercontent.com/M4a1x/uberspace-ghost/master/setup_ghost.sh'
- Make it executable:
chmod +x setup_ghost.sh
- Execute it
- Press Enter if URL is correct, otherwise enter
- Go to
yourdomain.tldand enjoy your new blog!