Hoste Ghost® på en Managed VPS: din publikation, på din egen server

At hoste Ghost på en Managed VPS betyder at udgive dine artikler, samle dine medlemmer og sende dine nyhedsbreve fra en maskine, der er din egen, og som vores teams holder opdateret og overvåger dag og nat. Ghost er fri software under MIT-licensen. Denne guide følger den officielle dokumentation: Ghost-CLI eller Docker Compose, MySQL, HTTPS, e-mails, backup og opdateringer.

Simon Vasconcelos Lee Af Udgivet den 9. november 2026Læsetid: 13 minutter

Alle guider

Det vigtigste

  1. MIT-licensen til Ghost tillader fri brug i virksomheder, så længe licensmeddelelsen bevares. Navnet og logoet hører separat under Ghost Foundations varemærkepolitik.
  2. Projektet anbefaler Ghost-CLI på Ubuntu, med Nginx, Node.js 22, MySQL 8 og mindst 1 GB hukommelse. Dets Docker Compose-metode, i «preview», tilføjer webanalyse og selvhostet ActivityPub.
  3. MySQL 8 er den eneste database, der understøttes i produktion.
  4. Regn med to e-mailkredsløb: et SMTP-relay til transaktionelle e-mails, som er uundværligt, og Mailgun til nyhedsbreve, den eneste tjeneste til masseudsendelse, der understøttes.
  5. Tag backup af databasen og mappen content, og opdatér derefter med ghost update eller docker compose pull: projektet udgiver opdateringer hver uge.

Hvad Ghost gør

Ghost er en professionel og fri publiceringsplatform, skrevet til Node.js. Den samler på ét sted, hvad en uafhængig publikation ofte sætter sammen af flere værktøjer.

Ifølge dokumentationen har produktet de samme funktioner i selvhosting. Det, der omgiver det, er dit eget ansvar: afsendelse af nyhedsbreve, webanalyse, et CDN og komplette backup af websitet.

MIT-licensen og varemærket

Ghost udgives under MIT-licensen. Den tillader at bruge, kopiere, ændre, sammenflette, udgive, distribuere, underlicensiere og sælge softwaren på én betingelse: at bevare copyright-meddelelsen og licensteksten i enhver kopi. Du kan altså køre Ghost i din virksomhed, tilpasse den og udgive for dine kunder med den uden at skulle købe en licens.

Licensen dækker koden. Navnet og logoet tilhører Ghost Foundation og hører under dets varemærkepolitik: læs den, hvis du bygger et tilbud op omkring softwaren. Ghost er et registreret varemærke tilhørende Ghost Foundation.

This publication is independent of and not affiliated with, authorized, sponsored, or approved by Ghost Foundation. På dansk: denne publikation er uafhængig af Ghost Foundation og er hverken tilknyttet, godkendt, sponsoreret eller bekræftet af den.

Ghost-CLI eller Docker Compose: to officielle metoder

Projektet dokumenterer to veje til produktion. Ghost-CLI er den installation, det officielt anbefaler, og Docker Compose er en «preview», som det selv kalder helt ny. Det oplyser også, at det bevæger sig mod dette Docker-værktøj frem for at videreudvikle Ghost-CLI, og det leverer en guide til at gå fra den ene til den anden.

PunktGhost-CLIDocker Compose (preview)
SystemUbuntu 22.04, 24.04 eller 26.04En Linux-server med Docker 20.10.13 eller nyere
HukommelseMindst 1 GBProjektet nævner som eksempel en server med 2 GB og 1 processor
Webserver og HTTPSNginx og et certifikat fra Let's Encrypt, installeret af Ghost-CLICaddy, i en container, som håndterer TLS
DatabaseMySQL 8.0 eller 8.4 installeret på serverenMySQL i en container
WebanalyseIkke kompatibelTilgængelig, med en Tinybird-konto
Socialt netværk (ActivityPub)Den tjeneste, projektet selv hoster, gratis inden for sine brugsgrænserDen samme tjeneste som standard, eller din egen, selvhostet

Før du begynder: domænet og serveren

Lad domænet pege på serveren før installationen: certifikatet installeres under opsætningen. På en Simafri VPS kommer de besøgende ind på port 80 og 443, under serverens domænenavn, med A- og AAAA-records. Websitets adresse skrives fuldt ud, med sin protokol, som https://example.com: en IP-adresse giver fejl.

