Ghost CMS можна розмістити на власному VPS за допомогою готового шаблону Unihost у Portainer. Відкрийте Templates, виберіть Ghost CMS, укажіть параметри бази даних і розгорніть стек. Потім налаштуйте публічну адресу сайту, HTTPS через зворотний проксі та SMTP для надсилання листів. Перед оновленням обов’язково створюйте резервні копії бази даних і вмісту Ghost.

Сумісність: Ghost CMS у Docker і Portainer на Linux. Підтримка бази даних залежить від версії Ghost.

Вимоги

Перед встановленням підготуйте:

  • VPS із Linux, Docker і Portainer.
  • Базу даних, доступну контейнеру Ghost. Початковий шаблон Unihost використовує MariaDB, а офіційна виробнича конфігурація сучасного Ghost підтримує MySQL 8.
  • Домен і доступ до налаштувань DNS.
  • Nginx Proxy Manager або Traefik для HTTPS.
  • Місце для вмісту та резервних копій.

Для базового встановлення Ghost зазначено мінімум 1 ГБ RAM, але стек Docker із базою та проксі потребує додаткових ресурсів. Враховуйте навантаження сайту.

Кроки

Крок 1. Виберіть шаблон Ghost CMS

У Portainer відкрийте Templates → Application → Ghost CMS. Виберіть шаблон Unihost і заповніть параметри. Якщо ви вперше використовуєте Portainer, прочитайте вступну статтю. Що таке Portainer.

Шаблон Ghost CMS у Portainer

Крок 2. Налаштуйте базу даних і адресу сайту

У початковому шаблоні потрібно вказати хост бази даних, її назву, користувача та пароль. За сумісної конфігурації база створюється під час розгортання. Перевірте підтримку СУБД установленою версією Ghost.

Параметри бази даних і адреси Ghost у шаблоні

Для офіційного контейнера Ghost використовуються змінні:

url=https://blog.example.com
database__client=mysql
database__connection__host=db
database__connection__user=ghost
database__connection__password=REPLACE_WITH_STRONG_PASSWORD
database__connection__database=ghost

Значення url має точно збігатися з публічним HTTPS-доменом. Не публікуйте паролі бази даних у репозиторіях і клієнтському коді.

Крок 3. Розгорніть Ghost і налаштуйте HTTPS

Після розгортання Ghost опублікуйте сайт через Nginx Proxy Manager (NPM):

  1. Створіть DNS-запис A для blog.example.com, спрямований на IP VPS.
  2. Відкрийте NPM → Hosts → Proxy Hosts → Add Proxy Host.
  3. Укажіть blog.example.com у Domain Names і Scheme: http.
  4. У Forward Hostname / IP укажіть ім’я сервісу Ghost, доступне з NPM, а у Forward Port встановіть 2368.
  5. На вкладці SSL запросіть сертифікат Let’s Encrypt, увімкніть Force SSL і збережіть налаштування.

Переконайтеся, що NPM підключається до Ghost через Docker-мережу. Установіть для Ghost url значення https://blog.example.com. Панель керування доступна за адресою https://blog.example.com/ghost.

Інструкція зі встановлення Nginx Proxy Manager та налаштування HTTPS

Traefik через Portainer можна використовувати як альтернативу.

blog.example.com -> SERVER_IP

Налаштування Proxy Host для Ghost на порту 2368

На знімку екрана показано початкову конфігурацію HTTP-проксі. Для публічного сайту використовуйте HTTPS і той самий домен з https:// у змінній url.

База Ghost у phpMyAdmin

Головна сторінка Ghost CMS після встановлення

Відкрийте сайт, потім перейдіть на /ghost для створення облікового запису адміністратора.

https://blog.example.com/ghost

Створення адміністратора Ghost CMS

Крок 4. Налаштуйте SMTP

SMTP потрібен для службових листів Ghost, зокрема запрошень і відновлення паролів. Додайте до стеку Portainer параметри свого поштового провайдера:

mail__transport=SMTP
mail__from=blog@example.com
mail__options__host=smtp.example.com
mail__options__port=587
mail__options__secure=false
mail__options__auth__user=SMTP_USERNAME
mail__options__auth__pass=SMTP_PASSWORD

Для порту 587 зазвичай використовується STARTTLS, для 465 – TLS під час підключення і mail__options__secure=true. Для масових розсилок може знадобитися окрема інтеграція, наприклад Mailgun.

Крок 5. Створіть резервні копії

Зберігайте базу даних і постійний том /var/lib/ghost/content. Для MySQL використовуйте mysqldump, а для початкового шаблону з MariaDB – mariadb-dump. Виконайте відповідну команду на Docker-хості:

docker exec DB_CONTAINER sh -c 'exec mysqldump -u root -p"$MYSQL_ROOT_PASSWORD" ghost' > ghost-db-backup.sql
docker exec DB_CONTAINER sh -c 'exec mariadb-dump -u root -p"$MARIADB_ROOT_PASSWORD" ghost' > ghost-db-backup.sql
docker exec GHOST_CONTAINER tar -czf - -C /var/lib/ghost content > ghost-content-backup.tar.gz

Використовуйте фактичну назву контейнера і спосіб автентифікації. Окремо зберігайте вміст і конфігурацію Ghost, тримайте копії поза сервером і перевіряйте відновлення.

Крок 6. Оновіть образ Ghost

У Portainer спочатку збережіть дані та перевірте вимоги нового релізу Ghost до бази й тем. Потім змініть тег образу на сумісний і перестворіть контейнер без видалення томів. Оновлення між основними версіями потребують окремої перевірки.

Перевірка

Переконайтеся, що Ghost і база даних запущені, сайт відкривається через HTTPS, панель /ghost доступна, пошта надсилається, а резервні копії бази та вмісту існують. У разі помилок перевірте журнали:

docker ps
docker logs --tail 50 GHOST_CONTAINER

Усунення проблем

Ghost не підключається до бази даних

Перевірте database__connection__host, користувача, пароль, назву бази й Docker-мережу. Офіційно підтримувана виробнича база Ghost – MySQL 8.

Помилки HTTPS або перенаправлення

Перевірте DNS, reverse proxy, TLS-сертифікат і url. Проксі має передавати вихідну схему HTTPS.

Не надсилаються листи

Перевірте SMTP-сервер, порт, пароль, режим TLS і журнали Ghost.

FAQ

Чи можна безкоштовно використовувати self-hosted Ghost?

Так. Ghost має відкритий вихідний код, але сервер і додаткові поштові сервіси оплачуються окремо.

Як налаштувати надсилання листів у Ghost?

Додайте mail__transport=SMTP і параметри mail__options__* свого провайдера, перестворіть контейнер і перевірте надсилання.

Як оновити Ghost у Docker?

Створіть резервні копії бази та вмісту, виберіть сумісний тег образу у Portainer та оновіть контейнер зі збереженням томів.

Скільки оперативної пам’яті потрібно Ghost?

Для базового встановлення Ghost зазначено мінімум 1 ГБ RAM. Стек Docker із MySQL і проксі потребує більше пам’яті залежно від навантаження.

Пов’язані статті

Ghost(Pro) чи self-hosted?

Ghost(Pro) Self-hosted Ghost
Керований хостинг Власний VPS або сервер
Оновлення провайдера Самостійні оновлення та копії
Передплата Оплата інфраструктури та сервісів

Ghost CMS на серверах Unihost

Розгортайте Ghost та інші застосунки на власній інфраструктурі за допомогою шаблонів Portainer.

Офіційна документація Ghost