今見てみると、QQロボットにはクールなQロボットしかなく、DockerはLinuxで実行できるようです。
次に、クールなQロボットのインストールを開始します。リソースの消費量はそれほど大きくなく、約180Mのメモリを消費します。
最初に docker
をインストールします
CoolQ公式ウェブサイトは docker
COOLQ Docker2.0を提供します
しかし、私は HTTP
を介していくつかの機能を開発する予定なので、大物が作った HTTP
プラグインを備えたCQHTTPDockerを選びました
まず第一に、「プル」ミラー、ダウンロードは比較的遅いと思います、「スクリーン」をゆっくりと掛けます
docker pull richardchien/cqhttp:latest
ダウンロードが完了したら、テスト用のコンテナを起動します
docker run -ti --rm --name coolq \
- v /home/coolq:/home/user/coolq \ #クールなQプログラムファイルを永続化するために、ホストディレクトリをコンテナにマウントします
- p 9000:9000 \ #noVNCポート、ブラウザからCoolQを制御するために使用
- p 5700:5700 \ #HTTPAPIプラグインによって開かれたポート
- e COOLQ_ACCOUNT=123456 \ #ログインするQQアカウント、オプションですが推奨
- e CQHTTP_POST_URL=http://example.com:8080 \ #インシデントレポートのアドレス
- e VNC_PASSWD=111111111 \ #noVncパスワード
- e CQHTTP_SERVE_DATA_FILES=yes \ #HTTPインターフェイスを介したCoolQデータファイルへのアクセスを許可する
richardchien/cqhttp:latest
この時点で、 noVNC
にログインして、表示およびログインできます。
テストに問題がない場合は、起動パラメータの「--rm」を「-d」に変更して保存して実行します。
docker start coolq
docker stop coolq
マシンの電源をオン/オフする頻度を設定したタスクがありますが、起動後に coolq
が自動的に起動しないため、 supervisord
を選択して自動的に起動します
autorestart = false
に注意してください。coolq
を開始した後はexit(0)
になるため、 supervisord
は再起動を試み続け、1回だけ開始する必要があります。
[ program:coolq]
command=docker start coolq
stderr_logfile=/var/log/supervisor/error_coolq.log
stdout_logfile=/var/log/supervisor/coolq.log
directory=/home
autostart=true
user=docker
autorestart=false
コンテナには独自の「127.0.0.1」があるため、レポートアドレスを「127.0.0.1」にすることはできません。通常、マシン「ip」をレポートアドレスとして使用できます。
[123456789]
use_ws =false
use_ws_reverse =false
serve_data_files = yes
access_token =11111111111111111
log_level = error
post_url = http://example.com:8080
secret =11111111111111111
show_log_console =false
event_filter = filter.json
{". or":[{"message_type":"private"},{"message_type":"group","anonymous":{".eq":null},"raw_message":{".regex":"CQ:at,qq=2450184313|^出てくる$"}},{"post_type":"request"}]}
Docker
は iptables
を直接変更し、 ufw
よりも優先度が高いため、 ufw
を介してリスニングポートの開閉を制御することはできません。Docker
情報を手動で構成する必要があります。
# vim /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"
# vim /etc/ufw/before.rules
# * フィルタの前に次のコンテンツを追加します
# 172.17.0.0 /16はドッカーブリッジのアドレスであり、異なる場合があります
* nat
: POSTROUTING ACCEPT [0:0]-A POSTROUTING !-o docker0 -s 172.17.0.0/16-j MASQUERADE
COMMIT
# vim /etc/default/docker
# この構成情報を追加します
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --iptables=false"
# vim /etc/docker/daemon.json
# このファイルなしで作成
{" iptables":false}
daemon
、 docker
、 ufw
を再起動します
systemctl daemon-reload && systemctl restart docker && ufw reload
Recommended Posts