Jak hostować Ghost® na Managed VPS: Państwa publikacja na Państwa serwerze

Hostować Ghost na Managed VPS to publikować artykuły, gromadzić członków i wysyłać newslettery z maszyny, która należy do Państwa, a nasze zespoły dbają o jej aktualność i nadzorują ją dniem i nocą. Ghost to wolne oprogramowanie na licencji MIT. Ten poradnik podąża za jego oficjalną dokumentacją: Ghost-CLI lub Docker Compose, MySQL, HTTPS, e-maile, kopie zapasowe i aktualizacje.

Simon Vasconcelos Lee Autor: Opublikowano 9 listopada 2026Czas czytania: 13 minut

Wszystkie poradniki

W skrócie

  1. Licencja MIT pozwala swobodnie używać Ghost w firmie, pod warunkiem zachowania informacji o licencji. Nazwa i logo podlegają osobno polityce znaków towarowych Ghost Foundation.
  2. Projekt zaleca Ghost-CLI na Ubuntu, z Nginx, Node.js 22, MySQL 8 i co najmniej 1 GB pamięci. Jego metoda Docker Compose, w wersji „preview”, dodaje analitykę webową i samodzielnie hostowany ActivityPub.
  3. MySQL 8 to jedyna baza obsługiwana w produkcji.
  4. Proszę przewidzieć dwa obiegi e-maili: przekaźnik SMTP dla e-maili transakcyjnych, niezbędny, oraz Mailgun dla newsletterów, jedyną obsługiwaną usługę wysyłki masowej.
  5. Bazę i katalog content proszę kopiować, a aktualizować przez ghost update lub docker compose pull: projekt publikuje aktualizacje co tydzień.

Co robi Ghost

Ghost to profesjonalna, wolna platforma publikacyjna napisana dla Node.js. Łączy w jednym miejscu to, co niezależna publikacja często składa z kilku narzędzi.

Według dokumentacji produkt ma te same funkcje przy samodzielnym hostingu. To, co go otacza, należy do Państwa: wysyłka newsletterów, analityka webowa, CDN i pełne kopie zapasowe strony.

Licencja MIT i znak towarowy

Ghost jest udostępniany na licencji MIT. Zezwala ona na używanie, kopiowanie, modyfikowanie, łączenie, publikowanie, rozpowszechnianie, sublicencjonowanie i sprzedaż oprogramowania, pod jednym warunkiem: w każdej kopii musi pozostać informacja o prawach autorskich i tekst licencji. Mogą więc Państwo uruchomić Ghost w firmie, dostosować go i publikować w nim dla swoich klientów, bez zakupu licencji.

Licencja obejmuje kod. Nazwa i logo należą do Ghost Foundation i podlegają jej polityce znaków towarowych: proszę ją przeczytać, jeśli budują Państwo ofertę wokół oprogramowania. Ghost jest zastrzeżonym znakiem towarowym Ghost Foundation.

This publication is independent of and not affiliated with, authorized, sponsored, or approved by Ghost Foundation. Po polsku: ta publikacja jest niezależna od Ghost Foundation i nie jest z nią powiązana, przez nią autoryzowana, sponsorowana ani zatwierdzona.

Ghost-CLI czy Docker Compose: dwie oficjalne metody

Projekt dokumentuje dwie drogi do produkcji. Ghost-CLI to instalacja, którą oficjalnie zaleca, a Docker Compose to „preview”, o której mówi, że jest zupełnie nowa. Wskazuje też, że zmierza ku temu narzędziu Docker, zamiast rozwijać Ghost-CLI, i dostarcza kreator do przejścia z jednego na drugie.

