2023-01-08 / @syui

golang , sns , activitypub , fly / fly

gotosocialを立ててみた時の話

gotosocialは今現在最も簡単に建てられるactivitypubのインスタンスです。

https://github.com/superseriousbusiness/gotosocial

golangを採用しているというのが大きく、dbもsqliteです。最もシンプルな構成だと思います。

sqliteは、あまり速くはないもののshellとの親和性が非常に高いため、dbの中では最も扱いやすい部類に入ります。あくまで個人感想。

fly.ioは、sqliteをvol mountで使用できるためserverを立てる必要がありません。したがって、全て一つのserver内で完結します。

例えば、mastodonの場合、web & api server, redis-server, pg-serverと3つが必要になります。

ただし、gotosocialは、最低限のweb-uiしか持ちません。したがって、通常操作するには、uiをつけるか、あるいはclientから行う必要があります。

これは、matrixの設計に似ています。

web-client : https://pinafore.social/

android : https://tusky.app/

fly.io

Dockerfile

FROM superseriousbusiness/gotosocial

WORKDIR /gotosocial
ADD config.yaml /gotosocial/

CMD ["--config-path", "/gotosocial/config.yaml"]
$ app=xxx
$ fly launch --name $app
$ fly vol create ${app}_data --size 1 -a $app

config

host: "$app.fly.dev"
db-type: "sqlite"
db-address: "/data/goto/sqlite.db"
accounts-registration-open: false
[mounts]
source="$app_data"
destination="/data/goto"

deploy

$ fly deploy

create user

$ fly ssh consosh consolee
$ /gotosocial/gotosocial --config-path /gotosocial/config.yaml admin account create --username $user --email $mail --password $pass
$ /gotosocial/gotosocial --config-path /gotosocial/config.yaml admin account confirm --username $user
$ /gotosocial/gotosocial --config-path /gotosocial/config.yaml admin account promote --username $user

domain

https://github.com/superseriousbusiness/gotosocial/blob/main/example/config.yaml

https://github.com/felx/mastodon-documentation/blob/master/Running-Mastodon/Serving_a_different_domain.md

https://example.com/.well-known/host-meta

<?xml version="1.0" encoding="UTF-8"?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
  <Link rel="lrdd" type="application/xrd+xml" template="https://example.com/.well-known/webfinger?resource={uri}"/>
</XRD>
host: "$app.fly.dev"
account-domain: "example.com"

post

setting : /user

web client : https://pinafore.social