有馬総一郎のブログ

(彼氏の事情)

2026年09月21日 07:10:42 JST - 13 minute read - Linux

Electron製でない軽量なメッセージ統合アプリ(LINEも使える)Beeper

メッセージアプリはMessenger, LINE, X(Twitter), Slackなど様々あり、みんな同じメッセージアプリを使っていれば楽なのだけど、みんなバラバラ。各アプリをインストール1する必要があり、昔は Ramboxを使っていたのだけど、地味にメモリーを喰うのでいつのまにか使わなくなっていた。しかし、軽量な Beeperというメッセージ統合アプリがあるので使ってみることにした。

Beeper
受信箱

確かに軽量でメモリの消費量が少ない。また連携したメッセージアプリ全てが一つの受信箱に表示されるために視認性もよく、Chromiumという入れ物で各メッセージサービスにログインして動かしていているだけではないという利便性がある。何よりLINEも連携できるようになっている点が嬉しい。

Beeper
Slack
Beeper
LINE
Beeper
Facebook

LINEとはChrome拡張版の機能を使って連携しているらしいので、拡張版の欠点としてのたまに接続が途切れるという問題があるが、再接続も容易。安定性・機能性を求めるならば、waydroidにLINEをインストールするべきだろうが、軽く確認する程度ならBeeperでも良いだろう。

気になった点としては、デフォルトではフィンランドのサーバーを経由するらしく、メッセージサービスと連携するためのトークンなどがそこに保存・経由されることだ。

しかし、そこもBeeper側も認識しているところで、連携するためのブリッジをセルフホスティング Self-Hosting Bridgesすることが可能だ。