PunktGhost-CLIDocker Compose (preview)
SystemUbuntu 22.04, 24.04 lub 26.04Serwer Linux z Dockerem 20.10.13 lub nowszym
PamięćCo najmniej 1 GBProjekt podaje jako przykład serwer z 2 GB i 1 procesorem
Serwer WWW i HTTPSNginx i certyfikat Let’s Encrypt, instalowane przez Ghost-CLICaddy, w kontenerze, który obsługuje TLS
Baza danychMySQL 8.0 lub 8.4 zainstalowany na serwerzeMySQL w kontenerze
Analityka webowaNiezgodnaDostępna, z kontem Tinybird
Sieć społecznościowa (ActivityPub)Usługa hostowana przez projekt, bezpłatna w granicach limitów użyciaTa sama usługa domyślnie albo Państwa własna, samodzielnie hostowana

Zanim zaczną Państwo: domena i serwer

Domenę proszę skierować na serwer przed instalacją: certyfikat instaluje się w trakcie konfiguracji. Na VPS Simafri odwiedzający docierają na porty 80 i 443, pod nazwą domeny serwera, z rekordami A i AAAA. Adres strony zapisuje się w całości, z protokołem, jak https://example.com: adres IP powoduje błędy.

Poza podaną wyżej pamięcią projekt nie określa ani dysku, ani obciążenia: rozmiar zależy od ruchu, obrazów i mediów. Na Managed VPS wystarczy opisać nam swoją publikację, a polecimy odpowiedni rozmiar.

Instalacja Ghost przez Ghost-CLI na Ubuntu

Ghost-CLI używa się z użytkownikiem, który nie jest rootem, a jego nazwa nie jest ghost, ponieważ ta nazwa koliduje z narzędziem. Proszę utworzyć go z konta root, zastępując user wybraną nazwą:

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

Nginx i MySQL

Proszę zaktualizować system, zainstalować Nginx (co najmniej 1.9.5 dla SSL) i MySQL. Linia ufw otwiera HTTP i HTTPS, jeśli ta zapora jest aktywna:

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

W nowszych wersjach Ubuntu konto root MySQL uwierzytelnia się przez gniazdo, czego Ghost nie obsługuje. Proszę nadać mu hasło:

Terminal, a potem konsola MySQL
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 wymaga Node.js 22: wersje 20, 21, 23 i kolejne nie są obsługiwane. Projekt każe zainstalować go dla całego systemu, w ten sposób:

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

Uruchomienie instalacji

Ghost instaluje się we własnym katalogu, z określonym właścicielem i uprawnieniami. Zamiast sitename proszę wpisać wybraną nazwę:

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

Polecenie zadaje wtedy pytania, a projekt zaleca odpowiadać twierdząco na każdy proponowany krok:

Strona odpowiada wtedy, a https://example.com/ghost zaprasza do utworzenia konta właściciela. Jeśli instalacja zostanie przerwana, ghost setup wznawia konfigurację; jeśli się nie powiedzie, ghost uninstall czyści lepiej niż usunięcie katalogu. ghost doctor sprawdza system w każdej chwili.

Instalacja Ghost przez Docker Compose (preview)

Projekt przedstawia tę metodę jako „preview”: w jego oczach jest zupełnie nowa. To ona pozwala samodzielnie hostować analitykę webową i ActivityPub.

Na serwerze z zainstalowanym Dockerem proszę pobrać oficjalne narzędzia do /opt/ghost i skopiować dwa pliki przykładowe:

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

W pliku .env proszę uzupełnić te wartości:

W caddy/Caddyfile proszę odkomentować blok odpowiadający Państwa przypadkowi: przekierowanie z www na domenę bez przedrostka albo odwrotnie, lub osobna domena administracji. Następnie proszę uruchomić Ghost i dokończyć konfigurację pod /ghost:

Terminal
docker compose pull
docker compose up -d

Analityka webowa i ActivityPub

