Ghost Blog inzetten met Nginx op Ubuntu 20.04

Ghost is een gratis, open-source, en lichtgewicht blogging platform gebouwd op Node.js. Het is eenvoudig, aanpasbaar, en stelt je in staat om je inhoud te maken en op het internet te publiceren. Het is speciaal ontworpen voor bloggen, dus is het veel sneller dan andere blogging platforms. Het biedt een rijke reeks functies, waarvan er hieronder enkele opgesomd worden:

  • Markdown editor
  • Gepland publiceren
  • Biedt toepassing voor Linux, Mac, en Windows
  • Biedt honderden gratis en premium thema’s
  • Ingebouwde analyses
  • Biedt migratie plugin om van WordPress naar Ghost te migreren

Deze handleiding legt uit hoe je Ghost met Nginx en Let’s Encrypt SSL installeert op Ubuntu 20.04.

Vereisten

  • Een server met Ubuntu 20.04.
  • Een geldige domeinnaam die naar het IP van je server wijst.
  • Een root wachtwoord is op je server ingesteld.

Aan de slag

Eerst is het aan te raden de APT pakket cache bij te werken tot de nieuwste versie. Je kunt het bijwerken met het volgende commando:

apt-get update -y

Zodra de APT cache bijgewerkt is, installeer je andere vereiste afhankelijkheden met het volgende commando:

apt-get install gnupg2 curl unzip git acl -y

Vervolgens moet je ook de Node.js op je systeem installeren.

Voeg eerst de Node.js repository toe met het volgende commando:

curl -sL https://deb.nodesource.com/setup_12.x | bash -

Als de repository geïnstalleerd is, voer je het volgende commando uit om de Node.js op je systeem te installeren.

apt-get install nodejs -y

Als de installatie klaar is, controleer dan de versie van Node.js met het volgende commando:

node -v

Je zou de volgende uitvoer moeten krijgen:

v12.22.1

Verifieer vervolgens de NPM versie met het volgende commando:

npm -v

Je zou de volgende uitvoer moeten krijgen:

6.14.12

Installeer Nginx en MariaDB

Vervolgens moet je de Nginx webserver en de MariaDB databaseserver op je systeem installeren. Je kunt beide pakketten installeren met het volgende commando:

apt-get install mariadb-server nginx -y

Als de installatie klaar is, beveilig je de MariaDB installatie en stel je het MariaDB root wachtwoord in met het volgende commando:

mysql_secure_installation

Beantwoord alle vragen om de MariaDB installatie te beveiligen:

Enter current password for root (enter for none): 
Set root password? [Y/n] Y
New password: 
Re-enter new password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Meld je vervolgens aan bij MariaDB met het volgende commando:

mysql -u root -p

Eenmaal ingelogd, maak je een database en gebruiker voor Ghost met het volgende commando:

MariaDB [(none)]> CREATE DATABASE ghostdb;
MariaDB [(none)]> CREATE USER 'ghostuser'@'localhost' IDENTIFIED BY 'password';

Verleen vervolgens alle privileges aan de Ghost database met het volgende commando:

MariaDB [(none)]> GRANT ALL ON ghostdb.* TO 'ghostuser'@'localhost';

Spoel vervolgens de privileges door en verlaat de MariaDB met het volgende commando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Als je klaar bent, kun je verder gaan met de volgende stap.

Installeer Ghost Cli

Vervolgens moet je de Ghost Cli installeren om de Ghost te installeren en te beheren. Je kunt het installeren met de NPM zoals hieronder getoond:

npm install -g [email protected]

Eenmaal geïnstalleerd, controleer je de geïnstalleerde versie van Ghost Cli met het volgende commando:

ghost version

Je zou de volgende uitvoer moeten zien:

Ghost-CLI version: 1.16.3

Installeer Ghost

Maak eerst een aparte gebruiker aan voor Ghost met het volgende commando:

adduser user1

Voeg vervolgens gebruiker1 toe aan sudo en www-data groep met het volgende commando:

adduser user1 sudo
adduser user1 www-data

Log vervolgens in met user1 en maak een directory voor Ghost met het volgende commando:

su - user1
sudo mkdir /var/www/ghost

Stel vervolgens de juiste toestemming en eigendom in met het volgende commando:

sudo chown -R www-data:www-data /var/www/ghost
sudo chown -R www-data:www-data /var/www/
sudo chmod 775 /var/www/ghost
sudo setfacl -R -m u:user1:rwx /var/www/ghost/

Verander vervolgens de directory in ghost en installeer het Ghost blogging platform met het volgende commando:

cd /var/www/ghost
ghost install

Je wordt gevraagd je blog URL, databasenaam, gebruikersnaam, wachtwoord en andere informatie op te geven zoals hieronder:

? Enter your blog URL: https://ghost.linuxbuz.com
? Enter your MySQL hostname: localhost
? Enter your MySQL username: ghostuser
? Enter your MySQL password: [hidden]
? Enter your Ghost database name: ghostdb
? Configuring Ghost
? Setting up instance
+ sudo useradd --system --user-group ghost
+ sudo chown -R ghost:ghost /var/www/ghost/content
? Setting up "ghost" system user
? Setting up "ghost" mysql user [skipped]
? Do you wish to set up Nginx? Yes
+ sudo mv /tmp/ghost-linuxbuz-com/ghost.linuxbuz.com.conf /etc/nginx/sites-available/ghost.linuxbuz.com.conf
+ sudo ln -sf /etc/nginx/sites-available/ghost.linuxbuz.com.conf /etc/nginx/sites-enabled/ghost.linuxbuz.com.conf
+ sudo nginx -s reload
? Setting up SSL [skipped]
? Do you wish to set up Systemd? Yes
+ sudo mv /tmp/ghost-linuxbuz-com/ghost_ghost-linuxbuz-com.service /lib/systemd/system/ghost_ghost-linuxbuz-com.service
+ sudo systemctl daemon-reload
? Setting up Systemd
+ sudo systemctl is-active ghost_ghost-linuxbuz-com
? Do you want to start Ghost? (Y/n) 

