セルフホスト Bluesky PDS でドメイン名ハンドルにしてみた
時代は招待制をやめて部分的にではありますが、セルフホストできるようになったBlueskyですかね。
というわけで、表題の通りPDSをつかってドメイン名ハンドルを設定してみました。
Bskyアカウントです。フォローしてね。
PDSとは
Bluesky本体に接続(クローリングとかされる)サーバーで、ユーザーの諸々のデータが保存されます。
なので、MastodonのようにオレオレBlueskyが建てられるよ!というよりは、Blueskyのストレージの一つになれるよ。という感じかなと思います。
まあ、わかりにくいですね。
```mermaid
graph TD;
Bluesky-->PDS_A;
Bluesky-->PDS_B;
Bluesky-->PDS_C;
Bluesky-->PDS_D;
```
将来的にはBluesky自体も建てられるようになるとは思いますが、あんまりそこには興味はないかなぁという感じです。
なんで立てるの?
なんで、わざわざPDSたてたの?
技術的な興味
といってもほぼコマンド1つでたつので。。・
データの所有
技術的な興味
まあ、そこにセルフホストでできるんだからやってみないとね!というところですね。
DNSの設定
設定ファイルの作成
Let's Encryptの設定
DNSはCloudFlareを使って設定しています。CloudFlareでは、1段階 *.wtr.app のSSL証明書は無料で発行してくれます。
しかし、*.bsky.wtr.app みたいな2段階以上なサブドメインには発行してくれません。そのため、それらのためにLet's Encryptを使って生成するようにTraefikを設定しました。
Traefikを使った理由は既存の自宅サーバー環境がTraefikだからです。
こんな感じ
certificatesResolvers:
letsEncrypt:
acme:
email: le@wtr.app
storage: /etc/traefik/acme.json
dnsChallenge:
provider: cloudflare
resolvers:
- 1.1.1.1:53
- 1.0.0.1:53
docker-compose.yml にはこんな感じのラベルを追加しています。 bsky.wtr.appもCloudFlareをやめてLets Encryptにしようかなぁと思った名残が残っちゃっていますが、*.bsky.wtr.appだけ取得するようにしました。
- "traefik.http.routers.bskyAccount.rule=HostRegexp(`{subdomain:.+}.bsky.wtr.app`)"
- "traefik.http.routers.bskyAccount.entrypoints=websecure"
- "traefik.http.routers.bskyAccount.tls=true"
- "traefik.http.routers.bskyAccount.tls.certresolver=letsEncrypt"
- "traefik.http.routers.bskyAccount.tls.domains[0].main=*.bsky.wtr.app"
Let's Encryptの証明書を保存するのを忘れていて、やべえってなったりはしましたがとくに問題なく動いています。
データの所有
自己満足の世界を全く脱していないとは思うのですが、自分の作り出したものは自分で管理したいというところが、Self hostしている理由です。
いや、だって、運営とか信用ならんやん?永続性、完全制を他人に握られるとかいややん?
サービス終了するので、データバックアップとってね!とか。。。
もちろん、この文章もセルフホストしているwtr.appの方にも公開し、この記事のurlをcanonical urlとして指定しておくつもりです。
というわけで、
Readmeに従ってアカウントをつくり
bsky.appからカスタムハンドラーを指定して
独自ドメインアカウントができました
残念ながら、PDSだけでは独自ドメインアカウントはまだ作れないので、bsky.appから変更する必要がありました。
途中、うまくうごかないエラーが発生した場合などは、デバッガーがあるのでこれをつかってちゃんと、証明書等がちゃんとできているのかを確認できます。