কম্পিউটার টিউটোরিয়াল

Leafnode সেটআপ করা একটি অফলাইন USENET সার্ভার হিসেবে

রিমোট নিউজ সার্ভারের সাথে ডিল করা একটি সিয়ালেন্ট USENET রিডারের জন্য পেইনফুল হতে পারে। অধিকাংশ সময় এই সার্ভারগুলো স্লো এবং আনরিলায়েবল। 게다가, আপনি যদি ফ্রি প্রোভাইডার খুব ঘন ঘন অ্যাক্সেস করেন, যেন AIOE, তারা আপনার কানেকশন লিমিট করতে পারে এবং আপনার IP অ্যাড্রেস ব্যান করতে পারে। এই ফ্যাক্টরগুলো কিছু লোকের জন্য USENET এক্সপেরিয়েন্স পেইনফুল করে দেয়।

Leafnode কী?

Leafnode USENET সার্ভারের জন্য একটি অফলাইন প্রক্সি। এটি একটি রিমোট নিউজ সার্ভার থেকে নিউজ পোস্ট ডাউনলোড করে এবং আপনার সিস্টেমে একটি লোকাল সার্ভিস হিসেবে সার্ভ করে। এটি একাধিক USENET সার্ভারও তার আপস্ট্রিম সোর্স হিসেবে নিতে পারে এবং সেগুলো মার্জ করে একটি সিঙ্গেল সোর্স হিসেবে সার্ভ করতে পারে। এটি উপযোগী যদি আপনি একাধিক নিউজগ্রুপ সাবস্ক্রাইব করতে চান যেগুলো বিভিন্ন প্রোভাইডার দ্বারা সার্ভ করা হয়।

আরও, Leafnode ইউজারকে ফলো করা নিউজগ্রুপের অফলাইন কপি রাখতে দেয়। এটি গুরুত্বপূর্ণ যখন ইন্টারনেট কানেকশন সবসময় উপলব্ধ নয় অথবা আপনি আপনার সাবস্ক্রাইব করা নিউজগ্রুপ আর্কাইভ করতে চান। শেষে, Leafnode সিম্পল, ইজি টু সেট আপ এবং সব মডার্ন USENET রিডারের সাথে কাজ করে।

USENET প্রক্সি কীভাবে কাজ করে?

উপরোক্ত উল্লেখ অনুযায়ী, Leafnode একটি প্রক্সি USENET সার্ভার, তাই এটি কেবলমাত্র আপনার নিউজ রিডারদের জন্য নিউজ সার্ভার হিসেবে কাজ করে।

তবে, একটি ট্রেডিশনাল USENET সার্ভারের বিপরীতে, Leafnode অন্যান্য সার্ভার থেকে সকল হায়ারার্কির ফুল কপি পায় না। Leafnode কেবল সেসব পোস্ট পায় যেগুলো আপনি এটকে বলে এবং আপনার সেট করা কন্ডিশনের অধীনে।

Leafnode দুটি প্রোগ্রামের সাথে ইন্টারঅ্যাক্ট করে: fetchnews এবং texpire।

  • Fetchnews হল वो প্রোগ্রাম যা Leafnode কে বলে কোন নিউজগ্রুপ সাবস্ক্রাইব করতে হবে এবং কতগুলো পেতে হবে। এটি আপনার নিউজ পোস্ট এবং রিপ্লাই আপলোডও করে।
  • Texpire হল মেইনটেনেন্স প্রোগ্রাম যা পুরনো পোস্ট নিউজগ্রুপ থেকে রিমুভ করে। এটি ডুপ্লিকেট বা ব্রোকেন মেসেজ রিপেয়ার করে এবং নিউজ সার্ভারের ওভারঅল ডেটা আপডেট করে।

এই দুটি প্রোগ্রাম Leafnode কে অধিকাংশ সময় আনঅ্যাটেন্ডেড চলে দেয়। একবার আপনি সেট আপ করলে, Leafnode বিহেভ করবে যেন এটি একটি রিমোট USENET সার্ভার।

এটি আপনাকে একটি ছোট নেটওয়ার্কে Leafnode সেট আপ করতে এবং একাধিক ইউজার কানেক্ট করতে দেয় নিউজ পোস্ট পড়তে। আপনি তাই আপনার নেটওয়ার্কের ব্যান্ডউইথ ইউজেজ কমাতে পারেন USENET অ্যাক্সেস করতে।

Leafnode ইনস্টল করা

