أخبار التقنية

كيفية الاستضافة الذاتية وتثبيت Ghost على خادم Linux الخاص بك


Ghost هو برنامج إدارة محتوى مفتوح المصدر يسمح لك بإنشاء مدونة وخدمة رسائل إخبارية بسهولة. يمكنك اختيار الاشتراك في خدمة Ghost(Pro) لاستخدام نظام إدارة المحتوى (CMS)، أو إذا كنت تميل أكثر إلى التقنية، يمكنك استضافتها بنفسك على الخادم الخاص بك. نعرض لك هنا الأخير – Ghost المضيف ذاتيًا على خادم Linux الخاص بك.

لماذا يجب عليك استضافة Ghost ذاتيًا على خادمك

تتمثل إحدى مزايا مدونة Ghost في أنها توفر نظامًا أساسيًا متكاملاً ومليئًا بالميزات يعمل مباشرة خارج الصندوق. يتضمن ذلك القدرة على تتبع التحليلات وتحقيق الدخل من المشاركات وإنشاء رسائل إخبارية تلقائية للمشتركين لديك.

يتيح لك تثبيت Ghost على الخادم الخاص بك أن تكون ناشرًا دون الاعتماد على طرف ثالث لإدارة بياناتك. قد يكون هذا مفيدًا إذا كنت صحفيًا تنشر مقالات انتقادية حول مواضيع مثيرة للجدل.

وأخيرًا، يتميز Ghost بسهولة النشر والصيانة، حتى بالنسبة للمستخدمين غير التقنيين. على عكس منصات CMS التقليدية، يوفر Ghost حلاً شاملاً يمكنك “ضبطه ونسيانه” على جهاز الاستضافة الخاص بك.

جيد ان تعلم: تعرف على كيفية استضافة أرشيف ويب على Linux باستخدام Archivebox.

تثبيت Ghost على الخادم الخاص بك

افتراض: قبل أن نبدأ، نفترض أن لديك بالفعل خادم Linux متاحًا واسم مجال لاستضافة تثبيت Ghost الخاص بك. إذا كنت بحاجة إلى استئجار خادم Linux، فنوصي باستخدام DigitalOcean أو Linode.

نظرًا لأننا سنستخدم Docker، فسنحتاج إلى تثبيت Docker على الخادم أولاً.

1. قم بتثبيت المفتاح العام لمستودع مشروع Docker:

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

2. قم بإنشاء ملف مستودع جديد في دليل apt config الخاص بجهازك:

sudo nano /etc/apt/sources.list.d/docker.list

3. الصق السطر التالي من التعليمات البرمجية داخل ملف المستودع الجديد الخاص بك:

deb (arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg) https://download.docker.com/linux/ubuntu jammy stable

4. قم بتحديث قوائم مستودع النظام الخاص بك وقم بترقية الثنائيات الموجودة في جهازك:

sudo apt update
sudo apt upgrade

5. قم بتثبيت Docker وDocker Compose مع تبعياتهما:

sudo apt install wget docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin

6. أضف المستخدم الخاص بك إلى مجموعة Docker

sudo usermod -aG docker $USER

7. قم بتعيين خدمة Docker للتشغيل عند بدء التشغيل:

sudo systemctl enable docker.service

8. أعد تشغيل الخادم.

إعداد Gmail لتسليم SMTP

لا يأتي Ghost مزودًا ببرنامج تسليم البريد الإلكتروني الخاص به، لذا نحتاج إلى توصيله بـ Gmail لتسليم البريد الإلكتروني.

1. افتح متصفح الويب وقم بتسجيل الدخول إلى حساب Gmail الذي تريد ربطه بمثيل Ghost الخاص بك.

2. انقر على أيقونة الملف الشخصي لحسابك، ثم انقر على “إدارة حساب Google الخاص بك”.

3. حدد فئة “الأمان”، ثم انقر فوق خيار “التحقق بخطوتين” ضمن الفئة الفرعية “كيفية تسجيل الدخول إلى Google”.

لقطة شاشة تسلط الضوء على عملية التحقق بخطوتين لحسابات Gmail.

4. تحقق من رقم هاتفك وقم بتمكين التحقق بخطوتين.

5. ارجع إلى فئة “الأمان”، ثم انقر على خيار “التحقق بخطوتين” مرة أخرى. سيؤدي هذا إلى فتح شاشة قائمة جديدة حيث يمكنك تعيين مفاتيح ثانوية جديدة لحسابك. انتقل إلى أسفل الصفحة، ثم انقر على “كلمات مرور التطبيقات”.

