Команда инженеров · свой ЦОД в РФ · своё железо · своя панель · CloudStack + Linstor · MCP · база знаний по self-hosted
Проверено
1 августа 2026 г.
Запуск
docker compose + Caddy
Сложность
Средний
Ключевой замер
RAM idle ~0.69 GB весь стек
Версия
6.55.0
Репозиторий
GitHub →
Публикации и блог

Ghost

Своя платформа публикаций: профессиональный блог, платные подписки и email-рассылки в одном. Self-host замена связке WordPress + Substack. Развернули актуальную версию в боевом режиме, замерили и проверили вживую: сайт, админка и вход владельца работают.

Август 2026 ~9 минут чтения Fatmetal Team
Блог / публикации Лицензия: MIT Статус: запущен у нас, 6.55.0

Вердикт

Подходит
  • нужен профессиональный блог/издание на своем сервере, а не в чужом облаке
  • хотите платные подписки и членство без комиссии платформы за подписчиков
  • нужна встроенная email-рассылка постов аудитории
Не подходит
  • нужен универсальный CMS-конструктор с плагинами на все - это к WordPress
  • не готовы подключать внешний SMTP/Mailgun ради рассылок
  • нужна приватная база знаний команды, а не публичное издание - берите Outline
Мин. тариф: CPU2-RAM4-DISK50 Рекомендуем: CPU2-RAM4-DISK50 Сложность: medium Время запуска: ~2-3 мин Главный риск: неверный url за прокси Прод-готовность: из коробки (MySQL + TLS + владелец создан)
Что это

Что это и какую задачу решает

Ghost - open-source платформа для публикаций: профессиональное издание, где из коробки есть блог, платные подписки и членство, а также email-рассылки. Вы пишете посты в чистом редакторе, собираете аудиторию по подписке, шлете ей письма с новыми материалами и берете деньги за платный контент. По сути это self-host замена связке WordPress + Substack + Mailchimp - только аудитория и данные остаются на вашем сервере, без комиссии платформы за каждого подписчика.

В отличие от универсального CMS вроде WordPress, Ghost сфокусирован на одном сценарии - издание с монетизацией - и делает его хорошо: быстрый движок на Node.js, встроенные members и newsletter, чистые темы, SEO и RSS без плагинов.

Node.jsMySQL 8Members / StripeNewsletterDocker
Сравнение

Чем отличается от WordPress и Substack

Сравнение по тому, что влияет на выбор для издания с подпиской.

ПараметрGhost (self-hosted)Substack / облако
Где данные и аудиторияна вашем сервереу платформы
Комиссия за подписчиковнет (только Stripe-комиссия)процент с выручки
Подписки и членствовстроенывстроены
Дизайн и темысвои темы, полный контрольограничен
Рассылкавстроена, нужен свой SMTP/Mailgunвстроена
Под капотом

Тех-стек и архитектура

Ghost - приложение на Node.js: публичный сайт (тема на Handlebars, по умолчанию Casper), админка `/ghost/` и два API (Admin и Content), порт 2368. Для прода обязательна база MySQL 8 - Ghost 6 в production на встроенной SQLite официально не поддерживается. Наружу приложение слушает только localhost, публичный доступ - через Caddy обратным прокси с авто-TLS.

Данные лежат в двух томах: MySQL (посты, подписчики, настройки) и content (загруженные картинки, темы). Прием денег за платные подписки - через ваш аккаунт Stripe; массовая email-рассылка - через внешний почтовый провайдер (Mailgun/SMTP).

Мастер первого запуска Ghost: Welcome to Ghost, поля Site title, Full name, Email, Password
Первый запуск Ghost 6.55.0 на magic-DNS домене с валидным TLS: мастер создания владельца. В карте маркетплейса владелец создается автоматически.
Конфигурация

Минимальная конфигурация

Реальные требования против официального минимума.

Минимум для тестаCPU2-RAM4-DISK50
Реально в простое (весь стек)~0.69 GB RAM (ghost 201 + mysql 474 + caddy 13 MiB)
Образы на диске~2.66 GB (ghost 1.45 + mysql 1.12 + caddy 0.09)
Рекомендуем тарифCPU2-RAM4-DISK50
i

Важно: основная память уходит на MySQL 8 (~470 МиБ). Само приложение Ghost легкое (~200 МиБ). Тарифа CPU2-RAM4 хватает с запасом; на 2 ГБ стек стартует, но MySQL под нагрузкой будет тесно.

В маркетплейсе Fatmetal

Не хотите ставить руками?

Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий домен, валидный TLS и уже созданный аккаунт владельца - вход паролем сервера.

Рекомендуемая конфигурация: CPU2-RAM4-DISK50

В маркетплейс →
Развертывание

Развертывание на Fatmetal

Базовый путь - Cloud Server + Ubuntu 24.04 + Docker за Caddy.

  1. Создать VM

    Ubuntu 24.04 с Docker. Тариф CPU2-RAM4 - с запасом под MySQL 8.

  2. Задать переменные

    url=https://ваш-домен
    database__client=mysql
    database__connection__host=mysql
    database__connection__password=...

    url обязан совпадать с публичным адресом, иначе ссылки и админка ведут на localhost - это главная грабля.

  3. Поднять стек

    docker compose pull
    docker compose up -d

    Два контейнера: ghost и mysql. Проверка: curl localhost:2368/.

  4. Закрыть TLS

    Caddy обратным прокси на :2368 - автоматический сертификат Let's Encrypt на ваш домен.

