BitchMyQnap
BitchMyQnap:QNAP で IRC
クライアント、ボット、サービス付きサーバー、バウンサー、FTP。
BitchMyQnap は IRC 環境一式を NAS に用意します:クライアントの irssi と BitchX、Tcl 付きの Eggdrop ボット、Anope サービス付きの UnrealIRCd サーバー、ZNC バウンサー、Pure-FTPd です。
パッケージにはプログラムが入っています。Bucket & Code Server IDE のエディターのプロジェクトがウィザードを追加し、名前とパスワードを尋ねて設定ファイルを書き、小さなネットワークを起動します。
./irc.sh start
unrealircd: started
anope: started
znc: started
eggdrop: started
ftp: started
./irc.sh status
unrealircd: running (pid 10590)
anope: running (pid 10619)
znc: running (pid 10651)
eggdrop: running (pid 10683)
ftp: running (pid 10713)
含まれるもの
レシピリストにはこれらのプログラムが並び、ビルド時に必要なライブラリが加わります。
クライアント
- irssi
- ターミナル用 IRC クライアント、TLS 対応
- BitchX
- 定番のターミナル用クライアント、TLS 対応
ボット
- eggdrop
- Eggdrop 1.10、IRC ボット
- tclsh
- Tcl 8.6、ボットのスクリプト言語
サーバーとサービス
- unrealircd
- UnrealIRCd 6、IRC サーバー、unrealircdctl 付き
- services
- Anope 2.0:NickServ、ChanServ、OperServ など
バウンサー
- znc
- ZNC 1.9、Web パネル付き。Perl、Python、Tcl モジュールはなし
FTP
- pure-ftpd
- TLS 対応の Pure-FTPd
- pure-pw
- 専用のユーザーデータベース
ツール
- busybox
- chpst が各プログラムをそれぞれのユーザーで起動
- screen
- ターミナルを閉じてもクライアントを動かし続ける
画面
QNAP NAS 上の小さなテストネットワークの実際の画面です:ウィザードのチャンネル、そのボット、二つのクライアント。
こんな方に
自分のチャットがほしい
UnrealIRCd と Anope で、自分で運用するサーバーに登録済みのニックネームとチャンネルを用意できます。友人やチーム向けです。
一日中 IRC にいる
ZNC はコンピューターがスリープ中も接続を保ち、irssi はターミナルを閉じても screen の中で動き続けます。
ボットが好き
Eggdrop はチャンネルに常駐し、Tcl スクリプトで機能を追加できます。
インストール
- このサイトのリポジトリを App Center に一度追加します:三つの手順。
- リポジトリの一覧で (example) BitchMyQnap を見つけ、インストール を押します。
- コントロールパネル › ネットワークとファイルサービス › Telnet / SSH で SSH を有効にします。
起動
BitchMyQnap には専用のウィンドウがなく、ターミナルから使います。admin として SSH でログインし、クライアントを起動します。自分のネットワークを作るには、下のプロジェクトを使います。
ssh admin@192.0.2.10 # NAS のアドレス irssi -c irc.example.com -p 6697 --tls # TLS で接続する任意の IRC サーバー
コマンド三つでネットワークを
パッケージにはプログラムが入っており、ウィザードとランナーはエディターのプロジェクト BitchMyQnap に残るため、この部分には Bucket & Code が必要です。下の説明どおりにアプリをビルドして有効化し、エディターのターミナルで次を実行します:
make setup # ウィザード:名前、パスワード、ネットワークのフォルダー make start # ネットワークのプログラムを起動 make irc-status # どれが動いているか
ウィザードは、ネットワーク名、サーバーとサービスの名前、チャンネル、あなたのニックネーム、ボットのニックネーム、FTP を設定するかどうかを尋ねます。パスワードはハッシュでのみ保存します。UnrealIRCd と Anope の間のリンクパスワードとクロークキーはランダムです。
各プログラムはユーザー 65534 として動作します。irc.sh は、そのユーザーで自身のバイナリが動いていることを /proc で確認できた場合にだけ、プログラムにシグナルを送ります。
動作中のネットワークのポート
| ポート | 待ち受けるもの |
|---|---|
| 6667 | UnrealIRCd、IRC、すべてのアドレス |
| 6697 | UnrealIRCd、TLS の IRC、すべてのアドレス |
| 9669 | UnrealIRCd、サービスのリンク、127.0.0.1 のみ |
| 9667 | ZNC、TLS の IRC と Web パネル、すべてのアドレス |
| 9021, 9022-9031 | Pure-FTPd、制御ポートとパッシブポート、すべてのアドレス |
起動後
- クライアントをポート 6697 に接続し、ニックネームとパスワードを付けて
/operを実行すると IRC オペレーターになります。 /msg NickServ REGISTERでニックネームを登録します。Anope はそのニックネームをサービスの root にします。/msgでボットにhelloと送ります。最初に hello と言った人がオーナーになります。- ZNC の Web パネルはポート 9667 の HTTPS にあり、IRC クライアントは同じポートに TLS で接続します。
知っておきたいこと
- UnrealIRCd、ZNC、Eggdrop は root では動作しません。パッケージだけで起動するには、設定ファイルを自分で書き、ユーザーを自分で選びます。
- ネットワークのプログラムは NAS を再起動すると停止します。
make startで再び起動します。 - QuTS hero では、共有フォルダーの ACL によって、その中のフォルダーがユーザー 65534 に対して閉じられることがあります。ウィザードは最後にこれを確認し、閉じられていればフォルダー名を示します。アプリ自身のボリューム上のフォルダーなら動作します。
- BitchX は各行の先頭に、UTF-8 ターミナルでは表示できない 8 ビットの記号を二つ置きます。上の画像ではそれらを空白にしています。
変更して、いつでもビルドし直せます
BitchMyQnap は、QNAP 向けの無料の開発環境 Bucket & Code Server IDE の例です。各プログラムをお使いの NAS 上でソースからコンパイルし、結果を QPKG にまとめます。
パネルから
- Bucket & Code で アプリ を開き、例 タブを開きます。Builder 環境がまだない場合は Ubuntu 24.04 builder (full) を追加します。
- BitchMyQnap (geek set 3) で この例を使う を押します。アプリがレシピとともに表示されますが、まだ何もビルドされていません。
- ビルド を押し、続けて 有効化 を押します。QDK ツールチェーンをインストールすると、エクスポート で QPKG を作成できます。
ターミナルから
エディターのプロジェクト BitchMyQnap には、recipes.txt に同じリストがあります。行を削除するか、ライブラリからレシピを追加して、エディターのターミナルで次を実行します:
make app # recipes.txt からアプリを作成 make build # ビルドしてジョブを追跡 make activate # /usr/app/BitchMyQnap がビルドを指すようになる make qpkg # QPKG をエクスポート (QDK ツールチェーンが必要)
QPKG にはアプリのプログラムが入っています。setup.sh と irc.sh はプロジェクトに残ります。
Bucket & Code での操作を見る
Compile Any App You Need Without Linux Skills: Build QPKG & Deploy Easily (Freeware)
YouTube で 8 分

