Ghost op engem Managed VPS hosten heescht, Är Artikelen ze publizéieren, Är Memberen ze versammelen an Är Newsletteren vun enger Maschinn aus ze schécken, déi Iech gehéiert a vun eisen Equippe Dag an Nuecht aktuell gehal a verfollegt gëtt. Ghost ass eng fräi Software ënner der MIT-Lizenz. Dëse Guide follegt senger offizieller Dokumentatioun: Ghost-CLI oder Docker Compose, MySQL, HTTPS, d’E-Mailen, d’Backups an d’Aktualiséierungen.
Auteur: Simon Vasconcelos Lee
Publizéiert den 9. November 2026Lieszäit: 13 Minutten
content, an aktualiséiert dann mat ghost update oder docker compose pull: de Projet publizéiert all Woch Aktualiséierungen.Ghost ass eng professionell a fräi Publikatiounsplattform, fir Node.js geschriwwen. Si versammelt op enger Plaz, wat eng onofhängeg Publikatioun dacks aus e puer Werkzäicher zesummestellt.
Laut der Dokumentatioun huet d’Produkt dobäi déi selwecht Funktiounen am Selwerhosten. Wat dorëmmer läit, fält Iech zou: de Versand vun den Newsletteren, d’Web-Analytik, e CDN an déi komplett Backups vum Site.
Ghost gëtt ënner der MIT-Lizenz publizéiert. Si erlaabt, d’Software ze notzen, ze kopéieren, z’änneren, ze fusionéieren, ze publizéieren, weiderzeginn, ënner Ënnerlizenz ze setzen an ze verkafen, ënner enger eenzeger Bedingung: de Copyright-Hiweis an den Text vun der Lizenz an all Kopie ze behalen. Dir kënnt Ghost also an Ärer Entreprise lafe loossen, et upassen an do fir Är Clienten publizéieren, ouni eng Lizenz ze kafen.
D’Lizenz deckt de Code. Den Numm an d’Logo gehéiere Ghost Foundation a falen ënner hir Mäerkepolitik: liest se, wann Dir eng Offer ronderëm d’Software opbaut. Ghost ass eng agedroe Mark vu Ghost Foundation.
This publication is independent of and not affiliated with, authorized, sponsored, or approved by Ghost Foundation. Op Lëtzebuergesch: dës Publikatioun ass onofhängeg vu Ghost Foundation an net mat hir verbonne, nach vun hir autoriséiert, gesponsert oder approuvéiert.
De Projet dokumentéiert zwee Weeër fir d’Produktioun. Ghost-CLI ass d’Installatioun, déi hie offiziell recommandéiert, an Docker Compose ass eng „Preview“, déi hie als ganz nei bezeechent. Hie seet och, datt hie sech op dës Docker-Werkzäicher zouentwéckelt, amplaz Ghost-CLI weiderzeentwéckelen, an hie liwwert en Assistent, fir vun deem een op deen anere z’wiesselen.
| Punkt | Ghost-CLI | Docker Compose (Preview) |
|---|---|---|
| System | Ubuntu 22.04, 24.04 oder 26.04 | E Linux-Server mat Docker 20.10.13 oder méi nei |
| Späicher | Op d’mannst 1 GB | De Projet nennt als Beispill e Server mat 2 GB an 1 Prozessor |
| Webserver an HTTPS | Nginx an e Zertifikat vu Let’s Encrypt, vu Ghost-CLI gesat | Caddy, an engem Container, deen TLS iwwerhëlt |
| Datebank | MySQL 8.0 oder 8.4, um Server installéiert | MySQL an engem Container |
| Web-Analytik | Net kompatibel | Verfügbar, mat engem Tinybird-Kont |
| Sozialt Netzwierk (ActivityPub) | De Service, deen de Projet hostet, gratis bannent senge Notzungsgrenzen | Dee selwechte Service standardméisseg, oder Ären eegenen, selwer gehost |
Looss d’Domain virun der Installatioun op de Server weisen: d’Zertifikat gëtt wärend dem Opriichte gesat. Op engem Simafri-VPS kommen d’Besucher op de Ports 80 an 443 un, ënner dem Domainnumm vum Server, mat A- an AAAA-Enregistremer. D’Adress vum Site gëtt komplett geschriwwen, mat hirem Protokoll, wéi https://example.com: eng IP-Adress verursaacht Feeler.
Iwwer de Späicher hei uewen eraus gëtt de Projet weder Disk nach Laascht un: d’Gréisst hänkt vun Ärem Trafic, vun Ären Biller an Ären Medien of. Op engem Managed VPS beschreift eis Är Publikatioun, a mir recommandéieren Iech déi passend Gréisst.
Ghost-CLI gëtt mat engem Benotzer benotzt, deen net root ass an deem säin Numm net ghost ass, well dësen Numm mam Werkzeug kollidéiert. Erstellt en aus dem Kont root, andeems Dir user duerch de gewielten Numm ersetzt:
adduser <user>
usermod -aG sudo <user>
su - <user>
Aktualiséiert de System, installéiert Nginx (1.9.5 am Minimum fir SSL) a MySQL. D’Zeil ufw mécht HTTP an HTTPS op, wann dës Firewall aktiv ass:
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 de rezenten Ubuntu-Versioune authentifizéiert sech de Kont root vu MySQL iwwer e Socket, wat Ghost net ënnerstëtzt. Gitt him e Passwuert:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '<your-new-root-password>';
FLUSH PRIVILEGES;
exit
Ghost verlaangt Node.js 22: d’Versioune 20, 21, 23 an déi folgend ginn net ënnerstëtzt. De Projet verlaangt, et fir dat ganzt System esou z’installéieren:
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
Ghost installéiert sech a sengem eegenen Dossier, mat engem präzisen Proprietär a präzise Rechter. Ersetzt sitename duerch den Numm no Ärer Wiel:
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 Befehl stellt dann seng Froen, an de Projet recommandéiert, bei all proposéierter Etapp mat Jo ze äntweren:
https://.localhost fir den Hôte, root an dat Passwuert, dat virdru gesat gouf, dann den Numm vun der Datebank, déi Ghost-CLI erstellt.De Site äntwert dann, an https://example.com/ghost invitéiert Iech, de Kont vum Proprietär ze erstellen. Wann d’Installatioun ënnerbrach gëtt, hëlt ghost setup d’Konfiguratioun erëm op; wann si feelschleet, botzt ghost uninstall besser wéi d’Läschen vum Dossier. ghost doctor kontrolléiert de System zu all Moment.
De Projet stellt dës Method als „Preview“ duer: si ass a sengen Ae ganz nei. Si ass et, déi erlaabt, d’Web-Analytik an ActivityPub selwer ze hosten.
Op engem Server, wou Docker installéiert ass, hëlt déi offiziell Werkzäicher an /opt/ghost an a kopéiert hir zwee Beispillfichieren:
git clone https://github.com/TryGhost/ghost-docker.git /opt/ghost && cd /opt/ghost
cp .env.example .env
cp caddy/Caddyfile.example caddy/Caddyfile
Fëllt am Fichier .env dës Wäerter aus:
DOMAIN: d’Domain vum Site, zum Beispill example.com.ADMIN_DOMAIN: eng separat Domain fir d’Administratioun, wann Dir wëllt.DATABASE_ROOT_PASSWORD an DATABASE_PASSWORD: zwee Passwierder, mat openssl rand -hex 32 gezunn. Si gi fir ëmmer fixéiert: wann d’Datebank initialiséiert ass, brécht d’Verbindung of, wann een se ännert.Kommentéiert am caddy/Caddyfile de Block aus, deen zu Ärem Fall passt: Viruleedung vun www op déi nackt Domain, oder ëmgekéiert, oder separat Administratiounsdomain. Lancéiert dann Ghost, a schléisst d’Opriichte op /ghost of:
docker compose pull
docker compose up -d
HTTP_PORT an HTTPS_PORT z’änneren, wann Ghost hannert engem anere Reverse Proxy steet. MySQL bleift um internen Netz vun de Container.data/ghost an d’Datebank an data/mysql, zwou Plaze, déi sech an der .env astelle loossen.-f compose.yml -f compose.ipv6.yml bei Är Befeeler docker compose up derbäi.D’Analytik verlaangt e Tinybird-Kont, en externe Service. Aus /opt/ghost verbënnt Iech, deployéiert seng Konfiguratioun a rufft d’Tokens of, déi an d’.env eranzekopéieren sinn, Sektioun „Tinybird configuration“:
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 funktionéiert direkt mam Service, deen de Projet hostet, gratis bannent de Notzungsgrenzen, déi seng Dokumentatioun publizéiert. Fir Ären eegenen ze hosten, kommentéiert ACTIVITYPUB_TARGET=activitypub:8080 aus. Aktivéiert dann an der .env dee gewënschte Profil oder d’Profiler, a start d’Container nei:
COMPOSE_PROFILES=analytics,activitypub
docker compose pull
docker compose up -d
Fir ActivityPub verlaangt de Projet, och Ghost a Caddy nei ze erstellen, mat docker compose up -d --force-recreate ghost caddy.
No dem Klonen an der Konfiguratioun kopéiert bash scripts/migrate.sh den Dossier content, importéiert d’Datebank am MySQL-Container a start Caddy amplaz vun Nginx. Et proposéiert, Nginx ze stoppen, wat de Site offline setzt: äntwert mat Neen, wann aner Siten um Server lafen. Et läscht keng Donnéeën. bash recovery_instructions.sh stellt de ursprénglechen Site erëm hir, wann Dir d’Migratioun ënnerbrecht.
D’Administratioun vu Ghost muss iwwer HTTPS goen, an de Projet recommandéiert HTTPS fir de ganze Site: ouni et zirkuléiere Kennungen a Passwierder am Klartext. Mat Docker Compose këmmert Caddy sech drëms. Mat Ghost-CLI setzt d’Installatioun d’Zertifikat, an e Befehl mécht et nodréiglech:
ghost setup ssl
Fir d’Adress vun engem Site z’änneren, deen mat Ghost-CLI installéiert gouf, aktualiséiert ghost config url https://example.com d’Konfiguratioun, an ghost restart wennt se un.
De Projet rit och zu enger separater Administratiounsdomain, déi d’Ugrëffsfläch reduzéiert. De Wee bleift /ghost/. Op der Säit vu Ghost-CLI gëtt si an der config.production.json deklaréiert:
"admin": {
"url": "https://admin.example.com"
}
Op der Säit vun Docker Compose fëllt ADMIN_DOMAIN aus, kommentéiert säi Block am Caddyfile aus a lancéiert docker compose up -d --force-recreate ghost caddy. Dës Domain brauch och hir A- an AAAA-Enregistremer.
MySQL 8 ass déi eenzeg Datebank, déi de Projet an der Produktioun ënnerstëtzt. Ghost-CLI installéiert sech mat MySQL 8.0 oder 8.4, an de Compose-Fichier liwwert eng MySQL-8.0-Image.
ghost config database.client, am Dossier vum Site, weist déi benotzt Datebank un.Ghost ënnerscheet zwee Versänn, déi net iwwer deeselwechte Wee ginn. Dat ass de wichtegste Punkt, deen no der Installatioun ze reegele bleift.
| Versand | Beispiller | Wat en dréit |
|---|---|---|
| Transaktionell | Invitatioune fir d’Team, vergiesse Passwierder, Umeldungen a Verbindungslinke vun de Memberen, Verbindungscode vun engem neien Apparat aus | D’Konfiguratioun mail vu Ghost, a SMTP |
| Newsletteren | D’Artikelen, déi un Är Memberen geschéckt ginn | D’API vu Mailgun, där hir Schlëssele sech an den Astellunge „Email newsletter“ aginn |
D’Dokumentatioun klasséiert dës Konfiguratioun als néideg an der Produktioun. Ghost schéckt och e Code per E-Mail, wann en eng Verbindung vun engem neien Apparat aus erkennt: reegelt dëse Relais, ier Dir Äert Team invitéiert.
Op engem Simafri-VPS geet de Versand iwwer e authentifizéierte SMTP-Relais, um Port 587: d’Adress vun engem E-Mail-Kont, deen Dir schonn hutt, oder Simafri Suite.
"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"
}
}
}
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>"
docker compose up -d --force-recreate ghost
secure an requireTLS: Ghost schéckt iwwer Nodemailer, deem seng Dokumentatioun secure op false um Port 587 verlaangt, well d’Verbindung duerno op STARTTLS wiesselt. requireTLS refuséiert de Versand, wann dëse Wiessel feelschleet. De Beispillfichier vum Repository nennt de Port 465 an secure=true: ersetzt dës zwou Zeilen.from dréit eng richteg a gelies Adress, wat d’Zoustellbarkeet no dem Projet verbessert, an d’SPF-, DKIM- an DMARC-Enregistremer vun der Versanddomain komplettéieren d’Astellung.De SMTP-Relais deckt d’Newsletteren net of. Laut der Dokumentatioun geschitt de Massenversand net a SMTP, a Mailgun ass bis haut deen eenzege Service fir de Massenversand, deen Ghost ënnerstëtzt. Dir erstellt Äre Mailgun-Kont a gitt seng API-Schlësselen an den Astellunge vu Ghost an.
Wann Dir Är Artikelen net per E-Mail schéckt, braucht Dir kee Mailgun-Kont: dës Astellunge kënnt Dir ignoréieren. Wann Dir léiwer en anert Newsletter-Werkzeug hutt, schléit de Projet vir, Är Memberen dorop ze synchroniséieren, zum Beispill mat Zapier oder senge Guiden fir d’Integratioun.
Ghost bitt dräi Niveaue vu Kopien, an si enthalen net dat selwecht. Fir e Site identesch nei opzebauen, verlaangt de Projet, direkt d’Datebank an den Dossier content ze séchere.
| Method | Wat si enthält | Fir wéi eng Notzung |
|---|---|---|
ghost backup (Ghost-CLI) | Een Zip: Inhalter am JSON, Memberen am CSV, Themen, Biller, Fichieren a Medien, Routen a Viruleedungen | D’Virsuer virun enger Aktualiséierung |
| Export aus der Administratioun | Een Zip: Inhalter an Astellungen, Memberen, Statistike vun den Artikelen, Themen, Routen a Viruleedungen, no Wiel. Weder Kommentarer, nach Aktivitéitsverlaf vun de Memberen, nach Medien | D’Iwwerdroe vum Inhalt op en anere Site |
Datebank an Dossier content | All d’Donnéeën | D’Erhuelung no enger Katastroph, oder eng exakt Kopie |
Den Export fënnt een ënner „Settings“, „Advanced“, „Import/Export“, Reiter „Export“, Knäppchen „All data“. Fir déi komplett Kopie, mat Ghost-CLI, stinn de MySQL-Kont an den Numm vun der Datebank, déi ze ginn sinn, an der config.production.json:
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/
Mat Docker Compose hält déi offiziell Werkzäicher den Inhalt an data/ghost. Den Dump hëlt d’Form, déi d’MySQL-Image gëtt, an d’Passwuert vu root ass schonn am Container. Behält och eng Kopie vun der .env an vum Caddyfile.
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
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
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
Kopéiert dës Fichieren ausserhalb vum Server, mat rsync oder scp, a maacht e Restauratiounstest op enger Testmaschinn. Wann Dir vun engem Export mat bezuelte Memberen nei ufänkt, verbënnt dee selwechte Stripe-Kont, ier Dir Är Memberen importéiert.
De Projet publizéiert all Woch Aktualiséierungen an erënnert, datt en ëffentleche Webserver um neisten Stand bleiwen muss. Liest d’Release Notes, a lancéiert dann de Befehl vun Ärer Method.
ghost check-update
ghost backup
ghost update
ghost update --rollback geet op déi viregt Versioun zréck, wann eng Aktualiséierung schif geet.content bleift wärend den Aktualiséierunge op senger Plaz.ghost update [version] --force mat Ärer aktueller Versioun, well seng binär Ofhängegkeete fir eng präzis Versioun vun Node.js kompiléiert sinn.cd /opt/ghost
git pull
docker compose pull
docker compose up -d
docker image prune
Déi lescht Zeil, fakultativ, hëlt déi al Images ewech. Loosst GHOST_VERSION an der .env kommentéiert: eng Versioun ze fixéieren blockéiert dës Aktualiséierungsbefeeler.
D’Dokumentatioun gëtt e puer Astellunge fir e Server an der Produktioun:
mysql_secure_installation no enger gelongener Installatioun mat Ghost-CLI.Fir d’Laascht stellt de Projet e CDN an eng Cache-Schicht virun Ghost. Hie preziséiert, datt Clustering a Sharding net ënnerstëtzt ginn: eng eenzeg Instanz servéiert de Site, an de Cache fänkt den Trafic of.
Selwer hosten heescht, de Server zousätzlech zur Applikatioun ze halen. Op engem Managed VPS huelen eis Equippen de Server an d’Hand a verfollegen Är Instanz proaktiv; Ghost bleift Är Software, mat senge Astellungen an Donnéeën.
| Thema | Eis Equippen | Dir |
|---|---|---|
| De Server | System- a Sécherheetsupdates, Interventioune um Server abegraff | De Moment, deen zu Ärer Aktivitéit passt |
| D’Iwwerwaachung | Server 24 Stonnen op 24 a 7 Deeg op 7 verfollegt, mat Interventioun, ouni op Ären Uruff ze waarden | Är Inhalter, Är Memberen an Är Abonnementer |
| Ghost | Proaktiv Suivi: Feeler, lues Äntwertzäiten a Späicherplaz erkannt, Korrektur recommandéiert | Seng Installatioun, seng Aktualiséierungen, seng Astellungen, säi SMTP-Relais a säi Mailgun-Kont, déi Dir ëmsetzt, selwer oder mat Ärem KI-Assistent |
| D’Backups | All Nuecht, verschlësselt a baussent der Maschinn gelagert; Restauratioun abegraff | D’Ufro fir eng Restauratioun, wann Dir se braucht |
| D’Migratioun | Äre bestoende Server migréiert, offréiert | De Moment vum Wiessel |
Wann Dir léiwer wëllt, datt eis Equippen an der Applikatioun selwer intervenéieren, gëtt dës Prestatioun op Stonnebasis oder pauschal verrechent, mat engem Käschtevirschlag, deen Iech virun der Interventioun matgedeelt gëtt.
Mat engem Managed VPS vu Simafri halen eis Equippen de Server vun Ärer Ghost-Instanz aktuell, iwwerwaachen en Dag an Nuecht a gräifen an, ouni op Ären Uruff ze waarden; si verfollegen och Är Instanz proaktiv a recommandéieren Iech déi nëtzlech Korrekturen, déi Dir ëmsetzt, selwer oder mat Ärem KI-Assistent. D’Backups ginn all Nuecht verschlësselt a baussent der Maschinn gelagert, hir Restauratioun ass abegraff, an d’Migratioun vun Ärem aktuelle Server ass offréiert.
Jo. Ghost ass ënner der MIT-Lizenz: Dir kënnt en an der Entreprise notzen an upassen, wann Dir säi Lizenzhiweis behaalt. Et bleiwen d’Servicer dorëmmer: de Server, den E-Mail-Relais, Mailgun, wann Dir Newsletteren schéckt, Tinybird, wann Dir seng Analytik wëllt.
De Projet recommandéiert Ubuntu 22.04, 24.04 oder 26.04, Nginx, Node.js 22, MySQL 8.0 oder 8.4, systemd, op d’mannst 1 GB Späicher, eng Domain an e Benotzer, deen net root ass. Fir Docker Compose nennt hie als Beispill e Server mat 2 GB an 1 Prozessor.
Ghost-CLI ass d’Installatioun, déi de Projet fir d’Produktioun recommandéiert. Docker Compose ass eng Preview, déi eenzeg, déi d’Web-Analytik an en selwer gehostenen ActivityPub erlaabt, an de Projet seet, datt hie sech op dës Werkzäicher zouentwéckelt. En Assistent erlaabt et, vu Ghost-CLI op Docker Compose z’wiesselen.
An der Produktioun ass MySQL 8 déi eenzeg ënnerstëtzten Datebank. De Projet recommandéiert eng Neiinstallatioun op MySQL 8 vun SQLite aus, an eng Migratioun op MySQL 8 vu MariaDB aus. Seng Dokumentatioun gesäit PostgreSQL net vir.
Neen. SMTP déngt de Transaktiouns-E-Mailen: Invitatiounen, Passwierder, Verbindungslinke vun de Memberen. D’Newsletteren verlaangen d’API vu Mailgun, deen eenzege Service fir de Massenversand, deen ënnerstëtzt gëtt. Wann Dir keng Artikelen per E-Mail schéckt, ass kee Mailgun-Kont néideg.
Fir eng komplett Erhuelung séchert d’MySQL-Datebank mat mysqldump an den Dossier content mat tar. De Befehl ghost backup produzéiert virun enger Aktualiséierung een Zip. Den Export aus der Administratioun léisst d’Kommentarer, den Aktivitéitsverlaf vun de Memberen an d’Medien eraus.
Mat Ghost-CLI lancéiert ghost backup an dann ghost update am Dossier vum Site, an ghost update --rollback bei engem Problem. Mat Docker Compose lancéiert git pull, docker compose pull an docker compose up -d an /opt/ghost.
E Managed VPS deckt de Server of: System, Sécherheet, Iwwerwaachung a Backups. Eis Equippen verfollegen och Är Instanz proaktiv a recommandéieren Iech déi nëtzlech Korrekturen, déi Dir ëmsetzt. Eng Interventioun an der Applikatioun gëtt op Stonnebasis oder pauschal verrechent.
Simafri
Loosst eis iwwer Är Websäit schwätzen
Erzielt eis vun Ärem Projet a wéinege Wierder: mir mellen eis séier bei Iech.
Merci! Är Ufro gouf geschéckt. Mir mellen eis séier bei Iech.
Léiwer per E-Mail? Schreift eis op support@simafri.com.