コンテナ猫小屋
589 文字
3 分
Cloudflare TunnelでMatrixサーバーを建てる

1行でわかる#

docker composeでポンで建った!

本文#

matrixというオープンな分散型リアルタイム通信プロトコルがある。
雑にいえばFediverse版discordとかSlack、Teamsのようなものである。
日本語でのナレッジが少ないように感じるので備忘録がてら書く。

導入環境#

  • UbuntuServer 24.04 LTS(Budgie desktop導入済み)
  • バックエンド: Conduwuit
  • フロント: Element

事前に導入を済ませておくやつ#

  • Docker
  • Docker compose
  • cloudflared

やり方#

0. Docker composeを導入する#

Docker公式サイトの手順に従うか、CasaOSを導入すれば勝手にComposeまで入ってくれる。

1. イメージをプルする#

公式サイトにある一覧の好きなところからイメージをプルする。こだわりがなければ、Docker HubかGHCRでいいような気がする。
以下にはコピペ用にDocker Hubからプルするコマンドを載せておく。

docker image pull docker.io/girlbossceo/conduwuit:main

2. docker-compose.ymlを編集する#

イメージをプルしたら適当なところにディレクトリを作成し、その中にdocker-compose.ymlを作成する。
今回はcomposeでCloudflare Tunnelも動かすので次のように作成する。
Cloudflare Tunnelのトークンはあらかじめ取得しているものとする。

# conduwuit
version: '2.4' # uses '2.4' for cpuset

services:
    homeserver:
        image: girlbossceo/conduwuit:latest
        restart: unless-stopped
        ports:
            - 6167:6167 # 好きなポート番号
        volumes:
            - db:/var/lib/conduwuit
            #- ./conduwuit.toml:/etc/conduwuit.toml
        environment:
            CONDUWUIT_SERVER_NAME: your.server.name # EDIT THIS
            CONDUWUIT_DATABASE_PATH: /var/lib/conduwuit
            CONDUWUIT_DATABASE_BACKEND: rocksdb
            CONDUWUIT_PORT: 6167
            CONDUWUIT_MAX_REQUEST_SIZE: 20_000_000 # in bytes, ~20 MB
            CONDUWUIT_ALLOW_REGISTRATION: 'true'
            CONDUWUIT_ALLOW_FEDERATION: 'true'
            CONDUWUIT_ALLOW_CHECK_FOR_UPDATES: 'true'
            CONDUWUIT_TRUSTED_SERVERS: '["matrix.org"]'
            #CONDUWUIT_LOG: warn,state_res=warn
            CONDUWUIT_ADDRESS: 0.0.0.0
            #CONDUWUIT_CONFIG: './conduwuit.toml' # Uncomment if you mapped config toml above
        #cpuset: "0-4" # Uncomment to limit to specific CPU cores
    #
    ### Uncomment if you want to use your own Element-Web App.
    ### Note: You need to provide a config.json for Element and you also need a second
    ###       Domain or Subdomain for the communication between Element and conduwuit
    ### Config-Docs: https://github.com/vector-im/element-web/blob/develop/docs/config.md
    # element-web:
    #     image: vectorim/element-web:latest
    #     restart: unless-stopped
    #     ports:
    #         - 8009:80
    #     volumes:
    #         - ./element_config.json:/app/config.json
    #     depends_on:
    #         - homeserver
    tunnel:
        container_name: tunnel
      image: cloudflare/cloudflared:latest
      command:
        - tunnel
        - --no-autoupdate
        - run
      environment:
        - TUNNEL_TOKEN=YOUR_TOKEN_HERE

volumes:
    db:

終わったら一旦保存する。

3. Cloudflareの設定を変更する#

ダッシュボードを開き、Zero Trust > Networks > Tunnels > あなたが事前に作成したトンネルを開いて、Public Hostnameを次のように編集する。

| Type: HTTP | URL: homeserver: 6167

4. これで最低限が動く#

あとは下のコマンドを叩けば動く。

docker compose up -d

建てた感想#

systemdで構築してればそんなに時間かからずに済んだんだけどな…

Cloudflare TunnelでMatrixサーバーを建てる
https://blog.esurio1673.net/posts/20240619/
作者
仮想猫
公開日
2024-06-19
ライセンス
CC BY-NC-SA 4.0