FreshRSS: چیست و چگونه آن را روی VPS نصب کنیم

1 دقیقه خواندن
Tropic
FreshRSS: چیست و چگونه آن را روی VPS نصب کنیم

FreshRSS: فید خبری شخصی شما بدون الگوریتم‌ها

شبکه‌های اجتماعی تصمیم می‌گیرند کدام پست‌ها را اول نشان دهند. در نتیجه، یک به‌روزرسانی مهم پروژه به‌سادگی میان ده‌ها پیشنهاد گم می‌شود. FreshRSS متفاوت عمل می‌کند: شما منابع را انتخاب می‌کنید و محتوای جدید در یک فید زمانی واحد نمایش داده می‌شود.

می‌توان FreshRSS را روی سرور خود نصب کرد و از آن به‌عنوان صندوق ورودی یکپارچه‌ای برای وبلاگ‌ها، سایت‌های خبری، به‌روزرسانی نرم‌افزارها، انجمن‌ها، پادکست‌ها و هر منبع دیگری که فید RSS یا Atom ارائه می‌دهد استفاده کرد. در این راهنما قابلیت‌های برنامه، نیازمندی‌های سرور و نصب آن روی VPS با Docker و HTTPS را بررسی می‌کنیم.

FreshRSS در پنج مرحله

  1. یک VPS لینوکسی بسازید و یک زیردامنه، مثلاً rss.example.com، را به آن متصل کنید.
  2. Docker و Docker Compose را نصب کنید.
  3. FreshRSS را همراه با Caddy برای HTTPS خودکار اجرا کنید.
  4. زیردامنه را باز کنید، SQLite را انتخاب کنید و یک حساب بسازید.
  5. اشتراک‌ها را از OPML وارد کنید یا سایت‌ها را به‌صورت دستی اضافه کنید.

پس از آن، VPS منابع را طبق برنامه بررسی می‌کند؛ حتی زمانی که رایانه کاربر خاموش است.

FreshRSS چیست؟

FreshRSS یک تجمیع‌کننده رایگان و self-hosted برای فیدهای RSS و Atom است. Self-hosted یعنی برنامه و پایگاه داده روی سروری تحت کنترل شما اجرا می‌شوند، نه روی زیرساخت یک سرویس ابری.

فید 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

FreshRSS به منابع کمی نیاز دارد. این برنامه از SQLite، PostgreSQL، MariaDB و MySQL پشتیبانی می‌کند، درحالی‌که نصب دستی به وب‌سرور و PHP 8.1 یا جدیدتر نیاز دارد. در توضیحات رسمی حتی آزمایشی روی Raspberry Pi 1 با 150 فید و 22,000 مقاله آورده شده است.

پیکربندی‌های عملی برای شروع:

سناریوCPURAMفضای ذخیره‌سازیپایگاه داده
فید شخصی1 vCPU1 GB10–20 GB SSDSQLite
خانواده یا تیم کوچک1–2 vCPU2 GB20–40 GB SSDSQLite یا پایگاه داده خارجی
کاربران زیاد و آرشیو بزرگاز 2 vCPUاز 4 GBاز 40 GB SSDPostgreSQL یا MariaDB

این اعداد راهنما هستند، نه حداقل‌های قطعی. مصرف فضای ذخیره‌سازی به تعداد منابع، دفعات انتشار و مدت نگهداری سابقه بستگی دارد. وقتی به‌روزرسانی شبانه‌روزی، دسترسی خارجی، همگام‌سازی موبایل و WebSub لازم است، VPS از رایانه خانگی مناسب‌تر است.

چگونه FreshRSS را با Docker روی VPS نصب کنیم

در پیکربندی زیر، FreshRSS پشت Caddy اجرا می‌شود. Caddy درخواست‌های خارجی را دریافت می‌کند و گواهی TLS را به‌طور خودکار می‌گیرد.

به یک VPS لینوکسی، 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

پیش از یک به‌روزرسانی بزرگ پشتیبان بگیرید. volume freshrss_data تنظیمات کاربران و هنگام استفاده از SQLite، پایگاه داده مقاله‌ها را در خود دارد. اگر از افزونه استفاده می‌کنید، freshrss_extensions را نیز نگه دارید. PostgreSQL، MariaDB و MySQL به یک dump جداگانه از پایگاه داده نیاز دارند.

