Установка Ghost на Raspberry Pi — пошаговый гид
Блоги дают вам возможность делиться идеями и опытом с широкой аудиторией. Ghost — современная платформа для ведения блогов и управления контентом. Она ориентирована на простоту, скорость публикации и встроенные возможности монетизации (рассылки, подписки, платный доступ). Ghost — с открытым исходным кодом, поэтому вы можете установить его на собственный сервер, в том числе на Raspberry Pi.
В этом руководстве вы найдёте подробную инструкцию по развёртыванию Ghost на Raspberry Pi, рекомендации по безопасности, резервному копированию, отладке и альтернативные подходы (Docker, Nginx, Ghost(Pro)).
Почему Ghost хорошо подходит для Raspberry Pi
- Простота: минималистичный редактор и фокус на создании и публикации контента.
- Функции «из коробки»: рассылки, подписки и система участников без необходимости множества плагинов.
- Открытый исходный код и возможность самохостинга на недорогом оборудовании.
Важно: для серьёзной нагрузки Raspberry Pi подойдёт для личных или небольших проектов. При высокой посещаемости лучше рассмотреть облачный хостинг или выделенный сервер.
Что потребуется
- Raspberry Pi (рекомендуется модель 4 с минимум 2–4 ГБ ОЗУ).
- Установленная и настроенная ОС (Raspberry Pi OS / Debian) и доступ по SSH.
- Публичный IP или домен и доступ к панели регистратора домена для редактирования DNS.
- Доступ к сборке пакетов (apt), возможность установки Node.js и MariaDB.
- Основные навыки работы в терминале.
Краткое определение терминов:
- Reverse proxy — обратный прокси: сервер, который принимает внешние запросы и пересылает их внутреннему сервису.
- Ghost CLI — официальный инструмент для установки и управления Ghost.
Подготовка DNS
В панели управления доменом откройте Advanced DNS. Удалите или отредактируйте текущие записи и создайте A-запись:
- Host: @
- Value: <ваш публичный IP>
- TTL: минимально допустимое значение
Если хотите использовать поддомен, например ghost.example.com, создайте A-запись с Host = ghost и Value = ваш IP.
Важно: распространение DNS может занять от нескольких минут до 24–48 часов в зависимости от регистратора и кэша.
Подготовка Raspberry Pi и Apache в качестве обратного прокси
Подключитесь к Raspberry Pi по SSH и обновите систему:
sudo apt update
sudo apt upgrade -yУстановите Apache, если он ещё не установлен, и включите нужные модули proxy:
sudo apt install apache2 -y
sudo a2enmod proxy proxy_http
sudo service apache2 restartСоздайте файл конфигурации для сайта:
cd /etc/apache2/sites-available/
sudo nano ghost.confВставьте конфигурацию виртуального хоста (замените ghost.your-domain.tld на ваш домен):
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Примечание: вы также можете использовать nginx как обратный прокси — пример конфигурации приведён в разделе «Альтернативные подходы».
Добавление базы данных (MariaDB)
Ghost требует базу данных. MariaDB — распространённый выбор для Raspberry Pi.
Установите 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;
EXIT;Замените ‘topsecretpassword’ на надёжный пароль. Запомните имя БД, имя пользователя и пароль — они понадобятся при установке Ghost.
Установка Node.js
Ghost требует Node.js. На момент написания Ghost корректно работает с версиями Node.js LTS (например, 16.x или 18.x — проверьте требования текущей версии Ghost в документации).
Перейдите в домашнюю директорию и подключите репозиторий NodeSource, затем установите nodejs:
cd ~
curl -sL https://deb.nodesource.com/setup_16.x | sudo bash -
sudo apt install nodejs -yПроверьте версию:
node --versionВы увидите, например, v16.x. При необходимости используйте другую ветку setup_18.x для Node.js 18.
Установка Ghost CLI и развертывание Ghost
Установите Ghost CLI глобально:
sudo npm install -g ghost-cli@latestСоздайте директорию для Ghost и установите туда приложение (обычно /var/www/ghost):
cd /var/www/
sudo mkdir ghost
sudo chown $USER:$USER ghost
cd ghost
ghost installGhost CLI выполнит системные проверки. На Raspberry Pi вы можете увидеть предупреждение, что «Linux version is not Ubuntu 16, 18, or 20». Это предупреждение — информационное; при стандартной настройке на Raspberry Pi можно продолжать. Также будет проверка локального MySQL; если вы используете MariaDB и она запущена — подтвердите, иначе пропустите проверку и укажите данные вручную.
Если появится запрос об установке Systemd — соглашайтесь (y), чтобы Ghost мог запускаться как системная служба.
Установка может занять от нескольких минут до 15 минут в зависимости от скорости сети и модели Raspberry Pi.
Первичная настройка аккаунта и вход в админку
После завершения установки Ghost попросит указать URL сайта и данные базы данных (hostname — localhost, database — ghost, username — ghost, password — тот, что вы задали). Затем согласитесь на настройку systemd и на старт сервиса.
Откройте браузер и перейдите по адресу:
http://your-domain-name.tld/ghost/Создайте первую учётную запись (название сайта, имя администратора, email и пароль — Ghost требует минимум 10 символов). После успешного создания аккаунта Ghost отправит письмо с подтверждением с адреса вида noreply@your-domain.tld.
Настройка HTTPS с помощью Let’s Encrypt
Для безопасности обязательно включите HTTPS. Установите certbot и получите сертификат:
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apacheУкажите ваш email и выберите домен, для которого хотите включить HTTPS. Certbot установит сертификаты и обновит конфигурацию Apache. Перезапустите Apache:
sudo systemctl restart apache2Теперь ваш сайт должен открываться по https://your-domain-name.tld. При необходимости войдите в админку заново.
Первые шаги в интерфейсе Ghost
В админ-панели (/ghost/) вы увидите дашборд, редактор постов и настройки сайта. Интерфейс — минималистичный блоковый редактор (WYSIWYG), похожий по принципам на современные редакторы контента.
Через панель вы можете:
- Добавлять посты и страницы
- Управлять участниками и подписчиками
- Настраивать платные подписки и рассылки
- Подключать темы и кастомизировать стиль
Резервное копирование и обновления
Регулярные бэкапы критичны. Резервируйте как файлы сайта, так и базу данных.
Пример команд для резервного копирования базы MariaDB и каталога Ghost:
# дамп базы
sudo mysqldump -u ghost -p ghost > /home/pi/ghost-db-backup.sql
# архив файлов Ghost
sudo tar -czvf /home/pi/ghost-files-backup.tar.gz -C /var/www ghostДля восстановления:
# восстановление базы
sudo mysql -u root -p
CREATE DATABASE ghost;
GRANT ALL PRIVILEGES ON ghost.* TO 'ghost'@'localhost' IDENTIFIED BY 'topsecretpassword';
EXIT;
sudo mysql -u ghost -p ghost < /home/pi/ghost-db-backup.sql
# распаковка файлов
sudo tar -xzvf /home/pi/ghost-files-backup.tar.gz -C /var/www/Перед обновлением Ghost выполните бэкап и проверьте совместимость версий Node.js и Ghost.
Отладка — распространённые ошибки и решения
Ghost не стартует после установки:
- Проверьте статусы systemd: sudo systemctl status ghost_your-site-com — замените имя службы.
- Посмотрите логи: sudo journalctl -u ghost_your-site-com -n 200.
- Убедитесь, что Node.js корректной версии установлен.
Проблемы с соединением к базе:
- Проверьте, что MariaDB запущена: sudo systemctl status mariadb.
- Убедитесь, что данные пользователя и пароля совпадают с теми, что в конфигурации Ghost.
Ошибки обратного прокси (ошибка 502/504):
- Убедитесь, что Ghost слушает на 127.0.0.1:2368: sudo ss -tulpn | grep 2368.
- Проверьте конфигурацию ProxyPass и ProxyPassReverse.
Проблемы с Let’s Encrypt:
- Убедитесь, что домен указывает на сервер и порт 80 открыт.
- Если certbot не может подтвердить владение, временно отключите редиректы и проверьте доступ по HTTP.
Альтернативные подходы
Docker: развёртывание Ghost в контейнере упрощает обновления и миграции; хорош для пользователей, знакомых с контейнерами. Используйте официальные образы ghost и отдельный контейнер для MariaDB.
Nginx вместо Apache: nginx часто потребляет меньше ресурсов и проще в конфигурации для обратного прокси. Пример локации для nginx:
server {
listen 80;
server_name ghost.your-domain.tld;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_pass http://127.0.0.1:2368;
}
}- Ghost(Pro): платный сервис-хостинг от команды Ghost. Удобен для тех, кто не хочет заниматься администрированием, но стоит денег.
Когда этот подход не подойдёт (контрпримеры)
- Если ожидается десятки тысяч одновременных посетителей, Raspberry Pi вряд ли справится.
- Для мультисайтовых решений с высокой нагрузкой лучше использовать облачный VPS или выделенный сервер.
- Если вам нужна встроенная поддержка многих плагинов — WordPress может быть удобнее.
Мини-SOP: быстрая чек-лист-инструкция для администратора
- Подготовить Raspberry Pi и доступ SSH.
- Настроить DNS A-запись для домена/поддомена.
- Обновить систему: apt update && apt upgrade.
- Установить Apache/nginx и настроить обратный прокси.
- Установить MariaDB, создать БД и пользователя.
- Установить Node.js (подходящую версию).
- Установить Ghost CLI и выполнить ghost install.
- Настроить SSL с certbot и проверить HTTPS.
- Сделать первый бэкап после установки.
План действий при инциденте (runbook)
Сайт недоступен:
- Проверить статус сервиса Ghost: sudo systemctl status ghost_*.
- Проверить логи Ghost и системные журналы.
- Перезапустить сервис: sudo systemctl restart ghost_*.
- При проблемах с БД: sudo systemctl status mariadb; проверить состояние таблиц и доступ.
После неудачного обновления:
- Остановить Ghost: ghost stop.
- Восстановить файлы и базу из последней резервной копии.
- Откатить обновление Node.js, если проблема связана с несовместимостью.
Совместимость и советы по миграции
- Перед обновлением Ghost проверяйте требования к Node.js и к версиям пакетов в официальной документации.
- При миграции между серверами используйте дамп базы и tar-архив файлов. Для минимального простоя скопируйте файлы и выполните импорт БД вне пиковых часов.
Критерии приёмки
- Сайт доступен по HTTPS на вашем домене.
- Админ-панель /ghost/ открывается и позволяет создать пост.
- Резервная копия БД и файлов успешно создана и проверена.
- Сервис Ghost запущен как systemd unit и автоматически стартует после перезагрузки.
1‑строчная глоссарий
- Ghost CLI — официальный инструмент для управления Ghost.
- Reverse proxy — сервер-посредник (Apache/nginx), перенаправляющий внешние запросы к локальному приложению.
- MariaDB — форк MySQL, совместимая реляционная база данных.
Итог
Ghost — удобная платформа для личных и малых публичных блогов. Самохостинг на Raspberry Pi даёт вам полный контроль, экономит деньги и служит отличной учебной площадкой для администрирования серверов. Для стабильной работы важны корректная настройка обратного прокси, защищённая база данных и регулярные резервные копии.
Короткое резюме:
- Подготовьте DNS и Raspberry Pi.
- Установите Apache/nginx, MariaDB, Node.js и Ghost CLI.
- Запустите ghost install, настройте admin и включите HTTPS.
- Делайте бэкапы и тестируйте обновления в тестовой среде.
Примечание: если вы планируете развёртывать блог для коммерческого проекта с большой аудиторией, рассмотрите переход на VPS или на Ghost(Pro) для обеспечения масштабируемости и SLA.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone