Ghost is open source blogging platform written in Node.js that offers self hosting and hosted service.
We are going to self host Ghost on a Raspberry Pi.
This guide will take you through the steps of setting up a self hosted Ghost production environment.
I am working on this setup with a clean install of Raspbian and headless setup, you can lean how to enable SSH from here.
You can SSH into your Raspberry Pi(Mac/Linux). If you are a Windows user you need to use Putty
“ ssh pi@the-ip-address-of-the-pi “
The default username and password of the Raspbian install is.
user: pi
password: raspberry
Installing Node.js
Downloading Node.js(NPM ships with it)
“ wget http://node-arm.herokuapp.com/node\_latest\_armhf.deb “
Installing Node.js(required by Ghost)
“ sudo dpkg -i node\_latest\_armhf.deb “
Installing Sqlite required by Ghost.
“ sudo apt-get install sqlite3 “
Installing NGINX(used to reverse proxy Ghost)
“ sudo apt-get install nginx-full “
Installing Supervisor(to manage Ghost)
“ sudo apt-get install supervisor “
Ghost setup
This will download the latest version of Ghost.
“ wget https://ghost.org/zip/ghost-latest.zip “
Unzipping the folder we just downloaded.
“ unzip ghost-latest.zip -d Ghost “
Set ```` Ghost/ as the current directory ``
cd Ghost/
Installing dependencies used by Ghost using ```` NPM. ``
npm install --production
Run the command below to see everything works fine.
npm start --production
Time to setup turn Ghost into a service.
Creating the <code class="highlighter-rouge">ghost.conf file for Supervisor to manage Ghost.
touch /etc/supervisor/conf.d/ghost.conf
Editing the file, you can choose any editor you like.
nano /etc/supervisor/conf.d/ghost.conf
Add these lines to the ```` ghost.conf file. ``
[program:ghost]
command = npm start --production
directory = /home/pi/Ghost/
user = pi
autostart = true
autorestart = true
stdout\_logfile = /var/log/supervisor/ghost.log
stderr\_logfile = /var/log/supervisor/ghost\_err.log
environment = NODE\_ENV="production"
Now save the file, in nano CTRL + X + Y.
You can start Supervisor, if it did not start after installing.
service supervisord start
Now set Supervisor to run on startup.
sudo update-rc.d supervisord defaults
Starting Ghost service we just created.
sudo supervisord start ghost
Ghost will be running in production in port 2368.
Reverse proxying Ghost with NGINX.
Editing the <code class="highlighter-rouge">default file.
nano /etc/nginx/sites-enabled/default
Add these lines
server {
listen 80;
server\_name yourdomain.com; # Change this to your hostname```
location / {
proxy\_pass http://127.0.0.1:2368;
proxy\_set\_header Host $host;
proxy\_set\_header X-Real-IP $remote\_addr;
}
}
Save the file
Now restart NGINX.
service nginx restart
Now visit your Raspberry Pi ip address. You will be presented with a beautiful setup screen.
You can edit the Ghost hostname and other settings by editing the `<code class="highlighter-rouge">config.js` stored in the Ghost folder.
Services like [DynDNS](https://dyndns.org) can be used to manage hostname, if you want your Ghost blog to be public and use a domain name instead of the ip address.
If you have any questions or problem, leave a comment below.
Comments