折角なので、以下、Beeper Bridge Managerbbctlをインストールして、自分の管理下で連携する方法をまとめておく。

  1. デスクトップ版かモバイル版であるクライアントアプリをインストール

    LinuxはAppimageが配布されているので、 Download - Beeperからダウンロードする。ただ、若干、動作が不安定である。以下の問題がある。

    • 連携アカウントの削除ができない
    • 他端末にインストールするときに、検証通知が受信できない
    • サポートされているメッセージサービスのアイコンが表示されない

    いずれも使用にはそれほど影響はない。まずは、こちらでアカウント作成を済ませてしまう。

  2. ブリッジ管理ツールbbctlをダウンロードする

    ブリッジ管理ツールbbctlとクライアントアプリを同じ端末にインストールしても良いが、ブリッジ管理ツールbbctlは、常時起動していないと接続、メッセージの受信ができないのでサーバー環境にインストールする方が良い。

    また、以下、連携設定はbbctlは実行しっぱなしにする必要があるので、タブ操作できるbyobutmuxといったターミナルでの操作する方が確認しやすい。

    自環境に合わせたbbctlDownload 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/
    
  3. ログインする(アカウント作成)

    最近の流行り?かパスワードは設定せず、メールアドレス宛に認証コードが届くので、それを入力してログインする。アカウント作成もメールアドレスを入力するぐらいで大きな違いはない。

    $ bbctl login
    ? Email: ************@*****.***.***
    ? Enter login code sent to your email: 123456
    Successfully logged in as @アカウント名:beeper.com
    
  4. 連携するためのチャットルームを作成(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という連携中のブリッジが表示されるので縦三点リーダーをクリックして、 ボットルームを作成 のメニューをクリックする。すると、ボットルームが作成される。

    Beeper
    sh-slack ボットルームを作成
  5. メッセージアカウントでのログイン(Cookie JSONでの認証)

    次にデスクトップ版アプリの 受信箱 にボットルームができるので、ログイン作業を行う。

    Beeper
    sh-slack 受信箱 ボットルーム
    Beeper
    sh-slack ボットルーム

    1. loginコマンドを打つと、ログインするためのオプションが表示される。ここではlogin tokenと入力する。ログイン処理をキャンセルする場合は!slack cancelと入力する。

    2. Cookie JSONか、cURLを入力しろと促されるので、ここではCookie JSONを入力することとする。そのためのURLが表示されるで、ブラウザで連携サービスにログインする。

    3. Slackの ワークスペース 画面が表示されたら、F12などを押下して開発者メニューやデベロッパーツールを表示して、ネットワークのタブを表示する。

    4. 表示された通信からメソッドがPOST、ドメインedgeapi.slack.comである項目を選択して左タブの 要求 を開き、token: "xoxc-***"で始まる文字列をコピーする。

      Beeper
      `token: "xoxc-***"`
    5. 次に開発メニュー、デベロッパーツールを開いて、ストレージ、またはApplicationを開いて、https://app.slack.comのCookieから名前がdとなっているxoxd-***で始まる文字列をコピーする。

      Beeper
      `xoxd-***`
    6. デスクトップ版アプリのボットルームに、以下のようなJSONを作成して貼り付ける。

      {"auth_token":"xoxc-**************-**************-**************-****************************************************************","cookie_token":"xoxd-************************************************************************************************************************************************************************************************************************"}
      
    7. Successfully logged into ワークスペース名 as ***@**********と表示されればログイン成功。

      Beeper
      sh-slack Cookie JSON

以下基本の流れは同じ。認証の仕方がcURLか、3rdパーティーメッセージサービスだと手順が異なる。

Messenger連携

  1. 連携するためのチャットルームを作成(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という連携中のブリッジが表示されるので縦三点リーダーをクリックして、 ボットルームを作成 のメニューをクリックする。すると、ボットルームが作成される。

    Beeper
    sh-facebook ボットルームを作成
  2. メッセージアカウントでのログイン(cURLでの認証)

    次にデスクトップ版アプリの 受信箱 にボットルームができるので、ログイン作業を行う。

    1. loginコマンドを打つと、ログインするためのオプションが表示される。ここではlogin messengerと入力する。

      Beeper
      sh-facebook ボットルーム
    2. Cookie JSONか、cURLを入力しろと促されるので、ここではcURLを入力することとする。そのためのURLが表示されるで、ブラウザで連携サービスにログインする。

    3. メッセンジャー画面が表示されたら、F12などを押下して開発者メニューやデベロッパーツールを表示して、ネットワークのタブを表示する。

    4. 表示された通信からメソッドがGET、ドメインwww.messenger.comである項目を選択して右クリックしてコンテキストメニューを開く。そして、 値をコピー そして cURLとしてコピー をクリックする。

      Beeper
      sh-facebook cURLとしてコピー
    5. デスクトップ版アプリのボットルームに、そのコピーしたcURLを貼り付ける。

    6. Logged in as ****** (**************************)と表示されればログイン成功。

      Beeper
      sh-facebook cURL
  3. 連携済みとなってサイドバーにsh-facebookのアイコンが表示されて、Messengerを表示される。

LINE連携

  1. 連携するためのチャットルームを作成(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はなくて良い。

  2. ビルドする

    ビルドできる場合は./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とする。

  3. 実行する

    docker compose -f beeper-line-compose.yml up -dとする。上記、ビルドコマンドが叩いている場合は、そのまま実行されるのでログを確認すればいい。

    デスクトップ版アプリの セッティング(設定) をクリックして、 橋Bridge をクリックする。するとsh-lineという連携中のブリッジが表示されるので縦三点リーダーをクリックして、 ボットルームを作成 のメニューをクリックする。すると、ボットルームが作成される。

    Beeper
    sh-line ボットルームを作成
  4. メッセージアカウントでのログイン(Cookie JSONでの認証)

    次にデスクトップ版アプリの 受信箱 にボットルームができるので、ログイン作業を行う。

    1. loginコマンドを打つと、ログインするためのオプションが表示される。メールアドレス、次にパスワードを入力しろと促される

      Beeper
      sh-line ボットルーム

      ここでトラップがあった、パスワードに*, $の記号があったためか、正しいパスワードを入れてもLINE rejected the email or password. Make sure you used the email from LINE Settings -> Account -> Email Address, then try again.とログインできなかった。記号は避けた方が良い。 また、このエラーメッセージのとおり、LINEでパスワードでログインを許可してないと、そもそもログインできないので、それも確認しておく。

      Beeper
      sh-line パスワードでログインを許可
    2. パスワードが認証されれば、スマホでピンコードを入力されるように言われるので、スマホでピンコードを入力すればログイン完了となる。

    3. Successfully logged inと表示されればログイン成功。

      Beeper
      sh-line ログイン成功

    以下のように、デフォルトでは、フィンランドのサーバーを経由でのログインだったのが、セルフホスティングサーバー経由となっていることが確認できる。

    Beeper
    LINEログイン フィンランド経由
    Beeper
    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は、接続が不安定でたまに同期されていない時があるが、その場合は受信箱に再接続のボタンが表示されるので、今のところ気にならない。

Beeper
モバイル版アプリ

また、他端末でログインするときにはメールアドレスと認証コードだけでなく検証通知が既にログイン済の端末に飛んで、そのログイン済端末から許可する必要があるのだけど、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のメッセージを確認できるのはありがたい。

Beeper
メモリーの消費量が少ない

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

ともあれ、これでメッセージアプリの受信地獄から、少しは解放されるはずだ。


  1. 特にLINEはLinux環境だとインストールのハードルが高い。 ↩︎

  2. loginctl enable-linger $USERとログインしてなくてもユーザーサービスの実行する設定もしている。 ↩︎