Leafnode সিম্পল 채로 ডিজাইন করা হয়েছে। এটি ইন্সটলেশন এবং মেইনটেনেন্স দুটোই ক্ষেত্রে প্রযোজ্য। সেটি দিয়ে, Leafnode ইনস্টল করা শুধু আপনার ডিস্ট্রিবিউশনের রিপোজিটরি থেকে পাওয়ার বিষয়।

উদাহরণস্বরূপ, ডেবিয়ান এবং উবুন্টু ২১.১০-এ, আপনি apt থেকে Leafnode পেতে পারেন:

sudo apt install leafnode

Leafnode সেটআপ করা

ইনস্টলেশনের সময়, Leafnode আপনাকে রিমোট সার্ভারের কয়েকটি ডিটেইল সম্পর্কে জিজ্ঞাসা করবে যেটে আপনি কানেক্ট করতে চান। প্রথম স্ক্রিনে, এটি আপনাকে রিমোট সার্ভারের অ্যাড্রেস সম্পর্কে জিজ্ঞাসা করবে। উদাহরণস্বরূপ, আপনি যদি AIOE-তে কানেক্ট করতে চান, তবে এখানে nntp.aioe.org দিতে হবে।

আমার কেসে, আমি Eternal September-এর মাধ্যমে কানেক্ট করছি, তাই আমি এখানে অ্যাড্রেসটি যোগ করছি।

অটোমেটেড USENET ডাউনলোড সেটআপ করা

সেখান থেকে, ইনস্টলার আপনাকে নিউজ পোস্ট ফেচ করার আপনার পছন্দের মেথড সম্পর্কে জিজ্ঞাসা করবে। এখানে তিনটি অপশন আছে: PPP, Permanent এবং None।

  • PPP আপনি যখনই ইন্টারনেটে কানেক্ট করবেন, অটোমেটিক্যালি নতুন পোস্ট ডাউনলোড করবে।
  • Permanent প্রতি ঘন্টায় অটোমেটিক্যালি নিউজ পোস্ট ডাউনলোড করবে।
  • None অটোমেটিক নিউজ ফেচিং এনাবল করবে না। আপনাকে fetchnews কমান্ড রান করতে হবে রিমোট সার্ভারের সাথে সিন্ক্রোনাইজ করার জন্য।

আমার কেসে, আমি চাই না Leafnode আমার জানা ছাড়া নিউজ সার্ভারের সাথে অটোমেটিক্যালি কানেক্ট করে, তাই আমি None বেছে নিচ্ছি।

অ্যাক্সেস কন্ট্রোল এনাবল করা

Leafnode ইনস্টলার জিজ্ঞাসা করবে আপনি আপনার সার্ভারের জন্য Access Controls এনাবল করতে চান কিনা।

এটি প্রাসঙ্গিক যদি আপনি Leafnode ব্যবহার করেন একাধিক ইউজারের জন্য একটি লোকাল নিউজ সার্ভার হিসেবে। এটি আপনাকে /etc/hosts ফাইল ব্যবহার করতে দেয় যাতে কন্ট্রোল করা যায় কোন ক্লায়েন্ট সার্ভার অ্যাক্সেস করতে পারবে এবং কোনটি পারবে না।

উদাহরণস্বরূপ, আপনি যদি Leafnode ব্যবহার করেন একটি ইন্ট্রানেটে যেখানে আপনি প্রতিটি ক্লায়েন্টের নিউজ সার্ভার অ্যাক্সপেক্ট করেন, তবে "Access Controls" এনাবল করার প্রয়োজন নেই।

সেটা হলেও, এটি জেনারেলি ভালো প্র্যাকটিস সব ইনকামিং কানেকশন ব্লক করা এবং শুধু যেগুলো আপনি চান সেগুলো এনাবল করা। আরও, আপনি যদি শুধু আপনার নিজস্ব মেশিনের জন্য Leafnode ব্যবহার করেন একটি লোকাল প্রক্সি হিসেবে, তবে আপনাকে এই অপশন এনাবল করতে হবে।

আমার কেসে, আমি এই Leafnode ইনস্ট্যান্স শুধু এই মেশিনে ব্যবহার করব, তাই আমি Access Controls এনাবল করব।

USENET গ্রুপের জন্য ইনিশিয়াল ফেচ