حداقل اقدامات امنیتی:

  • از HTTPS استفاده کنید؛
  • پس از ساخت حساب‌های لازم، ثبت‌نام عمومی را غیرفعال کنید؛
  • مگر در صورت نیاز، دسترسی ناشناس را فعال نکنید؛
  • از گذرواژه جداگانه برای API استفاده کنید؛
  • FreshRSS و افزونه‌های آن را مرتب به‌روزرسانی کنید؛
  • پشتیبان را خارج از VPS نگه دارید.

خروجی OPML جایگزین پشتیبان کامل نیست، اما امکان بازیابی سریع فهرست اشتراک‌ها را در هر خوانشگر RSS سازگار فراهم می‌کند.

FreshRSS روی VPS از tropic.host

FreshRSS سرویس self-hosted خوبی برای شروع است: منابع کمی لازم دارد، در Docker اجرا می‌شود و بلافاصله پس از وارد کردن اشتراک‌ها مفید است. یک VPS عمومی به‌روزرسانی فیدها در تمام شبانه‌روز، دسترسی از تلفن و عملکرد درست WebSub را فراهم می‌کند.

برای نصب شخصی معمولاً یک پیکربندی کوچک لینوکسی کافی است. در tropic.host می‌توانید FreshRSS را روی زیردامنه اختصاصی قرار دهید، با یک VPS پایه شروع کنید و سرویس را مستقل از رایانه خانگی نگه دارید. هنگام انتخاب پلن، پایداری، فضای آرشیو و پشتیبان‌گیری از داشتن توان پردازشی بسیار زیاد مهم‌تر هستند.

نتیجه‌گیری

FreshRSS ده‌ها سایت را بدون رتبه‌بندی الگوریتمی به فیدی شخصی و قابل مدیریت تبدیل می‌کند. این برنامه از کلاینت‌های موبایل، فیلترها، پرس‌وجوهای ذخیره‌شده، چند کاربر، WebSub و افزونه‌ها پشتیبانی می‌کند و در عین حال آن‌قدر سبک است که روی یک VPS کوچک اجرا شود.

برای شروع به Docker، دامنه و SQLite نیاز دارید. پس از نصب، دسته‌ها، به‌روزرسانی خودکار، HTTPS و پشتیبان‌گیری را تنظیم کنید. پس از آن FreshRSS فقط منابعی را که انتخاب کرده‌اید نشان می‌دهد و کنترل مطالعه در دست کاربر باقی می‌ماند.

FAQ

آیا FreshRSS رایگان است؟

بله. FreshRSS تحت مجوز AGPL-3.0 توزیع می‌شود. اگر برنامه روی VPS اجاره‌ای اجرا شود، فقط هزینه زیرساخت را پرداخت می‌کنید.

آیا می‌توان از FreshRSS بدون دامنه استفاده کرد؟

بله، با باز کردن پورت کانتینر. برای استفاده دائمی بهتر است دامنه و HTTPS را پیکربندی کنید، زیرا این کار دسترسی امن، همگام‌سازی موبایل و WebSub را ساده‌تر می‌کند.

FreshRSS به چه مقدار RAM نیاز دارد؟

برای یک فید شخصی، شروع با 1 GB RAM و SQLite منطقی است. آرشیو بزرگ، کاربران متعدد یا سرویس‌های اضافی به حافظه بیشتری نیاز خواهند داشت.

آیا می‌توان سایتی بدون RSS اضافه کرد؟

گاهی اوقات. FreshRSS از web scraping از طریق XPath پشتیبانی می‌کند، اما قوانین باید دستی پیکربندی شوند. اگر چیدمان سایت تغییر کند، ممکن است لازم باشد آن منبع را اصلاح کنید.

از چه چیزهایی باید پشتیبان گرفت؟

در درجه اول از volume freshrss_data پشتیبان بگیرید: هنگام استفاده از SQLite، پایگاه داده مقاله‌ها در آن قرار دارد. freshrss_extensions را نیز نگه دارید و از هر پایگاه داده خارجی dump تهیه کنید.