لقطة شاشة توضح "كلمات مرور التطبيقات" خيار في قائمة التحقق بخطوتين.

6. حدد “البريد” للقائمة المنسدلة الأولى، ثم حدد “أخرى” في القائمة الثانية.

7. اكتب “Gmail for Ghost” في مربع النص، ثم انقر فوق “إنشاء”. سيؤدي هذا إلى فتح نافذة تحتوي على مربع نص أصفر يحتوي على كلمة المرور المخصصة للتطبيق.

لقطة شاشة توضح كلمة مرور التطبيق التي تم إنشاؤها لـ Ghost.

لعِلمِكَ: يمكنك أيضًا استخدام وكلاء التسليم الخارجيين الآخرين لإرسال البريد عبر Ghost. تعرف على كيفية إنشاء خادم البريد الإلكتروني الخاص بك باستخدام Mail-in-a-Box.

بناء حاوية دوكر

1. قم بإنشاء دليل جديد لملفات الإرساء الخاصة بتثبيت Ghost:

2. قم بإنشاء ملف docker-compose.yml جديد باستخدام محرر النصوص المفضل لديك:

nano ./docker-compose.yml

3. الصق كتلة التعليمات البرمجية التالية داخل ملف docker-compose.yml الجديد واحفظه.

---
version: "3"
services:
  ghost:
    image: ghost:latest
    restart: always
    ports:
      - 8080:2368
    environment:
      database__client: mysql
      database__connection__host: db
      database__connection__database: ghost
      database__connection__user: ghost
      database__connection__password: ghost
      url: ${GHOST_URL}
      mail__transport: ${MAIL_TRANSPORT}
      mail__options__host: ${MAIL_HOST}
      mail__options__port: ${MAIL_PORT}
      mail__options__secureConnection: ${MAIL_SECURE_CONNECTION}
      mail__options__auth__user: ${MAIL_USER}
      mail__options__auth__pass: ${MAIL_PASSWORD}
    volumes:
      - ghost-data:/var/lib/ghost/content
    links:
      - db
  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ghost
      MYSQL_USER: ghost
      MYSQL_PASSWORD: ghost
    cap_add:
      - SYS_NICE
    volumes:
      - ghost-db:/var/lib/mysql
volumes:
  ghost-data: null
  ghost-db: null

4. قم بإنشاء ملف “.env” داخل دليل Ghost docker الخاص بك:

5. الصق كتلة التعليمات البرمجية التالية داخل ملف .env الجديد:

# URL
GHOST_URL="#REPLACE_ME_WITH_DOMAIN_NAME#"
# Database
MYSQL_ROOT_PASSWORD="#REPLACE_ME_WITH_SECURE_PASSWORD#"
# SMTP variables
MAIL_SERVICE="Gmail"
MAIL_TRANSPORT="SMTP"
MAIL_USER="#REPLACE_ME_WITH_YOUR_GMAIL_ADDRESS#"
MAIL_PASSWORD="#REPLACE_ME_WITH_YOUR_APP_PASSWORD#"
MAIL_HOST="smtp.gmail.com"
MAIL_PORT="465"
MAIL_SECURE_CONNECTION="true"
  • قم بتغيير قيمة المتغير “GHOST_URL” من “#REPLACE_ME_WITH_DOMAIN_NAME#” إلى اسم النطاق الكامل الخاص بك.
محطة تعرض عنوان URL لمثيل Ghost البعيد.
  • استبدل قيمة “MYSQL_ROOT_PASSWORD” بكلمة مرور عشوائية بدرجة كافية.
  • قم بتغيير قيمة كل من “MAIL_USER” و”MAIL_PASSWORD” باستخدام عنوان البريد الإلكتروني لحساب Gmail الخاص بك وكلمة مرور التطبيق الخاصة به.

ملحوظة: تحتاج إلى كتابة كلمة مرور تطبيق Gmail بدون مسافات بين كل مقطع.

6. قم ببناء حاوية Ghost Docker عن طريق تشغيل الأمر التالي:

sudo docker compose up -d

إعداد وكيل عكسي

مع تشغيل Ghost في الواجهة الخلفية، نحتاج إلى إعداد وكيل عكسي حتى نتمكن من الوصول إلى Ghost بشكل عام. في هذه الحالة، سنستخدم الوكيل العكسي لـ Nginx.

