我平时用的 IRC 客户端是LimeChat 和 WeeChat,在Macbook上运行LimeChat,在Linux服务器上运行WeeChat。
我喜欢LimeChat的美观的界面,使用体验很好,而且还能提醒新消息。但是只要电脑休眠,就会漏过这段时间的新消息。
我喜欢WeeChat,因为可以运行在服务器上,服务器不会休眠,所以可以接收所有的消息。
然后我期望的状态是:
- 既有 LimeChat 的美观的界面
- 又不会错过任何消息
在#freenode IRC 频道咨询之后,他们建议我在服务器上运行ZNC,然后通过本地的LimeChat 连接。
ZNC 是 BNC(Bounced Network Connection)[1] 的一种,它相当于是一个代理,将它运行在服务器上一直保持稳定运行,其他客户端则通过它连接到 IRC 网络。
连接ZNC的个人账号后,从不同客户端连接都能获得相同的数据:使用相同的用户名,连接到相同的channel。而否则的话,不同客户端是不能用同一个用户名的,而且每次连接都要重新登录注册的nickname。
不过即连接 ZNC,客户端在重启后历史记录仍然会清空,仍然无法接收到休眠期间的新消息。
配置 ZNC
经过一番尝试后成功运行,下面是配置过程:
- 在 Linux 服务器安装ZNC(我用的是Ubuntu)
apt install znc
- 初始化 ZNC 配置文件[2]
如果当前当前是 root 身份,得先进入非root身份:
su - jason # 进入非 root 身份
znc --makeconf # 初始化配置
这时候会设置监听端口,连接的IRC服务器,设置用户名和密码。
通过 IRC 客户端连接 ZNC 的时候需要填写用户名和密码。
最后会提示你是否启动 ZNC,回车选择是,然后 ZNC 就启动了。
- 通过LimeChat连接到 ZNC[3]
这里的port、login name、server password都是前面一步设置的。
network name可以随便填,它只用于方便本地连接多个server时用于区分。
- 加入channel
运行命令:
/join #freenode
或者点击工具栏Channel->Add Channel
ZNC还有 webadmin 控制台[4]用于管理和配置,比如可以新建一个 user,以便其他人也可以使用这个 ZNC,链接是IP 地址加前面设置的端口号。
weechat连接到ZNC[5]
如果ZNC 设置了SSL 连接的话,需要先获取SSL fingerprint:
cat ~/.znc/znc.pem | openssl x509 -sha512 -fingerprint -noout | tr -d ':' | tr 'A-Z' 'a-z' | cut -d = -f 2
在weechat内执行命令:
/server add BNC my.bouncer.net/6697 -ssl -username=username -password=password -autoconnect
/set irc.server.BNC.ssl_fingerprint MD5_or_SHA256_or_SHA512_fingerprint_here
/connect BNC
/save
云服务器
上面用的 Linux 服务器是我在家里的另外一台电脑,我把设置成了不休眠的模式,我是通过局域网连接到 ZNC,这样连接显然延迟会很小。缺点是只能在同一个局域网内使用,出门的时候就连不上了。
更好的做法还是在云服务器上配置,我在用阿里云服务器配置的时候遇到一个坑,那就是ZNC 启动之后,本地却连不上。阿里云出于安全考虑,将不用的端口给封掉的缘故,需要在阿里云控制台手动启动端口。[6]
一开始我尝试用1025端口,已经在阿里云控制台添加到安全组了,但本地仍然连接不上。
后来尝试6666端口,添加到安全组,LimeChat就可以连上了,但是webadmin打不开。
又尝试了8080端口,添加到安全组,LimeChat可以连上,webadmin也能打开了。
折腾了好一会儿~~
网友评论