[わ]

セルフホスト Bluesky PDS でドメイン名ハンドルにしてみた

時代は招待制をやめて部分的にではありますが、セルフホストできるようになったBlueskyですかね。

というわけで、表題の通りPDSをつかってドメイン名ハンドルを設定してみました。

Bskyアカウントです。フォローしてね。

watura (@wtr.app) お一人さまPDSで運用中 bsky.app


PDSとは

GitHub - bluesky-social/pds: Bluesky PDS (Personal Data Server) container image, compose file, and documentation Bluesky PDS (Personal Data Server) container image, compose f github.com

Early Access Federation for Self-Hosters | Bluesky For a high-level introduction to data federation, as well as www.docs.bsky.app

Bluesky本体に接続(クローリングとかされる)サーバーで、ユーザーの諸々のデータが保存されます。
なので、MastodonのようにオレオレBlueskyが建てられるよ!というよりは、Blueskyのストレージの一つになれるよ。という感じかなと思います。
まあ、わかりにくいですね。

```mermaid
graph TD;
    Bluesky-->PDS_A;
    Bluesky-->PDS_B;
    Bluesky-->PDS_C;
    Bluesky-->PDS_D;
```

将来的にはBluesky自体も建てられるようになるとは思いますが、あんまりそこには興味はないかなぁという感じです。

なんで立てるの?

なんで、わざわざPDSたてたの?

技術的な興味

まあ、そこにセルフホストでできるんだからやってみないとね!というところですね。

DNSはCloudFlareを使って設定しています。CloudFlareでは、1段階 *.wtr.app のSSL証明書は無料で発行してくれます。
しかし、*.bsky.wtr.app みたいな2段階以上なサブドメインには発行してくれません。そのため、それらのためにLet’s Encryptを使って生成するようにTraefikを設定しました。
Traefikを使った理由は既存の自宅サーバー環境がTraefikだからです。
こんな感じ

certificatesResolvers:
  letsEncrypt:
    acme:
      email: [email protected]
      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として指定しておくつもりです。

というわけで、

残念ながら、PDSだけでは独自ドメインアカウントはまだ作れないので、bsky.appから変更する必要がありました。

途中、うまくうごかないエラーが発生した場合などは、デバッガーがあるのでこれをつかってちゃんと、証明書等がちゃんとできているのかを確認できます。

Bluesky Debug bsky-debug.app

#note