Analityka wymaga konta Tinybird, usługi zewnętrznej. Z katalogu /opt/ghost proszę zalogować się, wdrożyć jej konfigurację i pobrać tokeny do wklejenia w .env, w sekcji „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 działa od razu z usługą hostowaną przez projekt, bezpłatną w granicach limitów użycia, które publikuje jej dokumentacja. Aby samodzielnie hostować własną, proszę odkomentować ACTIVITYPUB_TARGET=activitypub:8080. Następnie w .env proszę włączyć wybrany profil lub profile i uruchomić kontenery ponownie:

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

W przypadku ActivityPub projekt każe też odtworzyć Ghost i Caddy, poleceniem docker compose up -d --force-recreate ghost caddy.

Przejście z Ghost-CLI na Docker Compose

Po sklonowaniu i konfiguracji bash scripts/migrate.sh kopiuje katalog content, importuje bazę do kontenera MySQL i uruchamia Caddy zamiast Nginx. Proponuje zatrzymanie Nginx, co wyłącza stronę: jeśli na serwerze działają inne strony, proszę odpowiedzieć nie. Nie usuwa żadnych danych. bash recovery_instructions.sh przywraca pierwotną stronę, jeśli przerwą Państwo migrację.

HTTPS i domena administracji

Administracja Ghost musi działać przez HTTPS, a projekt zaleca HTTPS dla całej strony: bez niego identyfikatory i hasła krążą jawnie. W Docker Compose zajmuje się tym Caddy. W Ghost-CLI certyfikat instaluje się przy instalacji, a po fakcie robi to polecenie:

Terminal, w katalogu strony
ghost setup ssl

Aby zmienić adres strony zainstalowanej przez Ghost-CLI, ghost config url https://example.com aktualizuje konfigurację, a ghost restart ją stosuje.

Projekt radzi też osobną domenę administracji, która zmniejsza powierzchnię ataku. Ścieżka pozostaje /ghost/. W Ghost-CLI deklaruje się ją w config.production.json:

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

W Docker Compose proszę wpisać ADMIN_DOMAIN, odkomentować jej blok w Caddyfile i uruchomić docker compose up -d --force-recreate ghost caddy. Ta domena również potrzebuje rekordów A i AAAA.

MySQL 8, baza produkcyjna

MySQL 8 to jedyna baza, którą projekt obsługuje w produkcji. Ghost-CLI instaluje się z MySQL 8.0 lub 8.4, a plik Compose dostarcza obraz MySQL 8.0.

E-maile i newslettery

Ghost rozróżnia dwie wysyłki, które nie idą tą samą drogą. To najważniejsza rzecz do ustawienia po instalacji.

WysyłkaPrzykładyCo ją obsługuje
TransakcyjnaZaproszenia zespołu, zapomniane hasła, rejestracje i linki logowania członków, kod logowania z nowego urządzeniaKonfiguracja mail Ghost, przez SMTP
NewsletteryArtykuły wysyłane do członkówAPI Mailgun, którego klucze wpisuje się w ustawieniach „Email newsletter”

Przekaźnik SMTP, dla e-maili transakcyjnych

Dokumentacja zalicza tę konfigurację do wymaganych w produkcji. Ghost wysyła też kod e-mailem, gdy wykryje logowanie z nowego urządzenia: przekaźnik proszę ustawić przed zaproszeniem zespołu.

Na VPS Simafri wysyłka odbywa się przez uwierzytelniony przekaźnik SMTP, na porcie 587: adres posiadanego już konta pocztowego albo Simafri Suite.

config.production.json (Ghost-CLI), a potem 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), sekcja 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, po zmianie pliku .env
docker compose up -d --force-recreate ghost

Mailgun, dla newsletterów

Przekaźnik SMTP nie obejmuje newsletterów. Według dokumentacji wysyłka masowa nie odbywa się przez SMTP, a Mailgun jest obecnie jedyną usługą wysyłki masowej, którą Ghost obsługuje. Zakładają Państwo własne konto Mailgun i wpisują jego klucze API w ustawieniach Ghost.

