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.
Autor: Simon Vasconcelos Lee
Objavljeno 9. studenoga 2026.Vrijeme čitanja: 13 minuta
content, a ažurirajte s ghost update ili docker compose pull: projekt objavljuje ažuriranja svakog tjedna.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.
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.
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čka | Ghost-CLI | Docker Compose (preview) |
|---|---|---|
| Sustav | Ubuntu 22.04, 24.04 ili 26.04 | Linux poslužitelj s Dockerom 20.10.13 ili novijim |
| Memorija | Najmanje 1 GB | Projekt kao primjer navodi poslužitelj s 2 GB i 1 procesorom |
| Web-poslužitelj i HTTPS | Nginx i certifikat Let’s Encrypt, koje postavlja Ghost-CLI | Caddy, u kontejneru, koji preuzima TLS |
| Baza podataka | MySQL 8.0 ili 8.4 instaliran na poslužitelju | MySQL u kontejneru |
| Web-analitika | Nije kompatibilna | Dostupna, uz račun Tinybird |
| Društvena mreža (ActivityPub) | Usluga koju hostira projekt, besplatna unutar ograničenja upotrebe | Ista usluga prema zadanim postavkama ili vaša vlastita |
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.
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:
adduser <user>
usermod -aG sudo <user>
su - <user>
Ažurirajte sustav, instalirajte Nginx (najmanje 1.9.5 za SSL) i MySQL. Redak ufw otvara HTTP i HTTPS ako je taj vatrozid aktivan:
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:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '<your-new-root-password>';
FLUSH PRIVILEGES;
exit
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:
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 se instalira u vlastitu mapu, s točno određenim vlasnikom i pravima. Zamijenite sitename imenom po svom izboru:
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:
https://.localhost za host, root i lozinka postavljena gore, a zatim naziv baze, koju izrađuje Ghost-CLI.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.
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:
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:
DOMAIN: domena web-mjesta, na primjer example.com.ADMIN_DOMAIN: zasebna domena za administraciju, ako želite.DATABASE_ROOT_PASSWORD i DATABASE_PASSWORD: dvije lozinke generirane s openssl rand -hex 32. Postavljaju se jednom zauvijek: nakon inicijalizacije baze njihova promjena kvari vezu.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:
docker compose pull
docker compose up -d
HTTP_PORT i HTTPS_PORT ako Ghost prelazi iza drugog obrnutog proxyja. MySQL ostaje na unutarnjoj mreži kontejnera.data/ghost, a baza u data/mysql, dvije lokacije koje se podešavaju u .env.docker compose up dodajte -f compose.yml -f compose.ipv6.yml.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”:
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:
COMPOSE_PROFILES=analytics,activitypub
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.
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.
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:
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:
"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 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.
ghost config database.client, u mapi web-mjesta, pokazuje koja se baza koristi.Ghost razlikuje dva slanja, koja ne idu istim putem. To je najvažnija stvar za podešavanje nakon instalacije.
| Slanje | Primjeri | Što ga nosi |
|---|---|---|
| Transakcijsko | Pozivnice za tim, zaboravljene lozinke, registracije i poveznice za prijavu članova, kod za prijavu s novog uređaja | Konfiguracija mail Ghosta, u SMTP-u |
| Newsletteri | Članci poslani vašim članovima | API Mailguna, čiji se ključevi unose u postavkama „Email newsletter” |
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.
"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 i requireTLS: Ghost šalje preko Nodemailera, čija dokumentacija traži secure na false na portu 587, pri čemu veza zatim prelazi na STARTTLS. requireTLS odbija slanje ako taj prijelaz ne uspije. Datoteka s primjerom iz repozitorija navodi port 465 i secure=true: zamijenite ta dva retka.from nosi stvarnu adresu koja se čita, što prema projektu poboljšava isporučivost, a SPF, DKIM i DMARC zapisi domene slanja upotpunjuju postavku.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.
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ži | Za koju namjenu |
|---|---|---|
ghost backup (Ghost-CLI) | Zip: sadržaj u JSON-u, članovi u CSV-u, teme, slike, datoteke i mediji, rute i preusmjeravanja | Mjera opreza prije ažuriranja |
| Izvoz iz administracije | Zip: sadržaj i postavke, članovi, statistika članaka, teme, rute i preusmjeravanja, po izboru. Bez komentara, povijesti aktivnosti članova i medija | Premještanje sadržaja na drugo web-mjesto |
Baza i mapa content | Svi podaci | Oporavak 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:
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.
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
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.
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.
ghost check-update
ghost backup
ghost update
ghost update --rollback vraća na prethodnu inačicu ako ažuriranje krene loše.content ostaje na mjestu tijekom ažuriranja.ghost update [version] --force sa svojom trenutačnom inačicom, jer su njegove binarne ovisnosti kompilirane za određenu inačicu Node.js-a.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.
Dokumentacija daje nekoliko postavki za poslužitelj u produkciji:
mysql_secure_installation nakon uspješne instalacije Ghost-CLI-jem.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.
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.
| Tema | Naši timovi | Vi |
|---|---|---|
| Poslužitelj | Ažuriranja sustava i sigurnosti, uključujući intervencije na poslužitelju | Trenutak koji odgovara vašem poslovanju |
| Nadzor | Poslužitelj pod nadzorom 24 sata dnevno, 7 dana u tjednu, s intervencijom bez čekanja vašeg poziva | Vaš sadržaj, vaši članovi i vaše pretplate |
| Ghost | Proaktivno praćenje: uočene pogreške, usporavanja i prostor na disku, preporučen ispravak | Njegova instalacija, ažuriranja, postavke, SMTP relej i Mailgun račun, koje primjenjujete vi ili vaš AI asistent |
| Sigurnosne kopije | Svake noći, šifrirane i čuvane izvan stroja; vraćanje uključeno | Zahtjev za vraćanje, kada vam zatreba |
| Migracija | Vaš trenutačni poslužitelj migriran, besplatno | Trenutak 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Simafri
Porazgovarajmo o Vašem projektu
Recite nam u nekoliko riječi što trebate: javljamo Vam se brzo.
Hvala! Vaš upit je poslan. Javit ćemo vam se uskoro.
Više volite e-mail? Pišite nam na support@simafri.com.