Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีตั้งค่า Leafnode เป็น Offline USENET Server

การจัดการกับเซิร์ฟเวอร์ข่าวระยะไกล (remote news servers) อาจเป็นเรื่องน่าขี้ขลาดสำหรับผู้อ่าน USENET ประจำ เซิร์ฟเวอร์เหล่านี้มักช้าและไม่น่าเชื่อถือ อีกทั้งหากเข้าถึงผู้ให้บริการฟรีบ่อยเกินไป เช่น AIOE อาจถูกจำกัดการเชื่อมต่อและแบน IP ปัจจัยเหล่านี้ทำให้ประสบการณ์ USENET รู้สึกแย่

Leafnode คืออะไร?

Leafnode เป็น offline proxy สำหรับเซิร์ฟเวอร์ USENET ดาวน์โหลดโพสต์ข่าวจากเซิร์ฟเวอร์ระยะไกล และให้บริการเป็น local service บนระบบของคุณ สามารถรับหลายเซิร์ฟเวอร์ USENET เป็นแหล่งต้นน้ำ (upstream) และรวมเข้าด้วยกันเป็นแหล่งเดียว เหมาะหากต้องการสมัครนิวส์กรุ๊ปจากผู้ให้บริการต่างกัน

เพิ่มเติม Leafnode อนุญาตให้มี offline copies ของนิวส์กรุ๊ปที่ติดตาม สำคัญเมื่ออินเทอร์เน็ตไม่ได้ตลอดเวลา หรือต้องการเก็บถาวรนิวส์กรุ๊ปที่สมัคร Leafnode เรียบง่าย ตั้งค่าไม่ยาก และทำงานกับ USENET readers รุ่นใหม่ทั้งหมด

USENET Proxy ทำงานอย่างไร?

Leafnode เป็น proxy USENET server จึงทำหน้าที่เป็น news server สำหรับ news readers ของคุณ

แตกต่างจาก USENET server แบบดั้งเดิม Leafnode ไม่ดึงคัดลอกเต็มของทุก hierarchy จากเซิร์ฟเวอร์อื่น Leafnode ดึงเฉพาะโพสต์ที่คุณบอกให้ดึง ภายใต้เงื่อนไขที่ตั้งไว้

Leafnode โต้ตอบกับสองโปรแกรม: fetchnews และ texpire

  • Fetchnews: บอก Leafnode ว่าสมัครนิวส์กรุ๊ปไหน และดึงกี่โพสต์ อัปโหลดโพสต์และตอบกลับของคุณ
  • Texpire: โปรแกรมบำรุงรักษา ลบโพสต์เก่า ซ่อมแซมข้อความซ้ำ/เสีย และอัปเดตข้อมูล news server ทั้งหมด

สองโปรแกรมนี้ทำให้ Leafnode ทำงานได้เกือบอัตโนมัติ หลังตั้งค่าเสร็จ Leafnode จะทำงานเหมือน remote USENET server

หมายความว่าคุณสามารถตั้งค่า Leafnode ในเครือข่ายเล็ก และให้ผู้ใช้หลายคนเชื่อมต่อเพื่ออ่านโพสต์ข่าว ลดแบนด์วิดท์ที่เครือข่ายใช้เข้าถึง USENET

ติดตั้ง Leafnode

Leafnode ออกแบบมาให้เรียบง่ายที่สุด ทั้งการติดตั้งและบำรุงรักษา การติดตั้งเพียงดึงจาก repository ของ distro

ตัวอย่าง Debian/Ubuntu 21.10 ติดตั้งผ่าน apt:

sudo apt install leafnode

ตั้งค่า Leafnode

ระหว่างติดตั้ง Leafnode จะถามรายละเอียดเซิร์ฟเวอร์ระยะไกลที่ต้องการเชื่อมต่อ หน้าจอแรกถามที่อยู่เซิร์ฟเวอร์ระยะไกล เช่น ต้องการเชื่อม AIOE ใส่ nntp.aioe.org

ตัวอย่างเชื่อมผ่าน Eternal September ใส่ที่อยู่ที่นี่

ตั้งค่าดาวน์โหลด USENET อัตโนมัติ

ตัวติดตั้งจะถามวิธีดึงโพสต์ข่าวที่ต้องการ มี 3 ตัวเลือก: PPP, Permanent, None

  • PPP: ดาวน์โหลดโพสต์ใหม่อัตโนมัติเมื่อเชื่อมอินเทอร์เน็ต
  • Permanent: ดาวน์โหลดโพสต์ข่าวทุกชั่วโมงอัตโนมัติ
  • None: ไม่เปิดดาวน์โหลดอัตโนมัติ ต้องรันคำสั่ง fetchnews เองเพื่อซิงค์กับเซิร์ฟเวอร์ระยะไกล

