Hostati Ghost® na Managed VPS-u: vaša publikacija na vašem poslužitelju

Hostati Ghost na Managed VPS-u znači objavljivati svoje članke, okupljati svoje članove i slati svoje newslettere sa stroja koji je vaš, a koji naši timovi održavaju ažurnim i nadziru danju i noću. Ghost je slobodan softver pod licencom MIT. Ovaj vodič prati njegovu službenu dokumentaciju: Ghost-CLI ili Docker Compose, MySQL, HTTPS, e-poštu, sigurnosne kopije i ažuriranja.

Simon Vasconcelos Lee Autor: Objavljeno 9. studenoga 2026.Vrijeme čitanja: 13 minuta

Svi vodiči

Najvažnije

  1. Licenca MIT omogućuje slobodnu upotrebu Ghosta u tvrtki, uz zadržavanje napomene o licenci. Naziv i logotip zasebno podliježu politici žigova zaklade Ghost Foundation.
  2. Projekt preporučuje Ghost-CLI na Ubuntuu, s Nginxom, Node.js-om 22, MySQL-om 8 i najmanje 1 GB memorije. Njegova metoda Docker Compose, u „previewu”, dodaje web-analitiku i ActivityPub na vlastitom poslužitelju.
  3. MySQL 8 jedina je baza podržana u produkciji.
  4. Predvidite dva puta za e-poštu: SMTP relej za transakcijske poruke, neophodan, i Mailgun za newslettere, jedinu podržanu uslugu masovnog slanja.
  5. Sigurnosno kopirajte bazu i mapu content, a ažurirajte s ghost update ili docker compose pull: projekt objavljuje ažuriranja svakog tjedna.

Što radi Ghost

Ghost je profesionalna i slobodna platforma za objavljivanje, napisana za Node.js. Na jednom mjestu okuplja ono što neovisna publikacija često sklapa iz više alata.

Prema dokumentaciji, proizvod ima iste funkcije i na vlastitom poslužitelju. Ono što ga okružuje ostaje na vama: slanje newslettera, web-analitika, CDN i potpune sigurnosne kopije web-mjesta.

Licenca MIT i žig

Ghost je objavljen pod licencom MIT. Ona dopušta upotrebu, kopiranje, izmjenu, spajanje, objavljivanje, distribuciju, podlicenciranje i prodaju softvera, uz jedan uvjet: napomena o autorskim pravima i tekst licence moraju ostati u svakoj kopiji. Ghost stoga možete pokretati u tvrtki, prilagođavati ga i u njemu objavljivati za svoje klijente, bez kupnje licence.

Licenca pokriva kod. Naziv i logotip pripadaju zakladi Ghost Foundation i podliježu njezinoj politici žigova: pročitajte je ako gradite ponudu oko softvera. Ghost je registrirani žig zaklade Ghost Foundation.

This publication is independent of and not affiliated with, authorized, sponsored, or approved by Ghost Foundation. Na hrvatskom: ova je publikacija neovisna o zakladi Ghost Foundation i nije povezana s njom, niti ju je ona odobrila, ovlastila ili sponzorirala.

Ghost-CLI ili Docker Compose: dvije službene metode

Projekt dokumentira dva puta za produkciju. Ghost-CLI je instalacija koju službeno preporučuje, a Docker Compose je „preview”, koji naziva sasvim novim. Navodi i da se kreće prema tom Docker alatu, a ne prema daljnjem razvoju Ghost-CLI-ja, te daje čarobnjak za prelazak s jednog na drugi.

TočkaGhost-CLIDocker Compose (preview)
SustavUbuntu 22.04, 24.04 ili 26.04Linux poslužitelj s Dockerom 20.10.13 ili novijim
MemorijaNajmanje 1 GBProjekt kao primjer navodi poslužitelj s 2 GB i 1 procesorom
Web-poslužitelj i HTTPSNginx i certifikat Let’s Encrypt, koje postavlja Ghost-CLICaddy, u kontejneru, koji preuzima TLS
Baza podatakaMySQL 8.0 ili 8.4 instaliran na poslužiteljuMySQL u kontejneru
Web-analitikaNije kompatibilnaDostupna, uz račun Tinybird
Društvena mreža (ActivityPub)Usluga koju hostira projekt, besplatna unutar ograničenja upotrebeIsta usluga prema zadanim postavkama ili vaša vlastita

Prije početka: domena i poslužitelj

Domenu usmjerite na poslužitelj prije instalacije: certifikat se postavlja tijekom podešavanja. Na Simafri VPS-u posjetitelji stižu na portove 80 i 443, pod nazivom domene poslužitelja, s A i AAAA zapisima. Adresa web-mjesta piše se u cijelosti, s protokolom, poput https://example.com: IP adresa uzrokuje pogreške.

