FreshRSS: এটি কী এবং VPS-এ কীভাবে ইনস্টল করবেন

1 মিনিট পড়া
Tropic
FreshRSS: এটি কী এবং VPS-এ কীভাবে ইনস্টল করবেন

Language: bn

FreshRSS: অ্যালগরিদম ছাড়াই নিজের নিউজ ফিড

সামাজিক নেটওয়ার্কগুলো ঠিক করে দেয় কোন পোস্ট আগে দেখানো হবে। ফলে একটি গুরুত্বপূর্ণ প্রজেক্ট আপডেট সহজেই চোখ এড়িয়ে যেতে পারে, আর তার জায়গায় কয়েক ডজন সুপারিশ দেখা যায়। FreshRSS ভিন্নভাবে কাজ করে: আপনি উৎস বেছে নেন, আর নতুন কনটেন্ট একটি একক কালানুক্রমিক ফিডে উপস্থিত হয়।

FreshRSS নিজের সার্ভারে ইনস্টল করে ব্লগ, সংবাদ সাইট, সফটওয়্যার আপডেট, ফোরাম, পডকাস্ট এবং RSS বা Atom ফিড সরবরাহ করা অন্যান্য উৎসের জন্য একীভূত ইনবক্স হিসেবে ব্যবহার করা যায়। এই নির্দেশিকায় অ্যাপ্লিকেশনটির বৈশিষ্ট্য, সার্ভারের প্রয়োজনীয়তা এবং Docker ও HTTPS সহ VPS-এ ইনস্টলেশনের পদ্ধতি দেখানো হয়েছে।

পাঁচ ধাপে FreshRSS

  1. একটি Linux VPS তৈরি করুন এবং একটি সাবডোমেইন সেখানে নির্দেশ করুন, যেমন rss.example.com
  2. Docker ও Docker Compose ইনস্টল করুন।
  3. স্বয়ংক্রিয় HTTPS-এর জন্য Caddy-এর সঙ্গে FreshRSS চালু করুন।
  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-এর জন্য খুব বেশি রিসোর্স প্রয়োজন হয় না। এটি SQLite, PostgreSQL, MariaDB এবং MySQL সমর্থন করে, আর ম্যানুয়াল ইনস্টলেশনের জন্য ওয়েব সার্ভার ও PHP 8.1 বা তার পরের সংস্করণ দরকার। অফিসিয়াল বর্ণনায় 150টি ফিড ও 22,000টি নিবন্ধসহ Raspberry Pi 1-এ পরীক্ষার কথাও উল্লেখ আছে।

বাস্তব ব্যবহারের জন্য শুরুর কনফিগারেশন:

পরিস্থিতিCPURAMস্টোরেজডেটাবেস
ব্যক্তিগত ফিড1 vCPU1 GB10–20 GB SSDSQLite
পরিবার বা ছোট টিম1–2 vCPU2 GB20–40 GB SSDSQLite অথবা বাহ্যিক ডেটাবেস
অনেক ব্যবহারকারী ও বড় আর্কাইভ2 vCPU থেকে4 GB থেকে40 GB SSD থেকেPostgreSQL অথবা MariaDB

এগুলো নির্দেশিকা, কঠোর ন্যূনতম সীমা নয়। কতগুলো উৎস রয়েছে, কত ঘন ঘন প্রকাশনা আসে এবং কতদিনের ইতিহাস রাখা হয়—এসবের ওপর স্টোরেজ ব্যবহারের পরিমাণ নির্ভর করে। যখন সার্বক্ষণিক আপডেট, বাইরে থেকে অ্যাক্সেস, মোবাইল সিঙ্ক্রোনাইজেশন এবং WebSub দরকার হয়, তখন বাড়ির কম্পিউটারের চেয়ে VPS বেশি সুবিধাজনক।

Docker দিয়ে VPS-এ FreshRSS কীভাবে ইনস্টল করবেন

নিচের কনফিগারেশনে FreshRSS Caddy-এর পেছনে চলে। Caddy বাইরের অনুরোধ গ্রহণ করে এবং স্বয়ংক্রিয়ভাবে TLS সার্টিফিকেট সংগ্রহ করে।

আপনার দরকার হবে একটি Linux VPS, docker compose কমান্ডসহ ইনস্টল করা Docker, সার্ভারের IP ঠিকানায় নির্দেশ করা A রেকর্ডসহ একটি সাবডোমেইন এবং খোলা 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' প্রতি ঘণ্টার 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-এর মাধ্যমে সহজেই স্থানান্তর করা যায়।

শুরুতেই উৎসগুলোকে “অবশ্যই পড়তে হবে”, “কাজ”, “নিরাপত্তা”, “বিস্তারিত লেখা” এবং “পটভূমি পড়াশোনা”-এর মতো ক্যাটাগরিতে সাজান। বেশি পরিমাণে প্রকাশনা করা সংবাদ সাইটগুলোকে যেন সত্যিই গুরুত্বপূর্ণ আপডেটগুলো মূল ফিড থেকে সরিয়ে না দিতে পারে।