Op dit punt is Ghost geïnstalleerd en gestart.

Beveilig Ghost met Let’s Encrypt SSL

Vervolgens moet je Ghost beveiligen met Let’s Encrypt SSL.

Installeer eerst de Certbot client met het volgende commando:

sudo apt-get install certbot python3-certbot-nginx -y

Eenmaal geïnstalleerd, voer je het volgende commando uit om het Let’s Encrypt SSL te downloaden en Nginx te configureren om dat certificaat te gebruiken:

sudo certbot --nginx -d ghost.linuxbuz.com

Je wordt gevraagd je email adres op te geven en de dienstverleningsvoorwaarden te accepteren zoals hieronder:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for ghost.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/ghost.linuxbuz.com.conf

Kies vervolgens of je HTTP verkeer al dan niet wilt omleiden naar HTTPS:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Typ 2 en druk op Enter om de installatie te voltooien.

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/ghost.linuxbuz.com.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://ghost.linuxbuz.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=ghost.linuxbuz.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/ghost.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/ghost.linuxbuz.com/privkey.pem
   Your cert will expire on 2021-07-13. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Nu kun je de Ghost website verifiëren met het volgende commando;

ghost ls

Je zou de volgende uitvoer moeten zien:

+ sudo systemctl is-active ghost_ghost-linuxbuz-com
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? Name               ? Location       ? Version ? Status               ? URL                        ? Port ? Process Manager ?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? ghost-linuxbuz-com ? /var/www/ghost ? 4.2.1   ? running (production) ? https://ghost.linuxbuz.com ? 2368 ? systemd         ?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

Je kunt ook de Ghost service verifiëren met het volgende commando:

sudo systemctl status ghost_ghost-linuxbuz-com

Je zou de volgende uitvoer moeten zien:

? ghost_ghost-linuxbuz-com.service - Ghost systemd service for blog: ghost-linuxbuz-com
     Loaded: loaded (/lib/systemd/system/ghost_ghost-linuxbuz-com.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2021-04-14 07:05:33 UTC; 9min ago
       Docs: https://ghost.org/docs/
   Main PID: 7546 (node)
      Tasks: 22 (limit: 2353)
     Memory: 134.3M
     CGroup: /system.slice/ghost_ghost-linuxbuz-com.service
             ??7546 ghost run
             ??7590 /usr/bin/node current/index.js

Apr 14 07:13:44 ubuntu node[7590]: [2021-04-14 07:13:44] INFO "GET /ghost/assets/img/dashboard/start-membership-baafa2c6558d118ae59cb1fddab045>
Apr 14 07:13:44 ubuntu node[7590]: [2021-04-14 07:13:44] INFO "GET /ghost/assets/img/dashboard/the-browser-f5e7e199fe82d8435913e84d022fa7e1.pn>
Apr 14 07:13:44 ubuntu node[7590]: [2021-04-14 07:13:44] INFO "GET /ghost/assets/img/dashboard/join-community-bb5478f7dca6c04a2d0baf2b02f880fb>
Apr 14 07:13:44 ubuntu node[7590]: [2021-04-14 07:13:44] INFO "GET /ghost/api/canary/admin/members/?filter=status%3Apaid&order=created_at%20as>
Apr 14 07:14:11 ubuntu node[7590]: [2021-04-14 07:14:11] INFO "GET /" 200 475ms
Apr 14 07:14:11 ubuntu node[7590]: [2021-04-14 07:14:11] INFO "GET /" 200 480ms
Apr 14 07:14:15 ubuntu node[7590]: [2021-04-14 07:14:15] INFO "GET /members/api/site/" 200 12ms
Apr 14 07:14:18 ubuntu node[7590]: [2021-04-14 07:14:18] INFO "GET /" 304 142ms
Apr 14 07:14:25 ubuntu node[7590]: [2021-04-14 07:14:25] INFO "GET /members/api/site/" 304 4ms
Apr 14 07:14:26 ubuntu node[7590]: [2021-04-14 07:14:26] INFO "GET /members/api/member/" 401 4ms

Toegang tot Ghost Admin Interface

Open nu je webbrowser en ga naar de Ghost admin interface met de URL https://ghost.linuxbuz.com/ghost/. Je zou de volgende pagina moeten zien:

Ghost Blog installatieprogramma

Klik op de knop Create your account om je eerste account aan te maken:

Maak je account aan

Geef je account gegevens op en klik op de knop I’ll do this later onderaan het scherm. Je zou de Ghost admin interface moeten zien op de volgende pagina:

Ghost CMS Dashboard

Je kunt je Ghost website ook openen met de URL https://ghost.linuxbuz.com/. Je zou de volgende pagina moeten zien:

Ghost CMS Frontend

Conclusie

Gefeliciteerd! Je hebt met succes het Ghost blogging platform geïnstalleerd op Ubuntu 20.04. Je kunt nu je eigen inhoud maken en publiceren vanuit de Ghost interface.