Att hosta Ghost på en Managed VPS innebär att du publicerar dina artiklar, samlar dina medlemmar och skickar dina nyhetsbrev från en egen maskin, som våra team håller uppdaterad och bevakar dag och natt. Ghost är fri programvara under MIT-licensen. Den här guiden följer den officiella dokumentationen: Ghost-CLI eller Docker Compose, MySQL, HTTPS, e-post, säkerhetskopior och uppdateringar.
Av Simon Vasconcelos Lee
Publicerad den 9 november 2026Lästid: 13 minuter
content och uppdatera sedan med ghost update eller docker compose pull: projektet publicerar uppdateringar varje vecka.Ghost är en professionell och fri publiceringsplattform, skriven för Node.js. Den samlar på ett ställe det som en oberoende publikation ofta får ihop av flera olika verktyg.
Enligt dokumentationen har produkten samma funktioner vid självhosting. Det som omger den får du ordna själv: utskicket av nyhetsbreven, webbanalysen, ett CDN och de fullständiga säkerhetskopiorna av webbplatsen.
Ghost publiceras under MIT-licensen. Den tillåter att använda, kopiera, ändra, sammanfoga, publicera, distribuera, vidarelicensiera och sälja programvaran, på ett villkor: upphovsrättsmeddelandet och licenstexten ska finnas kvar i varje kopia. Du kan alltså köra Ghost i ditt företag, anpassa det och publicera åt dina kunder, utan att köpa någon licens.
Licensen täcker koden. Namnet och logotypen tillhör Ghost Foundation och omfattas av dess varumärkespolicy: läs den om du bygger ett erbjudande kring programvaran. Ghost är ett registrerat varumärke som tillhör Ghost Foundation.
This publication is independent of and not affiliated with, authorized, sponsored, or approved by Ghost Foundation. På svenska: den här publikationen är oberoende av Ghost Foundation och är varken knuten till, auktoriserad av, sponsrad av eller godkänd av dem.
Projektet dokumenterar två vägar för produktion. Ghost-CLI är den installation som det officiellt rekommenderar, och Docker Compose är en ”preview”, som det själv kallar helt ny. Det anger också att det rör sig mot den Docker-baserade verktygsuppsättningen snarare än att vidareutveckla Ghost-CLI, och det tillhandahåller en guide för att byta från det ena till det andra.
| Punkt | Ghost-CLI | Docker Compose (preview) |
|---|---|---|
| System | Ubuntu 22.04, 24.04 eller 26.04 | En Linux-server med Docker 20.10.13 eller senare |
| Minne | Minst 1 GB | Projektet nämner som exempel en server med 2 GB och 1 processor |
| Webbserver och HTTPS | Nginx och ett certifikat från Let’s Encrypt, installerade av Ghost-CLI | Caddy, i en container, som hanterar TLS |
| Databas | MySQL 8.0 eller 8.4 installerad på servern | MySQL i en container |
| Webbanalys | Inte kompatibel | Tillgänglig, med ett Tinybird-konto |
| Socialt nätverk (ActivityPub) | Tjänsten som projektet själv hostar, kostnadsfri inom sina användningsgränser | Samma tjänst som standard, eller din egen, självhostad |
Peka domänen mot servern före installationen: certifikatet installeras under uppsättningen. På en VPS från Simafri kommer besökarna in på port 80 och 443, under serverns domännamn, med A- och AAAA-poster. Webbplatsens adress skrivs fullständigt, med sitt protokoll, som https://example.com: en IP-adress ger fel.
Utöver minnet som anges ovan anger projektet varken disk eller belastning: storleken beror på din trafik, dina bilder och din media. På en Managed VPS beskriver du din publikation, så rekommenderar vi lämplig storlek.
Ghost-CLI används med en användare som inte är root, och vars namn inte är ghost, eftersom det namnet krockar med verktyget. Skapa den från root-kontot och ersätt user med det valda namnet:
adduser <user>
usermod -aG sudo <user>
su - <user>
Uppdatera systemet, installera Nginx (minst 1.9.5 för SSL) och MySQL. Raden ufw öppnar HTTP och HTTPS om den brandväggen är aktiv:
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å nyare versioner av Ubuntu autentiseras MySQL:s root-konto via socket, vilket Ghost inte stöder. Ge det ett lösenord:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '<your-new-root-password>';
FLUSH PRIVILEGES;
exit
Ghost kräver Node.js 22: versionerna 20, 21, 23 och senare stöds inte. Projektet ber dig installera det för hela systemet, på det här sättet:
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 installeras i en egen mapp, med en bestämd ägare och bestämda rättigheter. Ersätt sitename med det namn du vill ha:
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
Kommandot ställer sedan sina frågor, och projektet rekommenderar att svara ja på varje föreslaget steg:
https://.localhost som värd, root och lösenordet som angavs ovan, sedan databasens namn, som Ghost-CLI skapar.Webbplatsen svarar då, och https://example.com/ghost ber dig skapa ägarens konto. Om installationen avbryts återupptar ghost setup konfigurationen; om den misslyckas städar ghost uninstall bättre än att ta bort mappen. ghost doctor kontrollerar systemet när som helst.
Projektet presenterar den här metoden som en ”preview”: den är helt ny i dess ögon. Det är den som gör det möjligt att självhosta webbanalys och ActivityPub.
På en server där Docker är installerat hämtar du den officiella verktygsuppsättningen i /opt/ghost och kopierar dess två exempelfiler:
git clone https://github.com/TryGhost/ghost-docker.git /opt/ghost && cd /opt/ghost
cp .env.example .env
cp caddy/Caddyfile.example caddy/Caddyfile
Fyll i de här värdena i filen .env:
DOMAIN: webbplatsens domän, till exempel example.com.ADMIN_DOMAIN: en separat domän för administrationen, om du vill.DATABASE_ROOT_PASSWORD och DATABASE_PASSWORD: två lösenord framtagna med openssl rand -hex 32. De bestäms en gång för alla: när databasen är initierad bryter en ändring anslutningen.I caddy/Caddyfile avkommenterar du blocket som motsvarar ditt fall: omdirigering från www till den nakna domänen, eller tvärtom, eller en separat administrationsdomän. Starta sedan Ghost och slutför uppsättningen på /ghost:
docker compose pull
docker compose up -d
HTTP_PORT och HTTPS_PORT om Ghost hamnar bakom en annan omvänd proxy. MySQL stannar på containrarnas interna nätverk.data/ghost och databasen i data/mysql, två platser som kan ändras i .env.-f compose.yml -f compose.ipv6.yml i dina kommandon docker compose up.Webbanalysen kräver ett Tinybird-konto, en extern tjänst. Från /opt/ghost loggar du in, distribuerar dess konfiguration och hämtar de tokens som ska klistras in i .env, avsnittet ”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 fungerar direkt med tjänsten som projektet själv hostar, kostnadsfri inom de användningsgränser som dess dokumentation publicerar. För att självhosta din egen avkommenterar du ACTIVITYPUB_TARGET=activitypub:8080. Aktivera sedan önskad profil eller önskade profiler i .env och starta om containrarna:
COMPOSE_PROFILES=analytics,activitypub
docker compose pull
docker compose up -d
För ActivityPub ber projektet dig skapa om även Ghost och Caddy, med docker compose up -d --force-recreate ghost caddy.
Efter kloningen och konfigurationen kopierar bash scripts/migrate.sh mappen content, importerar databasen i MySQL-containern och startar Caddy i stället för Nginx. Det erbjuder sig att stoppa Nginx, vilket tar webbplatsen offline: svara nej om andra webbplatser körs på servern. Det tar inte bort några data. bash recovery_instructions.sh återställer den ursprungliga webbplatsen om du avbryter migreringen.
Ghosts administration måste gå över HTTPS, och projektet rekommenderar HTTPS för hela webbplatsen: utan det går användarnamn och lösenord i klartext. Med Docker Compose sköter Caddy det. Med Ghost-CLI installerar installationen certifikatet, och ett kommando gör det i efterhand:
ghost setup ssl
För att ändra adressen på en webbplats som installerats med Ghost-CLI uppdaterar ghost config url https://example.com konfigurationen, och ghost restart tillämpar den.
Projektet råder också till en separat administrationsdomän, som minskar angreppsytan. Sökvägen förblir /ghost/. Med Ghost-CLI anges den i config.production.json:
"admin": {
"url": "https://admin.example.com"
}
Med Docker Compose fyller du i ADMIN_DOMAIN, avkommenterar dess block i Caddyfile och kör docker compose up -d --force-recreate ghost caddy. Den domänen behöver också sina A- och AAAA-poster.
MySQL 8 är den enda databas som projektet stöder i produktion. Ghost-CLI installeras med MySQL 8.0 eller 8.4, och Compose-filen tillhandahåller en MySQL 8.0-avbild.
ghost config database.client, i webbplatsens mapp, visar vilken databas som används.Ghost skiljer på två utskick, som inte går samma väg. Det är den viktigaste inställningen att göra efter installationen.
| Utskick | Exempel | Det som bär det |
|---|---|---|
| Transaktionellt | Inbjudningar till teamet, bortglömda lösenord, medlemmarnas registreringar och inloggningslänkar, inloggningskod från en ny enhet | Ghosts konfiguration mail, via SMTP |
| Nyhetsbrev | Artiklarna som skickas till dina medlemmar | Mailguns API, vars nycklar anges i inställningarna ”Email newsletter” |
Dokumentationen klassar den här konfigurationen som obligatorisk i produktion. Ghost skickar också en kod med e-post när det upptäcker en inloggning från en ny enhet: ställ in reläet innan du bjuder in ditt team.
På en VPS från Simafri går utskicken via ett autentiserat SMTP-relä, på port 587: adressen till ett e-postkonto som du redan har, eller 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 och requireTLS: Ghost skickar via Nodemailer, vars dokumentation kräver secure satt till false på port 587, där anslutningen sedan övergår till STARTTLS. requireTLS vägrar utskicket om den övergången misslyckas. Arkivets exempelfil anger port 465 och secure=true: ersätt de två raderna.from innehåller en riktig adress som läses, vilket enligt projektet förbättrar leveransen, och SPF-, DKIM- och DMARC-posterna för avsändardomänen kompletterar inställningen.SMTP-reläet täcker inte nyhetsbreven. Enligt dokumentationen sker massutskick inte via SMTP, och Mailgun är för närvarande den enda tjänst för massutskick som Ghost stöder. Du skapar ditt Mailgun-konto och anger dess API-nycklar i Ghosts inställningar.
Om du inte skickar dina artiklar med e-post behöver du inget Mailgun-konto: de inställningarna kan du bortse från. Föredrar du ett annat verktyg för nyhetsbrev föreslår projektet att synkronisera dina medlemmar till det, till exempel med Zapier eller dess integrationsguider.
Ghost erbjuder tre nivåer av kopior, och de innehåller inte samma sak. För att återskapa en webbplats identiskt ber projektet dig säkerhetskopiera databasen och mappen content direkt.
| Metod | Vad den innehåller | För vilket ändamål |
|---|---|---|
ghost backup (Ghost-CLI) | En zip: innehåll i JSON, medlemmar i CSV, teman, bilder, filer och media, rutter och omdirigeringar | Försiktighetsåtgärden före en uppdatering |
| Export från administrationen | En zip: innehåll och inställningar, medlemmar, statistik över artiklarna, teman, rutter och omdirigeringar, efter val. Varken kommentarer, medlemmarnas aktivitetshistorik eller media | Flytt av innehållet till en annan webbplats |
Databas och mappen content | Samtliga data | Återställning efter haveri, eller en exakt kopia |
Exporten finns under ”Settings”, ”Advanced”, ”Import/Export”, fliken ”Export”, knappen ”All data”. För den fullständiga kopian, med Ghost-CLI, står MySQL-kontot och databasens namn att föra över i 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/
Med Docker Compose lagrar den officiella verktygsuppsättningen innehållet i data/ghost. Dumpen följer den form som MySQL-avbilden anger, och root-lösenordet finns redan i containern. Spara också en kopia av .env och av 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
Kopiera de här filerna utanför servern, med rsync eller scp, och gör ett återställningstest på en testmaskin. Om du utgår från en export med betalande medlemmar kopplar du samma Stripe-konto innan du importerar dina medlemmar.
Projektet publicerar uppdateringar varje vecka och påminner om att en publik webbserver måste hållas uppdaterad. Läs versionsanteckningarna och kör sedan kommandot för din metod.
ghost check-update
ghost backup
ghost update
ghost update --rollback går tillbaka till föregående version om en uppdatering går fel.content ligger kvar under uppdateringarna.ghost update [version] --force med din nuvarande version, eftersom dess binära beroenden kompileras för en bestämd version av Node.js.cd /opt/ghost
git pull
docker compose pull
docker compose up -d
docker image prune
Den sista raden, valfri, tar bort de gamla avbilderna. Låt GHOST_VERSION vara utkommenterad i .env: en fast version blockerar de här uppdateringskommandona.
Dokumentationen ger flera inställningar för en server i produktion:
mysql_secure_installation efter en lyckad installation med Ghost-CLI.För belastningen placerar projektet ett CDN och ett cachelager framför Ghost. Det anger att klustring och sharding inte stöds: en enda instans serverar webbplatsen, och cachen tar upp trafiken.
Att självhosta innebär att sköta servern utöver applikationen. På en Managed VPS tar våra team hand om servern och följer din instans proaktivt; Ghost förblir din programvara, med sina inställningar och sina data.
| Område | Våra team | Du |
|---|---|---|
| Servern | Uppdateringar av system och säkerhet, ingrepp på servern inräknade | Tidpunkten som passar din verksamhet |
| Övervakningen | Servern följs dygnet runt, alla dagar, med ingrepp utan att vänta på ditt samtal | Ditt innehåll, dina medlemmar och dina prenumerationer |
| Ghost | Proaktiv uppföljning: fel, långsamma svarstider och diskutrymme upptäcks, med rekommenderad rättelse | Installationen, uppdateringarna, inställningarna, SMTP-reläet och Mailgun-kontot, som du genomför själv eller med din AI-assistent |
| Säkerhetskopiorna | Varje natt, krypterade och förvarade utanför maskinen; återställning ingår | Begäran om återställning, när du behöver den |
| Migreringen | Din nuvarande server migreras kostnadsfritt | Tidpunkten för bytet |
Om du föredrar att våra team ingriper i själva applikationen faktureras den tjänsten per timme eller som fast pris, med en offert som lämnas före ingreppet.
Med en Managed VPS från Simafri håller våra team servern för din Ghost-instans uppdaterad, övervakar den dag och natt och griper in utan att vänta på ditt samtal; de följer också din instans proaktivt och rekommenderar de rättelser som är till nytta, som du genomför själv eller med din AI-assistent. Säkerhetskopiorna krypteras varje natt och förvaras utanför maskinen, återställningen ingår, och migreringen av din nuvarande server är kostnadsfri.
Ja. Ghost är licensierat under MIT: du kan använda det i ditt företag och anpassa det, så länge licensmeddelandet bevaras. Kvar blir tjänsterna runt omkring: servern, e-postreläet, Mailgun om du skickar nyhetsbrev, Tinybird om du vill ha dess webbanalys.
Projektet rekommenderar Ubuntu 22.04, 24.04 eller 26.04, Nginx, Node.js 22, MySQL 8.0 eller 8.4, systemd, minst 1 GB minne, en domän och en användare som inte är root. För Docker Compose nämner det som exempel en server med 2 GB och 1 processor.
Ghost-CLI är den installation som projektet rekommenderar för produktion. Docker Compose är en preview, den enda som ger självhostad webbanalys och ActivityPub, och projektet säger att det rör sig mot den verktygsuppsättningen. En guide gör det möjligt att byta från Ghost-CLI till Docker Compose.
I produktion är MySQL 8 den enda databasen som stöds. Projektet rekommenderar en nyinstallation på MySQL 8 från SQLite, och en migrering till MySQL 8 från MariaDB. Dess dokumentation omfattar inte PostgreSQL.
Nej. SMTP används för transaktionella meddelanden: inbjudningar, lösenord, medlemmarnas inloggningslänkar. Nyhetsbreven kräver Mailguns API, den enda tjänst för massutskick som stöds. Skickar du inga artiklar med e-post behövs inget Mailgun-konto.
För en fullständig återställning säkerhetskopierar du MySQL-databasen med mysqldump och mappen content med tar. Kommandot ghost backup ger en zip före en uppdatering. Exporten från administrationen utelämnar kommentarerna, medlemmarnas aktivitetshistorik och media.
Med Ghost-CLI kör du ghost backup och sedan ghost update i webbplatsens mapp, och ghost update --rollback om något går fel. Med Docker Compose kör du git pull, docker compose pull och docker compose up -d i /opt/ghost.
En Managed VPS täcker servern: system, säkerhet, övervakning och säkerhetskopior. Våra team följer också din instans proaktivt och rekommenderar de rättelser som är till nytta, som du genomför själv. Ett ingrepp i själva applikationen faktureras per timme eller som fast pris.
Simafri
Låt oss prata om din webbplats
Berätta om ditt projekt med några ord: vi återkommer snabbt.
Tack! Din förfrågan har skickats. Vi återkommer till dig inom kort.
Föredrar du e-post? Skriv till oss på support@simafri.com.