A Ghost hosztolása Managed VPS-en azt jelenti, hogy cikkeit, tagjait és hírleveleit egy saját gépről kezeli, amelyet csapataink naprakészen tartanak, és éjjel-nappal felügyelnek. A Ghost MIT licenc alatt álló szabad szoftver. Ez az útmutató a hivatalos dokumentációját követi: a Ghost-CLI-t vagy a Docker Compose-t, a MySQL-t, a HTTPS-t, az e-maileket, a mentéseket és a frissítéseket.
Szerző: Simon Vasconcelos Lee
Közzétéve 2026. november 9-énOlvasási idő: 13 perc
content mappát, majd frissítsen a ghost update vagy a docker compose pull paranccsal: a projekt hetente ad ki frissítéseket.A Ghost egy professzionális, szabad publikációs platform, amelyet Node.js-re írtak. Egy helyen egyesíti azt, amit egy független kiadvány gyakran több eszközből rak össze.
A dokumentáció szerint a termék saját üzemeltetésben ugyanazokat a funkciókat nyújtja. Ami körülötte van, az Önre marad: a hírlevelek küldése, a webes analitika, egy CDN és a webhely teljes mentései.
A Ghost MIT licenc alatt jelenik meg. Engedélyezi a szoftver használatát, másolását, módosítását, egyesítését, közzétételét, terjesztését, allicencelését és eladását, egyetlen feltétellel: a szerzői jogi megjelölést és a licenc szövegét meg kell tartani minden másolatban. A Ghostot tehát futtathatja vállalkozásában, igazíthatja a saját igényeihez, és publikálhat vele az ügyfelei számára, licenc vásárlása nélkül.
A licenc a kódot fedi le. A név és a logó a Ghost Foundation tulajdona, és a védjegypolitikája alá tartozik: olvassa el, ha a szoftver köré ajánlatot épít. A Ghost a Ghost Foundation bejegyzett védjegye.
This publication is independent of and not affiliated with, authorized, sponsored, or approved by Ghost Foundation. Magyarul: ez a kiadvány független a Ghost Foundationtől, nem áll vele kapcsolatban, és nem is engedélyezte, nem szponzorálta, nem hagyta jóvá.
A projekt két utat dokumentál az éles környezethez. A Ghost-CLI az a telepítés, amelyet hivatalosan ajánl, a Docker Compose pedig egy „preview”, amelyet teljesen újnak nevez. Azt is közli, hogy inkább ezen a Docker-eszköztáron halad tovább, nem a Ghost-CLI fejlesztésén, és varázslót ad az egyikről a másikra való áttéréshez.
| Szempont | Ghost-CLI | Docker Compose (preview) |
|---|---|---|
| Rendszer | Ubuntu 22.04, 24.04 vagy 26.04 | Egy Linux szerver Docker 20.10.13-as vagy újabb verziójával |
| Memória | Legalább 1 GB | A projekt példaként egy 2 GB-os, 1 processzoros szervert említ |
| Webszerver és HTTPS | Nginx és Let’s Encrypt-tanúsítvány, amelyet a Ghost-CLI telepít | Caddy egy konténerben, amely a TLS-t kezeli |
| Adatbázis | MySQL 8.0 vagy 8.4, a szerverre telepítve | MySQL egy konténerben |
| Webes analitika | Nem kompatibilis | Elérhető, egy Tinybird-fiókkal |
| Közösségi hálózat (ActivityPub) | A projekt által üzemeltetett szolgáltatás, a használati korlátain belül ingyenes | Ugyanaz a szolgáltatás alapértelmezésként, vagy a sajátja, önállóan üzemeltetve |
A telepítés előtt irányítsa a domaint a szerverre: a tanúsítvány a beállítás közben települ. Simafri VPS-en a látogatók a 80-as és a 443-as porton érkeznek, a szerver domainnevén, A és AAAA rekordokkal. A webhely címét teljes egészében, a protokollal együtt kell megadni, például https://example.com: egy IP-cím hibákat okoz.
A fent jelzett memórián túl a projekt sem a lemezigényt, sem a terhelést nem adja meg: a méret a forgalmától, a képeitől és a médiafájljaitól függ. Egy Managed VPS esetén írja le nekünk a publikációját, és mi azt a méretet javasoljuk, amely megfelel.
A Ghost-CLI-t nem root felhasználóval kell használni, akinek a neve nem ghost, mert ez a név ütközik az eszközzel. Hozza létre a root fiókból, a user helyére a választott nevet írva:
adduser <user>
usermod -aG sudo <user>
su - <user>
Frissítse a rendszert, telepítse az Nginxet (az SSL-hez legalább 1.9.5-ös verzió kell) és a MySQL-t. Az ufw sor megnyitja a HTTP-t és a HTTPS-t, ha ez a tűzfal aktív:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nginx
sudo ufw allow 'Nginx Full'
sudo apt-get install mysql-server
Az Ubuntu újabb verzióin a MySQL root fiókja socketen keresztül hitelesít, amit a Ghost nem támogat. Adjon neki jelszót:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '<your-new-root-password>';
FLUSH PRIVILEGES;
exit
A Ghost Node.js 22-t igényel: a 20-as, a 21-es, a 23-as és az azt követő verziók nem támogatottak. A projekt azt kéri, hogy az egész rendszerre telepítse, így:
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
A Ghost a saját mappájába települ, meghatározott tulajdonossal és jogokkal. A sitename helyére írja a választott nevet:
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
A parancs ezután kérdéseket tesz fel, a projekt pedig azt ajánlja, hogy minden felajánlott lépésre igennel válaszoljon:
https:// előtaggal.localhost a gazdagéphez, root és a fent beállított jelszó, majd az adatbázis neve, amelyet a Ghost-CLI létrehoz.A webhely ekkor válaszol, a https://example.com/ghost címen pedig a tulajdonosi fiók létrehozására hívják. Ha a telepítés megszakad, a ghost setup folytatja a beállítást; ha meghiúsul, a ghost uninstall jobban takarít, mint a mappa törlése. A ghost doctor bármikor ellenőrzi a rendszert.
A projekt ezt a módszert „preview”-ként mutatja be: a szemében teljesen új. Ez teszi lehetővé a webes analitika és az ActivityPub önálló üzemeltetését.
Egy olyan szerveren, ahol a Docker telepítve van, töltse le a hivatalos eszköztárat az /opt/ghost mappába, és másolja le a két példafájlját:
git clone https://github.com/TryGhost/ghost-docker.git /opt/ghost && cd /opt/ghost
cp .env.example .env
cp caddy/Caddyfile.example caddy/Caddyfile
A .env fájlban adja meg ezeket az értékeket:
DOMAIN: a webhely domainje, például example.com.ADMIN_DOMAIN: külön domain az adminisztrációhoz, ha szeretné.DATABASE_ROOT_PASSWORD és DATABASE_PASSWORD: két jelszó, amelyet az openssl rand -hex 32 paranccsal generál. Egyszer s mindenkorra rögzítendők: az adatbázis inicializálása után a módosításuk megszakítja a kapcsolatot.A caddy/Caddyfile fájlban vegye ki a megjegyzésből az Ön esetének megfelelő blokkot: a www átirányítása a „csupasz” domainre vagy fordítva, illetve külön adminisztrációs domain. Ezután indítsa el a Ghostot, majd fejezze be a beállítást a /ghost címen:
docker compose pull
docker compose up -d
HTTP_PORT és a HTTPS_PORT változóval módosíthatók, ha a Ghost egy másik fordított proxy mögé kerül. A MySQL a konténerek belső hálózatán marad.data/ghost, az adatbázis a data/mysql mappában él, két hely, amely a .env fájlban állítható.-f compose.yml -f compose.ipv6.yml kapcsolót a docker compose up parancsaihoz.Az analitikához Tinybird-fiók kell, amely külső szolgáltatás. Az /opt/ghost mappából jelentkezzen be, telepítse a konfigurációját, és szerezze meg a tokeneket, amelyeket a .env fájlba kell illeszteni, a „Tinybird configuration” szakaszba:
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
Az ActivityPub azonnal működik a projekt által üzemeltetett szolgáltatással, amely a dokumentációjában közzétett használati korlátokon belül ingyenes. Ha a saját ActivityPub-szolgáltatását szeretné önállóan üzemeltetni, vegye ki a megjegyzésből az ACTIVITYPUB_TARGET=activitypub:8080 sort. Ezután kapcsolja be a .env fájlban a kívánt profilt vagy profilokat, majd indítsa újra a konténereket:
COMPOSE_PROFILES=analytics,activitypub
docker compose pull
docker compose up -d
Az ActivityPubhoz a projekt azt kéri, hogy a Ghostot és a Caddyt is hozza létre újra, a docker compose up -d --force-recreate ghost caddy paranccsal.
A klónozás és a beállítás után a bash scripts/migrate.sh lemásolja a content mappát, importálja az adatbázist a MySQL-konténerbe, és az Nginx helyett elindítja a Caddyt. Felajánlja az Nginx leállítását, ami offline állapotba teszi a webhelyet: válaszoljon nemmel, ha a szerveren más webhelyek is futnak. Nem töröl semmilyen adatot. A bash recovery_instructions.sh visszaállítja az eredeti webhelyet, ha megszakítja az átállást.
A Ghost adminisztrációjának HTTPS-en kell mennie, a projekt pedig az egész webhelyre HTTPS-t ajánl: nélküle az azonosítók és a jelszavak titkosítatlanul közlekednek. Docker Compose-zal ezt a Caddy intézi. A Ghost-CLI-vel a telepítés beállítja a tanúsítványt, és utólag egy parancs is elvégzi:
ghost setup ssl
Egy Ghost-CLI-vel telepített webhely címének módosításához a ghost config url https://example.com frissíti a konfigurációt, a ghost restart pedig érvényesíti.
A projekt egy külön adminisztrációs domaint is tanácsol, amely csökkenti a támadási felületet. Az útvonal továbbra is /ghost/ marad. A Ghost-CLI oldalán a config.production.json fájlban kell megadni:
"admin": {
"url": "https://admin.example.com"
}
A Docker Compose oldalán adja meg az ADMIN_DOMAIN értékét, vegye ki a megjegyzésből a blokkját a Caddyfile-ban, és futtassa a docker compose up -d --force-recreate ghost caddy parancsot. Ennek a domainnek is szüksége van az A és AAAA rekordjaira.
A MySQL 8 az egyetlen adatbázis, amelyet a projekt éles környezetben támogat. A Ghost-CLI MySQL 8.0-val vagy 8.4-gyel települ, a Compose-fájl pedig egy MySQL 8.0 image-et biztosít.
ghost config database.client a webhely mappájában megmutatja a használt adatbázist.A Ghost két küldést különböztet meg, amelyek nem ugyanazon az úton mennek. Ez a legfontosabb beállítandó dolog a telepítés után.
| Küldés | Példák | Mi hordozza |
|---|---|---|
| Tranzakciós | Csapatmeghívók, elfelejtett jelszavak, a tagok regisztrációi és bejelentkezési linkjei, bejelentkezési kód új eszközről | A Ghost mail konfigurációja, SMTP-vel |
| Hírlevelek | A tagoknak küldött cikkek | A Mailgun API-ja, amelynek kulcsait az „Email newsletter” beállításokban kell megadni |
A dokumentáció ezt a konfigurációt éles környezetben kötelezőnek minősíti. A Ghost e-mailben kódot is küld, amikor új eszközről történő bejelentkezést észlel: állítsa be ezt a továbbítót, mielőtt meghívja a csapatát.
Simafri VPS-en a küldés egy hitelesített SMTP-továbbítón keresztül megy, a 587-es porton: egy meglévő levelezési fiók címével, vagy a Simafri Suite-tal.
"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 és a requireTLS: a Ghost a Nodemailerrel küld, amelynek dokumentációja a 587-es porton a secure értékét false-ra kéri, a kapcsolat ezután STARTTLS-re vált. A requireTLS megtagadja a küldést, ha ez az áttérés meghiúsul. A tároló példafájlja a 465-ös portot és a secure=true értéket jelzi: cserélje le ezt a két sort.from valódi, olvasott címet tartalmaz, ami a projekt szerint javítja a kézbesíthetőséget, a küldő domain SPF-, DKIM- és DMARC-rekordjai pedig kiegészítik a beállítást.Az SMTP-továbbító nem fedi le a hírleveleket. A dokumentáció szerint a tömeges küldés nem SMTP-vel történik, és a Mailgun jelenleg az egyetlen tömeges küldő szolgáltatás, amelyet a Ghost támogat. Létrehozza a Mailgun-fiókját, és megadja az API-kulcsait a Ghost beállításaiban.
Ha nem küldi el a cikkeit e-mailben, nincs szüksége Mailgun-fiókra: ezeket a beállításokat figyelmen kívül hagyhatja. Ha egy másik hírlevél-eszközt részesít előnyben, a projekt azt javasolja, hogy szinkronizálja hozzá a tagjait, például a Zapierrel vagy az integrációs útmutatóival.
A Ghost három szintű másolatot kínál, és ezek nem ugyanazt tartalmazzák. Egy webhely azonos újraépítéséhez a projekt azt kéri, hogy közvetlenül az adatbázist és a content mappát mentse.
| Módszer | Mit tartalmaz | Milyen célra |
|---|---|---|
ghost backup (Ghost-CLI) | Egy zip: JSON-formátumú tartalmak, CSV-formátumú tagok, sablonok, képek, fájlok és médiafájlok, útvonalak és átirányítások | Elővigyázatosság egy frissítés előtt |
| Export az adminisztrációból | Egy zip: tartalmak és beállítások, tagok, a cikkek statisztikái, sablonok, útvonalak és átirányítások, választás szerint. Sem hozzászólások, sem a tagok tevékenységi előzményei, sem médiafájlok | A tartalom áthelyezése egy másik webhelyre |
Az adatbázis és a content mappa | Az adatok teljes egésze | Katasztrófa utáni helyreállítás, vagy pontos másolat |
Az export a „Settings”, „Advanced”, „Import/Export” menüben található, az „Export” lapon, az „All data” gombbal. A teljes másolathoz Ghost-CLI esetén a MySQL-fiók és az átveendő adatbázisnév a config.production.json fájlban van:
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/
Docker Compose esetén a hivatalos eszköztár a tartalmat a data/ghost mappában tartja. A dump a MySQL image által megadott formát követi, a root jelszó pedig már a konténerben van. Őrizzen másolatot a .env fájlról és a Caddyfile-ról is.
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
Másolja ezeket a fájlokat a szerveren kívülre, az rsync vagy az scp segítségével, és végezzen próbavisszaállítást egy tesztgépen. Ha fizető tagokat tartalmazó exportból indul újra, a tagok importálása előtt csatlakoztassa ugyanazt a Stripe-fiókot.
A projekt hetente ad ki frissítéseket, és emlékeztet rá, hogy egy nyilvános webszervernek naprakésznek kell maradnia. Olvassa el a kiadási megjegyzéseket, majd futtassa a módszerének megfelelő parancsot.
ghost check-update
ghost backup
ghost update
ghost update --rollback az előző verzióra tér vissza, ha egy frissítés rosszul sül el.content mappa a helyén marad a frissítések alatt.ghost update [version] --force parancsot a jelenlegi verziójával, mert a bináris függőségei egy adott Node.js-verzióra vannak lefordítva.cd /opt/ghost
git pull
docker compose pull
docker compose up -d
docker image prune
Az utolsó, elhagyható sor eltávolítja a régi image-eket. Hagyja megjegyzésben a GHOST_VERSION sort a .env fájlban: egy verzió rögzítése blokkolja ezeket a frissítési parancsokat.
A dokumentáció több beállítást ad egy éles szerverhez:
mysql_secure_installation parancsot.A terheléshez a projekt egy CDN-t és egy gyorsítótár-réteget helyez a Ghost elé. Leszögezi, hogy a klaszterezés és a sharding nem támogatott: egyetlen példány szolgálja ki a webhelyet, a gyorsítótár pedig felfogja a forgalmat.
A saját üzemeltetés az alkalmazás mellett a szerver gondozását is megköveteli. Egy Managed VPS esetén csapataink átveszik a szervert, és proaktívan követik a példányát; a Ghost továbbra is az Ön szoftvere marad, a beállításaival és az adataival.
| Téma | Csapataink | Ön |
|---|---|---|
| A szerver | Rendszer- és biztonsági frissítések, a szerveren végzett beavatkozásokkal együtt | A tevékenységének megfelelő időpont |
| A felügyelet | Éjjel-nappal, a hét minden napján követett szerver, beavatkozás a hívására való várakozás nélkül | A tartalmai, a tagjai és az előfizetései |
| Ghost | Proaktív követés: a hibák, lassulások és a lemezterület észlelése, javítás ajánlása | A telepítése, a frissítései, a beállításai, az SMTP-továbbítója és a Mailgun-fiókja, amelyeket Ön vagy MI-asszisztense alkalmaz |
| A mentések | Minden éjjel, titkosítva és a gépen kívül őrizve; a visszaállítással együtt | A visszaállítási kérés, amikor szüksége van rá |
| Az átköltöztetés | A jelenlegi szervere átköltöztetve, ingyenesen | Az átállás időpontja |
Ha inkább azt szeretné, hogy csapataink magában az alkalmazásban avatkozzanak be, ez a szolgáltatás óradíjban vagy átalánydíjban számlázódik, a beavatkozás előtt közölt árajánlattal.
Egy Simafri Managed VPS esetében csapataink naprakészen tartják Ghost-példánya szerverét, éjjel-nappal felügyelik, és beavatkoznak anélkül, hogy a hívására várnának; proaktívan a példányát is követik, és javasolják a hasznos javításokat, amelyeket Ön vagy MI-asszisztense alkalmaz. A mentések minden éjjel titkosítva, a gépen kívül készülnek, a visszaállításuk a díj része, jelenlegi szervere átköltöztetése pedig ingyenes.
Igen. A Ghost MIT licenc alatt áll: használhatja vállalkozásban és igazíthatja a saját igényeihez, a licencmegjelölés megtartásával. Maradnak a körülötte lévő szolgáltatások: a szerver, az e-mail-továbbító, a Mailgun, ha hírleveleket küld, a Tinybird, ha a webes analitikáját szeretné.
A projekt Ubuntu 22.04-et, 24.04-et vagy 26.04-et, Nginxet, Node.js 22-t, MySQL 8.0-t vagy 8.4-et, systemd-t, legalább 1 GB memóriát, egy domaint és egy nem root felhasználót ajánl. A Docker Compose-hoz példaként egy 2 GB-os, 1 processzoros szervert említ.
A Ghost-CLI az a telepítés, amelyet a projekt az éles környezethez ajánl. A Docker Compose egy preview, amely egyedül teszi lehetővé a webes analitikát és az önállóan üzemeltetett ActivityPubot, és a projekt szerint ezen az eszköztáron halad tovább. Egy varázsló segít az átállásban a Ghost-CLI-ről a Docker Compose-ra.
Éles környezetben a MySQL 8 az egyetlen támogatott adatbázis. A projekt SQLite-ról MySQL 8-ra való újratelepítést, MariaDB-ről pedig MySQL 8-ra való áttérést javasol. A dokumentációja nem számol a PostgreSQL-lel.
Nem. Az SMTP a tranzakciós e-mailekre szolgál: meghívókra, jelszavakra, a tagok bejelentkezési linkjeire. A hírlevelekhez a Mailgun API-ja kell, az egyetlen támogatott tömeges küldő szolgáltatás. Ha nem küld cikkeket e-mailben, nincs szükség Mailgun-fiókra.
Teljes helyreállításhoz mentse a MySQL-adatbázist a mysqldump paranccsal és a content mappát a tar paranccsal. A ghost backup parancs egy frissítés előtt zipet készít. Az adminisztráció exportja kihagyja a hozzászólásokat, a tagok tevékenységi előzményeit és a médiafájlokat.
Ghost-CLI-vel futtassa a ghost backup, majd a ghost update parancsot a webhely mappájában, és a ghost update --rollback parancsot probléma esetén. Docker Compose-zal futtassa a git pull, a docker compose pull és a docker compose up -d parancsot az /opt/ghost mappában.
A Managed VPS a szervert fedi le: a rendszert, a biztonságot, a felügyeletet és a mentéseket. Csapataink proaktívan a példányát is követik, és javasolják a hasznos javításokat, amelyeket Ön alkalmaz. Az alkalmazásban végzett beavatkozás óradíjban vagy átalánydíjban számlázódik.
Simafri
Beszéljünk a weboldaláról
Meséljen néhány szóban a projektjéről: hamarosan jelentkezünk.
Köszönjük! Kérését elküldtük. Hamarosan válaszolunk.
Inkább e-mailben? Írjon nekünk ide: support@simafri.com.