Tropic Host

FreshRSS: ما هو وكيفية تثبيته على خادم VPS

1 دقيقة للقراءة
Tropic
FreshRSS: ما هو وكيفية تثبيته على خادم VPS

Language: ar

FreshRSS: موجز أخبارك الخاص من دون خوارزميات

تقرر شبكات التواصل الاجتماعي أي المنشورات تظهر أولًا. ونتيجة لذلك، قد يمر تحديث مهم لمشروع ما من دون ملاحظة، بينما تحل محله عشرات التوصيات. يعمل FreshRSS بطريقة مختلفة: تختار أنت المصادر، ويظهر المحتوى الجديد في موجز زمني واحد.

يمكن تثبيت FreshRSS على خادمك الخاص واستخدامه كبريد وارد موحّد للمدونات ومواقع الأخبار وتحديثات البرامج والمنتديات والبودكاست وغيرها من المصادر التي توفر خلاصات RSS أو Atom. يشرح هذا الدليل إمكانات التطبيق ومتطلبات الخادم وطريقة تثبيته على خادم VPS باستخدام Docker وHTTPS.

FreshRSS في خمس خطوات

  1. أنشئ خادم VPS يعمل بنظام Linux ووجّه نطاقًا فرعيًا إليه، مثل rss.example.com.
  2. ثبّت Docker وDocker Compose.
  3. شغّل FreshRSS مع Caddy للحصول على HTTPS تلقائي.
  4. افتح النطاق الفرعي، واختر SQLite، وأنشئ حسابًا.
  5. استورد الاشتراكات من OPML أو أضف المواقع يدويًا.

بعد ذلك، سيتحقق خادم VPS من المصادر وفق جدول زمني حتى عندما يكون حاسوب المستخدم متوقفًا.

ما هو FreshRSS؟

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

خلاصة RSS هي ملف خاص يحدّثه الموقع كلما نُشر محتوى جديد. يجلب FreshRSS هذه الملفات بانتظام من المصادر التي تختارها، ويجمع إدخالاتها في واجهة واحدة. وتتم مزامنة المقالات غير المقروءة والمفضلة وسجل القراءة بين الأجهزة.

الفكرة الأساسية بسيطة: يقرر المستخدم بنفسه من يتابع وبأي ترتيب يقرأ المنشورات. لا يرتب FreshRSS الإدخالات حسب التفاعل، ولا يدرج محتوى موصى به بين الاشتراكات.

إمكانات FreshRSS

الإمكانيةالاستخدام
الفئات والحالات والمفضلةفصل المصادر المتعلقة بالعمل والمصادر التقنية والشخصية
البحث والمرشحات والاستعلامات المحفوظةعرض المنشورات المتعلقة بموضوع محدد فقط
استيراد وتصدير OPMLنقل قائمة الاشتراكات بسرعة
Google Reader API وFever APIربط التطبيقات المتوافقة على الهاتف والحاسوب
WebSubاستقبال الإدخالات فور نشرها من المصادر المدعومة
مستخدمون متعددونإنشاء حسابات منفصلة للعائلة أو الفريق
السمات والإضافاتتغيير الواجهة وإضافة إمكانات جديدة
XPath وJSON Feedالاشتراك في بعض المصادر التي لا توفر خلاصة RSS أو Atom قياسية

يمكن أن يتحول الاستعلام المحفوظ إلى موجز مستقل قائم على موضوع، مثل موجز يعرض منشورات الأمن فقط أو تحديثات منتج معين. ويمكن فتح النتيجة داخل FreshRSS أو نشرها بصيغة HTML أو RSS، كما تتوفر صيغة OPML لقوائم الخلاصات.

يتيح WebSub لموقع متوافق إخطار FreshRSS بوجود إدخال جديد بدلًا من انتظار موعد الفحص التالي. ولكي يعمل ذلك، يجب أن يكون مثيل FreshRSS متاحًا على الإنترنت عبر عنوان عام صالح.

يُعد FreshRSS مفيدًا خصوصًا للمطورين ومسؤولي الأنظمة: إذ يمكن جمع مدونات المشاريع والإصدارات وتقارير الأعطال والمنشورات الأمنية في موجز واحد. أما في القراءة اليومية، فهو يستبدل عشرات علامات التبويب المفتوحة ويحافظ على حالة القراءة الدقيقة متزامنة بين جميع الأجهزة.

متطلبات النظام لتشغيل FreshRSS

يحتاج FreshRSS إلى موارد قليلة. وهو يدعم SQLite وPostgreSQL وMariaDB وMySQL، بينما يتطلب التثبيت اليدوي خادم ويب وPHP 8.1 أو إصدارًا أحدث. ويتضمن الوصف الرسمي حتى اختبارًا على Raspberry Pi 1 مع 150 خلاصة و22,000 مقال.