Jeśli nie wysyłają Państwo artykułów e-mailem, nie potrzebują żadnego konta Mailgun: te ustawienia można pominąć. Jeśli wolą Państwo inne narzędzie do newsletterów, projekt proponuje synchronizację członków do niego, na przykład przez Zapier lub jego przewodniki integracji.

Kopia zapasowa i przywracanie Ghost

Ghost oferuje trzy poziomy kopii i nie zawierają one tego samego. Aby odtworzyć stronę identycznie, projekt każe kopiować bezpośrednio bazę i katalog content.

MetodaCo zawieraDo czego służy
ghost backup (Ghost-CLI)Zip: treści w JSON, członkowie w CSV, motywy, obrazy, pliki i media, trasy i przekierowaniaŚrodek ostrożności przed aktualizacją
Eksport z administracjiZip: treści i ustawienia, członkowie, statystyki artykułów, motywy, trasy i przekierowania, do wyboru. Bez komentarzy, historii aktywności członków i mediówPrzeniesienie treści na inną stronę
Baza i katalog contentCałość danychOdtwarzanie po awarii lub dokładna kopia

Eksport znajduje się w „Settings”, „Advanced”, „Import/Export”, zakładka „Export”, przycisk „All data”. Dla pełnej kopii, z Ghost-CLI, konto MySQL i nazwę bazy do przepisania podaje 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/

W Docker Compose oficjalne narzędzie przechowuje treści w data/ghost. Zrzut ma postać podaną przez obraz MySQL, a hasło root jest już w kontenerze. Proszę zachować także kopię .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

Przywracanie

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 pliki proszę skopiować poza serwer, przez rsync lub scp, i wykonać próbę przywracania na maszynie testowej. Jeśli wracają Państwo z eksportu z płatnymi członkami, przed importem członków proszę podłączyć to samo konto Stripe.

Aktualizacja Ghost

Projekt publikuje aktualizacje co tydzień i przypomina, że publiczny serwer WWW musi pozostać aktualny. Proszę przeczytać informacje o wydaniu, a następnie uruchomić polecenie swojej metody.

Z Ghost-CLI

Terminal, w katalogu strony
ghost check-update
ghost backup
ghost update

Z Docker Compose

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

Ostatnia linia, opcjonalna, usuwa stare obrazy. GHOST_VERSION proszę zostawić zakomentowane w .env: przypięcie wersji blokuje te polecenia aktualizacji.

Utwardzanie i rozwój instancji

Dokumentacja podaje kilka ustawień dla serwera produkcyjnego:

Jeśli chodzi o obciążenie, projekt stawia przed Ghost CDN i warstwę pamięci podręcznej. Zaznacza, że klastrowanie i sharding nie są obsługiwane: stronę obsługuje jedna instancja, a pamięć podręczna absorbuje ruch.

Kto za co odpowiada na Managed VPS

Samodzielny hosting wymaga prowadzenia serwera, oprócz samej aplikacji. Na Managed VPS nasze zespoły przejmują serwer i proaktywnie czuwają nad Państwa instancją; Ghost pozostaje Państwa oprogramowaniem, z Państwa ustawieniami i danymi.

TematNasze zespołyPaństwo
SerwerAktualizacje systemu i zabezpieczeń, w tym interwencje na serwerzeMoment dogodny dla Państwa działalności
NadzórSerwer pod opieką całą dobę, 7 dni w tygodniu, z interwencją bez czekania na Państwa telefonPaństwa treści, członkowie i subskrypcje
GhostProaktywna opieka: wychwytujemy błędy, spowolnienia i brak miejsca na dysku oraz polecamy poprawkęInstalacja, aktualizacje, ustawienia, przekaźnik SMTP i konto Mailgun, które wdrażają Państwo sami albo Państwa asystent AI
Kopie zapasoweCo noc, szyfrowane i przechowywane poza maszyną; przywracanie w cenieZgłoszenie prośby o przywrócenie, gdy będzie potrzebne
MigracjaMigracja Państwa obecnego serwera, bezpłatnaMoment przełączenia