Povrh gore navedene memorije, projekt ne navodi ni disk ni opterećenje: veličina ovisi o vašem prometu, slikama i medijima. Na Managed VPS-u opišite nam svoju publikaciju, a mi vam preporučujemo odgovarajuću veličinu.

Instalacija Ghosta s Ghost-CLI-jem na Ubuntuu

Ghost-CLI koristi se s korisnikom koji nije root i čije ime nije ghost, jer se to ime sukobljava s alatom. Izradite ga iz računa root, zamijenivši user odabranim imenom:

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

Nginx i MySQL

Ažurirajte sustav, instalirajte Nginx (najmanje 1.9.5 za SSL) i MySQL. Redak ufw otvara HTTP i HTTPS ako je taj vatrozid aktivan:

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

Na novijim inačicama Ubuntua račun root u MySQL-u autentificira se putem soketa, što Ghost ne podržava. Dodijelite mu lozinku:

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

Node.js i Ghost-CLI

Ghost traži Node.js 22: inačice 20, 21, 23 i novije nisu podržane. Projekt traži da ga instalirate za cijeli sustav, ovako:

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

Pokretanje instalacije

Ghost se instalira u vlastitu mapu, s točno određenim vlasnikom i pravima. Zamijenite sitename imenom po svom izboru:

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

Naredba tada postavlja pitanja, a projekt preporučuje da na svaki predloženi korak odgovorite potvrdno:

Web-mjesto tada odgovara, a https://example.com/ghost poziva vas da izradite račun vlasnika. Ako se instalacija prekine, ghost setup nastavlja konfiguraciju; ako ne uspije, ghost uninstall čisti bolje od brisanja mape. ghost doctor u svakom trenutku provjerava sustav.

Instalacija Ghosta s Docker Composeom (preview)

Projekt ovu metodu predstavlja kao „preview”: u njegovim je očima sasvim nova. Upravo ona omogućuje web-analitiku i ActivityPub na vlastitom poslužitelju.

Na poslužitelju s instaliranim Dockerom preuzmite službeni alat u /opt/ghost i kopirajte njegove dvije datoteke s primjerima:

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

U datoteci .env upišite ove vrijednosti:

U caddy/Caddyfile otkomentirajte blok koji odgovara vašem slučaju: preusmjeravanje s www na golu domenu ili obrnuto, ili zasebna administracijska domena. Zatim pokrenite Ghost i dovršite postavljanje na /ghost:

Terminal
docker compose pull
docker compose up -d

Web-analitika i ActivityPub

Analitika traži račun Tinybird, vanjsku uslugu. Iz /opt/ghost prijavite se, postavite njezinu konfiguraciju i preuzmite tokene koje treba zalijepiti u .env, odjeljak „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 odmah radi s uslugom koju hostira projekt, besplatnom unutar ograničenja upotrebe koja objavljuje njegova dokumentacija. Da biste hostali vlastiti, otkomentirajte ACTIVITYPUB_TARGET=activitypub:8080. Zatim u .env uključite željene profile i ponovno pokrenite kontejnere:

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

Za ActivityPub projekt traži da se ponovno izrade i Ghost i Caddy, s docker compose up -d --force-recreate ghost caddy.

Prelazak s Ghost-CLI-ja na Docker Compose

Nakon kloniranja i konfiguracije, bash scripts/migrate.sh kopira mapu content, uvozi bazu u MySQL kontejner i pokreće Caddy umjesto Nginxa. Predlaže zaustavljanje Nginxa, što web-mjesto stavlja izvan mreže: odgovorite ne ako na poslužitelju rade i druga web-mjesta. Ne briše nikakve podatke. bash recovery_instructions.sh vraća izvorno web-mjesto ako prekinete migraciju.

HTTPS i administracijska domena

Administracija Ghosta mora ići preko HTTPS-a, a projekt preporučuje HTTPS za cijelo web-mjesto: bez njega korisnička imena i lozinke putuju u čistom tekstu. S Docker Composeom Caddy se brine o tome. S Ghost-CLI-jem instalacija postavlja certifikat, a naknadno to radi jedna naredba:

Terminal, u mapi web-mjesta
ghost setup ssl

Za promjenu adrese web-mjesta instaliranog s Ghost-CLI-jem, ghost config url https://example.com ažurira konfiguraciju, a ghost restart je primjenjuje.

Projekt savjetuje i zasebnu administracijsku domenu, koja smanjuje površinu napada. Putanja ostaje /ghost/. Uz Ghost-CLI deklarira se u config.production.json:

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

Uz Docker Compose upišite ADMIN_DOMAIN, otkomentirajte njegov blok u Caddyfileu i pokrenite docker compose up -d --force-recreate ghost caddy. I ovoj su domeni potrebni A i AAAA zapisi.

