Да хоствате Ghost на Managed VPS означава да публикувате статиите си, да събирате членовете си и да изпращате бюлетините си от своя собствена машина, която нашите екипи поддържат актуална и наблюдават денем и нощем. Ghost е свободен софтуер с лиценз MIT. Това ръководство следва официалната му документация: Ghost-CLI или Docker Compose, MySQL, HTTPS, имейлите, резервните копия и обновленията.
Автор: Simon Vasconcelos Lee
Публикувано на 9 ноември 2026 г.Време за четене: 13 минути
content, после обновявайте с ghost update или docker compose pull: проектът публикува обновления всяка седмица.Ghost е професионална платформа за публикуване със свободен код, написана за Node.js. Тя събира на едно място това, което независимата публикация често сглобява от няколко инструмента.
Според документацията продуктът има същите функции при самостоятелно хостване. Това, което го заобикаля, остава ваша грижа: изпращането на бюлетините, уеб анализът, CDN и пълните резервни копия на сайта.
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 е „preview“, която той нарича съвсем нова. Посочва и че се насочва към този инструментариум с Docker, вместо да развива Ghost-CLI, и предоставя помощник за преминаване от единия към другия.
| Точка | Ghost-CLI | Docker Compose (preview) |
|---|---|---|
| Система | Ubuntu 22.04, 24.04 или 26.04 | Linux сървър с Docker 20.10.13 или по-нов |
| Памет | Поне 1 GB | Проектът дава за пример сървър с 2 GB и 1 процесор |
| Уеб сървър и HTTPS | Nginx и сертификат Let’s Encrypt, поставени от Ghost-CLI | Caddy, в контейнер, който поема TLS |
| База данни | MySQL 8.0 или 8.4, инсталиран на сървъра | MySQL в контейнер |
| Уеб анализ | Несъвместим | Наличен, с акаунт в Tinybird |
| Социална мрежа (ActivityPub) | Услугата, хоствана от проекта, безплатна в рамките на ограниченията ѝ за употреба | Същата услуга по подразбиране или вашата, хоствана самостоятелно |
Насочете домейна към сървъра преди инсталирането: сертификатът се поставя по време на настройването. На VPS на Simafri посетителите пристигат на портове 80 и 443, на името на домейна на сървъра, със записи A и AAAA. Адресът на сайта се пише изцяло, с протокола си, като https://example.com: IP адрес води до грешки.
Освен посочената по-горе памет, проектът не дава числа за диска и натоварването: размерът зависи от трафика, изображенията и медиите ви. На Managed VPS ни опишете публикацията си и ще ви препоръчаме подходящия размер.
Ghost-CLI се използва с потребител, който не е root и чието име не е ghost, защото това име влиза в конфликт с инструмента. Създайте го от акаунта root, като замените user с избраното име:
adduser <user>
usermod -aG sudo <user>
su - <user>
Обновете системата, инсталирайте 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 не поддържа. Задайте му парола:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '<your-new-root-password>';
FLUSH PRIVILEGES;
exit
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://.localhost за хоста, root и паролата, зададена по-горе, после името на базата, която Ghost-CLI създава.Сайтът отговаря тогава, а https://example.com/ghost ви кани да създадете акаунта на собственика. Ако инсталирането бъде прекъснато, ghost setup продължава конфигурирането; ако пропадне, ghost uninstall почиства по-добре от изтриването на папката. ghost doctor проверява системата по всяко време.
Проектът представя този метод като „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 въведете тези стойности:
DOMAIN: домейнът на сайта, например example.com.ADMIN_DOMAIN: отделен домейн за администрирането, ако желаете.DATABASE_ROOT_PASSWORD и DATABASE_PASSWORD: две пароли, генерирани с openssl rand -hex 32. Те се фиксират веднъж завинаги: след като базата е инициализирана, смяната им разваля връзката.В caddy/Caddyfile разкоментирайте блока, който отговаря на вашия случай: пренасочване от www към голия домейн или обратното, или отделен домейн за администриране. Стартирайте после Ghost и завършете настройването на /ghost:
docker compose pull
docker compose up -d
HTTP_PORT и HTTPS_PORT, ако Ghost мине зад друг обратен прокси. MySQL остава във вътрешната мрежа на контейнерите.data/ghost, а базата в data/mysql, две местоположения, настройваеми в .env.-f compose.yml -f compose.ipv6.yml към командите си docker compose up.Анализът изисква акаунт в 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 желания профил или профили и стартирайте контейнерите наново:
COMPOSE_PROFILES=analytics,activitypub
docker compose pull
docker compose up -d
За ActivityPub проектът изисква да се създадат наново и Ghost, и Caddy, с docker compose up -d --force-recreate ghost caddy.
След клонирането и конфигурирането bash scripts/migrate.sh копира папката content, внася базата в контейнера на MySQL и стартира Caddy на мястото на Nginx. Предлага да спре Nginx, което изключва сайта: отговорете не, ако на сървъра работят и други сайтове. Не изтрива никакви данни. bash recovery_instructions.sh възстановява първоначалния сайт, ако прекъснете миграцията.
Администрирането на 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:
"admin": {
"url": "https://admin.example.com"
}
При Docker Compose въведете ADMIN_DOMAIN, разкоментирайте блока му в Caddyfile и изпълнете docker compose up -d --force-recreate ghost caddy. Този домейн също има нужда от свои записи A и AAAA.
MySQL 8 е единствената база, която проектът поддържа в продукция. Ghost-CLI се инсталира с MySQL 8.0 или 8.4, а файлът на Compose доставя образ на MySQL 8.0.
ghost config database.client, в папката на сайта, показва използваната база.Ghost различава две изпращания, които не минават по един и същи път. Това е най-важната точка за настройване след инсталирането.
| Изпращане | Примери | Какво го носи |
|---|---|---|
| Транзакционно | Покани към екипа, забравени пароли, регистрации и връзки за вход на членовете, код за вход от ново устройство | Конфигурацията mail на Ghost, чрез SMTP |
| Бюлетини | Статиите, изпратени до членовете ви | API на Mailgun, чиито ключове се въвеждат в настройките „Email newsletter“ |
Документацията определя тази конфигурация като задължителна в продукция. Ghost изпраща и код по имейл, когато засече вход от ново устройство: настройте това реле, преди да поканите екипа си.
На VPS на Simafri изпращането минава през удостоверено SMTP реле, на порт 587: адресът на пощенски акаунт, който вече имате, или 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 и requireTLS: Ghost изпраща чрез Nodemailer, чиято документация изисква secure да е false на порт 587, като връзката минава след това в STARTTLS. requireTLS отказва изпращането, ако този преход пропадне. Примерният файл на хранилището посочва порт 465 и secure=true: заменете тези два реда.from носи реален, четен адрес, което подобрява доставяемостта според проекта, а записите SPF, DKIM и DMARC на домейна за изпращане допълват настройката.SMTP релето не покрива бюлетините. Според документацията масовото изпращане не се прави чрез SMTP и Mailgun е, към днешна дата, единствената услуга за масово изпращане, която Ghost поддържа. Създавате свой акаунт в Mailgun и въвеждате API ключовете му в настройките на Ghost.
Ако не изпращате статиите си по имейл, не ви трябва никакъв акаунт в Mailgun: тези настройки се пренебрегват. Ако предпочитате друг инструмент за бюлетини, проектът предлага да синхронизирате членовете си към него, например със Zapier или с неговите ръководства за интеграция.
Ghost предлага три нива на копиране и те не съдържат едно и също. За да възстановите сайт идентично, проектът изисква директно архивиране на базата и на папката content.
| Метод | Какво съдържа | За какво се използва |
|---|---|---|
ghost backup (Ghost-CLI) | Zip: съдържание в JSON, членове в CSV, теми, изображения, файлове и медии, маршрути и пренасочвания | Предпазната мярка преди обновяване |
| Експорт от администрирането | Zip: съдържание и настройки, членове, статистика на статиите, теми, маршрути и пренасочвания, по избор. Без коментари, без история на активността на членовете, без медии | Преместването на съдържанието към друг сайт |
База и папка content | Всички данни | Възстановяването след бедствие или точно копие |
Експортът се намира в „Settings“, „Advanced“, „Import/Export“, раздел „Export“, бутон „All data“. За пълното копие, с Ghost-CLI, акаунтът в MySQL и името на базата, които да използвате, са в 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/
С Docker Compose официалният инструментариум пази съдържанието в data/ghost. Дъмпът следва вида, даден от образа на MySQL, а паролата на root вече е в контейнера. Пазете и копие на .env и на 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
Копирайте тези файлове извън сървъра, с rsync или scp, и направете пробно възстановяване на тестова машина. Ако започвате от експорт с платени членове, свържете същия акаунт в Stripe, преди да внесете членовете си.
Проектът публикува обновления всяка седмица и напомня, че публичният уеб сървър трябва да остава актуален. Прочетете бележките към версиите, после изпълнете командата на вашия метод.
ghost check-update
ghost backup
ghost update
ghost update --rollback се връща към предишната версия, ако обновяване мине зле.content остава на мястото си по време на обновяванията.ghost update [version] --force с текущата си версия, защото двоичните му зависимости са компилирани за конкретна версия на Node.js.cd /opt/ghost
git pull
docker compose pull
docker compose up -d
docker image prune
Последният ред, по желание, премахва старите образи. Оставете GHOST_VERSION коментиран в .env: фиксирането на версия блокира тези команди за обновяване.
Документацията дава няколко настройки за сървър в продукция:
mysql_secure_installation след успешно инсталиране с Ghost-CLI.За натоварването проектът поставя CDN и слой за кеширане пред Ghost. Уточнява, че клъстерирането и шардингът не се поддържат: една-единствена инстанция обслужва сайта, а кешът поема трафика.
Самостоятелното хостване изисква да поддържате сървъра освен приложението. На Managed VPS нашите екипи поемат сървъра и следят проактивно вашата инстанция; Ghost остава ваш софтуер, с неговите настройки и данни.
| Тема | Нашите екипи | Вие |
|---|---|---|
| Сървърът | Обновления на системата и на сигурността, включително намеси на сървъра | Моментът, който пасва на вашата дейност |
| Наблюдението | Сървър, следен денонощно, 7 дни в седмицата, с намеса, без да се чака обаждането ви | Вашето съдържание, вашите членове и вашите абонаменти |
| Ghost | Проактивно проследяване: грешки, забавяния и дисково пространство се откриват, препоръчва се корекция | Инсталирането, обновяванията, настройките, SMTP релето и акаунтът му в Mailgun, които прилагате вие или вашият AI асистент |
| Резервните копия | Всяка нощ, криптирани и пазени извън машината; възстановяването е включено | Заявката за възстановяване, когато ви потрябва |
| Миграцията | Сегашният ви сървър е мигриран, безплатно | Моментът на превключването |
Ако предпочитате нашите екипи да се намесват в самото приложение, тази услуга се фактурира на час или на фиксирана цена, с оферта, съобщена преди намесата.
С Managed VPS от Simafri нашите екипи поддържат актуален сървъра на вашата инстанция на Ghost, наблюдават го денем и нощем и се намесват, без да чакат обаждането ви; те следят проактивно и вашата инстанция и ви препоръчват полезните корекции, които прилагате вие или вашият AI асистент. Резервните копия се криптират всяка нощ и се пазят извън машината, възстановяването им е включено, а миграцията от сегашния ви сървър е безплатна.
Да. Ghost е с лиценз MIT: можете да го използвате във фирма и да го приспособявате, като запазите лицензната му бележка. Остават услугите около него: сървърът, релето за имейли, Mailgun, ако изпращате бюлетини, Tinybird, ако искате неговия анализ.
Проектът препоръчва 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-CLI е инсталирането, което проектът препоръчва за продукция. Docker Compose е preview, единствената, която позволява уеб анализ и самостоятелно хостван ActivityPub, а проектът казва, че се насочва към този инструментариум. Помощник позволява преминаване от Ghost-CLI към Docker Compose.
В продукция MySQL 8 е единствената поддържана база. Проектът препоръчва преинсталиране върху MySQL 8 от SQLite и миграция към MySQL 8 от MariaDB. Документацията му не предвижда PostgreSQL.
Не. SMTP служи за транзакционните имейли: покани, пароли, връзки за вход на членовете. Бюлетините изискват API на Mailgun, единствената поддържана услуга за масово изпращане. Ако не изпращате статии по имейл, не е нужен акаунт в Mailgun.
За пълно възстановяване архивирайте базата MySQL с mysqldump и папката content с tar. Командата ghost backup създава zip преди обновяване. Експортът от администрирането оставя настрана коментарите, историята на активността на членовете и медиите.
С Ghost-CLI изпълнете ghost backup, после ghost update в папката на сайта, и ghost update --rollback при проблем. С Docker Compose изпълнете git pull, docker compose pull и docker compose up -d в /opt/ghost.
Managed VPS покрива сървъра: система, сигурност, наблюдение и резервни копия. Нашите екипи следят проактивно и вашата инстанция и ви препоръчват полезните корекции, които прилагате вие. Намеса в самото приложение се фактурира на час или на фиксирана цена.
Simafri
Да поговорим за Вашия проект
Кажете ни с няколко думи от какво имате нужда: отговаряме Ви бързо.
Благодарим! Вашето запитване е изпратено. Ще се свържем с вас скоро.
Предпочитате имейл? Пишете ни на support@simafri.com.