Hostovat Ghost na Managed VPS znamená publikovat své články, shromažďovat členy a rozesílat newslettery z vlastního stroje, který naše týmy udržují aktuální a ve dne i v noci hlídají. Ghost je svobodný software pod licencí MIT. Tento průvodce sleduje jeho oficiální dokumentaci: Ghost-CLI nebo Docker Compose, MySQL, HTTPS, e-maily, zálohy a aktualizace.
Autor: Simon Vasconcelos Lee
Publikováno 9. listopadu 2026Doba čtení: 13 minut
content a aktualizujte pomocí ghost update nebo docker compose pull: projekt vydává aktualizace každý týden.Ghost je profesionální a svobodná publikační platforma napsaná pro Node.js. Spojuje na jednom místě to, co nezávislá publikace často skládá z několika nástrojů.
Podle dokumentace má produkt při vlastním hostingu stejné funkce. To, co ho obklopuje, je na vás: odesílání newsletterů, webová analytika, CDN a úplné zálohy webu.
Ghost je vydáván pod licencí MIT. Dovoluje software používat, kopírovat, upravovat, slučovat, publikovat, šířit, sublicencovat a prodávat, za jediné podmínky: ve všech kopiích zachovat upozornění na autorská práva a text licence. Ghost tedy můžete ve firmě provozovat, přizpůsobit a publikovat v něm pro své zákazníky, aniž byste kupovali licenci.
Licence se týká kódu. Název a logo patří Ghost Foundation a spadají pod její zásady k ochranným známkám: přečtěte si je, pokud kolem softwaru stavíte nabídku. Ghost je registrovaná ochranná známka Ghost Foundation.
This publication is independent of and not affiliated with, authorized, sponsored, or approved by Ghost Foundation. Česky: tato publikace je nezávislá na Ghost Foundation a není s ní spojena, ani jí není povolena, sponzorována či schválena.
Projekt dokumentuje dvě cesty pro produkci. Ghost-CLI je instalace, kterou oficiálně doporučuje, a Docker Compose je „preview“, kterou označuje za zcela novou. Uvádí také, že směřuje spíše k tomuto nástroji Docker než k dalšímu vývoji Ghost-CLI, a poskytuje průvodce pro přechod z jednoho na druhý.
| Bod | Ghost-CLI | Docker Compose (preview) |
|---|---|---|
| Systém | Ubuntu 22.04, 24.04 nebo 26.04 | Linuxový server s Dockerem 20.10.13 nebo novějším |
| Paměť | Alespoň 1 GB | Projekt uvádí jako příklad server s 2 GB a 1 procesorem |
| Webový server a HTTPS | Nginx a certifikát Let’s Encrypt, které nasadí Ghost-CLI | Caddy v kontejneru, který obstará TLS |
| Databáze | MySQL 8.0 nebo 8.4 nainstalovaná na serveru | MySQL v kontejneru |
| Webová analytika | Nekompatibilní | Dostupná, s účtem Tinybird |
| Sociální síť (ActivityPub) | Služba hostovaná projektem, v rámci limitů použití zdarma | Stejná služba ve výchozím nastavení, nebo vaše vlastní |
Nasměrujte doménu na server před instalací: certifikát se nasazuje během zprovoznění. Na VPS Simafri přicházejí návštěvníci na porty 80 a 443, pod doménovým jménem serveru, se záznamy A a AAAA. Adresa webu se píše celá, s protokolem, například https://example.com: adresa IP způsobuje chyby.
Kromě výše uvedené paměti projekt neuvádí nároky na disk ani zátěž: velikost závisí na vašem provozu, obrázcích a médiích. Na Managed VPS nám popište svou publikaci a doporučíme vám vhodnou velikost.
Ghost-CLI se používá s uživatelem, který není root a jehož jméno není ghost, protože toto jméno je v konfliktu s nástrojem. Vytvořte ho z účtu root a nahraďte user zvoleným jménem:
adduser <user>
usermod -aG sudo <user>
su - <user>
Aktualizujte systém, nainstalujte Nginx (alespoň 1.9.5 kvůli SSL) a MySQL. Řádek ufw otevře HTTP a HTTPS, pokud je tento firewall aktivní:
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 novějších verzích Ubuntu se účet root v MySQL ověřuje přes socket, což Ghost nepodporuje. Dejte mu heslo:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '<your-new-root-password>';
FLUSH PRIVILEGES;
exit
Ghost vyžaduje Node.js 22: verze 20, 21, 23 a novější nejsou podporovány. Projekt žádá nainstalovat ho pro celý systém, takto:
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 instaluje do vlastní složky, s přesným vlastníkem a právy. Nahraďte sitename jménem podle svého výběru:
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
Příkaz pak klade své otázky a projekt doporučuje odpovědět ano na každý navržený krok:
https://.localhost jako hostitel, root a heslo nastavené výše, poté jméno databáze, kterou Ghost-CLI vytvoří.Web pak odpovídá a https://example.com/ghost vás vyzve k vytvoření účtu vlastníka. Pokud je instalace přerušena, ghost setup konfiguraci obnoví; pokud selže, ghost uninstall uklidí lépe než smazání složky. ghost doctor kontroluje systém kdykoli.
Projekt tuto metodu označuje za „preview“: v jeho očích je zcela nová. Právě ona umožňuje vlastní hosting webové analytiky a ActivityPub.
Na serveru s nainstalovaným Dockerem stáhněte oficiální nástroje do /opt/ghost a zkopírujte jeho dva ukázkové soubory:
git clone https://github.com/TryGhost/ghost-docker.git /opt/ghost && cd /opt/ghost
cp .env.example .env
cp caddy/Caddyfile.example caddy/Caddyfile
Do souboru .env doplňte tyto hodnoty:
DOMAIN: doména webu, například example.com.ADMIN_DOMAIN: samostatná doména pro správu, pokud si ji přejete.DATABASE_ROOT_PASSWORD a DATABASE_PASSWORD: dvě hesla vygenerovaná pomocí openssl rand -hex 32. Nastavují se jednou provždy: po inicializaci databáze jejich změna přeruší připojení.V souboru caddy/Caddyfile odkomentujte blok, který odpovídá vašemu případu: přesměrování z www na holou doménu, nebo naopak, nebo samostatná doména pro správu. Poté spusťte Ghost a dokončete zprovoznění na /ghost:
docker compose pull
docker compose up -d
HTTP_PORT a HTTPS_PORT, pokud Ghost stojí za jinou reverzní proxy. MySQL zůstává ve vnitřní síti kontejnerů.data/ghost a databáze v data/mysql, dvě umístění nastavitelná v .env.-f compose.yml -f compose.ipv6.yml ke svým příkazům docker compose up.Analytika vyžaduje účet Tinybird, externí službu. Z /opt/ghost se přihlaste, nasaďte její konfiguraci a získejte tokeny, které vložíte do .env, do sekce „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 funguje hned se službou hostovanou projektem, zdarma v rámci limitů použití, které zveřejňuje její dokumentace. Chcete-li hostovat vlastní, odkomentujte ACTIVITYPUB_TARGET=activitypub:8080. Potom v .env zapněte požadovaný profil nebo profily a kontejnery spusťte znovu:
COMPOSE_PROFILES=analytics,activitypub
docker compose pull
docker compose up -d
Pro ActivityPub projekt žádá znovu vytvořit také Ghost a Caddy pomocí docker compose up -d --force-recreate ghost caddy.
Po naklonování a konfiguraci bash scripts/migrate.sh zkopíruje složku content, importuje databázi do kontejneru MySQL a spustí Caddy místo Nginx. Nabídne zastavení Nginx, čímž se web odpojí: odpovězte ne, pokud na serveru běží i jiné weby. Žádná data nemaže. bash recovery_instructions.sh obnoví původní web, pokud migraci přerušíte.
Správa Ghost musí vést přes HTTPS a projekt doporučuje HTTPS pro celý web: bez něj putují přihlašovací údaje a hesla v čitelné podobě. S Docker Compose to obstará Caddy. S Ghost-CLI nasadí certifikát instalace a dodatečně to udělá jeden příkaz:
ghost setup ssl
Chcete-li změnit adresu webu nainstalovaného pomocí Ghost-CLI, ghost config url https://example.com aktualizuje konfiguraci a ghost restart ji uplatní.
Projekt radí také samostatnou doménu pro správu, která zmenšuje plochu útoku. Cesta zůstává /ghost/. U Ghost-CLI se deklaruje v config.production.json:
"admin": {
"url": "https://admin.example.com"
}
U Docker Compose vyplňte ADMIN_DOMAIN, odkomentujte jeho blok v Caddyfile a spusťte docker compose up -d --force-recreate ghost caddy. Také tato doména potřebuje své záznamy A a AAAA.
MySQL 8 je jediná databáze, kterou projekt v produkci podporuje. Ghost-CLI se instaluje s MySQL 8.0 nebo 8.4 a soubor Compose poskytuje obraz MySQL 8.0.
ghost config database.client, ve složce webu, ukáže používanou databázi.Ghost rozlišuje dvě odesílání, která nevedou toutéž cestou. Je to nejdůležitější bod k nastavení po instalaci.
| Odesílání | Příklady | Co ho nese |
|---|---|---|
| Transakční | Pozvánky týmu, zapomenutá hesla, registrace a přihlašovací odkazy členů, kód pro přihlášení z nového zařízení | Konfigurace mail v Ghost, přes SMTP |
| Newslettery | Články odeslané vašim členům | API Mailgun, jehož klíče se zadávají v nastavení „Email newsletter“ |
Dokumentace řadí toto nastavení mezi povinná v produkci. Ghost také posílá e-mailem kód, když zjistí přihlášení z nového zařízení: relé nastavte dřív, než pozvete svůj tým.
Na VPS Simafri vede odesílání přes ověřené relé SMTP na portu 587: adresa poštovního účtu, který už máte, nebo 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 a requireTLS: Ghost odesílá přes Nodemailer, jehož dokumentace žádá secure nastavené na false na portu 587, přičemž spojení poté přejde na STARTTLS. requireTLS odmítne odeslání, pokud tento přechod selže. Ukázkový soubor repozitáře uvádí port 465 a secure=true: nahraďte tyto dva řádky.from nese skutečnou adresu, kterou někdo čte, což podle projektu zlepšuje doručitelnost, a záznamy SPF, DKIM a DMARC odesílací domény nastavení doplňují.Relé SMTP newslettery nepokrývá. Podle dokumentace se hromadné odesílání přes SMTP nedělá a Mailgun je dosud jedinou službou pro hromadné odesílání, kterou Ghost podporuje. Založíte si účet Mailgun a jeho klíče API zadáte v nastavení Ghost.
Pokud své články e-mailem neposíláte, žádný účet Mailgun nepotřebujete: tato nastavení ignorujte. Pokud dáváte přednost jinému nástroji pro newslettery, projekt nabízí synchronizovat do něj vaše členy, například pomocí Zapieru nebo jeho integračních příruček.
Ghost nabízí tři úrovně kopie a neobsahují totéž. K přesné rekonstrukci webu projekt žádá zálohovat přímo databázi a složku content.
| Metoda | Co obsahuje | K čemu slouží |
|---|---|---|
ghost backup (Ghost-CLI) | Zip: obsah ve formátu JSON, členové ve formátu CSV, šablony, obrázky, soubory a média, trasy a přesměrování | Opatření před aktualizací |
| Export ze správy | Zip: obsah a nastavení, členové, statistiky článků, šablony, trasy a přesměrování, podle výběru. Bez komentářů, historie aktivity členů a médií | Přesun obsahu na jiný web |
Databáze a složka content | Všechna data | Obnova po havárii nebo přesná kopie |
Export najdete v „Settings“, „Advanced“, „Import/Export“, na kartě „Export“, tlačítko „All data“. Pro úplnou kopii s Ghost-CLI jsou účet MySQL a jméno databáze, které je třeba přenést, v 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 Compose uchovávají oficiální nástroje obsah v data/ghost. Výpis má podobu danou obrazem MySQL a heslo root už je v kontejneru. Uchovejte také kopii .env a 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
Tyto soubory zkopírujte mimo server pomocí rsync nebo scp a vyzkoušejte obnovu na testovacím stroji. Pokud vycházíte z exportu s placenými členy, připojte před importem členů stejný účet Stripe.
Projekt vydává aktualizace každý týden a připomíná, že veřejný webový server musí zůstat aktuální. Přečtěte si poznámky k vydání a spusťte příkaz své metody.
ghost check-update
ghost backup
ghost update
ghost update --rollback se vrátí k předchozí verzi, pokud aktualizace dopadne špatně.content zůstává při aktualizacích na místě.ghost update [version] --force se svou aktuální verzí, protože jeho binární závislosti jsou zkompilované pro konkrétní verzi Node.js.cd /opt/ghost
git pull
docker compose pull
docker compose up -d
docker image prune
Poslední řádek, nepovinný, odstraní staré obrazy. Nechte GHOST_VERSION v .env zakomentované: pevné určení verze tyto aktualizační příkazy zablokuje.
Dokumentace uvádí několik nastavení pro produkční server:
mysql_secure_installation.Pro zátěž projekt staví před Ghost CDN a vrstvu mezipaměti. Upřesňuje, že clustering a sharding nejsou podporovány: web obsluhuje jediná instance a mezipaměť pohlcuje provoz.
Vlastní hosting vyžaduje, abyste kromě aplikace udržovali i server. Na Managed VPS se serveru ujímají naše týmy a vaši instanci proaktivně sledují; Ghost zůstává vaším softwarem, s jeho nastavením a daty.
| Téma | Naše týmy | Vy |
|---|---|---|
| Server | Aktualizace systému a zabezpečení, včetně zásahů na serveru | Okamžik, který vyhovuje vašemu provozu |
| Dohled | Server sledovaný 24 hodin denně, 7 dní v týdnu, se zásahem bez čekání na vaše volání | Váš obsah, vaši členové a vaše předplatná |
| Ghost | Proaktivní sledování: chyby, zpomalení a místo na disku zachycené, doporučená oprava | Jeho instalace, aktualizace, nastavení, jeho relé SMTP a účet Mailgun, které zapracujete vy nebo váš AI asistent |
| Zálohy | Každou noc, šifrované a uchovávané mimo stroj; obnova v ceně | Žádost o obnovu, když ji potřebujete |
| Migrace | Váš stávající server přenesen zdarma | Okamžik přepnutí |
Pokud dáváte přednost tomu, aby naše týmy zasáhly přímo v aplikaci, tato služba se účtuje po hodinách nebo paušálem, s cenovou nabídkou sdělenou před zásahem.
S Managed VPS od Simafri udržují naše týmy server vaší instance Ghost aktuální, hlídají ho ve dne i v noci a zasahují bez čekání na vaše volání; vaši instanci také proaktivně sledují a doporučí vám užitečné opravy, které zapracujete vy nebo váš AI asistent. Zálohy se každou noc šifrují a uchovávají mimo stroj, jejich obnova je v ceně a migrace vašeho stávajícího serveru je zdarma.
Ano. Ghost je pod licencí MIT: můžete ho používat ve firmě a přizpůsobit, pokud zachováte její licenční upozornění. Zbývají služby kolem něj: server, relé e-mailů, Mailgun, pokud posíláte newslettery, Tinybird, pokud chcete jeho analytiku.
Projekt doporučuje Ubuntu 22.04, 24.04 nebo 26.04, Nginx, Node.js 22, MySQL 8.0 nebo 8.4, systemd, alespoň 1 GB paměti, doménu a uživatele, který není root. Pro Docker Compose uvádí jako příklad server s 2 GB a 1 procesorem.
Ghost-CLI je instalace, kterou projekt pro produkci doporučuje. Docker Compose je preview, jediná, která umožňuje vlastní hosting webové analytiky a ActivityPub, a projekt uvádí, že k tomuto nástroji směřuje. Průvodce umožňuje přejít z Ghost-CLI na Docker Compose.
V produkci je MySQL 8 jediná podporovaná databáze. Projekt doporučuje novou instalaci na MySQL 8 ze SQLite a migraci na MySQL 8 z MariaDB. Jeho dokumentace PostgreSQL nepočítá.
Ne. SMTP slouží transakčním e-mailům: pozvánkám, heslům, přihlašovacím odkazům členů. Newslettery vyžadují API Mailgun, jedinou podporovanou službu pro hromadné odesílání. Pokud články e-mailem neposíláte, žádný účet Mailgun není potřeba.
Pro úplnou obnovu zálohujte databázi MySQL pomocí mysqldump a složku content pomocí tar. Příkaz ghost backup vytvoří před aktualizací zip. Export ze správy vynechává komentáře, historii aktivity členů a média.
S Ghost-CLI spusťte ve složce webu ghost backup a poté ghost update, a v případě potíží ghost update --rollback. S Docker Compose spusťte v /opt/ghost git pull, docker compose pull a docker compose up -d.
Managed VPS pokrývá server: systém, zabezpečení, dohled a zálohy. Naše týmy také proaktivně sledují vaši instanci a doporučí vám užitečné opravy, které zapracujete vy. Zásah v samotné aplikaci se účtuje po hodinách nebo paušálem.
Simafri
Promluvme si o vašem záměru
Řekněte nám v pár slovech, co potřebujete: rychle se vám ozveme.
Děkujeme! Vaše zpráva byla odeslána. Brzy se vám ozveme.
Máte raději e-mail? Napište nám na support@simafri.com.