Установка Ghost на Raspberry Pi: пошаговый практический гид

Введение
Ghost — легковесная открытая платформа для блогов и публикаций, ориентированная на удобство написания и публикации контента. Она включает встроенные возможности для рассылок, подписок и платного доступа, что делает её удобной как для личных блогов, так и для малых издательских проектов. На Raspberry Pi Ghost можно запустить локально и получить полный контроль над хостингом и данными.
Важно: этот гид рассчитан на пользователей, у которых уже подготовлен Raspberry Pi как сервер (операционная система, доступ по SSH и базовый набор пакетов). Если у вас ещё нет готового сервера, сначала настройте Raspberry Pi согласно вашей стандартной процедуре (доступ по SSH, обновления, надёжный пароль или SSH‑ключи).
Что вы получите из этого руководства
- Пошаговая инструкция по настройке DNS и Apache как обратного прокси
- Создание базы данных MariaDB и пользователя Ghost
- Установка Node.js и ghost‑cli
- Запуск Ghost и создание первого аккаунта
- Включение HTTPS через Let’s Encrypt и советы по безопасности
- Чеклисты, варианты архитектуры, рекомендации по отладке и поддержке
Требования и обозначения
Кратко:
- Raspberry Pi с установленной Debian‑based ОС (Raspberry Pi OS, Ubuntu Server и т.п.).
- Доступ к панели управления DNS у регистратора.
- Права администратора (sudo) на Raspberry Pi.
- Открытый порт 80 для Let’s Encrypt и проброшенный порт 80/443 на роутере, если у вас NAT.
Термины в одну строку:
- Reverse proxy — сервер (здесь Apache), который принимает внешний трафик и проксирует во внутренний сервис (Ghost).
- ghost‑cli — официальный установщик и менеджер Ghost.
1) Подготовка DNS
- Зайдите в панель управления доменом к регистратору и откройте Advanced DNS.
- Удалите лишние записи, создайте новую запись типа A.
- Host: @ (корневой домен) или «ghost» (если используете поддомен ghost.example.tld).
- Value: ваш публичный IP‑адрес.
- TTL: минимальный (чтобы ускорить обновление).
Примечание: если ваш провайдер даёт динамический IP, рассмотрите DynDNS или используйте облачный проксирующий сервис.
2) Обновление системы и установка Apache
Подключитесь к Raspberry Pi по SSH и выполните обновления:
sudo apt update
sudo apt upgrade -yУстановите Apache, если он ещё не установлен, и включите необходимые модули прокси:
sudo apt install apache2 -y
sudo a2enmod proxy proxy_http
sudo service apache2 restartСоздайте новый конфигурационный файл для сайта:
cd /etc/apache2/sites-available/
sudo nano ghost.confВставьте следующую конфигурацию, заменив ServerName на ваш домен:
ServerName ghost.your-domain.tld
ProxyPass / http://127.0.0.1:2368/
ProxyPassReverse / http://127.0.0.1:2368/
ProxyPreserveHost On
Сохраните (Ctrl+O) и выйдите (Ctrl+X). Затем включите сайт и перезапустите Apache:
sudo a2ensite ghost.conf
sudo service apache2 restartВажно: обратный прокси передаёт оригинальные заголовки хоста Ghost, поэтому Ghost будет знать корректный домен.
3) Создание базы данных MariaDB
Ghost использует базу данных MySQL/MariaDB. Установите MariaDB и создайте пользователя/базу:
sudo apt install mariadb-server -y
sudo mariadbВ интерактивной консоли выполните:
CREATE DATABASE ghost;
CREATE USER 'ghost'@'localhost' IDENTIFIED BY 'topsecretpassword';
GRANT ALL PRIVILEGES ON ghost.* TO 'ghost'@'localhost';
FLUSH PRIVILEGES;
quit;Замените ‘topsecretpassword’ на надёжный пароль и запишите его в защищённом месте.
Совет по безопасности: по завершении установки рассмотрите ограничение доступа к MariaDB при помощи UFW и локального bind‑адреса, чтобы база была доступна только локально.
4) Установка Node.js и npm
Перейдите в домашнюю папку и включите репозиторий NodeSource для версии 16.x (рекомендуемая версия для Ghost на момент написания). Затем установите nodejs:
cd ~
curl -sL https://deb.nodesource.com/setup_16.x | sudo bash -
sudo apt install -y nodejsПроверьте версию:
node --version
# допустимый вывод: v16.x.xЕсли ваша версия кардинально отличается, используйте соответствующую ветку Node.js, совместимую с версией Ghost, которую вы собираетесь установить.
5) Установка ghost‑cli и сам Ghost
Установите официальный инструмент установки:
sudo npm install -g ghost-cli@latestСоздайте директорию для Ghost и перейдите в неё:
sudo mkdir -p /var/www/ghost
sudo chown $USER:$USER /var/www/ghost
cd /var/www/ghostЗапустите установку:
ghost installВо время системы проверок вы можете увидеть предупреждения наподобие “Linux version is not Ubuntu 16, 18, or 20” или “Local MySQL install was not found or is stopped”. На Raspberry Pi это часто ожидаемо — введите y, чтобы продолжить.
Примечание: установка может занять несколько минут в зависимости от скорости SD‑карты и сети.
6) Настройка учётной записи блога
При завершении установки вас попросят указать URL сайта и данные базы данных. Введите данные MariaDB, созданные ранее:
- Hostname: localhost
- Database: ghost
- Username: ghost
- Password: <ваш пароль>
ghost‑cli предложит настроить Systemd для управления сервисом — согласитесь (y), а затем разрешите запуск Ghost.
Откройте в браузере https://your-domain.tld/ghost/ и создайте первую учётную запись администратора: имя сайта, ваше имя, адрес электронной почты и пароль (Ghost требует не менее 10 символов).
После создания аккаунта вы получите письмо от noreply@your-domain.tld с подтверждением.
7) Включение HTTPS через Let’s Encrypt
Установите certbot и получите сертификат для домена:
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apacheСледуйте интерактивным подсказкам: укажите адрес электронной почты и выберите домен(ы) для активации HTTPS. certbot автоматически настроит перенаправление и обновление сертификатов.
Перезапустите Apache:
sudo service apache2 restartТеперь при открытии сайта в браузере соединение должно быть защищено. При необходимости повторно войдите в админку.
8) Базовые настройки и управление контентом
Ghost использует минималистичный блоковый редактор. Из админ‑панели (/ghost/) вы можете:
- Создавать посты и страницы
- Управлять подписчиками и рассылками
- Настраивать подписки и платный доступ
- Встроенная аналитика по просмотрам и вовлечению
Интерфейс понятен: кнопка + создаёт новый пост; панель справа содержит настройки публикации и SEO.
Диагностика и частые проблемы
- Ghost не запускается:
- Проверьте статус сервиса: sudo systemctl status ghost_your-site (имя сервиса видно в выводе установки).
- Просмотрите логи: sudo journalctl -u ghost_your-site –no-pager -n 200
- Ошибка подключения к базе данных:
- Убедитесь, что имя пользователя/пароль/имя базы совпадают с конфигурацией.
- Проверьте, что MariaDB слушает локальные подключения и пользователь ‘ghost’@’localhost’ существует.
- Проблемы с SSL:
- Убедитесь, что порт 80 открыт и домен указывает на ваш IP для успешной валидации.
- Низкая производительность:
- Raspberry Pi ограничен по ресурсам — используйте swap с осторожностью, оптимизируйте nginx/apache и кеширование.
Совет: команда ghost doctor помогает диагностировать многие распространённые ошибки: ghost doctor
Альтернативы и варианты архитектуры
- Использовать Nginx вместо Apache как обратный прокси — Nginx обычно легче по ресурсам и имеет простую интеграцию с certbot.
- Разнести MariaDB на отдельный сервер (или облачный сервис) при росте нагрузки.
- Использовать Docker: официальный образ Ghost удобен для контейнерной инфраструктуры, особенно при миграции и резервном копировании.
- Для динамического IP применять туннели (ngrok, Cloudflare Tunnel) или DDNS.
Когда Ghost на Raspberry Pi — это подходит:
- Для личных блогов, тестовых проектов и небольших аудиторий. Когда не подходит:
- Для высоконагруженных коммерческих сайтов с тысячами одновременных посетителей.
Чеклист до запуска (операционный)
- Домен указывает на публичный IP
- Порты 80 и 443 проброшены и открыты
- MariaDB создана и доступна локально
- Node.js и ghost‑cli установлены
- Apache/Nginx настроен как reverse proxy
- Сертификаты Let’s Encrypt успешно получены
- Systemd настроен для автозапуска Ghost
Чеклист безопасности для продакшена
- Регулярные обновления ОС и пакетов
- Надёжные пароли и SSH‑ключи вместо паролей
- Ограничение доступа к MariaDB только локально
- Резервное копирование данных и базы (schedule/cron)
- Включён HTTPS и автоматическое обновление сертификатов
Роль‑базированный краткий план задач
Администратор сервера:
- Настройка сети, DNS, брандмауэра, резервного копирования. Разработчик/владелец контента:
- Настройка темы, создание публикаций, управление подписками. DevOps:
- Непрерывная интеграция, мониторинг, масштабирование (если нужно).
Критерии приёмки
- Сайт доступен по HTTPS на назначенном домене.
- Админ‑панель /ghost/ доступна и работает.
- Пользователь может создать пост и опубликовать его.
- База данных записывает посты, медиаконтент доступен.
Mini‑методология резервного копирования (рекомендация)
- Еженедельный дамп базы данных: mysqldump -u ghost -p ghost > /var/backups/ghostdb$(date +%F).sql
- Копирование каталога контента Ghost (/var/www/ghost/content/) в архив.
- Хранение резервных копий на удалённом хранилище (rsync, S3, внешний диск).
- Периодическая проверка восстановления (раз в квартал).
Меры по повышению надёжности и масштабируемости
- Перенести статические файлы на CDN.
- Использовать Nginx и gzip/HTTP2 для ускорения отдачи.
- Горизонтальное масштабирование: отделить базу и веб‑серверы при росте трафика.
Частые сценарии восстановления
- Если Ghost не запускается после обновления: откатите пакет через apt или восстановите рабочую копию каталога /var/www/ghost и базу из бэкапа.
- Если сертификат не обновился: запустите sudo certbot renew –dry-run и проверьте логи.
Ресурсный факт‑бокс
- Ghost — открытый проект, основная логика написана на Node.js.
- Ghost предлагает встроенную поддержку рассылок и платного доступа без дополнительных плагинов.
Заключение
Ghost — отличная платформа для авторов, которые хотят простой, быстрый и современный редактор с возможностями монетизации. Raspberry Pi даёт недорогую и гибкую платформу для самохостинга малого блога или тестового проекта. Следуя шагам этого руководства, вы получите рабочий сайт с HTTPS, настроенным бэкапом и базовыми практиками безопасности.
Важно: по мере роста аудитории пересмотрите архитектуру и производительность. Raspberry Pi хорошо подходит для старта, но при существенном трафике стоит рассмотреть выделенные или облачные решения.
Краткое резюме в конце: настройте DNS, Apache (или Nginx), MariaDB, Node.js, установите Ghost через ghost‑cli и включите HTTPS. Наконец, настройте резервное копирование и мониторинг.
Примечания
Если вы предпочитаете альтернативы, рассмотрите Docker‑развёртывание Ghost, использование Nginx вместо Apache или облачный хостинг Ghost(Pro) для минимизации операций по поддержке.
Похожие материалы
APC Index Mismatch — как исправить BSOD на Windows
Доступ к Android с разбитым экраном
Сброс Samsung при заблокированном телефоне
Как разогнать монитор через NVIDIA Control Panel
APC_INDEX_MISMATCH: как исправить BSOD в Windows