Как да хоствате Ghost® на Managed VPS: публикацията ви, на ваш сървър

Да хоствате Ghost на Managed VPS означава да публикувате статиите си, да събирате членовете си и да изпращате бюлетините си от своя собствена машина, която нашите екипи поддържат актуална и наблюдават денем и нощем. Ghost е свободен софтуер с лиценз MIT. Това ръководство следва официалната му документация: Ghost-CLI или Docker Compose, MySQL, HTTPS, имейлите, резервните копия и обновленията.

Simon Vasconcelos Lee Автор: Публикувано на 9 ноември 2026 г.Време за четене: 13 минути

Всички ръководства

Накратко

  1. Лицензът MIT на Ghost позволява свободна употреба във фирма, като запазите лицензната му бележка. Името и логото се уреждат отделно от политиката за марката на Ghost Foundation.
  2. Проектът препоръчва Ghost-CLI на Ubuntu, с Nginx, Node.js 22, MySQL 8 и поне 1 GB памет. Методът му с Docker Compose, в „preview“, добавя уеб анализ и самостоятелно хостван ActivityPub.
  3. MySQL 8 е единствената база данни, поддържана в продукция.
  4. Предвидете два пътя за имейлите: SMTP реле за транзакционните имейли, задължително, и Mailgun за бюлетините, единствената поддържана услуга за масово изпращане.
  5. Архивирайте базата и папката content, после обновявайте с ghost update или docker compose pull: проектът публикува обновления всяка седмица.

Какво прави Ghost

Ghost е професионална платформа за публикуване със свободен код, написана за Node.js. Тя събира на едно място това, което независимата публикация често сглобява от няколко инструмента.

Според документацията продуктът има същите функции при самостоятелно хостване. Това, което го заобикаля, остава ваша грижа: изпращането на бюлетините, уеб анализът, CDN и пълните резервни копия на сайта.

Лицензът MIT и марката

Ghost е публикуван с лиценз MIT. Той разрешава да използвате, копирате, променяте, обединявате, публикувате, разпространявате, преотстъпвате и продавате софтуера, при едно условие: да запазите бележката за авторските права и текста на лиценза във всяко копие. Можете следователно да пускате Ghost във фирма, да го приспособявате и да публикувате в него за клиентите си, без да купувате лиценз.

Лицензът покрива кода. Името и логото принадлежат на Ghost Foundation и се уреждат от нейната политика за марката: прочетете я, ако изграждате оферта около софтуера. Ghost е регистрирана марка на Ghost Foundation.

This publication is independent of and not affiliated with, authorized, sponsored, or approved by Ghost Foundation. На български: тази публикация е независима от Ghost Foundation и не е свързана с нея, нито е разрешена, спонсорирана или одобрена от нея.

Ghost-CLI или Docker Compose: два официални метода

Проектът документира два пътя за продукция. Ghost-CLI е инсталирането, което препоръчва официално, а Docker Compose е „preview“, която той нарича съвсем нова. Посочва и че се насочва към този инструментариум с Docker, вместо да развива Ghost-CLI, и предоставя помощник за преминаване от единия към другия.

ТочкаGhost-CLIDocker Compose (preview)
СистемаUbuntu 22.04, 24.04 или 26.04Linux сървър с Docker 20.10.13 или по-нов
ПаметПоне 1 GBПроектът дава за пример сървър с 2 GB и 1 процесор
Уеб сървър и HTTPSNginx и сертификат Let’s Encrypt, поставени от Ghost-CLICaddy, в контейнер, който поема TLS
База данниMySQL 8.0 или 8.4, инсталиран на сървъраMySQL в контейнер
Уеб анализНесъвместимНаличен, с акаунт в Tinybird
Социална мрежа (ActivityPub)Услугата, хоствана от проекта, безплатна в рамките на ограниченията ѝ за употребаСъщата услуга по подразбиране или вашата, хоствана самостоятелно

Преди да започнете: домейнът и сървърът

Насочете домейна към сървъра преди инсталирането: сертификатът се поставя по време на настройването. На VPS на Simafri посетителите пристигат на портове 80 и 443, на името на домейна на сървъра, със записи A и AAAA. Адресът на сайта се пише изцяло, с протокола си, като https://example.com: IP адрес води до грешки.

Освен посочената по-горе памет, проектът не дава числа за диска и натоварването: размерът зависи от трафика, изображенията и медиите ви. На Managed VPS ни опишете публикацията си и ще ви препоръчаме подходящия размер.

Инсталиране на Ghost с Ghost-CLI на Ubuntu

Ghost-CLI се използва с потребител, който не е root и чието име не е ghost, защото това име влиза в конфликт с инструмента. Създайте го от акаунта root, като замените user с избраното име:

