TL;DR
以下の通りコマンドを3回実行する。
sudo snap connect rocketchat-server:mount-observe
sudo snap connect rocketchat-server:network-observe
sudo snap connect rocketchat-server:system-observe
出典: https://docs.rocket.chat/docs/deploy-with-snaps#troubleshooting
なお、同一コマンドを3回実行しているがスペースで区切ったりカンマで区切ったりして纏めて実行できるかは試していないため不明。誰か試したら教えてください。
対象環境
Snapでrocketchat-server
をインストールして稼働を開始した後、syslog、systemd-journal、dmesgなどがrocketchat-mongo
に対するAppArmorによるリジェクトログであふれたサーバー。
{**timestamp**} {**hostname**} audit[{**pid**}]: AVC apparmor="DENIED" operation="open" profile="snap.rocketchat-server.rocketchat-mongo" name="/proc/{**mongodb-pid**}/net/netstat" pid={**mongodb-pid**} comm="ftdc" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
{**timestamp**} {**hostname**} audit[{**pid**}]: AVC apparmor="DENIED" operation="open" profile="snap.rocketchat-server.rocketchat-mongo" name="/proc/{**mongodb-pid**}/net/snmp" pid={**mongodb-pid**} comm="ftdc" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
{**timestamp**} {**hostname**} audit[{**pid**}]: AVC apparmor="DENIED" operation="open" profile="snap.rocketchat-server.rocketchat-mongo" name="/proc/vmstat" pid={**mongodb-pid**} comm="ftdc" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
結果の確認
sudo snap connections rocketchat-server
の実行結果が以下の通りならOK
Interface Plug Slot Notes
mount-observe rocketchat-server:mount-observe :mount-observe manual
network rocketchat-server:network :network -
network-bind rocketchat-server:network-bind :network-bind -
network-observe rocketchat-server:network-observe :network-observe manual
removable-media rocketchat-server:removable-media - -
system-observe rocketchat-server:system-observe :system-observe manual
removable-media
が用意されている理由はわからないが、本件にはこいつの起動は不要。恐らく、バックアップコマンド実行時に/mnt
や/media
などへのアクセスができるように用意されているものと思われる(ご存知の方は教えてください)。
解説
SnapではAppArmorの設定をプラグという仕組みが握っており、Rocket.Chatのsnapcraft.yaml
には件の警告が発生しなくなるだけのプラグがきちんと定義済みである。
ところが、Snap側で自動的に有効化するプラグとユーザーが操作しない限り決して有効にしないプラグというのが決まってしまっている。このため、ソフトウェア提供側からはフォローが不可能なプラグ有効化操作の必要性が残るようだ。