MySQL 8, produkcijska baza

MySQL 8 jedina je baza koju projekt podržava u produkciji. Ghost-CLI instalira se s MySQL-om 8.0 ili 8.4, a Compose datoteka daje sliku MySQL 8.0.

E-pošta i newsletteri

Ghost razlikuje dva slanja, koja ne idu istim putem. To je najvažnija stvar za podešavanje nakon instalacije.

SlanjePrimjeriŠto ga nosi
TransakcijskoPozivnice za tim, zaboravljene lozinke, registracije i poveznice za prijavu članova, kod za prijavu s novog uređajaKonfiguracija mail Ghosta, u SMTP-u
NewsletteriČlanci poslani vašim članovimaAPI Mailguna, čiji se ključevi unose u postavkama „Email newsletter”

SMTP relej, za transakcijsku e-poštu

Dokumentacija ovu konfiguraciju svrstava među obavezne u produkciji. Ghost šalje e-poštom i kod kada otkrije prijavu s novog uređaja: podesite taj relej prije pozivanja tima.

Na Simafri VPS-u slanje ide preko autentificiranog SMTP releja, na portu 587: adresa računa e-pošte koji već imate ili Simafri Suite.

config.production.json (Ghost-CLI), zatim 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), odjeljak 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, nakon promjene datoteke .env
docker compose up -d --force-recreate ghost

Mailgun, za newslettere

SMTP relej ne pokriva newslettere. Prema dokumentaciji, masovno slanje ne ide preko SMTP-a, a Mailgun je danas jedina usluga masovnog slanja koju Ghost podržava. Izradite svoj Mailgun račun i unesite njegove API ključeve u postavke Ghosta.

Ako svoje članke ne šaljete e-poštom, ne treba vam nikakav Mailgun račun: te se postavke zanemaruju. Ako više volite drugi alat za newslettere, projekt predlaže da njemu sinkronizirate svoje članove, na primjer sa Zapierom ili putem njegovih vodiča za integraciju.

Sigurnosno kopiranje i vraćanje Ghosta

Ghost nudi tri razine kopiranja, a ne sadrže isto. Da biste web-mjesto obnovili identično, projekt traži izravno sigurnosno kopiranje baze i mape content.

MetodaŠto sadržiZa koju namjenu
ghost backup (Ghost-CLI)Zip: sadržaj u JSON-u, članovi u CSV-u, teme, slike, datoteke i mediji, rute i preusmjeravanjaMjera opreza prije ažuriranja
Izvoz iz administracijeZip: sadržaj i postavke, članovi, statistika članaka, teme, rute i preusmjeravanja, po izboru. Bez komentara, povijesti aktivnosti članova i medijaPremještanje sadržaja na drugo web-mjesto
Baza i mapa contentSvi podaciOporavak nakon katastrofe ili točna kopija

Izvoz se nalazi u „Settings”, „Advanced”, „Import/Export”, kartica „Export”, gumb „All data”. Za potpunu kopiju, s Ghost-CLI-jem, MySQL račun i naziv baze koje treba preuzeti nalaze se u 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/

S Docker Composeom službeni alat čuva sadržaj u data/ghost. Dump preuzima oblik koji daje MySQL slika, a lozinka root već je u kontejneru. Sačuvajte i kopiju datoteka .env i 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

Vraćanje

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

Te datoteke kopirajte izvan poslužitelja, s rsync ili scp, i napravite probno vraćanje na testnom stroju. Ako krećete od izvoza s plaćenim članovima, prije uvoza članova povežite isti Stripe račun.

Ažuriranje Ghosta

Projekt objavljuje ažuriranja svakog tjedna i podsjeća da javni web-poslužitelj mora ostati ažuran. Pročitajte bilješke o izdanju, a zatim pokrenite naredbu svoje metode.

S Ghost-CLI-jem

Terminal, u mapi web-mjesta
ghost check-update
ghost backup
ghost update

S Docker Composeom

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

Posljednji redak, neobavezan, uklanja stare slike. GHOST_VERSION ostavite zakomentiran u .env: fiksiranje inačice blokira te naredbe za ažuriranje.

Učvrstite svoju instancu i pripremite je za rast

Dokumentacija daje nekoliko postavki za poslužitelj u produkciji:

Za opterećenje projekt ispred Ghosta postavlja CDN i sloj predmemorije. Navodi da klasteriranje i sharding nisu podržani: web-mjesto poslužuje jedna instanca, a predmemorija upija promet.

Tko što radi na Managed VPS-u

Hostanje na vlastitom poslužitelju traži da uz aplikaciju održavate i poslužitelj. Na Managed VPS-u naši timovi preuzimaju poslužitelj i proaktivno prate vašu instancu; Ghost ostaje vaš softver, sa svojim postavkama i podacima.