1. قم بتثبيت حزمة خادم الويب Nginx. سيكون هذا بمثابة البرنامج الخفي للوكيل العكسي الذي سيأخذ الاتصالات من الإنترنت ويعيد توجيهها إلى Ghost.

2. قم بإنشاء ملف تكوين موقع Nginx جديد باستخدام محرر النصوص المفضل لديك:

sudo nano /etc/nginx/sites-available/ghost

3. الصق كتلة التعليمات البرمجية التالية داخل ملف تكوين الموقع الجديد:

server {
   listen 80;
   listen (::):80;
 
   root                    /var/www/html;
   server_name             ghost.myvpsserver.top;
 
   location / {
       proxy_set_header    X-Forwarded-For $remote_addr;
       proxy_set_header    Host $http_host;
       proxy_set_header    X-Forwarded-Proto $scheme;
       proxy_pass          http://127.0.0.1:8080;
   }
}

4. قم بإنشاء رابط رمزي لتكوين موقع Ghost الخاص بك:

sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/

5. قم بتمكين خدمة خادم الويب Nginx باستخدام systemctl:

sudo systemctl enable --now nginx.service

تمكين SSL على وكيل Nginx Reverse Proxy

1. تأكد من وجود الحزمة الإضافية “الأساسية” في جهازك:

2. قم بتثبيت حزمة certbot snap:

sudo snap install certbot --classic

3. قم بتسجيل تثبيت certbot على عنوان بريدك الإلكتروني عن طريق تشغيل الأمر التالي:

sudo certbot register --agree-tos --email ramces@email.invalid

4. اطلب شهادة SSL جديدة لمدونتك Ghost:

sudo certbot --nginx -d ghost.myvpsserver.top

5. اختبر ما إذا كان يمكن الوصول إلى مثيل Ghost الجديد الخاص بك من خلال SSL عن طريق فتح متصفح الويب وتحميل اسم المجال الخاص بك.

لقطة شاشة تعرض نسخة Ghost عاملة من خادم بعيد.

تشغيل Ghost على جهاز محلي

إذا لم يكن لديك خادم وتريد تثبيت Ghost على جهازك المحلي، فيمكنك ذلك أيضًا. بالإضافة إلى ذلك، يمكنك الاستفادة من Tailscale للوصول إليه في كل مكان على متصفحك.

1. قم بتثبيت برنامج Tailscale VPN على جهازك واربطه بحساب Tailscale الخاص بك. انتقل إلى وحدة تحكم مسؤول Tailscale وانقر فوق علامة التبويب “DNS” في الشريط العلوي لوحدة التحكم.

لقطة شاشة تسلط الضوء على علامة تبويب DNS في وحدة تحكم مسؤول Tailscale.

2. انقر فوق الزر “إعادة تسمية الشبكة الخلفية…” ضمن الفئة الفرعية “اسم الشبكة الخلفية”.

لقطة شاشة تسلط الضوء على "إعادة تسمية Tailnet" زر.

3. قم بتعيين اسم المضيف الخاص بجهازك على “ghost” متبوعًا بالنطاق الفرعي الجديد لشبكة Tailscale الخاصة بك:

sudo hostnamectl set-hostname ghost.your-tailnet.ts.net

تمكين مسار تحويل Tailscale

1. افتح وحدة تحكم مسؤول Tailscale وانقر فوق علامة التبويب “DNS”.

2. قم بالتمرير لأسفل إلى أسفل الصفحة ثم انقر فوق “تمكين HTTPS…”

لقطة شاشة توضح خيار HTTPS لمضيفي Tailscale.

3. قم بالتمرير مرة أخرى إلى أعلى الصفحة، ثم انقر فوق علامة التبويب “التحكم في الوصول”.

لقطة شاشة تسلط الضوء على "ضوابط الوصول" علامة التبويب في وحدة تحكم مسؤول Tailscale.

4. انقر فوق الزر “إضافة مسار تحويل إلى السياسة”.

لقطة شاشة تسلط الضوء على "أضف مسار التحويل إلى السياسة" زر في صفحة التحكم في الوصول.

5. قم بتشغيل الأمر التالي لإنشاء وكيل عكسي بين Tailscale وحاوية Docker المحلية الخاصة بك:

sudo tailscale serve https / http://127.0.0.1:8080

6. قم بتمكين مسار Tailscale للوكيل العكسي الخاص بك عن طريق تشغيل الأمر التالي:

sudo tailscale funnel 443 on

