Ghost® hosten op een Managed VPS: uw publicatie, op uw eigen server

Ghost hosten op een Managed VPS betekent dat u uw artikelen publiceert, uw leden verzamelt en uw nieuwsbrieven verstuurt vanaf een machine die van u is, en die ons team bijwerkt en dag en nacht in de gaten houdt. Ghost is opensourcesoftware onder de MIT-licentie. Deze gids volgt de officiële documentatie: Ghost-CLI of Docker Compose, MySQL, HTTPS, e-mails, back-ups en updates.

Simon Vasconcelos Lee Door Gepubliceerd op 9 november 2026Leestijd: 13 minuten

Alle gidsen

In het kort

  1. Dankzij de MIT-licentie van Ghost gebruikt u het vrij in een bedrijf, zolang de licentievermelding behouden blijft. De naam en het logo vallen apart onder het merkenbeleid van Ghost Foundation.
  2. Het project beveelt Ghost-CLI aan op Ubuntu, met Nginx, Node.js 22, MySQL 8 en minstens 1 GB geheugen. De methode met Docker Compose, in “preview”, voegt webanalyse en zelf gehoste ActivityPub toe.
  3. MySQL 8 is de enige database die in productie wordt ondersteund.
  4. Voorzie twee e-mailroutes: een SMTP-relay voor de transactionele e-mails, onmisbaar, en Mailgun voor de nieuwsbrieven, de enige ondersteunde dienst voor massaverzending.
  5. Maak een back-up van de database en de map content, en werk bij met ghost update of docker compose pull: het project publiceert elke week updates.

Wat Ghost doet

Ghost is een professioneel en vrij publicatieplatform, geschreven voor Node.js. Het brengt op één plek samen wat een onafhankelijke publicatie vaak uit meerdere tools opbouwt.

Volgens de documentatie heeft het product bij zelf hosten dezelfde functies. Wat eromheen zit, komt op u neer: het versturen van de nieuwsbrieven, de webanalyse, een CDN en de volledige back-ups van de site.

De MIT-licentie en het merk

Ghost wordt gepubliceerd onder de MIT-licentie. Ze staat toe de software te gebruiken, te kopiëren, te wijzigen, samen te voegen, te publiceren, te verspreiden, in sublicentie te geven en te verkopen, onder één voorwaarde: de copyrightvermelding en de tekst van de licentie blijven in elke kopie staan. U kunt Ghost dus in een bedrijf laten draaien, aanpassen en er voor uw klanten op publiceren, zonder een licentie te kopen.

De licentie dekt de code. De naam en het logo zijn van Ghost Foundation en vallen onder haar merkenbeleid: lees het als u een aanbod rond de software bouwt. Ghost is een gedeponeerd merk van Ghost Foundation.

This publication is independent of and not affiliated with, authorized, sponsored, or approved by Ghost Foundation. In het Nederlands: deze publicatie is onafhankelijk van Ghost Foundation en is niet aan haar gelieerd, noch door haar toegestaan, gesponsord of goedgekeurd.

Ghost-CLI of Docker Compose: twee officiële methoden

Het project documenteert twee wegen voor productie. Ghost-CLI is de installatie die het officieel aanbeveelt, en Docker Compose is een “preview”, die het zelf gloednieuw noemt. Het geeft ook aan naar deze Docker-tooling toe te werken in plaats van Ghost-CLI verder te ontwikkelen, en het levert een assistent om van de ene naar de andere over te stappen.

PuntGhost-CLIDocker Compose (preview)
SysteemUbuntu 22.04, 24.04 of 26.04Een Linux-server met Docker 20.10.13 of nieuwer
GeheugenMinstens 1 GBHet project noemt als voorbeeld een server met 2 GB en 1 processor
Webserver en HTTPSNginx en een Let’s Encrypt-certificaat, geplaatst door Ghost-CLICaddy, in een container, die TLS afhandelt
DatabaseMySQL 8.0 of 8.4, op de server geïnstalleerdMySQL in een container
WebanalyseNiet compatibelBeschikbaar, met een Tinybird-account
Sociaal netwerk (ActivityPub)De dienst die het project host, gratis binnen zijn gebruiksgrenzenDezelfde dienst standaard, of uw eigen, zelf gehost

Voordat u begint: het domein en de server

