Onlangs gebeurde het volgende, een update verstoorde de werking van mijn Ghost blog met als resultaat een dikke 502 fout! Natuurlijk gebeuren deze prullen steeds wanneer je er geen tijd voor hebt dus vandaar deze tutorial voor wie het nodig kan hebben én als geheugensteuntje voor mezelf.

Data opslaan

De gegevens van je blog exporteren ga je doen op 2 verschillende manieren. Enerzijds via de beheersconsole van Ghost en anderzijds de Terminal. Wat ze beide doen leg ik je apart uit.

Backup via Ghost

Via de beheersconsole van Ghost ga je eigenlijk alle data uit de database gaan exporteren naar een JSON bestand. In dit bestand staat eigenlijk alles behalve de gegevens die op schijf worden bewaard dus je raad het al, die gaan we direct exporteren via de Terminal.

De functie om je data te exporteren vind je onder Labs in de linkerkolom zoals je kan zien op onderstaande screenshot. Bewaar de JSON file zorgvuldig!

Backup via de terminal

Zoals ik in eerdere posts reeds vermeldde is de Linux terminal een zeer krachtig instrument en dat ga je hier ook zien. Via het scp commando gaan we onze afbeeldingen en bestanden die we gebruiken op de blog gaan downloaden. Dit doen we met het volgende commando.

$ scp -r user@server-ip:/var/www/ghost/content ~/Downloads/content

Ik ga er hier van uit dat je connecteert via je private key. Als je niet weet hoe dat werkt raad ik je aan om mijn artikel over private keys te lezen. In dat artikel krijg je een beeld van wat private keys zijn. Ze aanmaken is kwestie van een Google querytje.

Je VPS rebuilden

Rebuilden van je VPS is één van die superhandige functies die Digital Ocean je biedt. Je kan met 1 klik van de muis je droplet laten terugzetten naar de originele staat, dus net zoals je hem de eerste keer hebt aangemaakt maar met het verschil dat je hetzelfde IP- adres behoudt. Geen zever meer met DNS enzo.

Digital Ocean droplet rebuild

Eenmaal je de melding hebt gekregen dat de droplet geherinitialiseerd is kan je het venster sluiten. Je hebt nu een zo goed als nieuwe droplet.

Configuratie van je VPS

Bij een nieuwe droplet hoort uiteraard een beetje configuratie. Om deze te doen maak je verbinding via SSH met je droplet.

ssh user@server-ip

Eenmaal je de fingerprint accepteerd kom je in de terminal van je server en zal de installatie van Ghost automatisch starten. Als de installatie gebeurd is volg je de aanwijzingen die op het scherm komen.

Let er op dat je A record nog steeds in orde is. Dit is voor de lezers die deze tutorial volgen met een nieuwe installatie.

Er zal een paar keer om input gevraagd worden, zo moet je de URL van je blog invullen en jouw emailadres om de SSL certificaten aan te vragen bij Let's Encrypt. Voor het gemak van schrijven geef je hier het non WWW adres in.

Installatie Ghost

Aangezien ik wil dat mijn blog enkel te bezoeken is via het non WWW adres moeten er nog een paar dingen gebeuren vooraleer we verder gaan met het optimaliseren van de server.

Zodoende de redirects later te kunnen doen tussen het WWW en non WWW adres van de blog moeten we er eerst voor zorgen dat de beide adressen werken. Ik ga er terug vanuit dat beide A records verwijzen naar je droplet.

Ondersteuning voor het WWW subdomein toevoegen

Je kan het WWW subdomein toevoegen door je the authenticeren als de ghost-mgr gebruiker. Via deze gebruiker kan je de verdere configuratie doen. Je doet dit met de volgende commando's.

sudo -i -u ghost-mgr

cd /var/www/ghost

ghost config url https://www.nerdistan.be
ghost setup nginx ssl
ghost config url https://nerdistan.be

exit

Requests routen naar non WWW

Het enige wat je nu nog rest zijn de configuratiebestanden aan te passen van NGINX. Dit is je webserver en die moet weten wat hij met alle requests moet doen, namelijk doorsturen naar het non WWW adres. Hiervoor open je de volgende bestanden die je vindt in /var/www/ghost/system/files.

  • your-www-domain-SSL.conf
  • your-www-domain.conf

Je past het eerste location block aan dat het er uitziet als op onderstaande afbeelding. Natuurlijk aangepast aan jouw domein.

Als je dit hebt gedaan rest je alleen nog de configuratie te testen en in te laden via deze commando's.

// Testen van de configuratiebestanden
sudo nginx -t

// Inladen van de nieuwe configuratie
sudo nginx -s reload

Nu is alles ingesteld wat nodig is op het vlak van webserver en SSL. Alle traffiek komt aan op je non WWW adres met een netjes ingesteld SSL certificaat.

After installatie van MySQL

Zoals je misschien reeds hebt gezien toen je voor het eerst connecteerde met je droplet stond er een melding in verband met de verdere installatie van MySQL.

In het bestand .digitalocean_password vind je de wachtwoorden die te maken hebben met je MySQL installatie.

Het is misschien handig om die sleutels te kopiëren en het bestand van de server te verwijderen. Daarna ga je de verdere installatie uitvoeren met onderstaand commando.

# mysql_secure_installation

Je krijgt een aantal security gerelateerde vragen voorgeschoteld waar je uiteraard overal een dikke JA op antwoordt.

Automatische updates

Een server hou je liefst zo up to date en veilig mogelijk, daarom gaan we het updaten iet of wat automatiseren.

Om dat te kunnen doen hebben we het pakketje unattended-upgrades nodig. Normaal staat het standaard geïnstalleerd op Ubuntu server maar mocht het niet zijn installeer je het op de volgende manier.

sudo apt install unattended-upgrades

Voor de configuratie verwijs ik je graag door naar de website van Libre Software.

Je data restoren

In de laatste stap ga je uiteraard je data terugzetten. Hiervoor log je eerst in in de beheersconsole van je Ghost installatie en vervolledig je de setup. Daarna ga je terug naar Labs in de linkse kolom om je JSON file te uploaden.

Importeer je content

Hierna is het de beurt aan je afbeeldingen. Dat doen we terug op dezelfde manier als toen we ze hebben gedownload.

$ scp -r ~/Downloads/content user@server-ip:/var/www/ghost/content

Mocht je merken dat je nog steeds de error hebt na het restoren dan ligt het hoogstwaarschijnlijk aan de ownership van de contentmap. Die kan je even juistzetten met onderstaand commando.

# chown -R ghost:ghost /var/www/ghost/content/

Voila, meer moet dat niet zijn. Laat het een hulp zijn, een leidraad. Zijn er aanpassingen nodig aan dit artikel dan hoor ik het graag.

Succes!