এরপর, Leafnode ইনস্টলার জিজ্ঞাসা করবে আপনি রিমোট USENET সার্ভারের সাথে এখন কানেক্ট করতে চান কিনা। এটি Leafnode কে সার্ভারে উপলব্ধ নিউজগ্রুপের লিস্ট পেতে দেবে।

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

আমার কেসে, যেহেতু আমি Eternal September-এর মাধ্যমে কানেক্ট করছি, আমি No বেছে নিচ্ছি।

Leafnode কনফিগার করা

সেখান থেকে, আপনি Leafnode-এর বিহেভিয়ারের নির্দিষ্ট দিকগুলো আরও ফাইন-টিউন করতে পারেন এর কনফিগারেশন ফাইল দিয়ে।

উদাহরণস্বরূপ, কিছু সেটিং আছে যা আপনাকে, অন্যান্যের পাশাপাশি, একটি USENET একাউন্ট ব্যবহার করে নিউজ ফেচ করতে দেবে। আপনি কিছু প্যারামিটারও সেট করতে পারেন যা Leafnode কে বলে কোন পোস্টগুলো ডাউনলোড করতে পারে এবং কতক্ষণ স্টোর করতে পারবে।

কনফিগারেশন ফাইলের লোকেশন লিনাক্স ডিস্ট্রিবিউশন অনুযায়ী ভিন্ন হয়। ডেবিয়ান এবং উবুন্টুতে এটি "/etc/news/leafnode/config"-এ অবস্থিত।

sudo vim /etc/news/leafnode/config

ডিফল্ট ইউজারনেম এবং পাসওয়ার্ড সেট করা

Leafnode-এর কনফিগারেশন ফাইল এক্সটেনসিভ এবং ভালো ডকুমেন্টেড। প্রতিটি অপশনের একটি সংক্ষিপ্ত বর্ণনা আছে সেটি কী করে, এবং কিছুতে এমনকি উদাহরণ আছে কীভাবে সেটি সঠিকভাবে সেট করবেন সেটি ইলাস্ট্রেট করার জন্য।

Leafnode-এ একটি USENET একাউন্ট ব্যবহার করতে, আপনাকে username এবং password ভেরিয়েবল আনকমেন্ট করতে হবে। হলে, আপনার ইনফো সেট করুন সেগুলোতে।

আমার কেসে, আমি আমার Eternal September একাউন্টের একাউন্ট ইনফো যোগ করেছি।

পোস্ট ফিল্টার কীভাবে তৈরি করবেন

Leafnode-এর একটি কী ফিচার হল আপনি ম্যানিপুলেট করতে পারেন পোস্টগুলো কীভাবে ট্রিট হবে ডাউনলোড হওয়ার সময়, হয় পোস্ট ফিল্টার করে বা নির্দিষ্ট নিউজগ্রুপকে কিছু দিন পর প্রুন না করা সেট করে।

পোস্ট ফিল্টার করা দুটি পথে হতে পারে:

  • একটি পোস্টের জেনারেল প্রোপার্টি ভিত্তিক। উদাহরণস্বরূপ, আপনি লাইনের পরিমাণ এবং পোস্টের সাইজ অনুযায়ী ফিল্টার করতে পারেন।
  • পোস্ট হেডারে পাওয়া স্পেসিফিক টার্ম ভিত্তিক। এটি একটি ফিল্টারফাইলে রেগুলার এক্সপ্রেশনের একটি লিস্ট তৈরি করে করা হয়।

জেনারেল প্রোপার্টি ভিত্তিক ফিল্টার করতে, সেগুলো কনফিগারেশন ফাইল থেকে সরাসরি এনাবল করুন। উদাহরণস্বরূপ, আপনি minlines ভেরিয়েবলকে ৩ সেট করতে পারেন, যা Leafnode কে বলে যেকোনো পোস্ট যা তিন লাইনের কম লেন্থে আছে সেগুলো না নেওয়া।

অন্যদিকে, স্পেসifik শব্দ ভিত্তিক ফিল্টার করতে, আপনাকে Leafnode-এ filterfile অপশন এনাবল করতে হবে। এটি করার জন্য filterfile ভেরিয়েবল আনকমেন্ট করুন এবং আপনার ফিল্টার ফাইলের পাথ প্রদান করুন।

আমার কেসে, আমি ফিল্টার ফাইলের ডিফল্ট পাথ ব্যবহার করছি।

ফিল্টারফাইলের বেসিক সিনট্যাক্স এরকম দেখতে পারে:

Header-Property:^/regex/$