Laat het domein naar de server wijzen vóór de installatie: het certificaat wordt tijdens de installatie geplaatst. Op een Simafri-VPS komen de bezoekers binnen op de poorten 80 en 443, onder de domeinnaam van de server, met A- en AAAA-records. Het adres van de site schrijft u volledig uit, met zijn protocol, zoals https://example.com: een IP-adres veroorzaakt fouten.

Behalve het hierboven genoemde geheugen noemt het project geen cijfers voor schijf of belasting: de grootte hangt af van uw verkeer, uw afbeeldingen en uw media. Beschrijf op een managed VPS uw publicatie aan ons, dan raden wij u de passende grootte aan.

Ghost installeren met Ghost-CLI op Ubuntu

Ghost-CLI gebruikt u met een gebruiker die niet root is en niet ghost heet, want die naam botst met het hulpprogramma. Maak hem aan vanuit het rootaccount en vervang user door de gekozen naam:

Terminal, als root
adduser <user>
usermod -aG sudo <user>
su - <user>

Nginx en MySQL

Werk het systeem bij, installeer Nginx (minstens 1.9.5 voor SSL) en MySQL. De regel ufw opent HTTP en HTTPS als deze firewall actief is:

Terminal
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nginx
sudo ufw allow 'Nginx Full'
sudo apt-get install mysql-server

Op recente versies van Ubuntu authenticeert het rootaccount van MySQL zich via een socket, wat Ghost niet ondersteunt. Geef het een wachtwoord:

Terminal, daarna MySQL-console
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '<your-new-root-password>';
FLUSH PRIVILEGES;
exit

Node.js en Ghost-CLI

Ghost vraagt Node.js 22: de versies 20, 21, 23 en nieuwer worden niet ondersteund. Het project vraagt het voor het hele systeem te installeren, op deze manier:

Terminal
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
NODE_MAJOR=22
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt-get update
sudo apt-get install nodejs -y
sudo npm install ghost-cli@latest -g

De installatie starten

Ghost wordt in zijn eigen map geïnstalleerd, met een bepaalde eigenaar en bepaalde rechten. Vervang sitename door de naam van uw keuze:

Terminal
sudo mkdir -p /var/www/sitename
sudo chown <user>:<user> /var/www/sitename
sudo chmod 775 /var/www/sitename
cd /var/www/sitename
ghost install

De opdracht stelt dan zijn vragen, en het project raadt aan bij elke voorgestelde stap ja te antwoorden:

De site antwoordt dan, en https://example.com/ghost nodigt u uit het account van de eigenaar aan te maken. Wordt de installatie onderbroken, dan hervat ghost setup de configuratie; mislukt ze, dan ruimt ghost uninstall beter op dan het verwijderen van de map. ghost doctor controleert het systeem op elk moment.

Ghost installeren met Docker Compose (preview)

Het project presenteert deze methode als een “preview”: in zijn ogen is ze gloednieuw. Zij is het die het zelf hosten van webanalyse en ActivityPub mogelijk maakt.

Haal op een server waar Docker is geïnstalleerd de officiële tooling op in /opt/ghost en kopieer de twee voorbeeldbestanden:

Terminal
git clone https://github.com/TryGhost/ghost-docker.git /opt/ghost && cd /opt/ghost
cp .env.example .env
cp caddy/Caddyfile.example caddy/Caddyfile

Vul in het bestand .env deze waarden in:

Haal in caddy/Caddyfile het commentaar weg bij het blok dat bij uw geval past: doorverwijzing van www naar het kale domein, of omgekeerd, of een apart beheerdomein. Start daarna Ghost en rond de installatie af op /ghost:

Terminal
docker compose pull
docker compose up -d

Webanalyse en ActivityPub

De analyse vraagt een Tinybird-account, een externe dienst. Meld u vanuit /opt/ghost aan, implementeer de configuratie en haal de tokens op die u in .env plakt, sectie “Tinybird configuration”:

Terminal
docker compose run --rm tinybird-login
docker compose run --rm tinybird-sync
docker compose run --rm tinybird-deploy
docker compose run --rm tinybird-login get-tokens

ActivityPub werkt meteen met de dienst die het project host, gratis binnen gebruiksgrenzen die de documentatie publiceert. Om uw eigen dienst zelf te hosten, haalt u het commentaar weg bij ACTIVITYPUB_TARGET=activitypub:8080. Activeer daarna in .env het gewenste profiel of de gewenste profielen en start de containers opnieuw:

