Ghost talpinimas Managed VPS serveryje reiškia, kad savo straipsnius skelbiate, narius telkiate ir naujienlaiškius siunčiate iš savo mašinos, kurią mūsų komandos prižiūri atnaujintą ir stebi dieną bei naktį. Ghost yra laisva programinė įranga su MIT licencija. Šis gidas seka oficialią jos dokumentaciją: Ghost-CLI ar Docker Compose, MySQL, HTTPS, el. laiškus, atsargines kopijas ir atnaujinimus.
Autorius: Simon Vasconcelos Lee
Paskelbta 2026 m. lapkričio 9 d.Skaitymo trukmė: 13 min.
content atsargines kopijas, o atnaujinkite su ghost update arba docker compose pull: projektas atnaujinimus skelbia kiekvieną savaitę.Ghost yra profesionali laisva leidybos platforma, parašyta Node.js aplinkai. Ji vienoje vietoje sujungia tai, ką nepriklausomas leidinys dažnai surenka iš kelių įrankių.
Pagal dokumentaciją, produktas savo serveryje turi tas pačias funkcijas. Tai, kas jį supa, tenka jums: naujienlaiškių siuntimas, žiniatinklio analitika, CDN ir pilnos svetainės atsarginės kopijos.
Ghost platinama pagal MIT licenciją. Ji leidžia naudoti, kopijuoti, keisti, sujungti, skelbti, platinti, suteikti sublicencijas ir parduoti programinę įrangą su viena sąlyga: kiekvienoje kopijoje išsaugoti autorių teisių pranešimą ir licencijos tekstą. Todėl Ghost galite paleisti įmonėje, pritaikyti ir skelbti joje savo klientams, nieko nepirkdami dėl licencijos.
Licencija apima kodą. Pavadinimas ir logotipas priklauso Ghost Foundation ir jiems taikoma jos prekių ženklų politika: perskaitykite ją, jei kuriate pasiūlymą aplink programinę įrangą. Ghost yra Ghost Foundation registruotasis prekių ženklas.
This publication is independent of and not affiliated with, authorized, sponsored, or approved by Ghost Foundation. Lietuviškai: ši publikacija nepriklauso nuo Ghost Foundation ir nėra su ja susijusi, jos įgaliota, remiama ar patvirtinta.
Projektas aprašo du kelius gamybai. Ghost-CLI yra diegimas, kurį jis oficialiai rekomenduoja, o Docker Compose yra „preview“, kurią jis vadina visiškai nauja. Jis taip pat nurodo kryptį į šį Docker įrankių rinkinį, o ne Ghost-CLI tobulinimą, ir pateikia vedlį perėjimui iš vieno į kitą.
| Punktas | Ghost-CLI | Docker Compose (preview) |
|---|---|---|
| Sistema | Ubuntu 22.04, 24.04 ar 26.04 | Linux serveris su Docker 20.10.13 ar naujesne versija |
| Atmintis | Bent 1 GB | Projektas kaip pavyzdį mini serverį su 2 GB ir 1 procesoriumi |
| Žiniatinklio serveris ir HTTPS | Nginx ir Let's Encrypt sertifikatas, įdiegti Ghost-CLI | Caddy konteineryje, kuri tvarko TLS |
| Duomenų bazė | MySQL 8.0 ar 8.4, įdiegta serveryje | MySQL konteineryje |
| Žiniatinklio analitika | Nesuderinama | Prieinama, su Tinybird paskyra |
| Socialinis tinklas (ActivityPub) | Projekto talpinama paslauga, nemokama jos naudojimo ribose | Ta pati paslauga numatytai arba jūsų pačių, savo serveryje talpinama |
Prieš diegimą nukreipkite domeną į serverį: sertifikatas įdiegiamas diegimo metu. Simafri VPS serveryje lankytojai atvyksta 80 ir 443 prievadais, serverio domeno vardu, su A ir AAAA įrašais. Svetainės adresas rašomas pilnas, su protokolu, pavyzdžiui, https://example.com: IP adresas sukelia klaidų.
Be pirmiau nurodytos atminties, projektas nenurodo nei disko, nei apkrovos dydžio: jis priklauso nuo jūsų srauto, paveikslėlių ir medijos. Naudojant Managed VPS, papasakokite mums apie savo leidinį, ir mes rekomenduosime tinkamą dydį.
Ghost-CLI naudojamas su naudotoju, kuris nėra root ir kurio vardas nėra ghost, nes šis vardas konfliktuoja su įrankiu. Sukurkite jį iš root paskyros, user pakeisdami pasirinktu vardu:
adduser <user>
usermod -aG sudo <user>
su - <user>
Atnaujinkite sistemą, įdiekite Nginx (SSL reikia bent 1.9.5) ir MySQL. Eilutė su ufw atveria HTTP ir HTTPS, jei ši ugniasienė aktyvi:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nginx
sudo ufw allow 'Nginx Full'
sudo apt-get install mysql-server
Naujesnėse Ubuntu versijose MySQL root paskyra autentifikuojasi per lizdą, ko Ghost nepalaiko. Suteikite jai slaptažodį:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '<your-new-root-password>';
FLUSH PRIVILEGES;
exit
Ghost reikalauja Node.js 22: 20, 21, 23 ir vėlesnės versijos nepalaikomos. Projektas prašo jį įdiegti visai sistemai, taip:
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 diegiamas savo kataloge, su tiksliu savininku ir teisėmis. sitename pakeiskite pasirinktu pavadinimu:
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
Komanda tada užduoda klausimus, o projektas rekomenduoja atsakyti taip į kiekvieną siūlomą žingsnį:
https://.localhost kaip serveris, root ir anksčiau nustatytas slaptažodis, tada duomenų bazės pavadinimas, kurią sukuria Ghost-CLI.Tada svetainė atsako, o https://example.com/ghost kviečia sukurti savininko paskyrą. Jei diegimas nutrauktas, ghost setup tęsia konfigūravimą; jei jis nepavyksta, ghost uninstall sutvarko geriau nei katalogo ištrynimas. ghost doctor bet kada patikrina sistemą.
Projektas pristato šį metodą kaip „preview“: jo požiūriu, jis visiškai naujas. Būtent juo galima savo serveryje talpinti žiniatinklio analitiką ir ActivityPub.
Serveryje, kuriame įdiegtas Docker, atsisiųskite oficialų įrankių rinkinį į /opt/ghost ir nukopijuokite du jo pavyzdinius failus:
git clone https://github.com/TryGhost/ghost-docker.git /opt/ghost && cd /opt/ghost
cp .env.example .env
cp caddy/Caddyfile.example caddy/Caddyfile
Faile .env nurodykite šias reikšmes:
DOMAIN: svetainės domenas, pavyzdžiui, example.com.ADMIN_DOMAIN: atskiras administravimo domenas, jei norite.DATABASE_ROOT_PASSWORD ir DATABASE_PASSWORD: du slaptažodžiai, sugeneruoti su openssl rand -hex 32. Jie nustatomi vieną kartą visam laikui: inicializavus duomenų bazę, juos pakeitus nutrūksta ryšys.Faile caddy/Caddyfile atkomentuokite jūsų atvejį atitinkantį bloką: www nukreipimas į domeną be jo, arba atvirkščiai, arba atskiras administravimo domenas. Tada paleiskite Ghost ir užbaikite nustatymą ties /ghost:
docker compose pull
docker compose up -d
HTTP_PORT ir HTTPS_PORT, jei Ghost veiktų už kito atvirkštinio tarpinio serverio. MySQL lieka vidiniame konteinerių tinkle.data/ghost, o duomenų bazė data/mysql, abi vietas galima keisti faile .env.docker compose up pridėkite -f compose.yml -f compose.ipv6.yml.Analitikai reikia Tinybird paskyros, išorinės paslaugos. Iš /opt/ghost prisijunkite, įdiekite jos konfigūraciją ir gaukite žetonus, kuriuos reikia įklijuoti į .env, skyriuje „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 iš karto veikia su projekto talpinama paslauga, nemokama naudojimo ribose, kurias skelbia jos dokumentacija. Norėdami savo serveryje talpinti savo, atkomentuokite ACTIVITYPUB_TARGET=activitypub:8080. Tada faile .env įjunkite norimą profilį ar profilius ir iš naujo paleiskite konteinerius:
COMPOSE_PROFILES=analytics,activitypub
docker compose pull
docker compose up -d
ActivityPub atveju projektas prašo iš naujo sukurti ir Ghost bei Caddy, su docker compose up -d --force-recreate ghost caddy.
Po klonavimo ir konfigūravimo bash scripts/migrate.sh nukopijuoja katalogą content, importuoja duomenų bazę į MySQL konteinerį ir paleidžia Caddy vietoj Nginx. Jis siūlo sustabdyti Nginx, dėl ko svetainė tampa nepasiekiama: atsakykite ne, jei serveryje veikia kitos svetainės. Jis nieko neištrina. bash recovery_instructions.sh atkuria pradinę svetainę, jei nutraukiate migraciją.
Ghost administravimas turi vykti per HTTPS, o projektas rekomenduoja HTTPS visai svetainei: be jo prisijungimo vardai ir slaptažodžiai keliauja atviru tekstu. Su Docker Compose tuo rūpinasi Caddy. Su Ghost-CLI sertifikatą įdiegia diegimas, o vėliau tai atlieka komanda:
ghost setup ssl
Norėdami pakeisti su Ghost-CLI įdiegtos svetainės adresą, ghost config url https://example.com atnaujina konfigūraciją, o ghost restart ją pritaiko.
Projektas taip pat pataria atskirą administravimo domeną, kuris sumažina atakos paviršių. Kelias lieka /ghost/. Ghost-CLI atveju jis nurodomas faile config.production.json:
"admin": {
"url": "https://admin.example.com"
}
Docker Compose atveju nurodykite ADMIN_DOMAIN, atkomentuokite jo bloką faile Caddyfile ir paleiskite docker compose up -d --force-recreate ghost caddy. Šiam domenui taip pat reikia savo A ir AAAA įrašų.
MySQL 8 yra vienintelė duomenų bazė, kurią projektas palaiko gamyboje. Ghost-CLI diegiamas su MySQL 8.0 ar 8.4, o Compose faile pateikiamas MySQL 8.0 atvaizdas.
ghost config database.client, svetainės kataloge, parodo naudojamą duomenų bazę.Ghost skiria du siuntimus, kurie eina skirtingais keliais. Tai svarbiausias dalykas, kurį reikia sureguliuoti po diegimo.
| Siuntimas | Pavyzdžiai | Kas jį palaiko |
|---|---|---|
| Transakcinis | Komandos kvietimai, pamiršti slaptažodžiai, narių registracijos ir prisijungimo nuorodos, prisijungimo kodas iš naujo įrenginio | Ghost konfigūracija mail, per SMTP |
| Naujienlaiškiai | Jūsų nariams siunčiami straipsniai | Mailgun API, kurio raktai įvedami nustatymuose „Email newsletter“ |
Dokumentacija priskiria šią konfigūraciją prie būtinų gamyboje. Ghost taip pat siunčia kodą el. paštu, kai aptinka prisijungimą iš naujo įrenginio: nustatykite šį persiuntimo serverį prieš pakviesdami savo komandą.
Simafri VPS serveryje siuntimas vyksta per autentifikuotą SMTP persiuntimo serverį 587 prievadu: tai gali būti jau turimos pašto paskyros adresas arba 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 ir requireTLS: Ghost siunčia per Nodemailer, kurio dokumentacija reikalauja secure su false 587 prievadu, o ryšys vėliau pereina į STARTTLS. requireTLS atsisako siųsti, jei šis perėjimas nepavyksta. Saugyklos pavyzdiniame faile nurodytas 465 prievadas ir secure=true: pakeiskite šias dvi eilutes.from turi būti tikras ir skaitomas adresas, kas, pasak projekto, pagerina pristatomumą, o siuntimo domeno SPF, DKIM ir DMARC įrašai užbaigia nustatymą.SMTP persiuntimo serveris naujienlaiškių neapima. Pagal dokumentaciją, masinis siuntimas nevyksta per SMTP, o Mailgun šiuo metu yra vienintelė masinio siuntimo paslauga, kurią Ghost palaiko. Susikuriate savo Mailgun paskyrą ir jos API raktus įvedate Ghost nustatymuose.
Jei savo straipsnių nesiunčiate el. paštu, Mailgun paskyros jums nereikia: šių nustatymų galima nepaisyti. Jei teikiate pirmenybę kitam naujienlaiškių įrankiui, projektas siūlo sinchronizuoti narius su juo, pavyzdžiui, per Zapier ar jo integracijos gidus.
Ghost siūlo tris kopijų lygius, ir juose nėra to paties. Norint atkurti identišką svetainę, projektas prašo tiesiogiai kopijuoti duomenų bazę ir katalogą content.
| Metodas | Ką jis apima | Kam skirtas |
|---|---|---|
ghost backup (Ghost-CLI) | Zip: turinys JSON formatu, nariai CSV formatu, temos, paveikslėliai, failai ir medija, maršrutai ir nukreipimai | Atsargumo priemonė prieš atnaujinimą |
| Eksportas iš administravimo | Zip: turinys ir nustatymai, nariai, straipsnių statistika, temos, maršrutai ir nukreipimai, pagal pasirinkimą. Be komentarų, be narių veiklos istorijos, be medijos | Turinio perkėlimas į kitą svetainę |
Duomenų bazė ir katalogas content | Visi duomenys | Atkūrimas po avarijos arba tikslus egzempliorius |
Eksportas yra skiltyse „Settings“, „Advanced“, „Import/Export“, skirtuke „Export“, mygtukas „All data“. Visai kopijai su Ghost-CLI MySQL paskyra ir duomenų bazės pavadinimas, kuriuos reikia perkelti, yra faile 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/
Su Docker Compose oficialus įrankių rinkinys turinį laiko kataloge data/ghost. Išrašas atkartoja MySQL atvaizdo pateiktą formą, o root slaptažodis jau yra konteineryje. Taip pat pasilikite .env ir Caddyfile kopiją.
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
Nukopijuokite šiuos failus už serverio ribų su rsync ar scp ir išbandykite atkūrimą bandomojoje mašinoje. Jei pradedate iš eksporto su mokančiais nariais, prieš importuodami narius prijunkite tą pačią Stripe paskyrą.
Projektas atnaujinimus skelbia kiekvieną savaitę ir primena, kad viešas žiniatinklio serveris turi likti atnaujintas. Perskaitykite versijų pastabas, tada paleiskite savo metodo komandą.
ghost check-update
ghost backup
ghost update
ghost update --rollback grįžta į ankstesnę versiją, jei atnaujinimas nesiseka.content atnaujinimų metu lieka vietoje.ghost update [version] --force su dabartine versija, nes jo dvejetainės priklausomybės sukompiliuotos konkrečiai Node.js versijai.cd /opt/ghost
git pull
docker compose pull
docker compose up -d
docker image prune
Paskutinė eilutė, nebūtina, pašalina senus atvaizdus. Faile .env palikite GHOST_VERSION užkomentuotą: užfiksavus versiją, šios atnaujinimo komandos užblokuojamos.
Dokumentacija pateikia keletą nustatymų gamybiniam serveriui:
mysql_secure_installation.Apkrovai projektas prieš Ghost pastato CDN ir talpyklos sluoksnį. Jis nurodo, kad klasterizavimas ir sharding nepalaikomi: svetainę aptarnauja vienas egzempliorius, o talpykla sugeria srautą.
Talpinant savo serveryje, be programos reikia prižiūrėti ir patį serverį. Naudojant Managed VPS, mūsų komandos perima serverį ir proaktyviai stebi jūsų egzempliorių; Ghost lieka jūsų programa su savo nustatymais ir duomenimis.
| Tema | Mūsų komandos | Jūs |
|---|---|---|
| Serveris | Sistemos ir saugumo atnaujinimai, įskaitant įsikišimą serveryje | Jūsų veiklai tinkamas momentas |
| Stebėsena | Serveris stebimas 24 val. per parą, 7 dienas per savaitę, įsikišant nelaukiant jūsų skambučio | Jūsų turinys, nariai ir prenumeratos |
| Ghost | Proaktyvi stebėsena: klaidos, sulėtėjimai ir disko vieta pastebimi, rekomenduojamas pataisymas | Jos diegimas, atnaujinimai, nustatymai, SMTP persiuntimo serveris ir Mailgun paskyra, kuriuos pritaikote jūs arba jūsų DI asistentas |
| Atsarginės kopijos | Kiekvieną naktį, šifruotos ir saugomos už mašinos ribų; atkūrimas įskaičiuotas | Atkūrimo prašymas, kai jo prireikia |
| Perkėlimas | Jūsų dabartinis serveris perkeliamas nemokamai | Perjungimo momentas |
Jei norite, kad mūsų komandos įsikištų į pačią programą, ši paslauga apmokestinama valandomis arba fiksuota kaina, o skaičiavimas pateikiamas prieš įsikišimą.
Su Simafri Managed VPS mūsų komandos palaiko jūsų Ghost egzemplioriaus serverį atnaujintą, stebi jį dieną ir naktį ir įsikiša nelaukdamos jūsų skambučio; jos taip pat proaktyviai stebi jūsų egzempliorių ir rekomenduoja naudingus pataisymus, kuriuos pritaikote jūs arba jūsų DI asistentas. Atsarginės kopijos kiekvieną naktį šifruojamos ir saugomos už mašinos ribų, jų atkūrimas įskaičiuotas, o jūsų dabartinio serverio perkėlimas nemokamas.
Taip. Ghost platinama pagal MIT licenciją: galite ją naudoti įmonėje ir pritaikyti, išsaugodami jos licencijos nuorodą. Lieka ją supančios paslaugos: serveris, el. laiškų persiuntimo serveris, Mailgun, jei siunčiate naujienlaiškius, Tinybird, jei norite jos analitikos.
Projektas rekomenduoja Ubuntu 22.04, 24.04 ar 26.04, Nginx, Node.js 22, MySQL 8.0 ar 8.4, systemd, bent 1 GB atminties, domeną ir naudotoją, kuris nėra root. Docker Compose atveju kaip pavyzdį jis mini serverį su 2 GB ir 1 procesoriumi.
Ghost-CLI yra diegimas, kurį projektas rekomenduoja gamybai. Docker Compose yra preview, vienintelė leidžianti žiniatinklio analitiką ir savo serveryje talpinamą ActivityPub, o projektas sako judantis link šio įrankių rinkinio. Vedlys leidžia pereiti iš Ghost-CLI į Docker Compose.
Gamyboje MySQL 8 yra vienintelė palaikoma duomenų bazė. Projektas rekomenduoja iš SQLite iš naujo įdiegti su MySQL 8, o iš MariaDB migruoti į MySQL 8. Jo dokumentacija PostgreSQL nenumato.
Ne. SMTP skirtas transakciniams el. laiškams: kvietimams, slaptažodžiams, narių prisijungimo nuorodoms. Naujienlaiškiams reikia Mailgun API, vienintelės palaikomos masinio siuntimo paslaugos. Nesiunčiant straipsnių el. paštu, Mailgun paskyros nereikia.
Visam atkūrimui sukurkite MySQL duomenų bazės kopiją su mysqldump, o katalogo content su tar. Komanda ghost backup prieš atnaujinimą sukuria zip. Administravimo eksportas praleidžia komentarus, narių veiklos istoriją ir mediją.
Su Ghost-CLI svetainės kataloge paleiskite ghost backup, tada ghost update, o iškilus problemai ghost update --rollback. Su Docker Compose kataloge /opt/ghost paleiskite git pull, docker compose pull ir docker compose up -d.
Managed VPS apima serverį: sistemą, saugumą, stebėseną ir atsargines kopijas. Mūsų komandos taip pat proaktyviai stebi jūsų egzempliorių ir rekomenduoja naudingus pataisymus, kuriuos pritaikote jūs. Įsikišimas į pačią programą apmokestinamas valandomis arba fiksuota kaina.
Simafri
Pakalbėkime apie jūsų sumanymą
Pasakykite mums keliais žodžiais, ko jums reikia: greitai jums atsakome.
Ačiū! Jūsų užklausa išsiųsta. Netrukus su jumis susisieksime.
Labiau mėgstate el. paštą? Rašykite mums adresu support@simafri.com.