ফিল্টারফাইলের প্রতিটি লাইন একটি পোস্টের নির্দিষ্ট হেডার প্রোপার্টি পয়েন্ট করা উচিত। উদাহরণস্বরূপ, আপনি যদি Google Mail থেকে সকল পোস্ট ফিল্টার করতে চান, তাইপ করুন এরকম:

^From:.*[A-Za-z0-9]*\.*[A-Za-z0-9]*\@gmail\.com$

USENET গ্রুপ আর্কাইভ করা

ডিফল্টভাবে, Leafnode সব গ্রুপ প্রুন করে ২০ দিনের পুরনো পোস্টের জন্য। এটি Leafnode-এর ফাইল সাইজ কম রাখতে সাহায্য করে এবং উপযোগী যখন আপনি এমন গ্রুপ সাবস্ক্রাইবড থাকেন যারা দিনে ১০০ থেকে ২০০ পোস্ট দেখায়।

তবে, কিছু উদাহরণ থাকতে পারে যেখানে আপনি একটি নির্দিষ্ট নিউজগ্রুপের সকল পোস্ট আর্কাইভ করতে চান। এটি করতে groupexpire ভেরিয়েবল এনাবল করুন।

উদাহরণস্বরূপ, আমি যদি comp.unix.misc নিউজগ্রুপ আর্কাইভ করতে চাই, আমি আমার কনফিগারেশন ফাইলে নিচের লাইন যোগ করব:

groupexpire comp.unix.misc = -1

আরও, এই ভেরিয়েবলটি স্পেসিফিক নিউজগ্রুপের ডিফল্ট প্রুনিং এজ পরিবর্তন করতেও ব্যবহার করা যায়। উদাহরণস্বরূপ, আমি যদি একটি হাই-ভলিউম গ্রুপ যেন misc.internet.news.discuss প্রতি পাঁচ দিনে প্রুন করতে চাই, আমি আমার কনফিগারেশন ফাইলে এই লাইনটি টাইপ করতে পারি:

groupexpire misc.news.internet.discuss = 5

একাধিক USENET সার্ভার সেট আপ করা

উপরোক্ত আলোচনা অনুযায়ী, Leafnode আপনাকে একাধিক রিমোট সার্ভার থেকে পোস্ট ফেচ করতে দেয়। এটি উপযোগী যদি আপনি USENET রিডার ব্যবহার করেন যেগুলো একবারে শুধু এক সার্ভারের সাথে কানেক্ট করতে পারে।

আরও, আপনি কয়েকটি অপশন সেট করতে পারেন যা অডিশনাল রিমোট সার্ভারদের বিহেভিয়ার পরিবর্তন করে। আপনি nopost ভেরিয়েবলকে ১ সেট করতে পারেন যাতে একটি রিমোট সার্ভার কেবল পোস্ট ফেচ করবে এবং সেটি 통해서 পোস্ট পাঠাবে না।

অন্যদিকে, আপনি noread ভেরিয়েবল সেট করতে পারেন বিপরীত কাজের জন্য।

উদাহরণস্বরূপ, আমি যদি Aioe কে একটি অডিশনাল "রিড-অনলি" সার্ভার হিসেবে সেট আপ করতে চাই আমার Leafnode ইনস্ট্যান্সের জন্য, আমি আমার কনফিগারেশন ফাইলে নিচের কমান্ড টাইপ করতে পারি:

server = news.aioe.org nopost = 1

Leafnode আপডেট করার জন্য একটি cronjob তৈরি করা

অটোমেটিক ডাউনলোড স্ক্রিপ্ট ছাড়া, Leafnode একটি cronjob দিয়েও আপডেট করা যায়। এটি আমাদের আরও ফ্লেক্সিবিলিটি দেয় যখন আমরা আমাদের নিউজগ্রুপ আপডেট করতে চাই। উদাহরণস্বরূপ, আমরা এটা করতে পারি যাতে Leafnode প্রতি ১২ ঘন্টায় এবং কম্পিউটার স্টার্ট হলে আপডেট হয়।

এটি হলে, আমাদের news ইউজারের crontab এডিট করতে হবে। news ইউজার হল সিস্টেম একাউন্ট যা সরাসরি "/var/spool/news" ফোল্ডার ম্যানেজ করে সেই সাথে Leafnode সার্ভার রানিং।

news ইউজারের crontab এডিট করতে, আমরা নিচের কমান্ড চালাতে পারি:

sudo crontab -e -u news