ตัวอย่าง ไม่อยากให้ Leafnode เชื่อมต่ออัตโนมัติโดยไม่รู้ตัว เลือก None

เปิดใช้งาน Access Controls

ตัวติดตั้งถามว่าต้องการเปิด Access Controls สำหรับเซิร์ฟเวอร์หรือไม่

เกี่ยวข้องหากใช้ Leafnode เป็น local news server หลายผู้ใช้ ใช้ไฟล์ /etc/hosts ควบคุมว่าคลายเอนต์ไหนเข้าถึงได้/ไม่ได้

ตัวอย่าง ใช้ Leafnode ใน intranet ที่คาดว่าทุกคลายเอนต์เข้าถึง news server ไม่ต้องเปิด "Access Controls"

แต่เป็น best practice ที่จะบล็อกการเชื่อมต่อเข้าทั้งหมด และอนุญาตเฉพาะที่ต้องการ หากใช้ Leafnode เป็น local proxy สำหรับเครื่องตัวเองเท่านั้น ต้องเปิดตัวเลือกนี้

ตัวอย่าง ใช้ Leafnode instance นี้บนเครื่องเดียว จึงเปิด Access Controls

Initial Fetch สำหรับ USENET Groups

หลังจากนั้น ตัวติดตั้งถามว่าต้องการเชื่อมต่อ remote USENET server ตอนนี้หรือไม่ จะให้ Leafnode ดึงรายการนิวส์กรุ๊ปที่มีอยู่

แต่หากใช้บริการที่ต้องยืนยันตัวตน เช่น Eternal September ไม่ควรดึงนิวส์กรุ๊ปด้วยตัวเลือกนี้ เพราะยังไม่ได้ให้ข้อมูลบัญชีกับ Leafnode การอัปเดตตอนนี้จะไม่ได้รายการนิวส์กรุ๊ปครบ

ตัวอย่าง ใช้ Eternal September เลือก No

ตั้งค่า Leafnode

จากนั้น ปรับแต่งพฤติกรรม Leafnode ผ่านไฟล์ตั้งค่า

มีการตั้งค่าที่อนุญาตให้ใช้บัญชี USENET ดึงข่าว กำหนดพารามิเตอร์ว่า Leafnode ควรดึงโพสต์ไหน และเก็บนานเท่าไร

ตำแหน่งไฟล์ตั้งค่าแตกต่างตาม distro ใน Debian/Ubuntu อยู่ที่ "/etc/news/leafnode/config"

sudo vim /etc/news/leafnode/config

ตั้งค่า Username และ Password เริ่มต้น

ไฟล์ตั้งค่า Leafnode ครอบคลุมและมีเอกสารประกอบดี แต่ละตัวเลือกมีคำอธิบายสั้น และบางตัวมีตัวอย่าง

เพื่อใช้บัญชี USENET ใน Leafnode ให้ uncomment ตัวแปร username และ password แล้วใส่ข้อมูล

ตัวอย่าง ใส่ข้อมูลบัญชี Eternal September

วิธีสร้างโพสต์ฟิลเตอร์ (Post Filters)

ฟีเจอร์สำคัญของ Leafnode คือ จัดการโพสต์ระหว่างดาวน์โหลด โดยกรองโพสต์ หรือตั้งค่านิวส์กรุ๊ปบางอย่างให้ไม่ถูก prune หลังจากจำนวนวันหนึ่ง

กรองโพสต์มี 2 แบบ:

  • จากคุณสมบัติทั่วไปของโพสต์ เช่น จำนวนบรรทัด, ขนาดโพสต์
  • จากคำเฉพาะในหัวข้อโพสต์ (headers) โดยสร้างรายการ regular expressions ใน filterfile

กรองจากคุณสมบัติทั่วไป เปิดใช้งานในไฟล์ตั้งค่าโดยตรง เช่น ตั้งค่า minlines เป็น 3 จะบอก Leafnode ว่าไม่ต้องดึงโพสต์ที่สั้นกว่า 3 บรรทัด

กรองจากคำเฉพาะ ต้องเปิดตัวเลือก filterfile ใน Leafnode โดย uncomment filterfile และระบุพาธไปยัง filter file

ตัวอย่าง ใช้พาธเริ่มต้นของ filter file

ไวยากรณ์พื้นฐานของ filterfile:

Header-Property:^/regex/$

แต่ละบรรทัดใน filterfile ต้องชี้ไปที่คุณสมบัติหัวข้อของโพสต์ ตัวอย่าง กรองโพสต์ทั้งหมดจาก Gmail:

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

วิธีเก็บถาวร USENET Groups (Archive)

