たつをの ChangeLog : 2023-02-04

Damus で Nostr の NIP-05 認証が chalow.net(このブログのドメイン)でできたのでメモ。
バッジが表示されるようになりました。
やったね!

(なんのこっちゃかわからない人は本記事はスルーしてください)

NIP-05 認証 自前サーバでできた

参考文献

以下、chalow.net で yto を NIP-05 認証した手順。

自分のサーバでやること


chalow.net のサーバ側でやること:

https://chalow.net/.well-known/nostr.json?name=yto
がきたら、これを返すようにする。
{
  "names": {
    "yto": "df705aac787153c22d74aa78690c7adba1c084a594a496e5e64adc89b42d0c84"
   }
}

右辺のコードは Publick Key を hex 形式にしたもの。
hex 形式への変換方法: damus key converter (mehori記事より)

そのドメインで1ユーザ (yto) しか使わないのならば、上記の中身をそのまま ".well-known/nostr.json" に保存する。

Damus でやること


Damus(アプリ)側でやること:

Profile → Edit の NIPS-05 VERIFICATION に
yto@chalow.net
を入力して Save。
メアド形式だけどメアドじゃないよ。

とりあえず今回はこの方法で、Damus で認証に成功しました。
バッジが表示されるようになりました。

アクセスコントロールまわり


Damus ではうまく行きましたが、他のアプリでは nostr.json を返すときのヘッダーで "Access-Control-Allow-Origin: *" を出さないとうまくいかないことがあるかも。

chalow.net で使っているさくらのレンタルサーバ(500円サーバ)では .htaccess に下記を足せば OK でした。
Header set Access-Control-Allow-Origin: "*"

確認方法 (nips/05.md より)
% curl -sI 'https://chalow.net/.well-known/nostr.json?name=yto' | grep -i '^Access-Control-'
access-control-allow-origin: *

複数ユーザ対応


2/7に追記。
複数ユーザに対応する方法。

nostr.json
{
  "names" : {
    "yto", "bfba4e19f9080450476d2275...",
    "foobar", "2f6d3590caf1ad5548b07644...",
    "hogehoge", "1af2b6ff36ba5b401b8d36972..."
  }
}

以下、oboslete:
最初、複数ユーザを列記できることに気づかなかったのでプログラムでの雑な解決を書いていた。

  • PHP
    .well-known/nostr.php を置いて動くようにする。
    <?php
    header("Content-Type: application/json; charset=utf-8");
    $db = [
      "yto" => "bfba4e19f9080450476d2275...",
      "foobar" => "2f6d3590caf1ad5548b07644...",
      "hogehoge" => "1af2b6ff36ba5b401b8d36972...",
    ];
    $name = $_GET['name'];
    $code = $db[$name];
    if ($code) echo "{\"names\":{\"$name\":\"$code\"}}";
    ?>
    
    .htaccess に追加。
    RewriteEngine on
    RewriteRule ^.well-known/nostr.json$ /.well-known/nostr.php
    
  • Perl
    .well-known/nostr.cgi を置いて動くようにする。
    #!/usr/bin/env perl
    use strict;
    use warnings;
    use CGI;
    my %db = (
      "yto" => "bfba4e19f9080450476d2275...",
      "foobar" => "2f6d3590caf1ad5548b07644...",
      "hogehoge" => "1af2b6ff36ba5b401b8d36972...",
    );
    my $q = new CGI;
    my $name = $q->param('name') || "";
    print "Content-type: applecation/json; charset=utf-8\n\n";
    print qq({"names":{"$name":"$db{$name}"}}\n) if $db{$name};
    
    .htaccess に追加。
    RewriteEngine on
    RewriteRule ^.well-known/nostr.json$ /.well-known/nostr.cgi
    


Twitter の雲行きがアレっぽいのでここにきてまた代替サービスが活発です。そのうちの一つ「Nostr」は暗号鍵ペアベースの分散型 SNS で、一部界隈でちょっと盛り上がっている雰囲気。で、その Nostr のクライアントアプリの一つ、Twitterライクな「damus」(iOS) が最近リリースされたことで、さらにもうちょっと盛り上がっている雰囲気です。

Damus Nostr

Nostr のアカウントは公開鍵と秘密鍵のペアです。Damus から特に何の手続きもなくすぐに発行されます。キーの桁数からしてそうそう枯渇しなさそうです。というか、そもそもNostr の公式ページに行って右上の人マークをクリックすればその時点でキーのペアが勝手に発行されますし。

公開鍵 (Publick Key) が自分のユニークIDになります。マイナンバーみたいなものですね。なので、表向きのID(私の場合は yto)は他の人とかぶってても気にする必要なし。早いもん勝ちということがないのは、後から始める人にとっては良いですね。

秘密鍵 (Private Key) はなくすと絶対アカウント復旧できないので、自分できっちり管理する必要あり。秘密鍵があれば公開鍵は生成できるので、とにかく秘密鍵だけは死守すべし。

データは、中央集権的なサーバ群が一元的に管理しているわけではなく、かといって、クライアント同士がお互いにデータ交換しているわけでもなく、リレーと呼ばれる地域リーダー的なサーバ達がハンドリングしているようです。どこにリレーがあるかは nostr.watch で見ることができます。日本にも一つ確認できます。今後増えていくのかな。

Damus App

damus は Nostr を利用するためのクライアントアプリの一つ。Twitter のような見た目で親しみやすいです。これを使ってタイムラインを眺めていると、初期のTwitterっぽい感じがして懐かしみを感じます。

写真の投稿がダイレクトにできなかったり、一度投稿すると削除できなかったり(訂正: 仕様では削除可能で一部クライアントが対応)など使い勝手が異なります。特に削除できないってのはちょっと緊張しそうだけど、初期のTwitterみたいな感じで使えば大丈夫そう。「ランチなう」とか言っておけば安全。あと、アプリとしての完成度がまだまだで、設定した項目がいつのまにか消えちゃったりすることもあり。その辺は割り切って使いましょう。

私の Publick Key です。このキーで Damus で検索すると私のアカウントが出てきます。
npub1h7ayux0epqz9q3mdyf6j0k2cwjcez9uckalv3has57ej39762m2slcak8z
(追記: 訳あってアカウント作り直しました (2/5 13時))

参考

(随時追記していきます)

なんとなく鼻水が出たりして花粉症が到来な感じ。
とらちゃん(小6息子)も同じく。
ということで、毎年恒例、耳鼻咽喉科へ行って花粉症の薬をもらってきましたよ。

花粉症の薬 2023

とらちゃんは例年通りのアレロックとオノン。

私は今年はなんとなく全部ジェネリックにしてみました。
ジェネリックオールスターズです(適当)。
  • エバステル → エバスチン(タカタ)
  • エンペラシン (サワイ) (去年と同じ)
  • ナゾネックス → モメタゾン (杏林)
  • パタノール → オロパタジン (サワイ)

語感的に注目なのは点鼻薬。
謎の「ナゾネックス」から、ジェネリック化に際していろいろと揉めたと思われる「モメタゾン」に。
揉めた上に損までしてる。
やってられないですよね。

過去記事

この記事に言及しているこのブログ内の記事

たつをの ChangeLog
Powered by chalow