Терминал, като root
adduser <user>
usermod -aG sudo <user>
su - <user>

Nginx и MySQL

Обновете системата, инсталирайте Nginx (най-малко 1.9.5 за SSL) и MySQL. Редът с ufw отваря HTTP и HTTPS, ако тази защитна стена е активна:

Терминал
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nginx
sudo ufw allow 'Nginx Full'
sudo apt-get install mysql-server

При новите версии на Ubuntu акаунтът root на MySQL се удостоверява чрез сокет, което Ghost не поддържа. Задайте му парола:

Терминал, после конзолата на MySQL
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '<your-new-root-password>';
FLUSH PRIVILEGES;
exit

Node.js и Ghost-CLI

Ghost изисква Node.js 22: версиите 20, 21, 23 и следващите не се поддържат. Проектът изисква да го инсталирате за цялата система, по този начин:

Терминал
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 се инсталира в собствена папка, със собственик и конкретни права. Заменете sitename с името по ваш избор:

Терминал
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

Командата задава тогава въпросите си, а проектът препоръчва да отговаряте с да на всяка предложена стъпка:

Сайтът отговаря тогава, а https://example.com/ghost ви кани да създадете акаунта на собственика. Ако инсталирането бъде прекъснато, ghost setup продължава конфигурирането; ако пропадне, ghost uninstall почиства по-добре от изтриването на папката. ghost doctor проверява системата по всяко време.

Инсталиране на Ghost с Docker Compose (preview)

Проектът представя този метод като „preview“: за него той е съвсем нов. Именно той позволява самостоятелно хостване на уеб анализа и на ActivityPub.

На сървър с инсталиран Docker изтеглете официалния инструментариум в /opt/ghost и копирайте двата му примерни файла:

Терминал
git clone https://github.com/TryGhost/ghost-docker.git /opt/ghost && cd /opt/ghost
cp .env.example .env
cp caddy/Caddyfile.example caddy/Caddyfile

Във файла .env въведете тези стойности:

В caddy/Caddyfile разкоментирайте блока, който отговаря на вашия случай: пренасочване от www към голия домейн или обратното, или отделен домейн за администриране. Стартирайте после Ghost и завършете настройването на /ghost:

Терминал
docker compose pull
docker compose up -d

Уеб анализът и ActivityPub

Анализът изисква акаунт в Tinybird, външна услуга. От /opt/ghost влезте, разгънете конфигурацията му и вземете токените, които да поставите в .env, раздел „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 работи веднага с услугата, хоствана от проекта, безплатна в рамките на ограниченията за употреба, които публикува документацията ѝ. За да хоствате своя, разкоментирайте ACTIVITYPUB_TARGET=activitypub:8080. Включете после в .env желания профил или профили и стартирайте контейнерите наново:

.env
COMPOSE_PROFILES=analytics,activitypub
Терминал
docker compose pull
docker compose up -d

За ActivityPub проектът изисква да се създадат наново и Ghost, и Caddy, с docker compose up -d --force-recreate ghost caddy.

Преминаване от Ghost-CLI към Docker Compose

След клонирането и конфигурирането bash scripts/migrate.sh копира папката content, внася базата в контейнера на MySQL и стартира Caddy на мястото на Nginx. Предлага да спре Nginx, което изключва сайта: отговорете не, ако на сървъра работят и други сайтове. Не изтрива никакви данни. bash recovery_instructions.sh възстановява първоначалния сайт, ако прекъснете миграцията.

HTTPS и домейн за администриране

Администрирането на Ghost трябва да минава през HTTPS, а проектът препоръчва HTTPS за целия сайт: без него идентификаторите и паролите се движат в чист вид. С Docker Compose Caddy се грижи за това. С Ghost-CLI инсталирането поставя сертификата, а една команда го прави и впоследствие:

Терминал, в папката на сайта
ghost setup ssl

За да смените адреса на сайт, инсталиран с Ghost-CLI, ghost config url https://example.com обновява конфигурацията, а ghost restart я прилага.

Проектът съветва и отделен домейн за администриране, който намалява повърхността за атака. Пътят остава /ghost/. При Ghost-CLI той се декларира в config.production.json:

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

При Docker Compose въведете ADMIN_DOMAIN, разкоментирайте блока му в Caddyfile и изпълнете docker compose up -d --force-recreate ghost caddy. Този домейн също има нужда от свои записи A и AAAA.

MySQL 8, базата за продукция

MySQL 8 е единствената база, която проектът поддържа в продукция. Ghost-CLI се инсталира с MySQL 8.0 или 8.4, а файлът на Compose доставя образ на MySQL 8.0.

Имейлите и бюлетините

Ghost различава две изпращания, които не минават по един и същи път. Това е най-важната точка за настройване след инсталирането.