Ud over den hukommelse, der er angivet ovenfor, opgiver projektet hverken disk eller belastning: størrelsen afhænger af din trafik, dine billeder og dine medier. På en Managed VPS beskriver du blot din publikation for os, og vi anbefaler den størrelse, der passer.

Installér Ghost med Ghost-CLI på Ubuntu

Ghost-CLI bruges med en bruger, der ikke er root, og hvis navn ikke er ghost, fordi dette navn er i konflikt med værktøjet. Opret den fra root-kontoen, og erstat user med det valgte navn:

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

Nginx og MySQL

Opdatér systemet, og installér Nginx (mindst 1.9.5 til SSL) og MySQL. Linjen med ufw åbner HTTP og HTTPS, hvis denne firewall er aktiv:

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

På nyere versioner af Ubuntu godkendes MySQL's root-konto via socket, hvilket Ghost ikke understøtter. Giv den en adgangskode:

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

Node.js og Ghost-CLI

Ghost kræver Node.js 22: versionerne 20, 21, 23 og senere understøttes ikke. Projektet beder om at installere den for hele systemet på denne måde:

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

Start installationen

Ghost installeres i sin egen mappe, med en bestemt ejer og bestemte rettigheder. Erstat sitename med det navn, du vælger:

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

Kommandoen stiller derefter sine spørgsmål, og projektet anbefaler at svare ja til hvert foreslået trin:

Websitet svarer nu, og https://example.com/ghost inviterer dig til at oprette ejerens konto. Hvis installationen afbrydes, genoptager ghost setup konfigurationen; hvis den fejler, rydder ghost uninstall bedre op end at slette mappen. ghost doctor kontrollerer systemet når som helst.

Installér Ghost med Docker Compose (preview)

Projektet præsenterer denne metode som en «preview»: den er helt ny i dets øjne. Det er den, der gør det muligt selv at hoste webanalyse og ActivityPub.

På en server, hvor Docker er installeret, henter du det officielle værktøj i /opt/ghost og kopierer dets to eksempelfiler:

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

I filen .env angiver du disse værdier:

I caddy/Caddyfile fjerner du kommentarmarkeringen fra den blok, der svarer til dit tilfælde: omdirigering fra www til det nøgne domæne eller omvendt, eller separat administrationsdomæne. Start derefter Ghost, og afslut opsætningen på /ghost:

Terminal
docker compose pull
docker compose up -d

Webanalyse og ActivityPub

Analysen kræver en Tinybird-konto, en ekstern tjeneste. Fra /opt/ghost logger du ind, udruller dens konfiguration og henter de tokens, der skal indsættes i .env, afsnittet «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 fungerer straks med den tjeneste, projektet selv hoster, gratis inden for brugsgrænser, som dens dokumentation offentliggør. For selv at hoste din egen fjerner du kommentarmarkeringen fra ACTIVITYPUB_TARGET=activitypub:8080. Slå derefter den eller de ønskede profiler til i .env, og start containerne igen:

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

Til ActivityPub beder projektet om også at genskabe Ghost og Caddy, med docker compose up -d --force-recreate ghost caddy.

Fra Ghost-CLI til Docker Compose

Efter kloningen og konfigurationen kopierer bash scripts/migrate.sh mappen content, importerer databasen i MySQL-containeren og starter Caddy i stedet for Nginx. Det foreslår at stoppe Nginx, hvilket tager websitet offline: svar nej, hvis andre websites kører på serveren. Det sletter ingen data. bash recovery_instructions.sh genopretter det oprindelige website, hvis du afbryder migreringen.

HTTPS og administrationsdomæne

Ghosts administration skal gå via HTTPS, og projektet anbefaler HTTPS for hele websitet: uden det sendes loginoplysninger og adgangskoder i klartekst. Med Docker Compose klarer Caddy det. Med Ghost-CLI installerer installationen certifikatet, og en kommando gør det bagefter:

Terminal, i websitets mappe
ghost setup ssl

For at ændre adressen på et website installeret med Ghost-CLI opdaterer ghost config url https://example.com konfigurationen, og ghost restart anvender den.

Projektet anbefaler også et separat administrationsdomæne, som mindsker angrebsfladen. Stien forbliver /ghost/. Med Ghost-CLI angives det i config.production.json:

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

Med Docker Compose angiver du ADMIN_DOMAIN, fjerner kommentarmarkeringen fra dens blok i Caddyfile og kører docker compose up -d --force-recreate ghost caddy. Dette domæne har også brug for sine A- og AAAA-records.