.env
COMPOSE_PROFILES=analytics,activitypub
Terminal
docker compose pull
docker compose up -d

Voor ActivityPub vraagt het project ook Ghost en Caddy opnieuw aan te maken, met docker compose up -d --force-recreate ghost caddy.

Overstappen van Ghost-CLI naar Docker Compose

Na het klonen en configureren kopieert bash scripts/migrate.sh de map content, importeert de database in de MySQL-container en start Caddy in plaats van Nginx. Het stelt voor Nginx te stoppen, waardoor de site offline gaat: antwoord nee als er andere sites op de server draaien. Het verwijdert geen enkel gegeven. bash recovery_instructions.sh herstelt de oorspronkelijke site als u de migratie onderbreekt.

HTTPS en beheerdomein

Het beheer van Ghost moet via HTTPS lopen, en het project beveelt HTTPS voor de hele site aan: zonder gaan gebruikersnamen en wachtwoorden leesbaar over de lijn. Met Docker Compose zorgt Caddy ervoor. Met Ghost-CLI plaatst de installatie het certificaat, en een opdracht doet dat achteraf:

Terminal, in de map van de site
ghost setup ssl

Om het adres van een met Ghost-CLI geïnstalleerde site te wijzigen, werkt ghost config url https://example.com de configuratie bij en past ghost restart haar toe.

Het project raadt ook een apart beheerdomein aan, dat het aanvalsoppervlak verkleint. Het pad blijft /ghost/. Bij Ghost-CLI geeft u het op in config.production.json:

config.production.json
"admin": {
  "url": "https://admin.example.com"
}

Vul bij Docker Compose ADMIN_DOMAIN in, haal het commentaar weg bij zijn blok in het Caddyfile en voer docker compose up -d --force-recreate ghost caddy uit. Ook dit domein heeft zijn A- en AAAA-records nodig.

MySQL 8, de productiedatabase

MySQL 8 is de enige database die het project in productie ondersteunt. Ghost-CLI wordt geïnstalleerd met MySQL 8.0 of 8.4, en het Compose-bestand levert een MySQL 8.0-image.

E-mails en nieuwsbrieven

Ghost onderscheidt twee soorten verzending, die niet dezelfde weg volgen. Dit is het belangrijkste punt om na de installatie in te stellen.

VerzendingVoorbeeldenWat haar draagt
TransactioneelUitnodigingen van het team, vergeten wachtwoorden, registraties en aanmeldlinks van leden, aanmeldcode vanaf een nieuw apparaatDe configuratie mail van Ghost, via SMTP
NieuwsbrievenDe artikelen die naar uw leden worden verstuurdDe API van Mailgun, waarvan u de sleutels invoert in de instellingen “Email newsletter”

De SMTP-relay, voor de transactionele e-mails

De documentatie rekent deze configuratie tot de vereisten in productie. Ghost stuurt ook een code per e-mail wanneer het een aanmelding vanaf een nieuw apparaat opmerkt: stel deze relay in voordat u uw team uitnodigt.

Op een Simafri-VPS loopt het verzenden via een geauthenticeerde SMTP-relay, op poort 587: het adres van een e-mailaccount dat u al hebt, of Simafri Suite.

config.production.json (Ghost-CLI), daarna ghost restart
"mail": {
  "transport": "SMTP",
  "from": "'Acme Support' <support@example.com>",
  "options": {
    "host": "smtp.example.com",
    "port": 587,
    "secure": false,
    "requireTLS": true,
    "auth": {
      "user": "support@example.com",
      "pass": "1234567890"
    }
  }
}
.env (Docker Compose), sectie SMTP Email
mail__transport=SMTP
mail__options__host=smtp.example.com
mail__options__port=587
mail__options__secure=false
mail__options__requireTLS=true
mail__options__auth__user=support@example.com
mail__options__auth__pass=1234567890
mail__from="'Acme Support' <support@example.com>"
Terminal, na een wijziging van het bestand .env
docker compose up -d --force-recreate ghost

Mailgun, voor de nieuwsbrieven

De SMTP-relay dekt de nieuwsbrieven niet. Volgens de documentatie gebeurt massaverzending niet via SMTP en is Mailgun tot nu toe de enige dienst voor massaverzending die Ghost ondersteunt. U maakt uw Mailgun-account aan en voert de API-sleutels ervan in de instellingen van Ghost in.