ИзпращанеПримериКакво го носи
ТранзакционноПокани към екипа, забравени пароли, регистрации и връзки за вход на членовете, код за вход от ново устройствоКонфигурацията mail на Ghost, чрез SMTP
БюлетиниСтатиите, изпратени до членовете виAPI на Mailgun, чиито ключове се въвеждат в настройките „Email newsletter“

SMTP релето, за транзакционните имейли

Документацията определя тази конфигурация като задължителна в продукция. Ghost изпраща и код по имейл, когато засече вход от ново устройство: настройте това реле, преди да поканите екипа си.

На VPS на Simafri изпращането минава през удостоверено SMTP реле, на порт 587: адресът на пощенски акаунт, който вече имате, или Simafri Suite.

config.production.json (Ghost-CLI), после 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), раздел 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>"
Терминал, след промяна на файла .env
docker compose up -d --force-recreate ghost

Mailgun, за бюлетините

SMTP релето не покрива бюлетините. Според документацията масовото изпращане не се прави чрез SMTP и Mailgun е, към днешна дата, единствената услуга за масово изпращане, която Ghost поддържа. Създавате свой акаунт в Mailgun и въвеждате API ключовете му в настройките на Ghost.

Ако не изпращате статиите си по имейл, не ви трябва никакъв акаунт в Mailgun: тези настройки се пренебрегват. Ако предпочитате друг инструмент за бюлетини, проектът предлага да синхронизирате членовете си към него, например със Zapier или с неговите ръководства за интеграция.

Архивиране и възстановяване на Ghost

Ghost предлага три нива на копиране и те не съдържат едно и също. За да възстановите сайт идентично, проектът изисква директно архивиране на базата и на папката content.

МетодКакво съдържаЗа какво се използва
ghost backup (Ghost-CLI)Zip: съдържание в JSON, членове в CSV, теми, изображения, файлове и медии, маршрути и пренасочванияПредпазната мярка преди обновяване
Експорт от администриранетоZip: съдържание и настройки, членове, статистика на статиите, теми, маршрути и пренасочвания, по избор. Без коментари, без история на активността на членовете, без медииПреместването на съдържанието към друг сайт
База и папка contentВсички данниВъзстановяването след бедствие или точно копие

Експортът се намира в „Settings“, „Advanced“, „Import/Export“, раздел „Export“, бутон „All data“. За пълното копие, с Ghost-CLI, акаунтът в MySQL и името на базата, които да използвате, са в config.production.json:

Терминал, 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/

С Docker Compose официалният инструментариум пази съдържанието в data/ghost. Дъмпът следва вида, даден от образа на MySQL, а паролата на root вече е в контейнера. Пазете и копие на .env и на Caddyfile.

Терминал, 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

Възстановяване

Терминал, 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
Терминал, 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

Копирайте тези файлове извън сървъра, с rsync или scp, и направете пробно възстановяване на тестова машина. Ако започвате от експорт с платени членове, свържете същия акаунт в Stripe, преди да внесете членовете си.

Обновяване на Ghost

Проектът публикува обновления всяка седмица и напомня, че публичният уеб сървър трябва да остава актуален. Прочетете бележките към версиите, после изпълнете командата на вашия метод.

С Ghost-CLI

Терминал, в папката на сайта
ghost check-update
ghost backup
ghost update

С Docker Compose

Терминал
cd /opt/ghost
git pull
docker compose pull
docker compose up -d
docker image prune

Последният ред, по желание, премахва старите образи. Оставете GHOST_VERSION коментиран в .env: фиксирането на версия блокира тези команди за обновяване.

Заздравяване и растеж на инстанцията

Документацията дава няколко настройки за сървър в продукция:

За натоварването проектът поставя CDN и слой за кеширане пред Ghost. Уточнява, че клъстерирането и шардингът не се поддържат: една-единствена инстанция обслужва сайта, а кешът поема трафика.

Кой какво прави на Managed VPS

Самостоятелното хостване изисква да поддържате сървъра освен приложението. На Managed VPS нашите екипи поемат сървъра и следят проактивно вашата инстанция; Ghost остава ваш софтуер, с неговите настройки и данни.

ТемаНашите екипиВие
СървърътОбновления на системата и на сигурността, включително намеси на сървъраМоментът, който пасва на вашата дейност
НаблюдениетоСървър, следен денонощно, 7 дни в седмицата, с намеса, без да се чака обаждането виВашето съдържание, вашите членове и вашите абонаменти
GhostПроактивно проследяване: грешки, забавяния и дисково пространство се откриват, препоръчва се корекцияИнсталирането, обновяванията, настройките, SMTP релето и акаунтът му в Mailgun, които прилагате вие или вашият AI асистент
Резервните копияВсяка нощ, криптирани и пазени извън машината; възстановяването е включеноЗаявката за възстановяване, когато ви потрябва
МиграциятаСегашният ви сървър е мигриран, безплатноМоментът на превключването