আমরা এখন वो কমান্ড ইনসার্ট করতে পারি যা আমরা news ইউজারকে নিয়মিত এক্সিকিউট করতে চাই। Leafnode-এর জন্য একটি উদাহরণ crontab এরকম দেখতে পারে:

* 3 * * 0 /usr/sbin/texpire * 2,14 * * * /usr/sbin/fetchnews @reboot /usr/sbin/fetchnews

এই crontab Leafnode মেইনটেনেন্স প্রোগ্রাম, texpire, রান করবে রাত ৩টা প্রতি রবিবার, কিন্তু fetchnews প্রোগ্রামও রান করবে প্রতি ১২ ঘন্টায় একবার।

অভিনন্দন! আপনার এখন Leafnode কে USENET সার্ভার প্রক্সি হিসেবে ব্যবহার করার বেসিক নলেজ আছে। সেটি দিয়ে, আপনি যদি Leafnode-এর জন্য কিছু USENET রিডার খুঁজছেন, আমরা এই পাঁচটি অপশন রিকমেন্ড করি।

ফ্রিকোয়েন্টলি আস্কড কুয়েশচনস

১. আমি ডেবিয়ানে Leafnode ডাউনলোড করলাম কিন্তু আমার ইনিশিয়াল ইনস্টলেশন স্ক্রিপ্টে ভুল করলাম। কীভাবে ফিরে যাবো?

dpkg-reconfigure প্রোগ্রাম ব্যবহার করুন Leafnode-এর ইনস্টলেশন স্ক্রিপ্ট রি-ইনিশিয়ালাইজ করতে। এই প্রোগ্রাম, তবে, ডিফল্ট PATH ভেরিয়েবলে ইনক্লুডেড নয়।

এটি চালাতে, আপনি নিচের কমান্ড টাইপ করতে পারেন:

sudo /usr/sbin/dpkg-reconfigure leafnode

২. আমি আমার LAN-এ Leafnode চালাতে চাই। কীভাবে করব?

আপনি এটি করতে পারেন আপনার "/etc/hosts.deny" এবং "/etc/hosts.allow" ফাইল দুটো এডিট করে। এটি আপনাকে আপনার Leafnode সার্ভারের সকল ইনকামিং কানেকশন ফিল্টার করতে দেয়।

একটি hosts.deny ফাইল উদাহরণ এরকম দেখতে পারে:

leafnode: ALL

অন্যদিকে, লোকাল কানেকশন अलাউ করার hosts.allow ফাইল যেটি 192.168.254.* ব্যবহার করে এরকম দেখতে পারে:

leafnode: 127.0.0.1 192.168.254.0/255.255.255.0

আপনাকে allowstrangers ভেরিয়েবলকে allowSTRANGERS এ পরিবর্তন করতে হবে এবং এর ভ্যালু ৪২ সেট করতে হবে।

৩. আমি প্রথম কানেক্ট করার সময় অনেক পোস্ট ডাউনলোড করতে চাই কিন্তু ডিস্ক স্পেস পূর্ণ করতে চাই না। কীভাবে করব?

হ্যাঁ! এজন্য আপনাকে শুধু দুটি ভেরিয়েবল সম্পর্কে অয়ের থাকতে হবে: initialfetch এবং delaybody।

আপনি যদি একটি নির্দিষ্ট নিউজগ্রুপ থেকে সকল পোস্ট ডাউনলোড করতে চান, initialfetch ভেরিয়েবল কমেন্ট করুন যাতে Leafnode কে বলে আপনি রিমোট সার্ভার থেকে এই নিউজগ্রুপে উপলব্ধ সকল পোস্ট পেতে চান।

তবে, পুরো পোস্ট ডাউনলোড করা অনেক স্পেস নিতে পারে। আপনি এটি কমাতে পারেন শুধু পোস্টের হেডার এবং আপনি যেসব পোস্টে আগ্রহী তার বডি ডাউনলোড করে। সেটির জন্য, আপনাকে delaybody ভেরিয়েবলকে ১ সেট করতে হবে।

  1. উবুন্টুতে জেলিফিন (Jellyfin) দিয়ে হোম মিডিয়া সার্ভার সেটআপ করা

  2. অ্যান্ড্রয়েডে লোকাল ওয়েব সার্ভার সেট আপ করার পদ্ধতি

  3. রাসবেরি পাইতে Raspberry Pi OS সেটআপ করার পদ্ধতি

  4. Discord সার্ভার সেটআপ করার পদ্ধতি