تثبيت Coolify: نشر التطبيقات مع PaaS المستضاف ذاتياً
تثبيت Coolify، تكامل Docker وGit، نشر التطبيقات، إدارة قواعد البيانات، شهادات SSL، متغيرات البيئة وبديل PaaS المستضاف ذاتياً لـ Heroku/Netlify.
تثبيت Ghost عبر Docker، Nginx reverse proxy، شهادة SSL، إعداد القالب، نظام العضوية والاشتراك، النشرة البريدية وتكوين بيئة الإنتاج.
Ghost هي منصة CMS مفتوحة المصدر مصممة للتدوين الحديث ونشر المحتوى. مقارنة بـ WordPress، فهي أسرع وأكثر أماناً وموجهة للمحتوى. تدعم أيضاً تحقيق الدخل من المحتوى عبر نظام العضوية والنشرة البريدية وتكامل الدفع.
Ghost هو CMS headless ومنصة نشر مبنية على Node.js. الميزات الرئيسية:
# 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:
# تشغيل الحاويات
docker compose up -d
# التحقق من السجلات
docker logs ghost -f
ينشئ Ghost قاعدة البيانات تلقائياً عند التشغيل الأول. الوصول إلى لوحة الإدارة: https://blog.example.com/ghost.
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
- الوصول الافتراضي للمنشورات: عام / للأعضاء فقط / مدفوع
Settings → Membership → Stripe
1. إنشاء حساب Stripe
2. إدخال مفاتيح API
3. إضافة webhook endpoint:
https://blog.example.com/members/webhooks/stripe
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>"
# نسخ احتياطي لمجلد محتوى 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 جاهز للإنتاج في دقائق.
تحقق من أن حاوية Ghost تعمل بـ docker ps. تأكد من ضبط متغير البيئة URL بشكل صحيح. تحقق من تكوين Nginx proxy. راجع سجلات Ghost: docker logs ghost. عند الإعداد الأول انتقل إلى مسار /ghost: https://blog.example.com/ghost.
تحقق من إعدادات SMTP. إذا كنت تستخدم Mailgun تأكد من التحقق من النطاق. أرسل بريداً تجريبياً من Ghost admin Settings → Email. في وضع sandbox لـ Mailgun يمكن الإرسال فقط إلى عناوين محققة. فعّل نطاق Mailgun للإنتاج.
تحقق من إدخال مفاتيح API لـ Stripe بشكل صحيح (مفتاح live وليس test). تأكد من إضافة webhook endpoint في لوحة Stripe. يجب أن يكون URL الخاص بـ Ghost بـ HTTPS (Stripe يرفض HTTP). تحقق من أحداث webhook في سجلات Stripe.
قبل التحديث خذ نسخة احتياطية (مجلد المحتوى + قاعدة البيانات). حمّل الصورة الجديدة: docker compose pull. أعد تشغيل الحاوية: docker compose up -d. يقوم Ghost تلقائياً بترحيل قاعدة البيانات. عند التحديثات الكبيرة (مثل 4.x → 5.x) اقرأ ملاحظات الإصدار.
تأكد من أن ملف .zip للقالب بالهيكل الصحيح (package.json و index.hbs مطلوبان). فعّل القالب عبر Settings → Design → Activate. تحقق من سجلات Ghost لأخطاء القالب. يجب أن يكون القالب متوافقاً مع إصدار Ghost الخاص بك.
إذا كنت تستخدم MySQL حسّن اتصال قاعدة البيانات. أضف ضغط gzip وتخزين المتصفح المؤقت في Nginx. فعّل التخزين المؤقت في Ghost Settings → Labs. فكّر في استخدام CDN (خطة Cloudflare المجانية). زد RAM الخادم (يُنصح بحد أدنى 2 جيجابايت).
تثبيت Coolify، تكامل Docker وGit، نشر التطبيقات، إدارة قواعد البيانات، شهادات SSL، متغيرات البيئة وبديل PaaS المستضاف ذاتياً لـ Heroku/Netlify.
تثبيت Nextcloud مع Docker، تهيئة Apache/Nginx، إعداد قاعدة البيانات، شهادة SSL، مزامنة الملفات، متجر التطبيقات وتحسين الأداء.
تثبيت Portainer CE، إدارة Docker وKubernetes، نشر الـ stacks، إدارة الأحجام/الشبكات، تفويض المستخدمين، Webhooks وتكامل GitOps.