MySQL 8, produktionsdatabasen

MySQL 8 er den eneste database, som projektet understøtter i produktion. Ghost-CLI installeres med MySQL 8.0 eller 8.4, og Compose-filen leverer et MySQL 8.0-image.

E-mails og nyhedsbreve

Ghost skelner mellem to former for afsendelse, som ikke går samme vej. Det er det vigtigste punkt at få sat op efter installationen.

AfsendelseEksemplerHvad der bærer den
TransaktionelInvitationer til teamet, glemte adgangskoder, medlemmernes tilmeldinger og loginlinks, loginkode fra en ny enhedGhosts konfiguration mail, via SMTP
NyhedsbreveDe artikler, der sendes til dine medlemmerMailguns API, hvis nøgler indtastes under indstillingerne «Email newsletter»

SMTP-relayet, til transaktionelle e-mails

Dokumentationen klassificerer denne konfiguration som påkrævet i produktion. Ghost sender også en kode pr. e-mail, når det registrerer et login fra en ny enhed: indstil dette relay, før du inviterer dit team.

På en Simafri VPS går afsendelsen gennem et autentificeret SMTP-relay på port 587: adressen på en mailkonto, du allerede har, eller Simafri Suite.

config.production.json (Ghost-CLI), derefter 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), afsnittet 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, efter en ændring af filen .env
docker compose up -d --force-recreate ghost

Mailgun, til nyhedsbreve

SMTP-relayet dækker ikke nyhedsbreve. Ifølge dokumentationen sker masseudsendelse ikke via SMTP, og Mailgun er i dag den eneste tjeneste til masseudsendelse, som Ghost understøtter. Du opretter din Mailgun-konto og indtaster dens API-nøgler i Ghosts indstillinger.

Hvis du ikke sender dine artikler pr. e-mail, har du ikke brug for nogen Mailgun-konto: disse indstillinger kan ignoreres. Hvis du foretrækker et andet nyhedsbrevsværktøj, foreslår projektet at synkronisere dine medlemmer til det, for eksempel med Zapier eller dets integrationsguider.

Backup og gendannelse af Ghost

Ghost tilbyder tre niveauer af kopi, og de indeholder ikke det samme. For at genopbygge et website identisk beder projektet om at tage backup direkte af databasen og mappen content.

MetodeHvad den indeholderTil hvilken brug
ghost backup (Ghost-CLI)En zip: indhold i JSON, medlemmer i CSV, temaer, billeder, filer og medier, ruter og omdirigeringerForholdsreglen før en opdatering
Eksport fra administrationenEn zip: indhold og indstillinger, medlemmer, artiklernes statistik, temaer, ruter og omdirigeringer, efter valg. Hverken kommentarer, medlemmernes aktivitetshistorik eller medierFlytning af indholdet til et andet website
Database og mappen contentSamtlige dataGenopretning efter en katastrofe eller en nøjagtig kopi

Eksporten findes under «Settings», «Advanced», «Import/Export», fanen «Export», knappen «All data». Til den komplette kopi, med Ghost-CLI, står MySQL-kontoen og databasens navn, som skal overføres, i 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/

Med Docker Compose opbevarer det officielle værktøj indholdet i data/ghost. Dumpet følger den form, MySQL-imaget giver, og root-adgangskoden findes allerede i containeren. Behold også en kopi af .env og 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

Gendan

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

Kopiér disse filer væk fra serveren med rsync eller scp, og lav en prøvegendannelse på en testmaskine. Hvis du starter forfra fra en eksport med betalende medlemmer, skal du tilslutte den samme Stripe-konto, før du importerer dine medlemmer.

Opdatér Ghost

Projektet udgiver opdateringer hver uge og minder om, at en offentlig webserver skal holdes opdateret. Læs versionsnoterne, og kør derefter kommandoen for din metode.

Med Ghost-CLI

Terminal, i websitets mappe
ghost check-update
ghost backup
ghost update

Med Docker Compose

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

Den sidste linje, som er valgfri, fjerner de gamle images. Lad GHOST_VERSION stå som kommentar i .env: at fastlåse en version blokerer disse opdateringskommandoer.

Styrk din instans og lad den vokse

Dokumentationen giver flere indstillinger til en server i produktion:

Til belastningen placerer projektet et CDN og et cachelag foran Ghost. Det præciserer, at clustering og sharding ikke understøttes: én enkelt instans betjener websitet, og cachen tager trafikken.

Hvem gør hvad på en Managed VPS