Ако предпочитате нашите екипи да се намесват в самото приложение, тази услуга се фактурира на час или на фиксирана цена, с оферта, съобщена преди намесата.

Сървър, поддържан за вашия сайт с Ghost

С Managed VPS от Simafri нашите екипи поддържат актуален сървъра на вашата инстанция на Ghost, наблюдават го денем и нощем и се намесват, без да чакат обаждането ви; те следят проактивно и вашата инстанция и ви препоръчват полезните корекции, които прилагате вие или вашият AI асистент. Резервните копия се криптират всяка нощ и се пазят извън машината, възстановяването им е включено, а миграцията от сегашния ви сървър е безплатна.

Разгледайте Managed VPS

Често задавани въпроси

Безплатен ли е Ghost при самостоятелно хостване?

Да. Ghost е с лиценз MIT: можете да го използвате във фирма и да го приспособявате, като запазите лицензната му бележка. Остават услугите около него: сървърът, релето за имейли, Mailgun, ако изпращате бюлетини, Tinybird, ако искате неговия анализ.

Каква конфигурация е нужна за хостване на Ghost?

Проектът препоръчва Ubuntu 22.04, 24.04 или 26.04, Nginx, Node.js 22, MySQL 8.0 или 8.4, systemd, поне 1 GB памет, домейн и потребител, който не е root. За Docker Compose дава за пример сървър с 2 GB и 1 процесор.

Ghost да се инсталира с Ghost-CLI или с Docker?

Ghost-CLI е инсталирането, което проектът препоръчва за продукция. Docker Compose е preview, единствената, която позволява уеб анализ и самостоятелно хостван ActivityPub, а проектът казва, че се насочва към този инструментариум. Помощник позволява преминаване от Ghost-CLI към Docker Compose.

Работи ли Ghost със SQLite, MariaDB или PostgreSQL?

В продукция MySQL 8 е единствената поддържана база. Проектът препоръчва преинсталиране върху MySQL 8 от SQLite и миграция към MySQL 8 от MariaDB. Документацията му не предвижда PostgreSQL.

Могат ли бюлетините на Ghost да се изпращат чрез SMTP?

Не. SMTP служи за транзакционните имейли: покани, пароли, връзки за вход на членовете. Бюлетините изискват API на Mailgun, единствената поддържана услуга за масово изпращане. Ако не изпращате статии по имейл, не е нужен акаунт в Mailgun.

Как се архивира самостоятелно хостван сайт с Ghost?

За пълно възстановяване архивирайте базата MySQL с mysqldump и папката content с tar. Командата ghost backup създава zip преди обновяване. Експортът от администрирането оставя настрана коментарите, историята на активността на членовете и медиите.

Как се обновява Ghost?

С Ghost-CLI изпълнете ghost backup, после ghost update в папката на сайта, и ghost update --rollback при проблем. С Docker Compose изпълнете git pull, docker compose pull и docker compose up -d в /opt/ghost.

Покрива ли Managed VPS Ghost?

Managed VPS покрива сървъра: система, сигурност, наблюдение и резервни копия. Нашите екипи следят проактивно и вашата инстанция и ви препоръчват полезните корекции, които прилагате вие. Намеса в самото приложение се фактурира на час или на фиксирана цена.

Източници и официална документация

Свързани ръководства

Разлика между управляван и неуправляван VPS: кой какво правиРазликата между управляван и неуправляван VPS се свежда до един въпрос: кой се грижи за сървъра, след като той вече работи. Думата „управляван“ обаче няма официално определение и от един хостинг доставчик до друг обхваща всичко от простото инсталиране на системата до цялостното стопанисване на сървъра. Това ръководство показва кой какво прави, ред по ред, заедно с междинното ниво на експертното съдействие, и дава въпросите, които премахват двусмислието, преди да подпишете.Резервни копия на VPS: какво да проверите, преди да подпишетеПочти всяко предложение за VPS обявява „включени резервни копия“. Зад тези думи може да стои копие всяка нощ, пазено извън машината и възстановявано от експерти, или моментна снимка, поставена на същия диск като сървъра. Това ръководство дава въпросите, които правят разликата, какво означава всеки отговор и как да проверите, че едно резервно копие наистина се възстановява.Колко RAM е нужна за VPS: правилото, според всяка употребаПаметта (RAM) е ресурсът, който най-често определя размера на един VPS: тя свършва първа, а когато свърши, сървърът не се забавя, а спира услуги. Това ръководство дава правилото за изчисление, колко консумира всеки компонент на едно приложение, типични профили и начина да измерите сървър, който вече работи.
Свържете се с нас