最近リレー周りで色々あって調べてたりしましたが、 勉強がてら1個くらい建ててみるかということでやってみました。
今回つかうやつ
雪餅氏のActivity-Relayを使います
Go製の独自実装なやつです。
雪餅氏のブログも見ておくとよいです。
https://blog.yukimochi.jp/2018/12/fediverse-with-relay.html
環境
Docker Composeを使います、あとはnginx。
建てる
といっても・・・ドキュメントどおりですね。
https://github.com/yukimochi/Activity-Relay/wiki/01.-Install
Dockerの手順に従い建てます。
nginx
リバプロです、私はnginxを使ってるので。
雪餅氏によるとテンプレートは提供しないとのことなので、雑に作成。
大事なとこだけ抜粋すると
upstream relay {
server 127.0.0.1:8080 max_fails=5 fail_timeout=60s;
}
~~略~~
location ~ ^/$ {
root /var/lib/relay; #Dockerではなくホスト側
try_files $uri $uri/index.html =404;
}
location / {
try_files $uri @proxy;
}
location @proxy {
proxy_pass http://relay;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
まあトップページは作るか謎。いらんよね。
承認制の話
Activity-Relayは承認制にすることができます。
承認制への変更は relay control で行えます。
$ docker compose exec -it server relay control config enable manually-accept
この状態で申請すると・・・
$ docker compose exec -it server relay control follow list
- Follow request :
md.korako.me
Total : 1
Mastodon側は承認待ち状態。
拒否してみます。
$ docker compose exec -it server relay control follow reject md.korako.me
Reject [md.korako.me] follow request
Mastodon側を見たらステータスが無効になりました。
もう一度申請して許可をします。
$ docker compose exec -it server relay control follow accept md.korako.me
Accept [md.korako.me] follow request
INFO[0000] RelayState reloaded
Mastodon側で許可を確認できました。
所感
建てるの自体は非常に簡単でした。
承認制にもできるので自分で建てた複数のインスタンスでリレーしたりとかもできますし、なにより今もメンテナンスされているので非常に安心して使えます。
今回は試験的に作ったものなので公開もしませんが、 しばらく使ってみて小規模だとどれくらいのスペックが必要とか、他に何ができるかとかを探っていきたいとおもいます。
では、また。
追記
移転ついでにCloudflare Tunnel経由に変えました。
既存のdocker-compose.yamlに以下を追記して起動する感じに。
web:
image: nginx:latest
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./nginx/html:/usr/share/nginx/html
depends_on:
- server
tunnel:
restart: always
image: cloudflare/cloudflared:latest
command: tunnel run
environment:
- TUNNEL_TOKEN={{トンネル登録時に発行されるトークンを指定}}
nginx/default.conf
正解はわからんけど一旦これで。
upstream relay {
server server:8080 max_fails=5 fail_timeout=60s;
}
server {
server_name {{どめいんめい}};
listen 80;
location ~ ^/$ {
root /usr/share/nginx/html;
try_files $uri $uri/index.html =404;
}
location / {
try_files $uri @proxy;
}
location @proxy {
proxy_pass http://relay;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
nginx無しで8080にトンネルしてもいいんだけど、そうするとアクセスしたときに404になってしまうので、nginx通しておいたほうが良さそうな気がする。
サーバを移転させた。
OCI無料枠から撤退したいので簡単なやつから移転を進めていく。