A găzdui Ghost pe un Managed VPS înseamnă să vă publicați articolele, să vă strângeți membrii și să vă trimiteți newsletterele de pe o mașină a dumneavoastră, pe care echipele noastre o țin la zi și o supraveghează zi și noapte. Ghost este un software liber sub licență MIT. Acest ghid urmează documentația sa oficială: Ghost-CLI sau Docker Compose, MySQL, HTTPS, e-mailurile, backupurile și actualizările.
Autor: Simon Vasconcelos Lee
Publicat la 9 noiembrie 2026Timp de citire: 13 minute
content, apoi actualizați cu ghost update sau docker compose pull: proiectul publică actualizări în fiecare săptămână.Ghost este o platformă de publicare profesională și liberă, scrisă pentru Node.js. Ea reunește într-un singur loc ceea ce o publicație independentă asamblează adesea din mai multe instrumente.
Potrivit documentației, produsul are aceleași funcții și pe propriul server. Ceea ce îl înconjoară vă revine: trimiterea newsletterelor, analiza traficului web, un CDN și backupurile complete ale site-ului.
Ghost este publicat sub licența MIT. Ea permite utilizarea, copierea, modificarea, îmbinarea, publicarea, distribuirea, sublicențierea și vânzarea software-ului, cu o singură condiție: păstrarea mențiunii de copyright și a textului licenței în orice copie. Puteți deci rula Ghost în firmă, îl puteți adapta și publica cu el pentru clienții dumneavoastră, fără nicio licență de cumpărat.
Licența acoperă codul. Numele și logoul aparțin Ghost Foundation și țin de politica sa de marcă: citiți-o dacă construiți o ofertă în jurul software-ului. Ghost este o marcă înregistrată a Ghost Foundation.
This publication is independent of and not affiliated with, authorized, sponsored, or approved by Ghost Foundation. În română: această publicație este independentă de Ghost Foundation și nu este nici afiliată la aceasta, nici autorizată, sponsorizată sau aprobată de aceasta.
Proiectul documentează două căi pentru producție. Ghost-CLI este instalarea pe care o recomandă oficial, iar Docker Compose este o „preview”, pe care o descrie ca fiind complet nouă. El indică și că se îndreaptă spre această unealtă Docker, în loc să facă Ghost-CLI să evolueze, și furnizează un asistent pentru a trece de la una la alta.
| Punct | Ghost-CLI | Docker Compose (preview) |
|---|---|---|
| Sistem | Ubuntu 22.04, 24.04 sau 26.04 | Un server Linux cu Docker 20.10.13 sau mai recent |
| Memorie | Cel puțin 1 GB | Proiectul dă ca exemplu un server de 2 GB și 1 procesor |
| Server web și HTTPS | Nginx și un certificat Let’s Encrypt, instalate de Ghost-CLI | Caddy, într-un container, care se ocupă de TLS |
| Baza de date | MySQL 8.0 sau 8.4 instalat pe server | MySQL într-un container |
| Analiza traficului web | Incompatibilă | Disponibilă, cu un cont Tinybird |
| Rețea socială (ActivityPub) | Serviciul găzduit de proiect, gratuit în limitele sale de utilizare | Același serviciu implicit sau al dumneavoastră, pe propriul server |
Faceți ca domeniul să indice spre server înaintea instalării: certificatul se instalează în timpul configurării. Pe un VPS Simafri, vizitatorii ajung pe porturile 80 și 443, sub numele de domeniu al serverului, cu înregistrări A și AAAA. Adresa site-ului se scrie întreagă, cu protocolul ei, precum https://example.com: o adresă IP provoacă erori.
Dincolo de memoria indicată mai sus, proiectul nu indică nici discul, nici sarcina necesare: dimensiunea depinde de traficul, de imaginile și de fișierele media ale dumneavoastră. Pe un Managed VPS, descrieți-ne publicația și vă recomandăm dimensiunea potrivită.
Ghost-CLI se folosește cu un utilizator care nu este root și al cărui nume nu este ghost, căci acest nume intră în conflict cu unealta. Creați-l din contul root, înlocuind user cu numele ales:
adduser <user>
usermod -aG sudo <user>
su - <user>
Actualizați sistemul, instalați Nginx (1.9.5 minimum pentru SSL) și MySQL. Linia ufw deschide HTTP și HTTPS dacă acest firewall este activ:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nginx
sudo ufw allow 'Nginx Full'
sudo apt-get install mysql-server
Pe versiunile recente de Ubuntu, contul root MySQL se autentifică prin socket, lucru pe care Ghost nu îl suportă. Dați-i o parolă:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '<your-new-root-password>';
FLUSH PRIVILEGES;
exit
Ghost cere Node.js 22: versiunile 20, 21, 23 și următoarele nu sunt suportate. Proiectul cere să-l instalați pentru întregul sistem, în felul acesta:
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 instalează în propriul director, cu un proprietar și drepturi precise. Înlocuiți sitename cu numele ales de dumneavoastră:
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
Comanda pune apoi întrebările ei, iar proiectul recomandă să răspundeți da la fiecare etapă propusă:
https://.localhost pentru gazdă, root și parola setată mai sus, apoi numele bazei, pe care Ghost-CLI o creează.Site-ul răspunde atunci, iar https://example.com/ghost vă invită să creați contul proprietarului. Dacă instalarea este întreruptă, ghost setup reia configurarea; dacă eșuează, ghost uninstall curăță mai bine decât ștergerea directorului. ghost doctor verifică sistemul în orice moment.
Proiectul prezintă această metodă ca pe o „preview”: ea este complet nouă în ochii lui. Ea permite găzduirea pe propriul server a analizei traficului web și a ActivityPub.
Pe un server unde Docker este instalat, preluați unealta oficială în /opt/ghost și copiați cele două fișiere de exemplu ale ei:
git clone https://github.com/TryGhost/ghost-docker.git /opt/ghost && cd /opt/ghost
cp .env.example .env
cp caddy/Caddyfile.example caddy/Caddyfile
În fișierul .env, completați aceste valori:
DOMAIN: domeniul site-ului, de exemplu example.com.ADMIN_DOMAIN: un domeniu separat pentru administrare, dacă doriți.DATABASE_ROOT_PASSWORD și DATABASE_PASSWORD: două parole generate cu openssl rand -hex 32. Ele se fixează o dată pentru totdeauna: după inițializarea bazei, schimbarea lor strică conexiunea.În caddy/Caddyfile, decomentați blocul care corespunde cazului dumneavoastră: redirecționarea de la www către domeniul simplu sau invers, ori un domeniu de administrare separat. Lansați apoi Ghost și terminați configurarea pe /ghost:
docker compose pull
docker compose up -d
HTTP_PORT și HTTPS_PORT dacă Ghost trece în spatele altui proxy invers. MySQL rămâne pe rețeaua internă a containerelor.data/ghost, iar baza în data/mysql, două locuri reglabile în .env.-f compose.yml -f compose.ipv6.yml la comenzile dumneavoastră docker compose up.Analiza cere un cont Tinybird, serviciu extern. Din /opt/ghost, conectați-vă, implementați configurația lui și preluați tokenurile de lipit în .env, secțiunea „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 funcționează din prima cu serviciul găzduit de proiect, gratuit în limite de utilizare pe care le publică documentația sa. Pentru a-l găzdui pe al dumneavoastră, decomentați ACTIVITYPUB_TARGET=activitypub:8080. Activați apoi în .env profilul sau profilurile dorite, apoi relansați containerele:
COMPOSE_PROFILES=analytics,activitypub
docker compose pull
docker compose up -d
Pentru ActivityPub, proiectul cere să recreați și Ghost și Caddy, cu docker compose up -d --force-recreate ghost caddy.
După clonare și configurare, bash scripts/migrate.sh copiază directorul content, importă baza în containerul MySQL și pornește Caddy în locul Nginx. El propune oprirea Nginx, ceea ce scoate site-ul offline: răspundeți nu dacă pe server rulează și alte site-uri. Nu șterge nicio dată. bash recovery_instructions.sh restabilește site-ul inițial dacă întrerupeți migrarea.
Administrarea Ghost trebuie să treacă prin HTTPS, iar proiectul recomandă HTTPS pentru întregul site: fără el, identificatorii și parolele circulă în clar. Cu Docker Compose, Caddy se ocupă de asta. Cu Ghost-CLI, instalarea pune certificatul, iar o comandă o face și ulterior:
ghost setup ssl
Pentru a schimba adresa unui site instalat cu Ghost-CLI, ghost config url https://example.com actualizează configurația, iar ghost restart o aplică.
Proiectul sfătuiește și un domeniu de administrare separat, care reduce suprafața de atac. Calea rămâne /ghost/. Cu Ghost-CLI, el se declară în config.production.json:
"admin": {
"url": "https://admin.example.com"
}
Cu Docker Compose, completați ADMIN_DOMAIN, decomentați blocul său din Caddyfile și rulați docker compose up -d --force-recreate ghost caddy. Acest domeniu are nevoie și el de înregistrările sale A și AAAA.
MySQL 8 este singura bază de date pe care proiectul o suportă în producție. Ghost-CLI se instalează cu MySQL 8.0 sau 8.4, iar fișierul Compose furnizează o imagine MySQL 8.0.
ghost config database.client, în directorul site-ului, indică baza folosită.Ghost distinge două trimiteri, care nu trec pe același drum. Este cel mai important punct de setat după instalare.
| Trimitere | Exemple | Ce o poartă |
|---|---|---|
| Tranzacțională | Invitațiile echipei, parolele uitate, înscrierile și linkurile de conectare ale membrilor, codul de conectare de pe un dispozitiv nou | Configurația mail a Ghost, în SMTP |
| Newslettere | Articolele trimise membrilor dumneavoastră | API-ul Mailgun, ale cărui chei se introduc în setările „Email newsletter” |
Documentația clasează această configurație ca fiind necesară în producție. Ghost trimite și un cod prin e-mail când detectează o conectare de pe un dispozitiv nou: setați acest releu înainte de a vă invita echipa.
Pe un VPS Simafri, trimiterea trece printr-un releu SMTP autentificat, pe portul 587: adresa unui cont de e-mail pe care îl aveți deja sau 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 trimite prin Nodemailer, a cărui documentație cere secure pe false pe portul 587, conexiunea trecând apoi în STARTTLS. requireTLS refuză trimiterea dacă această trecere eșuează. Fișierul de exemplu al depozitului indică portul 465 și secure=true: înlocuiți aceste două linii.from poartă o adresă reală și citită, ceea ce îmbunătățește livrabilitatea potrivit proiectului, iar înregistrările SPF, DKIM și DMARC ale domeniului de trimitere completează setarea.Releul SMTP nu acoperă newsletterele. Potrivit documentației, trimiterea în masă nu se face prin SMTP, iar Mailgun este, în prezent, singurul serviciu de trimitere în masă pe care Ghost îl suportă. Vă creați contul Mailgun și introduceți cheile sale API în setările Ghost.
Dacă nu vă trimiteți articolele prin e-mail, nu aveți nevoie de niciun cont Mailgun: aceste setări se ignoră. Dacă preferați un alt instrument de newsletter, proiectul propune sincronizarea membrilor dumneavoastră către el, de exemplu cu Zapier sau cu ghidurile sale de integrare.
Ghost propune trei niveluri de copie, iar ele nu conțin același lucru. Pentru a reconstrui un site identic, proiectul cere salvarea directă a bazei și a directorului content.
| Metoda | Ce conține | Pentru ce utilizare |
|---|---|---|
ghost backup (Ghost-CLI) | Un zip: conținut în JSON, membri în CSV, teme, imagini, fișiere și media, rute și redirecționări | Precauția înainte de o actualizare |
| Exportul din administrare | Un zip: conținut și setări, membri, statistici ale articolelor, teme, rute și redirecționări, la alegere. Fără comentarii, fără istoricul de activitate al membrilor, fără media | Mutarea conținutului către un alt site |
Baza și directorul content | Totalitatea datelor | Reluarea după un dezastru sau o copie exactă |
Exportul se găsește în „Settings”, „Advanced”, „Import/Export”, fila „Export”, butonul „All data”. Pentru copia completă, cu Ghost-CLI, contul MySQL și numele bazei de reluat se află în 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/
Cu Docker Compose, unealta oficială păstrează conținutul în data/ghost. Dump-ul reia forma dată de imaginea MySQL, iar parola root se află deja în container. Păstrați și o copie a lui .env și 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
Copiați aceste fișiere în afara serverului, cu rsync sau scp, și faceți o probă de restaurare pe o mașină de test. Dacă reluați de la un export cu membri plătitori, conectați același cont Stripe înainte de a vă importa membrii.
Proiectul publică actualizări în fiecare săptămână și amintește că un server web public trebuie ținut la zi. Citiți notele de versiune, apoi rulați comanda metodei dumneavoastră.
ghost check-update
ghost backup
ghost update
ghost update --rollback revine la versiunea precedentă dacă o actualizare merge prost.content rămâne pe loc în timpul actualizărilor.ghost update [version] --force cu versiunea dumneavoastră actuală, căci dependențele sale binare sunt compilate pentru o versiune precisă de Node.js.cd /opt/ghost
git pull
docker compose pull
docker compose up -d
docker image prune
Ultima linie, facultativă, elimină imaginile vechi. Lăsați GHOST_VERSION comentat în .env: fixarea unei versiuni blochează aceste comenzi de actualizare.
Documentația dă mai multe setări pentru un server în producție:
mysql_secure_installation după o instalare Ghost-CLI reușită.Pentru sarcină, proiectul plasează un CDN și un strat de cache în fața Ghost. El precizează că clusteringul și sharding-ul nu sunt suportate: o singură instanță servește site-ul, iar cache-ul absoarbe traficul.
Găzduirea pe propriul server cere să țineți serverul pe lângă aplicație. Pe un Managed VPS, echipele noastre preiau serverul și vă urmăresc proactiv instanța; Ghost rămâne software-ul dumneavoastră, cu setările și datele sale.
| Subiect | Echipele noastre | Dumneavoastră |
|---|---|---|
| Serverul | Actualizări de sistem și de securitate, intervenții pe server incluse | Momentul potrivit activității dumneavoastră |
| Monitorizarea | Server urmărit 24 de ore din 24, 7 zile din 7, cu intervenție fără a vă aștepta apelul | Conținutul, membrii și abonamentele dumneavoastră |
| Ghost | Urmărire proactivă: erori, încetiniri și spațiu pe disc depistate, corectură recomandată | Instalarea, actualizările, setările, releul SMTP și contul Mailgun, pe care le aplicați dumneavoastră sau asistentul dumneavoastră AI |
| Backupurile | În fiecare noapte, criptate și păstrate în afara mașinii; restaurare inclusă | Cererea de restaurare, când aveți nevoie de ea |
| Migrarea | Serverul dumneavoastră actual migrat, gratuit | Momentul trecerii |
Dacă preferați ca echipele noastre să intervină în aplicația însăși, această prestație se facturează la oră sau la preț fix, cu o ofertă comunicată înainte de intervenție.
Cu un Managed VPS Simafri, echipele noastre țin la zi serverul instanței dumneavoastră Ghost, îl monitorizează zi și noapte și intervin fără a vă aștepta apelul; ele vă urmăresc proactiv și instanța și vă recomandă corecturile utile, pe care le aplicați dumneavoastră sau asistentul dumneavoastră AI. Backupurile sunt criptate în fiecare noapte și păstrate în afara mașinii, restaurarea lor este inclusă, iar migrarea serverului actual este gratuită.
Da. Ghost este sub licență MIT: îl puteți folosi în firmă și îl puteți adapta, păstrând mențiunea de licență. Rămân serviciile din jurul lui: serverul, releul de e-mailuri, Mailgun dacă trimiteți newslettere, Tinybird dacă doriți analiza sa de trafic.
Proiectul recomandă Ubuntu 22.04, 24.04 sau 26.04, Nginx, Node.js 22, MySQL 8.0 sau 8.4, systemd, cel puțin 1 GB de memorie, un domeniu și un utilizator care nu este root. Pentru Docker Compose, dă ca exemplu un server de 2 GB și 1 procesor.
Ghost-CLI este instalarea pe care proiectul o recomandă pentru producție. Docker Compose este o preview, singura care permite analiza traficului web și ActivityPub găzduit pe propriul server, iar proiectul spune că se îndreaptă spre această unealtă. Un asistent permite trecerea de la Ghost-CLI la Docker Compose.
În producție, MySQL 8 este singura bază de date suportată. Proiectul recomandă o reinstalare pe MySQL 8 de la SQLite și o migrare spre MySQL 8 de la MariaDB. Documentația sa nu prevede PostgreSQL.
Nu. SMTP servește e-mailurilor tranzacționale: invitații, parole, linkuri de conectare ale membrilor. Newsletterele cer API-ul Mailgun, singurul serviciu de trimitere în masă suportat. Fără trimiterea articolelor prin e-mail, nu este necesar niciun cont Mailgun.
Pentru o reluare completă, salvați baza MySQL cu mysqldump și directorul content cu tar. Comanda ghost backup produce un zip înainte de o actualizare. Exportul din administrare lasă deoparte comentariile, istoricul de activitate al membrilor și fișierele media.
Cu Ghost-CLI, rulați ghost backup apoi ghost update în directorul site-ului și ghost update --rollback în caz de problemă. Cu Docker Compose, rulați git pull, docker compose pull și docker compose up -d în /opt/ghost.
Un Managed VPS acoperă serverul: sistemul, securitatea, monitorizarea și backupurile. Echipele noastre vă urmăresc proactiv și instanța și vă recomandă corecturile utile, pe care le aplicați dumneavoastră. O intervenție în aplicație se facturează la oră sau la preț fix.
Simafri
Să discutăm despre site-ul dumneavoastră
Povestiți-ne despre proiectul dumneavoastră în câteva cuvinte: vă vom răspunde rapid.
Mulțumim! Cererea dumneavoastră a fost trimisă. Vă vom răspunde în curând.
Preferați e-mailul? Scrieți-ne la support@simafri.com.