Админка Ghost: Analytics, Posts, Members, Newsletters, Settings
Админка Ghost: Analytics с постами и подписчиками, слева - Posts, Pages, Members, Comments, Settings. Вход владельца паролем сервера.
Замеры

Что измерили после запуска

Цифры со свежей установки, весь стек без нагрузки.

Контейнеров3 (ghost + mysql + Caddy)
RAM в простое (весь стек)~0.69 GB (mysql ~474 MiB)
Образы на диске~2.66 GB
Health-checkсайт / -> 200; /ghost/ -> 200
Внешний откликhttps 200, валидный Let's Encrypt

Вход проверили предметно: создали аккаунт владельца через setup API, затем зашли в админ-консоль - открылся дашборд Analytics с постами и подписчиками, а название сайта сменилось на заданное. То есть вход владельца действительно пускает в консоль, а не просто отдает мастер.

Публичный сайт Ghost на теме Casper: заголовок, hero, форма подписки, последний пост
Публичный сайт (тема Casper): заголовок издания, форма подписки на рассылку, кнопки Sign in / Subscribe и лента постов. Все работает вживую.

Проверено на версии 6.55.0, август 2026. На новых версиях результаты могут отличаться.

Подводные камни

Где может сломаться

Реальные грабли Ghost за прокси и с почтой.

ссылки и админка ведут на localhost:2368 вместо вашего домена

Причина. Не задан или неверен url: Ghost строит по нему абсолютные адреса, и за прокси они уезжают на внутренний.

Решение. Задайте url=https://ваш-домен и перезапустите контейнер. В карте маркетплейса это уже настроено.

!

MySQL 8 обязателен. Ghost 6 в production на SQLite не поднимется. В карте база - MySQL 8 из коробки.

!

Рассылка требует внешней почты. Массовые письма подписчикам и транзакционные (инвайты, сброс пароля) уходят только через внешний SMTP/Mailgun. Сайт, посты и подписки работают и без почты - но перед запуском рассылок подключите провайдера.

Безопасность

Безопасность и обновления

Сразу смените пароль владельца (в карте он равен паролю сервера) в Settings -> Staff. Порт 2368 наружу не публикуйте - только через прокси с TLS. Для платных подписок подключайте свой Stripe. Приглашайте соавторов с ограниченными ролями, а не общим владельцем.

Обновление - смена тега образа:

docker compose pull && docker compose up -d

Бэкап - оба тома (база и контент):

docker exec ghost-mysql-1 mysqldump -u root -p ghost > ghost-db.sql
i

Перед продом закройте: смену пароля владельца, TLS на прокси, внешний SMTP для писем, свой Stripe и регулярный бэкап томов базы и контента.

Рядом

Связь с другими стеками

  • Почта - внешний Mailgun или свой SMTP для рассылок и транзакционных писем.
  • Обратный прокси - Caddy или Nginx Proxy Manager для TLS и единого домена.
  • Аналитика - Plausible или Umami рядом, чтобы считать трафик издания без Google.
  • Мониторинг - Prometheus и Grafana по метрикам контейнеров и MySQL.
Честно

Когда это НЕ ваш выбор

Нужен универсальный сайт-конструктор

Если задача - интернет-магазин, форум или лендинг с кучей плагинов, Ghost узок. Это к WordPress или профильному движку.

Не готовы к внешней почте

Без SMTP/Mailgun рассылки и инвайты не уходят. Если email-рассылка - ключевая цель, заложите почтового провайдера сразу.

Нужна приватная база знаний

Ghost - публичное издание. Для внутренней вики команды берите Outline, а не Ghost.

FAQ

Частые вопросы

Почему у меня ссылки ведут на localhost?

Не задан или неверен `url`. Укажите его как публичный https-адрес и перезапустите Ghost. В карте маркетплейса это уже настроено.

Нужна ли отдельная база?

Да, MySQL 8 - он обязателен для Ghost 6 в проде. В карте MySQL 8 разворачивается автоматически рядом.

Как отправлять рассылку подписчикам?

Подключите внешний почтовый провайдер (Mailgun или SMTP) в конфиге Ghost. Без него письма не уходят, хотя сайт и подписки работают.

Как брать деньги за подписку?

Через ваш аккаунт Stripe - Ghost интегрируется с ним для платных тиров членства.

Хватит ли 2 GB RAM?

Впритык из-за MySQL. Комфортно - CPU2-RAM4, весь стек в простое около 0.69 GB.

Можно в продакшен?

Да. Мы разворачиваем боевой режим с MySQL 8 и TLS. Останется сменить пароль владельца, подключить SMTP и Stripe, настроить бэкап.

Какие ограничения лицензии?

Лицензия MIT - свободное использование, в том числе коммерческое. Ограничений на хостинг нет.

Итог

Ghost - зрелый способ вести профессиональное издание на своем сервере: блог, платные подписки и email-рассылки в одном, под лицензией MIT. Аудитория и данные у вас, без комиссии платформы за подписчиков. Весь стек в простое ест около 0.69 GB, вход владельца проверили вживую. Плата - обязательный MySQL 8 и внешний SMTP для рассылок, плюс правильный `url` за прокси, который мы закрыли в карте из коробки.

Анонсы новых разборов в Telegram-канале Новые гайды и карточки в маркетплейсе первыми @fatmetal_channel →

Этот стек у нас запущен на тарифе CPU2-RAM4. Нашли баг в гайде - напишите, поправим в течение дня.

Спросить инженера в TelegramМы на связи