Verstuurt u uw artikelen niet per e-mail, dan hebt u geen Mailgun-account nodig: die instellingen kunt u negeren. Geeft u de voorkeur aan een andere nieuwsbriefdienst, dan stelt het project voor uw leden ernaar te synchroniseren, bijvoorbeeld met Zapier of de integratiegidsen.

Ghost back-uppen en terugzetten

Ghost kent drie niveaus van kopie, en ze bevatten niet hetzelfde. Om een site identiek te herbouwen, vraagt het project rechtstreeks een back-up te maken van de database en de map content.

MethodeWat ze bevatVoor welk gebruik
ghost backup (Ghost-CLI)Een zip: inhoud in JSON, leden in CSV, thema's, afbeeldingen, bestanden en media, routes en doorverwijzingenDe voorzorgsmaatregel vóór een update
Export vanuit het beheerEen zip: inhoud en instellingen, leden, statistieken van artikelen, thema's, routes en doorverwijzingen, naar keuze. Geen reacties, geen activiteitsgeschiedenis van leden, geen mediaHet verplaatsen van de inhoud naar een andere site
Database en map contentAlle gegevensHerstel na een calamiteit, of een exacte kopie

De export vindt u in “Settings”, “Advanced”, “Import/Export”, tabblad “Export”, knop “All data”. Voor de volledige kopie met Ghost-CLI staan het MySQL-account en de naam van de database die u moet overnemen in config.production.json:

Terminal, Ghost-CLI
mkdir -p ~/ghost-backups
mysqldump -u ghost_user -p ghost_production > ~/ghost-backups/ghost_backup.sql
cd /var/www/sitename
tar czf ~/ghost-backups/ghost_content_backup.tar.gz content/

Met Docker Compose bewaart de officiële tooling de inhoud in data/ghost. De dump volgt de vorm die de MySQL-image geeft, en het rootwachtwoord zit al in de container. Bewaar ook een kopie van .env en van het Caddyfile.

Terminal, Docker Compose
cd /opt/ghost
mkdir -p ~/ghost-backups
docker compose exec -T db sh -c 'exec mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" ghost' > ~/ghost-backups/ghost_backup.sql
tar czf ~/ghost-backups/ghost_content_backup.tar.gz data/ghost

Terugzetten

Terminal, Ghost-CLI
cd /var/www/sitename
ghost stop
mysql -u ghost_user -p ghost_production < ~/ghost-backups/ghost_backup.sql
tar xzf ~/ghost-backups/ghost_content_backup.tar.gz
sudo chown -R ghost:ghost content
ghost restart
Terminal, Docker Compose
cd /opt/ghost
docker compose stop ghost
docker compose exec -T db sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" ghost' < ~/ghost-backups/ghost_backup.sql
tar xzf ~/ghost-backups/ghost_content_backup.tar.gz
docker compose start ghost

Kopieer deze bestanden van de server af, met rsync of scp, en test het terugzetten op een testmachine. Begint u opnieuw vanuit een export met betalende leden, koppel dan hetzelfde Stripe-account vóór u uw leden importeert.

Ghost bijwerken

Het project publiceert elke week updates en herinnert eraan dat een openbare webserver bijgewerkt moet blijven. Lees de release-opmerkingen en voer daarna de opdracht van uw methode uit.

Met Ghost-CLI

Terminal, in de map van de site
ghost check-update
ghost backup
ghost update

Met Docker Compose

Terminal
cd /opt/ghost
git pull
docker compose pull
docker compose up -d
docker image prune

De laatste regel, optioneel, verwijdert de oude images. Laat GHOST_VERSION in .env als commentaar staan: een vastgelegde versie blokkeert deze updateopdrachten.

Uw instantie versterken en laten groeien

De documentatie geeft meerdere instellingen voor een server in productie:

Voor de belasting plaatst het project een CDN en een cachelaag voor Ghost. Het preciseert dat clustering en sharding niet worden ondersteund: één enkele instantie bedient de site, en de cache vangt het verkeer op.

Wie doet wat op een managed VPS

Self-hosting vraagt dat u naast de applicatie ook de server beheert. Op een managed VPS neemt ons team de server voor zijn rekening en houdt het uw instantie proactief in de gaten; Ghost blijft uw software, met zijn instellingen en gegevens.