تكوينات بداية عملية:

السيناريووحدة المعالجة المركزيةالذاكرةالتخزينقاعدة البيانات
موجز شخصي1 vCPU1 GB10–20 GB SSDSQLite
عائلة أو فريق صغير1–2 vCPU2 GB20–40 GB SSDSQLite أو قاعدة بيانات خارجية
مستخدمون كثيرون وأرشيف كبيرمن 2 vCPUمن 4 GBمن 40 GB SSDPostgreSQL أو MariaDB

هذه إرشادات وليست حدودًا دنيا صارمة. يعتمد استهلاك التخزين على عدد المصادر وتواتر النشر ومدة الاحتفاظ بالسجل. ويكون خادم VPS أكثر ملاءمة من حاسوب منزلي عندما تحتاج إلى تحديثات مستمرة على مدار الساعة، ووصول خارجي، ومزامنة مع الهاتف، وتشغيل WebSub بصورة صحيحة.

كيفية تثبيت FreshRSS على خادم VPS باستخدام Docker

في الإعداد التالي، يعمل FreshRSS خلف Caddy. يستقبل Caddy الطلبات الخارجية ويحصل على شهادة TLS تلقائيًا.

ستحتاج إلى خادم VPS يعمل بنظام Linux، وتثبيت Docker مع الأمر docker compose، ونطاق فرعي يتضمن سجل A يشير إلى عنوان IP الخاص بالخادم، وفتح المنفذين 80 و443.

الخطوة 1. إنشاء مجلد

sudo mkdir -p /opt/freshrss
sudo chown "$USER":"$USER" /opt/freshrss
cd /opt/freshrss

الخطوة 2. إنشاء compose.yaml

services:
  freshrss:
    image: freshrss/freshrss:latest
    container_name: freshrss
    restart: unless-stopped
    logging:
      options:
        max-size: 10m
    environment:
      TZ: Etc/UTC
      CRON_MIN: '3,33'
      FRESHRSS_ENV: production
      TRUSTED_PROXY: 172.16.0.0/12
    volumes:
      - freshrss_data:/var/www/FreshRSS/data
      - freshrss_extensions:/var/www/FreshRSS/extensions

  caddy:
    image: caddy:2
    container_name: freshrss-caddy
    restart: unless-stopped
    depends_on:
      - freshrss
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
      - caddy_config:/config

volumes:
  freshrss_data:
  freshrss_extensions:
  caddy_data:
  caddy_config:

يبدأ CRON_MIN: '3,33' فحص الخلاصات في الدقيقة الثالثة والثالثة والثلاثين من كل ساعة. لا يحدّث FreshRSS الخلاصة الفردية أكثر من مرة تقريبًا كل 20 دقيقة، لذلك لا تكون جدولة المهمة بوتيرة أعلى ضرورية عادةً.

الخطوة 3. إنشاء Caddyfile

rss.example.com {
    reverse_proxy freshrss:80
}

استبدل النطاق بنطاقك الخاص. بعد انتشار سجل DNS وإمكانية الوصول إلى المنفذين، سيحصل Caddy على الشهادة ويجددها تلقائيًا.

الخطوة 4. تشغيل FreshRSS

docker compose up -d
docker compose ps

يمكنك فحص السجلات باستخدام الأمر التالي:

docker compose logs -f --tail=100

افتح https://rss.example.com. سيفحص معالج التثبيت البيئة، ويطلب منك اختيار قاعدة بيانات، ثم ينشئ المستخدم الأول. ويُعد SQLite الخيار الأبسط لخادم شخصي لأنه لا يتطلب حاوية قاعدة بيانات منفصلة.

الإعداد الأولي

غالبًا ما يستطيع FreshRSS اكتشاف خلاصة RSS أو Atom من العنوان العادي للموقع. وإذا لم ينجح الاكتشاف التلقائي، فأدخل عنوان URL المباشر للخلاصة. ويمكن نقل الاشتراكات من Feedly وInoreader وقارئات أخرى بسهولة عبر OPML.

نظّم المصادر مباشرةً في فئات مثل «يجب قراءتها» و«العمل» و«الأمن» و«القراءات المطولة» و«القراءة العامة». يجب ألا تدفع مواقع الأخبار كثيرة النشر التحديثات المهمة فعلًا خارج الموجز الرئيسي.

لربط تطبيق ما، فعّل API في إعدادات المصادقة، ثم عيّن كلمة مرور API منفصلة في الملف الشخصي. ويبدو عنوان Google Reader API كما يلي:

https://rss.example.com/api/greader.php

من الأفضل عدم استخدام كلمة المرور نفسها للحساب الرئيسي وAPI.

كيف تتجنب الغرق في المقالات غير المقروءة

