メッセージアプリはMessenger, LINE, X(Twitter), Slackなど様々あり、みんな同じメッセージアプリを使っていれば楽なのだけど、みんなバラバラ。各アプリをインストール1する必要があり、昔は Ramboxを使っていたのだけど、地味にメモリーを喰うのでいつのまにか使わなくなっていた。しかし、軽量な Beeperというメッセージ統合アプリがあるので使ってみることにした。
確かに軽量でメモリの消費量が少ない。また連携したメッセージアプリ全てが一つの受信箱に表示されるために視認性もよく、Chromiumという入れ物で各メッセージサービスにログインして動かしていているだけではないという利便性がある。何よりLINEも連携できるようになっている点が嬉しい。
LINEとはChrome拡張版の機能を使って連携しているらしいので、拡張版の欠点としてのたまに接続が途切れるという問題があるが、再接続も容易。安定性・機能性を求めるならば、waydroidにLINEをインストールするべきだろうが、軽く確認する程度ならBeeperでも良いだろう。
気になった点としては、デフォルトではフィンランドのサーバーを経由するらしく、メッセージサービスと連携するためのトークンなどがそこに保存・経由されることだ。
しかし、そこもBeeper側も認識しているところで、連携するためのブリッジをセルフホスティング Self-Hosting Bridgesすることが可能だ。
折角なので、以下、Beeper Bridge Managerbbctlをインストールして、自分の管理下で連携する方法をまとめておく。
-
デスクトップ版かモバイル版であるクライアントアプリをインストール
LinuxはAppimageが配布されているので、 Download - Beeperからダウンロードする。ただ、若干、動作が不安定である。以下の問題がある。
- 連携アカウントの削除ができない
- 他端末にインストールするときに、検証通知が受信できない
- サポートされているメッセージサービスのアイコンが表示されない
いずれも使用にはそれほど影響はない。まずは、こちらでアカウント作成を済ませてしまう。
-
ブリッジ管理ツール
bbctlをダウンロードするブリッジ管理ツール
bbctlとクライアントアプリを同じ端末にインストールしても良いが、ブリッジ管理ツールbbctlは、常時起動していないと接続、メッセージの受信ができないのでサーバー環境にインストールする方が良い。また、以下、連携設定は
bbctlは実行しっぱなしにする必要があるので、タブ操作できるbyobuやtmuxといったターミナルでの操作する方が確認しやすい。自環境に合わせた
bbctlを Download bbctlからダウンロードする。$ curl -sSL https://github.com/beeper/bridge-manager/releases/latest/download/bbctl-linux-amd64 -o bbctl $ chmod +x bbctl $ sudo mv bbctl /usr/local/bin/ -
ログインする(アカウント作成)
最近の流行り?かパスワードは設定せず、メールアドレス宛に認証コードが届くので、それを入力してログインする。アカウント作成もメールアドレスを入力するぐらいで大きな違いはない。
$ bbctl login ? Email: ************@*****.***.*** ? Enter login code sent to your email: 123456 Successfully logged in as @アカウント名:beeper.com -
連携するためのチャットルームを作成(Slack)
bbctl run sh-slackとコマンドを実行する。実行後、そのまま放置する(Ctrl+cなどで止めない)。arimasou16@ubuntu:~$ bbctl run sh-slack Finding latest version of mautrix-slack from mau.dev Installing mautrix-slack (commit: 47e319dd) Downloading mautrix-slack 100% |███████████████████████████████████████████████████████████████████████████████████████████████████████| (23/23 MB, 4.5 MB/s) Successfully installed mautrix-slack commit 47e319dd Starting slackデスクトップ版アプリの セッティング(設定) をクリックして、 橋Bridge をクリックする。すると
sh-slackという連携中のブリッジが表示されるので縦三点リーダーをクリックして、 ボットルームを作成 のメニューをクリックする。すると、ボットルームが作成される。
sh-slack ボットルームを作成 -
メッセージアカウントでのログイン(Cookie JSONでの認証)
次にデスクトップ版アプリの 受信箱 にボットルームができるので、ログイン作業を行う。
sh-slack 受信箱 ボットルーム
sh-slack ボットルーム -
loginコマンドを打つと、ログインするためのオプションが表示される。ここではlogin tokenと入力する。ログイン処理をキャンセルする場合は!slack cancelと入力する。 -
Cookie JSONか、cURLを入力しろと促されるので、ここではCookie JSONを入力することとする。そのためのURLが表示されるで、ブラウザで連携サービスにログインする。
-
Slackの ワークスペース 画面が表示されたら、
F12などを押下して開発者メニューやデベロッパーツールを表示して、ネットワークのタブを表示する。 -
表示された通信からメソッドが
POST、ドメインedgeapi.slack.comである項目を選択して左タブの 要求 を開き、token: "xoxc-***"で始まる文字列をコピーする。
`token: "xoxc-***"` -
次に開発メニュー、デベロッパーツールを開いて、ストレージ、またはApplicationを開いて、
https://app.slack.comのCookieから名前がdとなっているxoxd-***で始まる文字列をコピーする。
`xoxd-***` -
デスクトップ版アプリのボットルームに、以下のようなJSONを作成して貼り付ける。
{"auth_token":"xoxc-**************-**************-**************-****************************************************************","cookie_token":"xoxd-************************************************************************************************************************************************************************************************************************"} -
Successfully logged into ワークスペース名 as ***@**********と表示されればログイン成功。
sh-slack Cookie JSON
-
以下基本の流れは同じ。認証の仕方がcURLか、3rdパーティーメッセージサービスだと手順が異なる。
Messenger連携
-
連携するためのチャットルームを作成(Messenger)
bbctl run sh-facebookとコマンドを実行する。実行後、そのまま放置する(Ctrl+cなどで止めない)。$ bbctl run sh-facebook Finding latest version of mautrix-meta from mau.dev Installing mautrix-meta (commit: 782b06b0) Downloading mautrix-meta 100% |███████████████████████████████████████████████████████████████████████████████████████████████████████| (38/38 MB, 4.5 MB/s) Successfully installed mautrix-meta commit 782b06b0 Starting metaデスクトップ版アプリの セッティング(設定) をクリックして、 橋Bridge をクリックする。すると
sh-slackという連携中のブリッジが表示されるので縦三点リーダーをクリックして、 ボットルームを作成 のメニューをクリックする。すると、ボットルームが作成される。
sh-facebook ボットルームを作成 -
メッセージアカウントでのログイン(
cURLでの認証)次にデスクトップ版アプリの 受信箱 にボットルームができるので、ログイン作業を行う。
-
loginコマンドを打つと、ログインするためのオプションが表示される。ここではlogin messengerと入力する。
sh-facebook ボットルーム -
Cookie JSONか、cURLを入力しろと促されるので、ここでは
cURLを入力することとする。そのためのURLが表示されるで、ブラウザで連携サービスにログインする。 -
メッセンジャー画面が表示されたら、
F12などを押下して開発者メニューやデベロッパーツールを表示して、ネットワークのタブを表示する。 -
表示された通信からメソッドが
GET、ドメインwww.messenger.comである項目を選択して右クリックしてコンテキストメニューを開く。そして、 値をコピー そして cURLとしてコピー をクリックする。
sh-facebook cURLとしてコピー -
デスクトップ版アプリのボットルームに、そのコピーした
cURLを貼り付ける。 -
Logged in as ****** (**************************)と表示されればログイン成功。
sh-facebook cURL
-
-
連携済みとなってサイドバーに
sh-facebookのアイコンが表示されて、Messengerを表示される。
LINE連携
-
連携するためのチャットルームを作成(LINE)
LINEは
bbctl runの公式自動ダウンローダーの対象一覧に含まれていないので、bbctl run sh-lineではサポートされていないブリッジタイプとされる。そのため、サードパーティ製ブリッジをビルドする必要がある。git clone https://github.com/beeper/line.git $ cd line $ mkdir -p data $ ls AGENTS.md Dockerfile README.md build-windows.sh cmd docker-compose.yml go.mod pkg scripts CLAUDE.md LICENSE UNSENDING.md build.sh data docker-run.sh go.sum readme $ bbctl config --type bridgev2 sh-line > data/config.yaml Config file:以下、私の環境ではいくつものdocker-compose.ymlがあるので、名前変更している。特にcompose.ymlの指定が不要の場合は
-f beeper-line-compose.ymlはなくて良い。 -
ビルドする
ビルドできる場合は
./build.shをするが、ビルド環境を整えるのが面倒な場合は、docker-compose.ymlが容易されているので、docker compose -f beeper-line-compose.yml buildとする。ビルドして、そのまま実行したかったらdocker compose -f beeper-line-compose.yml up -d --buildとする。 Intel NUC Pentium N3700と古いCPUだと10分ぐらいかかった。ログを確認する場合はdocker logs line-matrix-line-1 --tail 20とする。 -
実行する
docker compose -f beeper-line-compose.yml up -dとする。上記、ビルドコマンドが叩いている場合は、そのまま実行されるのでログを確認すればいい。デスクトップ版アプリの セッティング(設定) をクリックして、 橋Bridge をクリックする。すると
sh-lineという連携中のブリッジが表示されるので縦三点リーダーをクリックして、 ボットルームを作成 のメニューをクリックする。すると、ボットルームが作成される。
sh-line ボットルームを作成 -
メッセージアカウントでのログイン(Cookie JSONでの認証)
次にデスクトップ版アプリの 受信箱 にボットルームができるので、ログイン作業を行う。
-
loginコマンドを打つと、ログインするためのオプションが表示される。メールアドレス、次にパスワードを入力しろと促される
sh-line ボットルーム ここでトラップがあった、パスワードに
*,$の記号があったためか、正しいパスワードを入れてもLINE rejected the email or password. Make sure you used the email from LINE Settings -> Account -> Email Address, then try again.とログインできなかった。記号は避けた方が良い。 また、このエラーメッセージのとおり、LINEでパスワードでログインを許可してないと、そもそもログインできないので、それも確認しておく。
sh-line パスワードでログインを許可 -
パスワードが認証されれば、スマホでピンコードを入力されるように言われるので、スマホでピンコードを入力すればログイン完了となる。
-
Successfully logged inと表示されればログイン成功。
sh-line ログイン成功
以下のように、デフォルトでは、フィンランドのサーバーを経由でのログインだったのが、セルフホスティングサーバー経由となっていることが確認できる。
-
X(Twitter)連携
殆どSlack、Facebookなどと同じ。連携管理ツールbbctl runのBRIDGEオプションがsh-xではなくてsh-twitterであること。注意点として、ここでsh-xみたいな認識されないBRIDGEオプションを指定して起動すると、どのブリッジタイプなんだと選択を求められる。
Unsupported bridge type
? Select bridge type: [Use arrows to move, type to filter]
> gmessages
heisenbridge
imessagego
signal
telegram
bluesky
googlechat
linkedin
meta
slack
twitter
bridgev2
discord
そのまま選択指定して継続すると、次回移行、連携を実行する場合は、そのsh-BRIDGEが実行する際のブリッジタイプとなる。仮にbbctl run sh-xで見知らぬBRIDGEとしてなり、twitterと選択して、連携を完了した場合、次回はbbctl run sh-twitterとせず、bbctl run sh-xとする。
また、X(Twitter)のログインとしては、パスコードを求められる。自分も一瞬、パスコードの設定をしたことを忘れていたが、二要素認証の認証コードでなくパスコードを求められたので注意。
以上で、連携については終了。
自動起動
次に各連携接続マネージャーの起動を自動起動させる。私の環境はrootless docker2なので、ユーザによるsystemdで起動させる。
~/.config/systemd/user/beeper-slack.service
[Unit]
Description=Beeper Slack Bridge
[Service]
Type=simple
ExecStart=/usr/local/bin/bbctl run sh-slack
Restart=always
RestartSec=10
[Install]
WantedBy=default.target
~/.config/systemd/user/beeper-facebook.service
[Unit]
Description=Beeper Facebook Bridge
[Service]
Type=simple
ExecStart=/usr/local/bin/bbctl run sh-facebook
Restart=always
RestartSec=10
[Install]
WantedBy=default.target
~/.config/systemd/user/beeper-line.service
[Unit]
Description=Beeper LINE Bridge (Docker Compose)
After=docker.service
Requires=docker.service
[Service]
ExecStartPre=/bin/sh -c 'while [ ! -S /run/user/1000/docker.sock ]; do sleep 1; done'
Type=oneshot
RemainAfterExit=yes
Environment="DOCKER_HOST=unix:///run/user/1000/docker.sock"
WorkingDirectory=~/beeper/line
ExecStart=/usr/bin/docker compose -f beeper-line-compose.yml up -d
ExecStop=/usr/bin/docker compose -f beeper-line-compose.yml stop
[Install]
WantedBy=default.target
~/.config/systemd/user/beeper-twitter.service
[Unit]
Description=Beeper Twitter/X Bridge
[Service]
Type=simple
ExecStart=/usr/local/bin/bbctl run sh-twitter
Restart=always
RestartSec=10
[Install]
WantedBy=default.target
複数のサービスをターゲットでまとめておく。
~/.config/systemd/user/beeper.target
[Unit]
Description=Beeper Bridges Group
Wants=beeper-slack.service beeper-facebook.service beeper-line.service beeper-twitter.service
[Install]
WantedBy=default.target
設定ファイルを再ロードして、有効化・実行する。これで、自動起動の設定が完了した。
systemctl --user daemon-reload
systemctl --user enable --now beeper.target
systemctl --user status beeper-slack beeper-facebook beeper-twitterとみれば、各サービスはdisabledとなっているが、ターゲットとしては有効化されているの問題ない。LINEはバックグラウンドで立ち上げて終了する(up -d)となっているためactive (exited)となっていて問題ない。個別サービスを起動・停止したい場合はsystemctl --user start|stop|restart beeper-slackとすれば良い。
Linux版の不具合?
Linux版だけなのか知らないが、デスクトップ版アプリは通知音しないのが、少し問題。まあ、トレイアイコンで新着は確認できる。そして、Chrome拡張版LINEは、接続が不安定でたまに同期されていない時があるが、その場合は受信箱に再接続のボタンが表示されるので、今のところ気にならない。
また、他端末でログインするときにはメールアドレスと認証コードだけでなく検証通知が既にログイン済の端末に飛んで、そのログイン済端末から許可する必要があるのだけど、Linuxのデスクトップ版には飛んでこなかった。モバイル版にはちゃんと飛んできた。なので、最初のモバイル版にインストールするときはリカバリーコードでログインした。
また、slackのアカウントの連携解除しようとしたが、There was an error disconnecting account slackgo.**********-*********- RelayedError (bridge-slackgo logout): SDKEror: callBridgeAP failed: Unrecognized endpoint Report a problemとエラーメッセージが表示されてできない。モバイル版からやったらあっさり連携解除できた。
使用感
複数のメッセージアプリを一元管理できるのはありがたい。しかも、アカウントに紐付いているので、スマホやタブレットにBeeperをインストールして、連携させたアカウントをログインすればそのまま使える。Amazon Kindle Fireでも問題なくインストール・動作できたので、嬉しい。
使い始めて数日のみだが、メモリーの消費も二桁のMiBだし、Linux版でSNSのメッセージを確認できるのはありがたい。
bbctlで保存した設定、トークンは以下のディレクトリに所有者のみが読み取りできる状態で保存してある。気になる人は、gocryptfsコマンドの導入など検討するとよりセキュアになるだろう。
arimasou16@ubuntu:~$ ls -l ~/.config/bbctl
合計 4
-rw------- 1 arimasou16 arimasou16 240 9月 20 10:43 config.json
arimasou16@ubuntu:~$ ls -l ~/.local/share/bbctl/prod/
合計 20
drwx------ 2 arimasou16 arimasou16 4096 9月 21 06:05 binaries
drwx------ 3 arimasou16 arimasou16 4096 9月 20 18:16 sh-facebook
drwx------ 3 arimasou16 arimasou16 4096 9月 20 18:50 sh-line
drwx------ 3 arimasou16 arimasou16 4096 9月 22 08:32 sh-slack
drwx------ 3 arimasou16 arimasou16 4096 9月 21 06:53 sh-twitter
ともあれ、これでメッセージアプリの受信地獄から、少しは解放されるはずだ。