OnderwerpOns teamU
De serverSysteem- en beveiligingsupdates, ingrepen op de server inbegrepenHet moment dat bij uw activiteit past
De monitoringServer 24 uur per dag en 7 dagen per week bewaakt, met ingrijpen zonder op uw oproep te wachtenUw inhoud, uw leden en uw abonnementen
GhostProactief toezicht: fouten, vertragingen en schijfruimte opgespoord, correctie aangeradenDe installatie, de updates, de instellingen, de SMTP-relay en het Mailgun-account, die u toepast, zelf of via uw AI-assistent
De back-upsElke nacht, versleuteld en buiten de machine bewaard; terugzetten inbegrepenHet verzoek om terug te zetten, wanneer u dat nodig hebt
De migratieUw huidige server gemigreerd, gratisHet moment van de overschakeling

Wilt u liever dat ons team in de applicatie zelf ingrijpt, dan wordt die dienstverlening per uur of tegen een vast bedrag gefactureerd, met een offerte voordat het werk begint.

Een server die voor uw Ghost-site wordt beheerd

Met een Managed VPS van Simafri houdt ons team de server van uw Ghost-instantie up-to-date, bewaakt hem dag en nacht en grijpt in zonder op uw oproep te wachten; het houdt ook uw instantie proactief in de gaten en raadt u de nuttige correcties aan, die u toepast, zelf of via uw AI-assistent. De back-ups worden elke nacht versleuteld en buiten de machine bewaard, het terugzetten is inbegrepen, en de migratie van uw huidige server is gratis.

Ontdek Managed VPS

Veelgestelde vragen

Is Ghost gratis om zelf te hosten?

Ja. Ghost valt onder de MIT-licentie: u mag het in een bedrijf gebruiken en aanpassen, zolang u de licentievermelding behoudt. Wat overblijft, zijn de diensten eromheen: de server, de e-mailrelay, Mailgun als u nieuwsbrieven verstuurt, Tinybird als u de analyse ervan wilt.

Welke configuratie heb ik nodig om Ghost te hosten?

Het project beveelt Ubuntu 22.04, 24.04 of 26.04, Nginx, Node.js 22, MySQL 8.0 of 8.4, systemd, minstens 1 GB geheugen, een domein en een gebruiker die niet root is aan. Voor Docker Compose noemt het als voorbeeld een server met 2 GB en 1 processor.

Installeer ik Ghost met Ghost-CLI of met Docker?

Ghost-CLI is de installatie die het project voor productie aanbeveelt. Docker Compose is een preview, de enige die webanalyse en zelf gehoste ActivityPub toelaat, en het project zegt naar deze tooling toe te werken. Een assistent maakt de overstap van Ghost-CLI naar Docker Compose mogelijk.

Werkt Ghost met SQLite, MariaDB of PostgreSQL?

In productie is MySQL 8 de enige ondersteunde database. Het project raadt een herinstallatie op MySQL 8 aan vanuit SQLite, en een migratie naar MySQL 8 vanuit MariaDB. Zijn documentatie voorziet niet in PostgreSQL.

Kan ik de nieuwsbrieven van Ghost via SMTP versturen?

Nee. SMTP dient voor de transactionele e-mails: uitnodigingen, wachtwoorden, aanmeldlinks van leden. De nieuwsbrieven vragen de API van Mailgun, de enige ondersteunde dienst voor massaverzending. Verstuurt u uw artikelen niet per e-mail, dan is er geen Mailgun-account nodig.

Hoe maak ik een back-up van een zelf gehoste Ghost-site?

Maak voor een volledig herstel een back-up van de MySQL-database met mysqldump en van de map content met tar. De opdracht ghost backup maakt vóór een update een zip. De export vanuit het beheer laat de reacties, de activiteitsgeschiedenis van leden en de media buiten beschouwing.

Hoe werk ik Ghost bij?

Voer met Ghost-CLI ghost backup en daarna ghost update uit in de map van de site, en ghost update --rollback bij problemen. Voer met Docker Compose git pull, docker compose pull en docker compose up -d uit in /opt/ghost.

Dekt een managed VPS ook Ghost?

Een managed VPS dekt de server: systeem, beveiliging, monitoring en back-ups. Ons team houdt ook uw instantie proactief in de gaten en raadt u de nuttige correcties aan, die u toepast. Een ingreep in de applicatie wordt per uur of tegen een vast bedrag gefactureerd.

Neem contact op