最近リレー周りで色々あって調べてたりしましたが、 勉強がてら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通しておいたほうが良さそうな気がする。

  • 鴉河雛@LemmyOPMA
    link
    日本語
    17 months ago

    サーバを移転させた。

    OCI無料枠から撤退したいので簡単なやつから移転を進めていく。