কোনো অ্যাপ্লিকেশন সংযুক্ত করতে authentication settings-এ API চালু করুন এবং প্রোফাইলে আলাদা API পাসওয়ার্ড নির্ধারণ করুন। Google Reader API-এর ঠিকানাটি এমন দেখায়:

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

মূল অ্যাকাউন্ট ও API-এর জন্য একই পাসওয়ার্ড ব্যবহার না করাই ভালো।

অপঠিত নিবন্ধে ডুবে যাওয়া এড়াবেন কীভাবে

সামান্য কনফিগারেশনের পর FreshRSS আরও কার্যকর হয়ে ওঠে:

  • মূল ফিডে শুধু গুরুত্বপূর্ণ উৎসগুলো রাখুন;
  • অপ্রয়োজনীয় বিভাগগুলোকে স্বয়ংক্রিয়ভাবে পঠিত হিসেবে চিহ্নিত করতে ফিল্টার ব্যবহার করুন;
  • পণ্য, লেখক এবং বিষয়ের জন্য সার্চ কোয়েরি সংরক্ষণ করুন;
  • নিয়মিত পরিসংখ্যান পর্যালোচনা করুন এবং যেসব উৎস শুধু শব্দ তৈরি করে সেগুলো সরিয়ে দিন।

এক্সটেনশন পড়ার সময়ের অনুমান, শব্দ হাইলাইট, ইমেজ প্রক্সি, YouTube এম্বেড, webhook বিজ্ঞপ্তি এবং সামঞ্জস্যপূর্ণ LLM API-এর মাধ্যমে নিবন্ধ শ্রেণিবিন্যাস যোগ করতে পারে। তৃতীয় পক্ষের অ্যাড-অন কেবল বিশ্বস্ত উৎস থেকে ইনস্টল করুন।

আপডেট, নিরাপত্তা এবং ব্যাকআপ

কনটেইনার আপডেট করতে চালান:

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

বড় আপডেটের আগে একটি ব্যাকআপ তৈরি করুন। freshrss_data ভলিউমে ব্যবহারকারীর সেটিংস এবং SQLite ব্যবহার করলে নিবন্ধের ডেটাবেস থাকে। অ্যাড-অন ব্যবহার করলে freshrss_extensions-ও সংরক্ষণ করুন। PostgreSQL, MariaDB এবং MySQL-এর জন্য আলাদা ডেটাবেস ডাম্প দরকার।

ন্যূনতম নিরাপত্তা ব্যবস্থা:

  • HTTPS ব্যবহার করুন;
  • প্রয়োজনীয় অ্যাকাউন্ট তৈরি করার পর open registration বন্ধ করুন;
  • প্রয়োজন না হলে anonymous access চালু করবেন না;
  • আলাদা API পাসওয়ার্ড ব্যবহার করুন;
  • FreshRSS এবং এর এক্সটেনশন নিয়মিত আপডেট করুন;
  • VPS-এর বাইরে একটি ব্যাকআপ রাখুন।

OPML এক্সপোর্ট সম্পূর্ণ ব্যাকআপের বিকল্প নয়, তবে এর মাধ্যমে যেকোনো সামঞ্জস্যপূর্ণ RSS রিডারে সাবস্ক্রিপশন তালিকা দ্রুত পুনরুদ্ধার করা যায়।

tropic.host-এর VPS-এ FreshRSS

FreshRSS self-hosted পরিষেবা হিসেবে শুরু করার জন্য ভালো: এতে কম রিসোর্স লাগে, 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 RAM দিয়ে শুরু করা এবং SQLite ব্যবহার করা যুক্তিসঙ্গত। বড় আর্কাইভ, একাধিক ব্যবহারকারী বা অতিরিক্ত পরিষেবার জন্য আরও মেমরি প্রয়োজন হবে।

RSS ছাড়া কোনো ওয়েবসাইট কি যোগ করা যায়?

কখনো কখনো যায়। FreshRSS XPath-এর মাধ্যমে ওয়েব স্ক্র্যাপিং সমর্থন করে, তবে নিয়মগুলো ম্যানুয়ালি কনফিগার করতে হবে। ওয়েবসাইটের লেআউট বদলে গেলে সেই উৎসের নিয়ম ঠিক করতে হতে পারে।

কী কী ব্যাকআপ করতে হবে?

সবার আগে freshrss_data ভলিউমের ব্যাকআপ নিন: SQLite ব্যবহার করলে এতে নিবন্ধের ডেটাবেস থাকে। অ্যাড-অন ব্যবহার করলে freshrss_extensions-ও সংরক্ষণ করুন এবং যেকোনো বাহ্যিক ডেটাবেসের ডাম্প তৈরি করুন।