لماذا تستضيف FreshRSS ذاتيًا على خادم VPS
FreshRSS مجمِّع خلاصات RSS/Atom مكتوب بلغة PHP، مصمَّم ليكون خفيف الموارد مع إدارة آلاف المقالات. تحلّ الاستضافة الذاتية على خادم VPS ثلاث مشكلات لا تعالجها الخدمات المغلقة: الاستدامة (لا تختفي متابعتك بين ليلة وضحاها)، والخصوصية (لا أحد يحلّل اشتراكاتك)، والحداثة (تحدّد أنت وتيرة التحديث عبر cron، دون حصة مفروضة). خادم VPS، خلافًا للاستضافة المشتركة، يمنحك وصولاً كاملاً عبر SSH وحقّ تشغيل حاوية Docker وجدولة المهام — وهو بالضبط ما يحتاجه FreshRSS لتحديث الخلاصات في الخلفية.
فوائد ملموسة لـFreshRSS المُستضاف ذاتيًا
- واجهة برمجية أصلية متوافقة مع Fever وGoogle Reader: زامِن مع Reeder أو FeedMe أو Fluent Reader على الجوال.
- امتداد GReader / الكشط (scraping): استرجع المحتوى الكامل للمقالات المبتورة بفضل مرشّحات XPath.
- متعدد المستخدمين مع حصص لكل حساب: مثالي لمشاركة نسخة داخل وكالة.
- بصمة ذاكرة ضئيلة (200 إلى 300 ميغابايت): يعمل على أصغر خادم VPS دون تعثّر.
- تحديث مُدار بـcron: أنت تقرّر ما إذا كانت الخلاصات تُحدَّث كل 5 دقائق أو كل ساعة.
- نسخ احتياطي بسيط: قاعدة بيانات SQLite/MySQL ومجلد بيانات يكفيان لاستعادة كل شيء.
المتطلبات التقنية
FreshRSS من أكثر تطبيقات الاستضافة الذاتية اقتصادًا في الموارد. احسب 1 vCPU و1 غيغابايت من RAM لنسخة شخصية بعدد قليل من المستخدمين؛ ويكفي 10 غيغابايت من القرص بسعة كبيرة، إذ يشغل معظمه سجلّ المقالات. على الجانب البرمجي: Docker وإضافة Docker Compose مثبّتتان على الخادم VPS، واسم نطاق (أو نطاق فرعي من نوع rss.yourdomain.com) موجَّه بسجل A إلى عنوان IP الخادم، ومنفذ 80/443 مفتوح للوكيل العكسي. لا حاجة لتثبيت PHP على المضيف: تتضمّن الصورة الرسمية freshrss/freshrss كل شيء.
نشر FreshRSS خطوة بخطوة
تجهيز الخادم VPS وDocker
اتّصل عبر SSH، وحدّث النظام، ثم ثبّت Docker: curl -fsSL https://get.docker.com | sh. تحقّق بـdocker compose version. أنشئ مجلد مشروع mkdir -p /opt/freshrss && cd /opt/freshrss.
كتابة ملف docker-compose.yml
عرّف خدمة من الصورة freshrss/freshrss:latest، وحمّل حجمين (./data:/var/www/FreshRSS/data و./extensions:/var/www/FreshRSS/extensions)، وعيّن CRON_MIN=*/20 لتحديث الخلاصات كل 20 دقيقة. اعرض المنفذ الداخلي 80 للوكيل العكسي فقط، لا إلى الخارج.
تشغيل الحاوية
شغّل المكدّس بـdocker compose up -d، ثم تابِع التهيئة عبر docker compose logs -f. تطبّق الحاوية عمليات الترحيل وتنشئ شجرة البيانات عند التشغيل الأول.
إعداد الوكيل العكسي وSSL
ضع وكيلاً عكسيًا (Caddy أو Nginx Proxy Manager) أمام FreshRSS. باستخدام Caddy، يكفي سطران: rss.yourdomain.com { reverse_proxy freshrss:80 } ويتم الحصول على شهادة Let's Encrypt وتجديدها تلقائيًا.
إكمال التثبيت عبر الويب
افتح https://rss.yourdomain.com، واختر خلفية قاعدة البيانات (SQLite للاستخدام الشخصي، MySQL/PostgreSQL لعدة مستخدمين)، وأنشئ حساب المسؤول، وفعّل الواجهة البرمجية (API) في Profil للمزامنة مع الجوال.
استيراد خلاصاتك وجعل cron موثوقًا
استورد ملف OPML الموجود لديك من القارئ القديم. تحقّق من أن المهمة الداخلية تعمل بتشغيل docker compose exec freshrss ./cli/actualize.php يدويًا أول مرة للتحقق من جلب المقالات.
بالنسبة للمواقع التي تنشر مقتطفًا فقط في خلاصتها، ثبّت الامتداد الرسمي «FreshRSS Content Selector»: اضبط محدِّد CSS (مثل article.post-content) لكل اشتراك، وسيجلب FreshRSS النص الكامل عند كل تحديث. ادمجه مع امتداد المرشّحات لإخفاء المقالات المموَّلة المكتشَفة بالكلمة المفتاحية تلقائيًا.