hideden.hatenablog.com

はてなぶろぐー。URLなげー。

tiarraをやめてzncにしてみた

Limechatのサーバー設定をいじってる時に、ふとSSL Optionが気になった。tiarra+stoneでやってみるかーと思ってyum search stoneしたところ、見つからない。ソースから入れるかなと思い、openssl-develを入れようとyum search sslしたところ、最下行に

znc.x86_64 : Advanced IRC bouncer

とかいうのを発見。これらしい。

SSL Support 
    Encryption for both the listen port and connecting to IRC servers.
    If your system has OpenSSL, ZNC automatically supports SSL connections.

公式に、↑と書いてあった。せっかくなのでこっちを入れてみることにする。


Installはyumで。SakuraVPSのCent5.5だと、EPELにパッケージがあるらしいので、さくっと追加。

$ rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
$ sudo yum install znc znc-extra

installはあっさり終わる。



設定にいくまえに注意。zncとtiarraの最大の差が、zncには複数のネットワークを1つにまとめる機能がない事。つまり、これまでtiarraで、

#aaa@freenode, #bbb@freenode, #aaa@ircnet, #bbb@ircnet

みたいにやってたアレができない。が、zncは1プロセスで複数ユーザーが接続出来るのでそれで代用可能。
freenodeとircnetの2つにつなぐ場合は、hideden-freenode, hideden-ircnetのように2つのユーザーを作成するようにする。1つのユーザーには、1つのnetworkのサーバーのみを指定するようにする。




zncを--makeconfオプション付で起動するとウィザードが始まる。nickやらpasswordやらいろいろ聞かれるので主なところを以下に。

$ znc --makeconf
 # portは適当に
[ ?? ] What port would you like ZNC to listen on? (1 to 65535): 6668
 # 今回、SSLが目的なので当然yes
[ ?? ] Would you like ZNC to listen using SSL? (yes/no) [no]: yes
 # pemを自動で作ってくれてとても楽。
[ ?? ] Would you like to create a new pem file now? (yes/no) [yes]: yes

 # global moduleはとりあえず全部noで。
[ ?? ] Load global module <partyline>? (yes/no) [no]: 
[ ?? ] Load global module <webadmin>? (yes/no) [no]: 

 # usernameはircクライアントのLoginNameとして設定する
[ ?? ] Username (AlphaNumeric): hideden-freenode
 # passwordはサーバーパスワードになる
[ ?? ] Enter Password: 

 # adminにしとくと、そのアカウントから色々できる
[ ?? ] Would you like this user to be an admin? (yes/no) [yes]: yes

 # 接続してない時に流れるログの保存行数。チャンネルごと。
[ ?? ] Number of lines to buffer per channel [50]: 

 # yesにすると、接続するたびに保存されてるログがplaybackされる。noだと未読のが1回出るだけ。
[ ?? ] Would you like to keep buffers after replay? (yes/no) [no]: yes

 # ircクライアントから色々管理するやつ。とりあえずこのモジュールだけ入れる。
[ ?? ] Load module <admin>? (yes/no) [no]: yes

 # 1つのユーザーには1つのnetworkのサーバーしか登録しない。別networkの場合はこの後、別のユーザーをつくる。
[ ?? ] IRC server (host only): irc.freenode.net

これで、~/.znc/config/znc.conf ができる。

コンソールから

$ znc

で起動。勝手にbackgroundに回って常駐する。



さっそくLimechatなどのircクライアントから接続。port, login name, server passwordは設定したものを指定。SSLをyesにした場合はSSLも有効に。login nameにzncでつくったuserを指定することで、接続先をわけられる。作成したユーザー分、サーバーを追加する。



tiarraの#aaa@freenodeも悪くはないのだが、もともとirc的に若干無理があってLimeChatからTalk送るときなどに不便。zncのこっちの方が自然で便利かも。今どきのクライアントで複数サーバー未対応なものは少ないし。





zncにも、tiarraと同じく色々Moduleがあるので、ここから探して使うと便利。

もともとtiarraでもlogとってるくらいだったので、今のところlog, keepnick, nickservくらいしか使ってない。

moduleの追加は、ircクライアント上から

/znc LoadModule MODULENAME

 # log moduleの場合
/znc LoadModule log

 # charset moduleの場合
/znc LoadModule charset IRCクライアントの文字コード サーバーの文字コード

とやるだけ。configファイルを直接いじる場合は、

/znc SaveConfig
 ... ~/.znc/config/znc.conf を編集 ...
/znc Rehash

とやる。logモジュールの場合、特に設定もなくloadするだけですべてのチャンネルのlogが

~/.znc/users/hideden-free/moddata/log/#channel_YYYYMMDD.log

に保存される。もろもろのコマンドは

/znc help   ( or /msg *status help )
/msg *admin help

で出てくる。


tiarraに特に不満はなかったものの、

  • 設定ファイルが簡潔
  • SSL対応
  • Moduleが結構豊富
  • 1プロセスで複数ユーザーを使える
  • Moduleを書くのにperlを使えるらしい(modperlモジュール)
  • talkするときに不便じゃない

と、いい感じなのでこのまま乗り換えることにした。