Selvhosting kræver, at du holder serveren ud over selve applikationen. På en Managed VPS tager vores teams sig af serveren og følger din instans proaktivt; Ghost forbliver din software, med dens indstillinger og data.

EmneVores teamsDig
ServerenOpdateringer af system og sikkerhed, indgreb på serveren inkluderetDet tidspunkt, der passer til din drift
OvervågningenServeren følges døgnet rundt, alle ugens dage, med indgreb uden at vente på dit opkaldDit indhold, dine medlemmer og dine abonnementer
GhostProaktiv opfølgning: fejl, langsomme svartider og diskplads opdages, og en rettelse anbefalesInstallation, opdateringer, indstillinger, SMTP-relay og Mailgun-konto, som du gennemfører, selv eller med din AI-assistent
BackupHver nat, krypteret og opbevaret uden for maskinen; gendannelse inkluderetAnmodningen om gendannelse, når du får brug for den
MigreringenDin nuværende server flyttes, uden beregningTidspunktet for omlægningen

Hvis du foretrækker, at vores teams griber ind i selve applikationen, faktureres den ydelse pr. time eller som fast pris, med et overslag oplyst før indgrebet.

En server, der passes for dit Ghost-website

Med en Managed VPS fra Simafri holder vores teams serveren bag din Ghost-instans opdateret, overvåger den dag og nat og griber ind uden at vente på dit opkald; de følger også din instans proaktivt og anbefaler dig de nyttige rettelser, som du gennemfører, selv eller med din AI-assistent. Backup krypteres hver nat og opbevares uden for maskinen, gendannelsen er inkluderet, og migreringen af din nuværende server sker uden beregning.

Opdag Managed VPS

Ofte stillede spørgsmål

Er Ghost gratis at selvhoste?

Ja. Ghost er under MIT-licensen: du kan bruge den i din virksomhed og tilpasse den, så længe licensmeddelelsen bevares. Tilbage er tjenesterne omkring den: serveren, e-mailrelayet, Mailgun, hvis du sender nyhedsbreve, og Tinybird, hvis du vil have dens analyse.

Hvilken konfiguration skal der til for at hoste Ghost?

Projektet anbefaler Ubuntu 22.04, 24.04 eller 26.04, Nginx, Node.js 22, MySQL 8.0 eller 8.4, systemd, mindst 1 GB hukommelse, et domæne og en bruger, der ikke er root. Til Docker Compose nævner det som eksempel en server med 2 GB og 1 processor.

Skal man installere Ghost med Ghost-CLI eller med Docker?

Ghost-CLI er den installation, projektet anbefaler til produktion. Docker Compose er en preview, den eneste der giver mulighed for selvhostet webanalyse og ActivityPub, og projektet siger, at det bevæger sig mod dette værktøj. En guide gør det muligt at gå fra Ghost-CLI til Docker Compose.

Virker Ghost med SQLite, MariaDB eller PostgreSQL?

I produktion er MySQL 8 den eneste understøttede database. Projektet anbefaler en nyinstallation på MySQL 8 fra SQLite og en migrering til MySQL 8 fra MariaDB. Dets dokumentation indeholder ikke PostgreSQL.

Kan man sende Ghosts nyhedsbreve via SMTP?

Nej. SMTP bruges til transaktionelle e-mails: invitationer, adgangskoder og medlemmernes loginlinks. Nyhedsbreve kræver Mailguns API, den eneste understøttede tjeneste til masseudsendelse. Sender du ikke artikler pr. e-mail, er der ikke brug for nogen Mailgun-konto.

Hvordan tager man backup af et selvhostet Ghost-website?

Til en komplet genopretning tager du backup af MySQL-databasen med mysqldump og af mappen content med tar. Kommandoen ghost backup producerer en zip før en opdatering. Eksporten fra administrationen udelader kommentarer, medlemmernes aktivitetshistorik og medier.

Hvordan opdaterer man Ghost?

Med Ghost-CLI kører du ghost backup og derefter ghost update i websitets mappe og ghost update --rollback, hvis der opstår et problem. Med Docker Compose kører du git pull, docker compose pull og docker compose up -d i /opt/ghost.

Dækker en Managed VPS Ghost?

En Managed VPS dækker serveren: system, sikkerhed, overvågning og backup. Vores teams følger også din instans proaktivt og anbefaler dig de nyttige rettelser, som du gennemfører. Et indgreb i selve applikationen faktureres pr. time eller som fast pris.

Kontakt os