【No DNS Panel】Blueskyのハンドルに独自ドメインを設定する

# はじめに
Twitterの移行先として最近使っているBluesky。
今回はハンドル（ID）に独自ドメインを設定してみました。

主にDNSのホスト名に「_atproto」が設定できない人向け、Webサーバの立て方の共有です。
工程はシンプルですが1から調べるのは面倒なので、今後のために共有します。

# DNS Panel
一応、DNS Panelの設定方法もおさらいします。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2522187/33b4ce89-d0ae-1f2a-e4ef-9c212cf30c0a.png)
DNSに表示通りの値を設定するだけです。
「_atproto.～」をホスト名にします。
参考：[Blueskyのハンドル名を独自ドメインに変更する手順 – ヘルプセンター｜ムームードメイン](https://support.muumuu-domain.com/hc/ja/articles/26089906093459-Bluesky%E3%81%AE%E3%83%8F%E3%83%B3%E3%83%89%E3%83%AB%E5%90%8D%E3%82%92%E7%8B%AC%E8%87%AA%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%AB%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86)

レジストラによってはこれで完了なのですが……。
残念ながらそうはいかないレジストラもあります。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2522187/a24f1289-e229-c675-e12d-2dd740386c91.png)
※[RFC952](https://datatracker.ietf.org/doc/html/rfc952)や[RGC1123](https://datatracker.ietf.org/doc/html/rfc1123)によると、ホスト名にはアンダースコアが利用できない。なので受け付けていないDNSが存在するっぽい。

# No DNS Panel
DNSに指定された値が設定できない場合は、No DNS Panelのハンドル変更方法も提供されています。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2522187/2ead72eb-639a-d01d-8259-e032c7450c53.png)
指定の値を独自ドメインのウェブサーバにアップロードすることでドメインの所持チェックが出来ます。
今回は最小構成でウェブサーバを立ててカスタムドメインの設定を行い、認証します。

なお、今回ウェブページの公開にはGitHub Pagesを利用します。
公開レポジトリであれば無償でウェブサイトを立てることが出来ます。

## 1.レポジトリの作成
まずは公開レポジトリを作成します。タイトルは何でも良いです。

## 2.ファイルの配置
以下の通りファイルを配置します。
```
.
├── .well-known
│   └── atproto-did
└── _config.yml
```
`atproto-did`にはBluesky側から指定された値を格納します。
【個人ID】の部分はすべてのユーザに対して一意のIDですが、公開情報なのでウェブページの公開にあたって気を使う必要はないです。
```atproto-did
did:plc:【個人ID】
```
`_config.yml`には以下の1行を記載します。
```_config.yml
include: [".well-known"]
```

## 3.Github Pagesの設定
作成したソースでページを公開します。
Branchのところから、公開するページとページトップとして利用する階層を選択し、Saveを押下します。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2522187/39cb8f17-bfa0-04b7-65e5-8420a7af37ea.png)

初期設定のFQDNはDNS設定に使うのでメモしておいてください。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2522187/78edc551-c279-d9c5-5816-995cd3785f5d.png)

Custom domainに設定したい独自ドメインを記載し、Saveを押下します。
DNS check unsuccessfulとなりますが、まだDNSの設定を行っていないためなので気にしなくて良いです。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2522187/88d27d50-0254-15ad-7bf6-5fbdfa9a50cd.png)
ちなみにこの段階でソースコードにCNAMEが追加されています。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2522187/35f18a46-0830-302e-f14a-fb9dcaa08571.png)

## 4.独自ドメイン側のDNSの設定
レジストラに戻ります。
今回、カスタムドメインを利用するのでDNSの設定をします。

以下のように設定してください。
```
タイプ：CNAME
ホスト名：カスタムドメイン
値：GitHub Pages作成時のFQDN
```
![9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2522187/02adec04-6ea3-c39c-34d0-baffff244215.png)

なお、その他の場合の設定はGitHub Pagesからドキュメントが提示されているので、参考にしてください。
[GitHub Pages サイトのカスタムドメインを管理する - GitHub Docs](https://docs.github.com/ja/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site)

DNSの反映にはしばらく時間がかかります。
適宜digを叩くか[CMAN](https://www.cman.jp/network/support/nslookup.html)などで確認してみてください。

## 5.SSH証明書の適用
さて、DNSが反映されてGitHubを確認すると、Custom domainが「DNS check successful」になっています。
Blueskyはhttpsでページを叩くので、Enforce HTTPSにチェックを入れてSSH証明書の適用をしてください。
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2522187/57adcea9-355a-71dd-7a3f-74addd47fc7d.png)
最初にBlueskyから提示された「テキストファイルのアップロード先」URLに接続してみてください。値が取得できれば、無事ページが公開出来ています。

## 6.Bluesky側の設定
あとはBluesky側のハンドルを変更画面から使用するドメインを入力して「Verify Text File」を押下するだけで完了です。

# おしまい
ハンドルが変更されても定期的にチェックされるようなのでページは残しておく必要があります。
以上