ค่าเริ่มต้น Leafnode prune ทุกกลุ่มสำหรับโพสต์เก่ากว่า 20 วัน ทำให้ขนาดไฟล์เล็ก เหมาะกับกลุ่มที่มีโพสต์ 100-200 ต่อวัน

แต่บางครั้งต้องการ archive โพสต์ทั้งหมดในนิวส์กรุ๊ป ให้เปิดตัวแปร groupexpire

ตัวอย่าง archive comp.unix.misc:

groupexpire comp.unix.misc = -1

ตัวแปรก็สามารถเปลี่ยนอายุการ prune เริ่มต้นสำหรับนิวส์กรุ๊ปเฉพาะได้ เช่น prune misc.internet.news.discuss ทุก 5 วัน:

groupexpire misc.news.internet.discuss = 5

วิธีตั้งค่า Multiple USENET Servers

Leafnode รองรับการดึงโพสต์จากหลาย remote servers เหมาะหากใช้ USENET readers ที่เชื่อมต่อได้แค่เซิร์ฟเวอร์เดียว

ยังตั้งตัวเลือกที่เปลี่ยนพฤติกรรมเซิร์ฟเวอร์ระยะไกลเพิ่มเติมได้ ตั้ง nopost = 1 ทำให้เซิร์ฟเวอร์ระยะไกลดึงโพสต์อย่างเดียว ไม่ส่งโพสต์ผ่านมัน

ตั้ง noread ทำตรงข้าม

ตัวอย่าง ตั้ง Aioe เป็น additional "read-only" server:

server = news.aioe.org
nopost = 1

สร้าง Cronjob อัปเดต Leafnode

นอกจากสคริปต์ดาวน์โหลดอัตโนมัติ Leafnode สามารถอัปเดตผ่าน cronjob ได้ ให้ความยืดหยุ่นมากขึ้น เช่น อัปเดตทุก 12 ชั่วโมง และตอนบูทเครื่อง

ต้องแก้ crontab ของ user "news" ซึ่งเป็น system account จัดการโฟลเดอร์ "/var/spool/news" และรัน Leafnode server

แก้ crontab ของ news user:

sudo crontab -e -u news

ตัวอย่าง crontab สำหรับ Leafnode:

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

Crontab นี้จะรันโปรแกรมบำรุงรักษา texpire เวลา 3 โมงเช้าทุกวันอาทิตย์ และรัน fetchnews ทุก 12 ชั่วโมง

ยินดีด้วย! ตอนนี้คุณมีความรู้พื้นฐานการใช้ Leafnode เป็น USENET server proxy หากมองหา USENET readers สำหรับ Leafnode เราแนะนำ 5 ตัวเลือก

คำถามที่พบบ่อย

1. ติดตั้ง Leafnode บน Debian แต่มาเซ็ตผิดในสคริปต์ติดตั้งเริ่มต้น กลับไปแก้ยังไง?

ใช้โปรแกรม dpkg-reconfigure เพื่อเริ่มต้นสคริปต์ติดตั้ง Leafnode ใหม่ โปรแกรมนี้ไม่อยู่ใน PATH เริ่มต้น

รันคำสั่ง:

sudo /usr/sbin/dpkg-reconfigure leafnode

2. อยากรัน Leafnode ใน LAN ทำอย่างไร?

แก้ไขไฟล์ "/etc/hosts.deny" และ "/etc/hosts.allow" เพื่อกรองการเชื่อมต่อเข้า Leafnode server

ตัวอย่าง hosts.deny:

leafnode: ALL

hosts.allow อนุญาตการเชื่อมต่อโลคัลที่ใช้ 192.168.254.*:

leafnode: 127.0.0.1 192.168.254.0/255.255.255.0

ต้องเปลี่ยนตัวแปร allowstrangers เป็น allowSTRANGERS ตั้งค่าเป็น 42

3. อยากดาวน์โหลดโพสต์เยอะตอนเชื่อมต่อครั้งแรก แต่ไม่อยากให้เต็มดิสก์ ทำได้ไหม?

ได้! ต้องรู้จัก 2 ตัวแปร: initialfetch และ delaybody

ถ้าต้องการดาวน์โหลดโพสต์ทั้งหมดจากนิวส์กรุ๊ปใด ให้ comment initialfetch เพื่อบอก Leafnode ให้ดึงโพสต์ทั้งหมดที่มีอยู่จากเซิร์ฟเวอร์ระยะไกลในนิวส์กรุ๊ปนั้น

แต่ดาวน์โหลดโพสต์เต็มๆ ใช้พื้นที่มาก ลดได้โดยดาวน์โหลดเฉพาะ headers และ body ของโพสต์ที่สนใจ โดยตั้ง delaybody = 1