انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

تثبيت Ghost: منصة مدونة ومحتوى مستضافة ذاتياً

تثبيت Ghost عبر Docker، Nginx reverse proxy، شهادة SSL، إعداد القالب، نظام العضوية والاشتراك، النشرة البريدية وتكوين بيئة الإنتاج.

وقت القراءة: 13 dk الاستضافة الذاتية
ghostمدونةcmsself-hostingdockerنشرة بريديةإدارة المحتوى

جدول المحتويات

تثبيت Ghost: منصة مدونة ومحتوى مستضافة ذاتياً

Ghost هي منصة CMS مفتوحة المصدر مصممة للتدوين الحديث ونشر المحتوى. مقارنة بـ WordPress، فهي أسرع وأكثر أماناً وموجهة للمحتوى. تدعم أيضاً تحقيق الدخل من المحتوى عبر نظام العضوية والنشرة البريدية وتكامل الدفع.

ما هو Ghost؟

Ghost هو CMS headless ومنصة نشر مبنية على Node.js. الميزات الرئيسية:

  • السرعة: مبني على Node.js، تحميل صفحات سريع جداً
  • SEO: أدوات SEO مدمجة وبيانات منظمة
  • العضوية: نظام عضوية مجاني ومدفوع
  • النشرة البريدية: إرسال نشرات بريدية مدمج
  • القوالب: نظام قوالب مبني على Handlebars
  • API: REST API للاستخدام كـ headless CMS

متطلبات النظام

  • خادم مع Docker و Docker Compose
  • حد أدنى 1 جيجابايت RAM (يُنصح بـ 2 جيجابايت)
  • MySQL 8.0 أو SQLite
  • نطاق صالح وشهادة SSL

التثبيت عبر Docker

إعداد الإنتاج مع 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

النشرة البريدية

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 يمكنك تشغيل Ghost جاهز للإنتاج في دقائق.