Jeśli wolą Państwo, aby nasze zespoły interweniowały w samej aplikacji, usługa ta jest rozliczana godzinowo lub ryczałtowo, z wyceną przekazaną przed interwencją.

Serwer prowadzony za Państwa dla witryny na Ghost

Z Managed VPS od Simafri nasze zespoły utrzymują serwer Państwa instancji Ghost w aktualności, nadzorują go dniem i nocą i interweniują bez czekania na Państwa telefon; proaktywnie czuwają także nad Państwa instancją i polecają przydatne poprawki, które wdrażają Państwo sami albo Państwa asystent AI. Kopie zapasowe są szyfrowane co noc i przechowywane poza maszyną, ich przywracanie jest w cenie, a migracja obecnego serwera jest bezpłatna.

Poznaj Managed VPS

Częste pytania

Czy Ghost jest bezpłatny przy samodzielnym hostingu?

Tak. Ghost jest udostępniany na licencji MIT: mogą Państwo używać go w firmie i dostosowywać, zachowując informację o licencji. Pozostają usługi wokół niego: serwer, przekaźnik e-maili, Mailgun, jeśli wysyłają Państwo newslettery, oraz Tinybird, jeśli chcą Państwo jego analityki.

Jakiej konfiguracji wymaga hostowanie Ghost?

Projekt zaleca Ubuntu 22.04, 24.04 lub 26.04, Nginx, Node.js 22, MySQL 8.0 lub 8.4, systemd, co najmniej 1 GB pamięci, domenę i użytkownika, który nie jest rootem. Dla Docker Compose podaje jako przykład serwer z 2 GB i 1 procesorem.

Czy instalować Ghost przez Ghost-CLI, czy przez Docker?

Ghost-CLI to instalacja, którą projekt zaleca w produkcji. Docker Compose jest wersją preview, jedyną pozwalającą na samodzielnie hostowaną analitykę webową i ActivityPub, a projekt mówi, że zmierza ku temu narzędziu. Kreator pozwala przejść z Ghost-CLI na Docker Compose.

Czy Ghost działa z SQLite, MariaDB lub PostgreSQL?

W produkcji jedyną obsługiwaną bazą jest MySQL 8. Projekt zaleca ponowną instalację na MySQL 8 z SQLite oraz migrację do MySQL 8 z MariaDB. Jego dokumentacja nie przewiduje PostgreSQL.

Czy newslettery Ghost można wysyłać przez SMTP?

Nie. SMTP służy do e-maili transakcyjnych: zaproszeń, haseł, linków logowania członków. Newslettery wymagają API Mailgun, jedynej obsługiwanej usługi wysyłki masowej. Bez wysyłania artykułów e-mailem żadne konto Mailgun nie jest potrzebne.

Jak wykonać kopię zapasową samodzielnie hostowanej strony Ghost?

Dla pełnego odtworzenia proszę skopiować bazę MySQL przez mysqldump, a katalog content przez tar. Polecenie ghost backup tworzy zip przed aktualizacją. Eksport z administracji pomija komentarze, historię aktywności członków i media.

Jak zaktualizować Ghost?

W Ghost-CLI proszę uruchomić ghost backup, a potem ghost update w katalogu strony, a w razie problemów ghost update --rollback. W Docker Compose proszę uruchomić git pull, docker compose pull i docker compose up -d w /opt/ghost.

Czy Managed VPS obejmuje Ghost?

Managed VPS obejmuje serwer: system, bezpieczeństwo, nadzór i kopie zapasowe. Nasze zespoły proaktywnie czuwają też nad Państwa instancją i polecają przydatne poprawki, które wdrażają Państwo sami. Interwencja w aplikacji jest rozliczana godzinowo lub ryczałtowo.

Źródła i oficjalna dokumentacja

Skontaktuj się z nami