Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

用 Leafnode 來當單機用 nntp proxy

1 view
Skip to first unread message

Kang-min Liu

unread,
Oct 10, 2023, 9:03:02 PM10/10/23
to

參考: https://jao.io/blog/reading-and-searching-gmane-with-gnus-fast.html

leafnode: https://www.leafnode.org/

依照這段描述看來似乎是能雙向同步:

> It can be used to give a regular newsreader off-line functionality,
> merge news articles from several upstream newsservers for newsreaders
> that only support one server well and avoid duplicate news download
> for a small LAN with multiple users reading news.

不知道能不能支援多個 nntp server。像 news.gmane.io 這種比較特殊的,就需
要單獨一組設定檔。

--

Kang-min Liu

unread,
Oct 11, 2023, 9:03:05 PM10/11/23
to
Fedora 上沒有 package,所以自編,prefix 指定到 ~/.local/apps/leafnode-1.12.0/。
但執行時需要變身成 "news"。或許還是換到 debian ,讓 installer 設完這段比較簡單:

# ~/.local/apps/leafnode-1.12.0/sbin/fetchnews
no such user: news

或許可以全部跑在 container 內、再把 /var/spool/news 掛到特定目錄下保存。

> 支援多個 nntp server。像 news.gmane.io 這種比較特殊的,就需

依 config.example,可以是設定多個上游 nntp server,可以個別定義成
read-only (nopost),還可以有 write-only (noread)。依照次序列出來就好了:

```
server = news.eternal-september.org

server = news.gmane.io
nopost = 1

server = post-only.example.com
noread = 1
```

另外有注意到 config.example 內說 Leafnode 沒支援 SSL。

----

Kang-min Liu

unread,
Nov 5, 2023, 9:11:03 AM11/5/23
to
Kang-min Liu <gu...@gugod.org> writes:

> 或許可以全部跑在 container 內、再把 /var/spool/news 掛到特定目錄下保存。

今天試弄了一下,有不少要接的東西,但基本上算是成功了。

需要在同一個 container 內跑:

1. xinetd
2. stunnel
3. 可以定時跑 fetchnews + texpire 的機制。crond 或是 在 entrypoint.sh 裡
面寫個背景迴圈。

xinetd 只是用來啟動 /usr/sbin/leafnode ,因為 leafnode 沒有 daemon mode。

而 stunnel 則是為了以 TLS 連去 news.eternal-september:563 ,因為
leafnode 本身不支援 TLS / SSL。

跑起來後發現 fetchnews 好像不會去下載舊文(這方面與 peering 不同),但發
在 tw.bbs.test 的幾篇新文章都有成功被它收到。發文也沒問題。

----

Kang-min Liu

unread,
Nov 5, 2023, 9:25:23 AM11/5/23
to
> 跑起來後發現 fetchnews 好像不會去下載舊文(這方面與 peering 不同),但發
> 在 tw.bbs.test 的幾篇新文章都有成功被它收到。發文也沒問題。

從 log 看來是有抓舊文,而且應該是上遊的整個 group,只是如果文章太舊了會
直接被忽略。

略看了一下設定後發現幾項相關的:
https://www.leafnode.org/doc_en/leafnode.8.html

initialfetch = 1
maxfetch = 1000
maxage = 10

maxage 控制了「太舊」的定義,10 是 10 天的意思。看來可以把這項拉大一點
就好。

Kang-min Liu

unread,
Nov 5, 2023, 9:50:49 AM11/5/23
to
> initialfetch = 1
> maxfetch = 1000
> maxage = 10

重弄了一次,把這兩項都調到 1000:

initialfetch = 1000
maxage = 1000

然後最近兩、三年的文章就都出現了(上游 eternal september 有保存的話。)

用 leafnode 的好處是所有 nntp client 端操作都是一瞬間就結束,因為完全沒
有需要連網路。覺得有需要立刻與上游同步的話、隨時手動跑一下 fetchnews 就
好。跟操作 git 概念一樣。只有初期設定麻煩一些。

Awesome 🎆



0 new messages