2022-11-21 /
@syui
matrix
, fly
/ fly
fly.ioとmatrix
今回は、fly.ioでmatrix-serverを立ててみました。serverはdendrite
を採用します。
https://github.com/matrix-org/dendrite
fly.ioにはいくつか制約があり、dockerfileをdeployすることになります。
したがって、versionをmatrixdotorg/dendrite-monolith:v0.3.11
に固定します。configはv1を使用します。
matrixdotorg/dendrite-monolith:latest
はconfig v1,2に関わらずpanic(golang)を起こします。
そのうちconfigはv2で書き直す予定ですが、v2で書いた人は教えてもらえると嬉しいです。configは重要な箇所だけ載せています。
version: 1
global:
server_name: syui.cf
well_known_server_name: "syui.cf:443"
kafka:
addresses:
- kafka:9092
topic_prefix: Dendrite
use_naffka: true
naffka_database:
connection_string: file:///data/dendrite.db
max_open_conns: 10
max_idle_conns: 2
conn_max_lifetime: -1
DNSでA(ipv4),AAAA(ipv6), SRVなども設定しておいてください。sub-domainの場合はmain-domainの.well-known/matrix/server
に以下のようなファイルを置きます。
https://matrix-org.github.io/dendrite/installation/domainname
{
"m.server": "matrix.example.com:8448"
}
$ sudo systemctl start docker
$ sudo docker run --rm -it -v $(pwd):/key -w /key --entrypoint /usr/bin/generate-keys matrixdotorg/dendrite-monolith:v0.3.11 --tls-cert server.crt --tls-key server.key --private-key matrix_key.pem
FROM matrixdotorg/dendrite-monolith:v0.3.11
COPY matrix_key.pem dendrite.yaml server.crt server.key /etc/dendrite/
CMD ["--config","/etc/dendrite/dendrite.yaml", "--tls-cert", "/etc/dendrite/server.crt", "--tls-key", "/etc/dendrite/server.key"]
app = "xxx"
kill_signal = "SIGINT"
kill_timeout = 20
[[services]]
internal_port = 8008
protocol = "tcp"
[services.concurrency]
hard_limit = 100
soft_limit = 80
[[services.ports]]
handlers = ["tls", "http"]
port = "443"
[[services.ports]]
handlers = ["tls", "http"]
port = "8443"
[[services.tcp_checks]]
interval = "10s"
grace_period = "5s"
timeout = "2s"
[mounts]
source="xxx_data"
destination="/data"
$ app=xxx
$ flyctl launch --name $app --no-deploy --region ams
$ flyctl volumes create ${app}_data --size 1 --region ams --app $app
# これはwebからやったほうがいい
$ flyctl certs add $domain
# add : $app.fly.dev
# add : $mydomain
# deployする際はignoreに注意
$ cat .dockerignore
$ flyctl deploy
# userを作成します
# https://matrix-org.github.io/dendrite/administration/createusers
$ flyctl ssh console
$ /usr/bin/create-account -config /etc/dendrite/dendrite.yaml -username USERNAME -password xxx
ここからtestしたあと、webからloginしましょう。
matrixの仕組みはmastodonに似ています。
例えば、element-webでは他サーバーを選択した上で、$app.fly.dev
を使用してloginできます。
login後は$domain
になります。
ref
https://codeberg.org/gerald/dendrite-on-flyio