Перейти к основному содержимому
Вернуться в категорию

Установка Ghost: Самостоятельно размещаемый блог и контент-платформа

Установка Ghost через Docker, Nginx reverse proxy, SSL-сертификат, настройка темы, система подписок и членства, email-рассылка и production-конфигурация.

Время чтения: 13 dk Самостоятельный хостинг
ghostблогcmsself-hostingdockerрассылкауправление контентом

Содержание

Установка Ghost: Самостоятельно размещаемый блог и контент-платформа

Ghost — это CMS-платформа с открытым исходным кодом для современного блоггинга и публикации контента. По сравнению с WordPress, Ghost быстрее, безопаснее и ориентирован на контент. Поддерживает монетизацию контента через систему членства, рассылку и интеграцию с платёжными системами.

Что такое Ghost?

Ghost — это headless CMS и платформа публикации на базе Node.js. Ключевые особенности:

  • Скорость: На базе Node.js, очень быстрая загрузка страниц
  • SEO: Встроенные SEO-инструменты и структурированные данные
  • Членство: Бесплатная и платная система членства
  • Рассылка: Встроенная отправка email-рассылок
  • Темы: Система тем на базе Handlebars
  • API: REST API для использования как headless CMS

Системные требования

  • Сервер с Docker и Docker Compose
  • Минимум 1 ГБ RAM (рекомендуется 2 ГБ)
  • MySQL 8.0 или SQLite
  • Действующий домен и SSL-сертификат

Установка через Docker

Production-установка с MySQL

hljs yaml
# docker-compose.yml
version: '3.8'

services:
  ghost:
    image: ghost:5-alpine
    container_name: ghost
    restart: unless-stopped
    depends_on:
      - db
    environment:
      database__client: mysql
      database__connection__host: db
      database__connection__user: ghost
      database__connection__password: strong-password
      database__connection__database: ghost
      url: https://blog.example.com
      mail__transport: SMTP
      mail__options__host: smtp.mailgun.org
      mail__options__port: 587
      mail__options__auth__user: postmaster@mg.example.com
      mail__options__auth__pass: mailgun-api-key
      mail__from: noreply@example.com
    volumes:
      - ./ghost-content:/var/lib/ghost/content
    ports:
      - "127.0.0.1:2368:2368"

  db:
    image: mysql:8.0
    container_name: ghost-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: root-password
      MYSQL_DATABASE: ghost
      MYSQL_USER: ghost
      MYSQL_PASSWORD: strong-password
    volumes:
      - mysql-data:/var/lib/mysql

volumes:
  mysql-data:
hljs bash
# Запустить контейнеры
docker compose up -d

# Проверить логи
docker logs ghost -f

Ghost автоматически создаёт базу данных при первом запуске. Доступ к панели администратора: https://blog.example.com/ghost.

Nginx Reverse Proxy и SSL

hljs nginx
server {
    listen 80;
    server_name blog.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name blog.example.com;

    ssl_certificate /etc/letsencrypt/live/blog.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/blog.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:2368;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_buffering off;
    }
}

Система членства и подписок

Settings → Membership
- Разрешить бесплатных участников: Включено
- Платные подписки: Через Stripe
- Доступ к записям по умолчанию: Публичный / Только для участников / Платный

Интеграция со Stripe

Settings → Membership → Stripe
1. Создайте аккаунт Stripe
2. Введите API-ключи
3. Добавьте webhook endpoint:
   https://blog.example.com/members/webhooks/stripe

Email-рассылка

hljs yaml
environment:
  mail__transport: SMTP
  mail__options__service: Mailgun
  mail__options__host: smtp.mailgun.org
  mail__options__port: 587
  mail__options__auth__user: postmaster@mg.example.com
  mail__options__auth__pass: mailgun-smtp-password
  mail__from: "Blog Name <noreply@example.com>"

Резервное копирование

hljs bash
# Резервное копирование директории контента Ghost
tar -czf ghost-backup-$(date +%Y%m%d).tar.gz ./ghost-content/

# Резервное копирование базы данных MySQL
docker exec ghost-db mysqldump -u ghost -pstrong-password ghost > \
  ghost-db-$(date +%Y%m%d).sql

Заключение

Ghost — мощная современная альтернатива WordPress для публикации контента. Встроенная система членства, возможности рассылки и чистый редактор делают его идеальным для профессиональных блогеров и издателей. С развёртыванием через Docker на серверах REXE вы можете запустить production-ready Ghost за считанные минуты.