Zenn Dev Snowcait Articles E2361b3827d517
Nostr で認証バッジを付ける
- URL: https://zenn.dev/snowcait/articles/e2361b3827d517
- 日付: 2026-06-26
- Tier: Tier 3
- 要旨: Nostr は分散型 SNS プロトコルで、公開鍵・秘密鍵ベースのアカウント管理を採用し、メール登録不要でアカウントを作成できる。NIP-05 仕様に基づき DNS を使った認証バッジを取得でき、自分のドメインに /.well-known/nostr.json を公開することで設定できる。自前サーバーがなくても GitHub Pages を使って無料でホストする方法があり、GitHub アカウントで運用すれば一定の本人確認としても機能する。Jekyll が隠しフォルダをホストしない点に注意が必要で、.nojekyll ファイルの作成が必須となる。CORS 設定も必要だが GitHub Pages はデフォルトでワイルドカードを許可している。
詳細
Nostr の基本:
- 公開鍵・秘密鍵でアカウント管理。メール登録不要
- リレーサーバー経由でデータを中継。複数リレーへ接続して冗長化
- 秘密鍵漏洩時の復旧手段なし。通信量が多い点に注意
GitHub Pages を使った NIP-05 認証バッジの設定手順:
- {USERNAME}.github.io という名前のリポジトリを作成
- /docs/.nojekyll を作成(Jekyll の隠しフォルダ除外を無効化)
- /docs/.well-known/nostr.json を作成: {“names”: {“ユーザー名”: “Hex公開鍵”}}
- Settings > Pages で /docs をホストソースに設定
- クライアントのプロフィール NIP-05 欄に {username}@{username}.github.io を設定
ユーザー名を _ にするとドメインだけの表示になる。 Hex 公開鍵は Iris の場合アカウント設定の Copy hex で取得可能。
動的サーバーを使う場合: クライアントは name クエリパラメーターを付けてアクセスするため、指定ユーザーのデータのみ返すよう実装すると効率的。Access-Control-Allow-Origin: * の CORS 設定が必要。