يصبح FreshRSS أكثر فائدة بعد إجراء بعض الإعدادات البسيطة:

  • احتفظ بالمصادر المهمة فقط في الموجز الرئيسي؛
  • استخدم المرشحات لوضع الأقسام غير الضرورية في حالة «مقروء» تلقائيًا؛
  • احفظ استعلامات البحث للمنتجات والمؤلفين والموضوعات؛
  • راجع الإحصاءات دوريًا وأزل المصادر التي لا تنتج إلا الضوضاء.

يمكن للإضافات إضافة تقديرات وقت القراءة، وتمييز الكلمات، وتمرير الصور عبر وكيل، وتضمين YouTube، وإشعارات webhook، وتصنيف المقالات عبر API متوافق مع نماذج اللغة الكبيرة (LLM). ثبّت الإضافات الخارجية من مصادر موثوقة فقط.

التحديثات والأمان والنسخ الاحتياطية

لتحديث الحاويات، نفّذ:

cd /opt/freshrss
docker compose pull
docker compose up -d

أنشئ نسخة احتياطية قبل أي تحديث رئيسي. يحتوي المجلد freshrss_data على إعدادات المستخدم، وعلى قاعدة بيانات المقالات عند استخدام SQLite. واحفظ أيضًا freshrss_extensions إذا كنت تستخدم الإضافات. أما PostgreSQL وMariaDB وMySQL فتتطلب تفريغًا منفصلًا لقاعدة البيانات.

الحد الأدنى من إجراءات الأمان:

  • استخدم HTTPS؛
  • عطّل التسجيل المفتوح بعد إنشاء الحسابات المطلوبة؛
  • لا تفعّل الوصول المجهول إلا عند الحاجة؛
  • استخدم كلمة مرور API منفصلة؛
  • حدّث FreshRSS وإضافاته بانتظام؛
  • احتفظ بنسخة احتياطية خارج خادم VPS.

لا يحل تصدير OPML محل النسخة الاحتياطية الكاملة، لكنه يتيح استعادة قائمة الاشتراكات بسرعة في أي قارئ RSS متوافق.

FreshRSS على خادم VPS من tropic.host

يُعد FreshRSS خدمة مستضافة ذاتيًا مناسبة للبدء: فهو يحتاج إلى موارد قليلة، ويعمل داخل Docker، ويصبح مفيدًا مباشرةً بعد استيراد الاشتراكات. ويوفر خادم VPS عام تحديثات للخلاصات على مدار الساعة، وإمكانية الوصول من الهاتف، وتشغيل WebSub بصورة صحيحة.

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

الخلاصة

يحوّل FreshRSS عشرات المواقع إلى موجز شخصي سهل الإدارة من دون ترتيب خوارزمي. وهو يدعم عملاء الهاتف والمرشحات والاستعلامات المحفوظة والمستخدمين المتعددين وWebSub والإضافات، مع بقائه خفيفًا بما يكفي لخادم VPS صغير.

تحتاج إلى Docker ونطاق وSQLite للبدء. وبعد التثبيت، اضبط الفئات والتحديثات التلقائية وHTTPS والنسخ الاحتياطية. عندها سيعرض FreshRSS المصادر التي اخترتها فقط، وسيبقي التحكم في القراءة بيد المستخدم.

الأسئلة الشائعة

هل FreshRSS مجاني؟

نعم. يُوزع FreshRSS بموجب ترخيص AGPL-3.0. ولا تحتاج إلى الدفع إلا مقابل البنية التحتية إذا شغّل التطبيق على خادم VPS مستأجر.

هل يمكن استخدام FreshRSS من دون نطاق؟

نعم، وذلك عبر إتاحة منفذ الحاوية. لكن للاستخدام الدائم، من الأفضل إعداد نطاق وHTTPS، لأن ذلك يسهّل الوصول الآمن ومزامنة الهاتف وتشغيل WebSub.

كم تبلغ الذاكرة التي يحتاج إليها FreshRSS؟

بالنسبة إلى موجز شخصي، من المعقول البدء بذاكرة RAM سعتها 1 GB واستخدام SQLite. أما الأرشيف الكبير أو المستخدمون المتعددون أو الخدمات الإضافية فتحتاج إلى ذاكرة أكبر.

هل يمكنني إضافة موقع لا يملك RSS؟

أحيانًا. يدعم FreshRSS كشط الويب عبر XPath، لكن يجب إعداد القواعد يدويًا. وإذا تغير تصميم الموقع، فقد تحتاج قواعد ذلك المصدر إلى الإصلاح.

ما الذي يجب نسخه احتياطيًا؟

أولًا، انسخ المجلد freshrss_data احتياطيًا؛ فعند استخدام SQLite يحتوي على قاعدة بيانات المقالات. واحفظ أيضًا freshrss_extensions وأنشئ تفريغات لأي قاعدة بيانات خارجية.