TemaNaši timoviVi
PoslužiteljAžuriranja sustava i sigurnosti, uključujući intervencije na poslužiteljuTrenutak koji odgovara vašem poslovanju
NadzorPoslužitelj pod nadzorom 24 sata dnevno, 7 dana u tjednu, s intervencijom bez čekanja vašeg pozivaVaš sadržaj, vaši članovi i vaše pretplate
GhostProaktivno praćenje: uočene pogreške, usporavanja i prostor na disku, preporučen ispravakNjegova instalacija, ažuriranja, postavke, SMTP relej i Mailgun račun, koje primjenjujete vi ili vaš AI asistent
Sigurnosne kopijeSvake noći, šifrirane i čuvane izvan stroja; vraćanje uključenoZahtjev za vraćanje, kada vam zatreba
MigracijaVaš trenutačni poslužitelj migriran, besplatnoTrenutak prelaska

Ako želite da naši timovi interveniraju u samoj aplikaciji, ta se usluga naplaćuje po satu ili paušalno, uz procjenu koja vam se priopćuje prije intervencije.

Poslužitelj koji vodimo za vaše web-mjesto na Ghostu

Uz Simafri Managed VPS naši timovi održavaju poslužitelj vaše instance Ghosta ažurnim, nadziru ga danju i noću i interveniraju bez čekanja vašeg poziva; uz to proaktivno prate vašu instancu i preporučuju vam korisne ispravke, koje primjenjujete vi ili vaš AI asistent. Sigurnosne kopije svake se noći šifriraju i čuvaju izvan stroja, njihovo vraćanje je uključeno, a migracija vašeg trenutačnog poslužitelja je besplatna.

Otkrijte Managed VPS

Česta pitanja

Je li Ghost besplatan za hostanje na vlastitom poslužitelju?

Da. Ghost je pod licencom MIT: možete ga koristiti u tvrtki i prilagođavati, uz zadržavanje napomene o licenci. Ostaju usluge oko njega: poslužitelj, relej za e-poštu, Mailgun ako šaljete newslettere, Tinybird ako želite njegovu analitiku.

Koja je konfiguracija potrebna za hostanje Ghosta?

Projekt preporučuje Ubuntu 22.04, 24.04 ili 26.04, Nginx, Node.js 22, MySQL 8.0 ili 8.4, systemd, najmanje 1 GB memorije, domenu i korisnika koji nije root. Za Docker Compose kao primjer navodi poslužitelj s 2 GB i 1 procesorom.

Treba li Ghost instalirati s Ghost-CLI-jem ili s Dockerom?

Ghost-CLI je instalacija koju projekt preporučuje za produkciju. Docker Compose je preview, jedini koji omogućuje web-analitiku i ActivityPub na vlastitom poslužitelju, a projekt kaže da se kreće prema tom alatu. Čarobnjak omogućuje prelazak s Ghost-CLI-ja na Docker Compose.

Radi li Ghost sa SQLiteom, MariaDB-om ili PostgreSQL-om?

U produkciji je MySQL 8 jedina podržana baza. Projekt preporučuje ponovnu instalaciju na MySQL 8 sa SQLitea te migraciju na MySQL 8 s MariaDB-a. Njegova dokumentacija ne predviđa PostgreSQL.

Mogu li se newsletteri Ghosta slati preko SMTP-a?

Ne. SMTP služi za transakcijsku e-poštu: pozivnice, lozinke, poveznice za prijavu članova. Newsletteri traže API Mailguna, jedinu podržanu uslugu masovnog slanja. Bez slanja članaka e-poštom nije potreban nikakav Mailgun račun.

Kako sigurnosno kopirati Ghost web-mjesto na vlastitom poslužitelju?

Za potpuni oporavak sigurnosno kopirajte MySQL bazu s mysqldump i mapu content s tar. Naredba ghost backup izrađuje zip prije ažuriranja. Izvoz iz administracije izostavlja komentare, povijest aktivnosti članova i medije.

Kako ažurirati Ghost?

S Ghost-CLI-jem pokrenite ghost backup, a zatim ghost update u mapi web-mjesta, te ghost update --rollback u slučaju problema. S Docker Composeom pokrenite git pull, docker compose pull i docker compose up -d u /opt/ghost.

Pokriva li Managed VPS Ghost?

Managed VPS pokriva poslužitelj: sustav, sigurnost, nadzor i sigurnosne kopije. Naši timovi proaktivno prate i vašu instancu te vam preporučuju korisne ispravke, koje primjenjujete vi. Intervencija u aplikaciji naplaćuje se po satu ili paušalno.

Kontaktirajte nas