7. اختبر ما إذا كان يمكن الوصول إلى مثيل Ghost الجديد الخاص بك من خلال مسار تحويل Tailscale الخاص بك عن طريق فتح متصفح ويب وتحميل عنوان Tailscale الخاص بك.

لقطة شاشة توضح تثبيت Ghost أثناء العمل عبر Tailscale.

استخدام الشبح في المرة الأولى

1. افتح متصفح الويب وانتقل إلى عنوان URL لتثبيت Ghost متبوعًا بالدليل الفرعي “/ghost”.

لقطة شاشة لشريط عنوان متصفح الويب تعرض عنوان URL الصحيح لصفحة إعداد Ghost.

2. انقر فوق الحقل الأول وقم بتوفير اسم لمدونة Ghost الجديدة الخاصة بك. املأ بقية الحقول بالتفاصيل المتعلقة بالمستخدم الإداري، ثم انقر على “إنشاء حساب وبدء النشر”.

لقطة شاشة توضح "أنشئ حسابًا وابدأ بالنشر" زر مع نموذج مملوء.

إنشاء أول مشاركة لك في Ghost

1. انقر فوق الزر “اكتب مشاركتك الأولى” في صفحة تأهيل Ghost.

لقطة شاشة توضح الخطوات الأولى لصفحة الإعداد لبرنامج Ghost.

2. سيؤدي هذا إلى ظهور محرر نص عادي حيث يمكنك كتابة منشور نصي بسيط. انقر على “نشر” بمجرد الانتهاء من إنشاء منشور اختباري جديد.

3. تحقق من صفحة Ghost الأولى الخاصة بك لمعرفة ما إذا تم نشر المنشور الجديد.

إضافة مستخدم جديد إلى Ghost

1. ارجع إلى Ghost Administrator Console، ثم انقر على “الأعضاء” على الشريط الجانبي الأيسر للصفحة.

2. انقر فوق الزر “عضو جديد” الموجود في الزاوية اليمنى العليا للصفحة.

لقطة شاشة تعرض قائمة الأعضاء في نسخة Ghost الحالية.

3. قم بملء تفاصيل العضو الجديد، ثم انقر فوق “حفظ” لإضافته إلى موجز النشرة الإخبارية للمدونة.

جيد ان تعلم: تعرف على كيفية نشر واستضافة نسخة تويتر الخاصة بك باستخدام Pleroma.

أسئلة مكررة

هل لدى Tailscale Funnel أي قيود؟

نعم. افتراضيًا، يمكنك فقط كشف حركة المرور على Tailscale من خلال ثلاثة منافذ: 443 و8443 و10000 وباستخدام TCP فقط. وهذا يعني أنك لن تكون قادرًا على الكشف عن أي خدمة عبر الإنترنت في الوقت الفعلي مثل VoIP وخوادم الألعاب.

هل يمكنني تخصيص اسم المجال Tailscale؟

لا، وذلك لأن كل عنوان DNS Tailscale مصمم خصيصًا لحسابك المحدد. يتيح ذلك للخدمة التعرف على أجهزتك من الأجهزة الأخرى داخل شبكة Tailscale الأكبر.

هل ستتوقف مدونة Ghost الخاصة بي عن العمل عندما يكون جهاز الكمبيوتر الخاص بي غير متصل بالإنترنت؟

نعم. أحد الجوانب السلبية للاستضافة على أجهزتك الخاصة هو أن مدة تشغيل موقع الويب الخاص بك تعتمد على مدة تشغيل جهازك. وهذا يعني أنه عندما يتعطل جهازك المضيف، تتعطل أيضًا مدونة Ghost الخاصة بك.

حقوق الصورة: موظفو الاتصالات في مكتب العمل الذين يستخدمون مفهوم مدونة الكمبيوتر وكعكة شبح الهالوين التقليدية بواسطة 123RF.

رمسيس الأحمر
رمسيس الأحمر

رمسيس كاتب في مجال التكنولوجيا عاش مع أجهزة الكمبيوتر طوال حياته. قارئ غزير الإنتاج وطالب في الأنثروبولوجيا، وهو شخصية غريبة الأطوار تكتب مقالات عن Linux وأي شيء لا شيء.

اشترك في نشرتنا الإخبارية!

يتم تسليم أحدث البرامج التعليمية لدينا مباشرة إلى صندوق البريد الوارد الخاص بك


اكتشاف المزيد من إشراق العالم

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى