📚

るみるみでNostrをはじめる

2025/01/19に公開

るみるみってなに Nostrってなに

るみるみ:NostrのWebクライアント
Nostr:なんか分散してるSNSみたいなことできるやつ(SNSじゃないこともできる)

SNSじゃないことってなんやねん

ついでにるみるみでも投げ銭(zap)できる

などなど

るみるみをひらく

https://lumilumi.app/

初めての方は /settings に飛ばされて
Welcome to Nostr画面が出る。

設定とかそんなんより先にどんなんなのか見せて

などなど

アカウント作成

るみるみから(Nostr Login経由) でもアカウントを作成することはできるけど
色んなところで使うことを考えると、多分ほかで作っておいた方が良い気がするのでそれぞれ機体(?)に応じておすすめをご紹介

  • パソコン
    を使っている人は nos2x(Chromeブラウザ拡張機能) でアカウントを作るのが良い (ブラウザ単位で使い回せる)

  • Android
    を使用している人は Amber(アプリ) でアカウントを作るのが良い(QRコードで連携とかあるからスマホだけでなくパソコンでも使える)

  • iPhone,safari
    の人は nostore 、もしくは OrionというChrome,Firefox拡張機能対応ブラウザでnos2x-fox(Firefoxブラウザ拡張機能) を使用する。

なんでそんな感じなの

Nostrは秘密鍵で、データに署名することで誰が投稿したものなのかを証明している。

その秘密鍵を作成する工程が、いわゆるアカウント作成

アカウントを作る と
署名する と
投稿する が独立している

署名アプリにアカウント作成機能もある
クライアントにアカウント作成機能もあったりする
みたいな感じ

クライアントに直接秘密鍵を入れることができるタイプには署名機能もある
みたいな

だから別に他のとこでアカウント作って、nos2xもAmberもいれて同じ秘密鍵を設定したら全部同じアカウントとして使える。

なんで別になってるの

秘密鍵をアプリが所有すると、悪質なアプリが勝手に署名して、投稿を捏造することができる。DMを覗いたりすることもできる。

なので署名アプリは、署名だけします!許可のあるものだけにしか署名しません!
(署名のタイミングで署名アプリから通知来る)

クライアントは、署名が必要なデータは署名アプリに渡して許可を得ています!秘密鍵持ってないのでわたしは署名できません!捏造できません!

怪しいアプリに秘密鍵を渡さないようにしましょう。
脆弱アプリに秘密鍵を渡さないようにしましょう。

大体OSSなのでコードが見れます。

署名アプリ
nos2x
Amber
nostore

クライアント
るみるみ
noStrudel
ほかいろいろ

処理の流れ

クライアントが、これに署名してくれーって署名前のデータを渡して、署名用のアプリが署名したデータをクライアントに渡すようにすることで、覚えのない署名がされないようにする。

例えば:署名前
クライアントから、これに署名してくれって署名アプリに渡す

{
  "content": ":hatiji:",
  "created_at": 1736938998,
  "id": "ae71b880d03642367cb3609f8fe9caad9778d448d67b4d9e2c65ee6d3eb16ff8",
  "kind": 1,
  "pubkey": "84b0c46ab699ac35eb2ca286470b85e081db2087cdef63932236c397417782f5",
 
  "tags": [
    [
      "emoji",
      "hatiji",
      "https://share.yabu.me/84b0c46ab699ac35eb2ca286470b85e081db2087cdef63932236c397417782f5/763e19319c2aca5a640ad819e255f3bca49d6b572232e7703e53cdc3b051eaae.webp"
    ],
    [
      "client",
      "lumilumi",
      "31990:84b0c46ab699ac35eb2ca286470b85e081db2087cdef63932236c397417782f5:1727506446612",
      "wss://relay.nostr.band"
    ]
  ]
}

署名後

{
  "content": ":hatiji:",
  "created_at": 1736938998,
  "id": "ae71b880d03642367cb3609f8fe9caad9778d448d67b4d9e2c65ee6d3eb16ff8",
  "kind": 1,
  "pubkey": "84b0c46ab699ac35eb2ca286470b85e081db2087cdef63932236c397417782f5",
  "sig": "9d896fb33e83847cad148b2b6265a96ac5fadcf27772912c525b66f826f41c43ad41498ea33196dcabdc0f3764a59f7b06c63c04200b557fceda3a7cbef08fe2",
  "tags": [
    [
      "emoji",
      "hatiji",
      "https://share.yabu.me/84b0c46ab699ac35eb2ca286470b85e081db2087cdef63932236c397417782f5/763e19319c2aca5a640ad819e255f3bca49d6b572232e7703e53cdc3b051eaae.webp"
    ],
    [
      "client",
      "lumilumi",
      "31990:84b0c46ab699ac35eb2ca286470b85e081db2087cdef63932236c397417782f5:1727506446612",
      "wss://relay.nostr.band"
    ]
  ]
}

"sig": "9d896fb33e83847cad148b2b6265a96ac5fadcf27772912c525b66f826f41c43ad41498ea33196dcabdc0f3764a59f7b06c63c04200b557fceda3a7cbef08fe2",
ていうのが追加されている。
で、このデータをリレーに流す~~~リレーって何?

でクライアントがリレーからこのデータを取得してこねくり回して表示する。
こんなかんじで

リレーでもクライアントでも署名の検証のプロセスがあって不正なイベントは弾かれる様になっている。たぶん。

パソコン

chromeウェブストアから nos2x をいれる(firefoxならnos2x-fox)
generateをおして秘密鍵を生成

SAVEをクリック

そんなかんじで、nos2xにアカウント情報がある状態で
https://lumilumi.app/settings を開いて Log in をクリックすると、With extension のボタンが出てくるので、それをクリックすると

nos2xから、lumilumi.appとかいうやつがおまえの公開鍵読ませてくれっていってるけどええんか?のポップアップが出てくる。

今後、lumilumi.appから公開鍵を読まれることを永遠に(オプション画面から解除できる)許可するか、今回はいいよってするか、だめってするか永遠にだめってするかを選ぶ。

許可したら上のnpubのところに自分の公開鍵が入力されてる?

されてなかったら、get pubkeyのボタンを押したらここに公開鍵が入力される。さっきの許可画面で今回だけ許可を押した人はもっかい許可画面が出る。

そしたらとりあえず、モバイル通信環境じゃなかったら通信量に影響を与える設定画像を読み込み表示する の設定にチェックを入れて、他の設定項目はおいておいてSAVEをクリック

Android

(拡張機能が入れれるブラウザを使ってる場合はnos2xいれても良いかも。Firefoxとか。でもアンドロイドアプリも使いたいならAmber入れておいたほうがいいかも)

Playストアにはない!
https://github.com/greenart7c3/Amber
のDownload and Install にあるように
Zap Store か Obtainium か Github か F-Droid でいれる
とりあえずどの環境も持ってない人は Github から直入れしといたらいいかも
(直入れの場合バージョンアップ情報とかがこないからたまに新しいのあるかなーってGithub見て手動でアップデートする必要がある。)

一番上の amber-fdroid-universal-バージョン.apk
ってなってるやつをダウンロードする。

許可を求められたりしたら確認して許可する。

  • インストール完了したらAmberを起動する

  • Generate a new key をクリック

  • 書いてあるとおりにニックネームを入れたりパスワードを入れたりする


  • Congratulations, なんとかかんとかready!が出てきたら準備完了(嘘)

  • 下図のように初期設定ではリレーアドレスがひとつ(wss://relay.nsec.app)しか設定されていません。そのリレーが不安定だった場合、署名がうまくできず、ずっとローディング🌀状態になってしまいます。なのでとりあえず適当に

    • wss://yabu.me
    • wss://relay.nostr.wirednet.jp

    を追加しておきます。

で、この状態で https://lumilumi.app/settings を開いて Log in をクリックする

どれにしてもあとからどうとでもなるので

したら上のnpubのところに自分の公開鍵が入力されてる?

されてなかったら、get pubkeyのボタンを押したらここに公開鍵が入力される。さっきの許可画面で今回だけ許可を押した人はもっかい許可画面が出る。

そしたらとりあえず、モバイル通信環境じゃなかったら通信料に影響を与える設定画像を読み込み表示する の設定にチェックを入れて、他の設定項目はおいておいてSAVEをクリック

iPhone

わかんない!

Relayの設定をする

どの環境でもログインできた?

SETTINGS ページの上部にある リレー編集↗ をクリック
(設定変更してSAVE押してなかったら警告が出るのでSAVEしてから押す)

とりあえず

  • wss://yabu.me
  • wss://nos.lol
  • wss://relay.nostr.wirednet.jp

の3つを入力してSAVEをクリック(詳しくなったら各自調整して)
参考:リレーって何?

そしたら各署名アプリから、Relay list (kind:10002) に署名していい?って通知が来たりこなかったりする(前もって常に許可の設定にしてたら来ない)からOKってする。

フォローリストを作成する

HOME🏚️に行くと、フォローリストを新規作成 ボタンがあるはずなので、クリックして、Continueを押す

そしたら各署名アプリから、Follow list (kind:3) に署名していい?って通知が来たりこなかったりする(前もって常に許可の設定にしてたら来ない)からOKってする。

そしたら試しに✏マークから投稿してみてTLに自分の投稿が表示されるのが確認できる。

プロフィールを編集する

自分のアイコンをタップして 👤⚙ ボタンを押して 👤プロフィールの編集 をクリック

  • ユーザー名(なんでもいい)
  • 表示名(なんでもいい)
  • アイコン画像
  • 自己紹介

など適当に設定する
previewの部分にどういうふうに見えるかが出てくるのでそこで確認

入力終わったら一番下のSAVEをクリックして🏚️HOMEに戻るとさっきの投稿にプロフ情報が出ているのが確認できる。

誰をフォローしたらいいの

https://lumilumi.app/global?relay=wss://relay-jp.nostr.wirednet.jp&relay=wss://yabu.me を開くと日本人いっぱい出てくるから適当にアイコンの部分クリックしてフォローしたらいいかも。

あとは、hotpostrankが数時間内でホットな投稿をランキング表示しているのでその中から面白そうな人をフォローしたりしたらいいかも。

ちなみに私のアカウントは これ で、Followタブからフォローしてる人が見れるのでそこから適当にフォロー増やしていってもいいかも

あとユーザーページのRelayタブではその人が設定してるRelay情報が見れます。リレー編集↗で謎に3つ設定したやつ。
色んな人のRelay情報見てなんとなく適当に弄っていったらいいかも

おまけ

共有機能

Lumilumiはインストール可能なWebアプリになっている(PWA)。

windowsならedgeで、Androidならchromeでインストールしておいたら、画像の共有メニュー欄にLumilumiが表示されてそこから共有できる。

3D model veiw

3Dをアップする機能はないけど3Dのリンクが貼ってあったらウニウニできる機能をつけた!
https://lumilumi.app/nevent1qvzqqqqqqypzq4jsz7zew5j7jr4pdfxh483nwq9vyw9ph6wm706sjwrzj2we58nqqqsgn5eef652pzj07a2c0adfcazr23exkuhl09nldms9qv9cr4xvr3qrwa05a

省略した設定項目について詳しく

設定ページの上から順に

Relay

  • Nostr共有のリレー設定: 普段遣い用のリレー設定
  • 固有のリレー設定: モバイル通信環境でノスリたくて最低限のリレー設定でやっていきたいとき用(リレーの接続数が増えるほど通信料が増える)

Post

  • デフォルトリアクション: ♡ を押したときに送信されるリアクションを設定できる。
  • 投稿にClientタグを付ける: lumilumi から投稿してますよ!って他の人からもわかる様になる。(表示するようにしてるクライアントでだけだけど)

通信量に影響を与える設定

  • 画像読み込み: これをオフにするだけで通信量がだいぶ変わる

  • みんなのリアクション: 他の人がふぁぼってる情報とかも見れる

  • パブリックチャットをHomeに: メニューの CHANNELGlobalチャンネルフィードへ を押すとみんながいろんなチャンネルに投稿している様子が確認できますね…?
    このような投稿のうち、フォローしてる人のチャンネル投稿をHomeに流すボタン(チャンネル開かないと気付かないので)(チャンネル用クライアントとかもあるけど)

  • ユーザーステータスを表示する: 名前と投稿内容の間になんか書いてあったりするやつ

  • 通知Toastを表示する

  • kind16(kind1以外のリポスト)を表示する: SNSじゃないことってなんやねんの方にリポスト機能があったらきっとkind16というやつのほうで流れてくる

Display

  • プレビュー:表示されたら邪魔なこともあるかなと思ってオフにできるようになってる
  • menu左:押せばわかる
  • アイコンの下にリレー情報:どのリレーから受信したかがわかる(各ノートの...メニューのJsonで見るを押したときのSeen Onに出てる情報)

データの同期

  • Mute
  • MuteByKind
  • Emoji

それぞれNostr共通の設定で、多分他のクライアントは同期ポチィしなくても勝手に毎回起動したときに新しいの取りに行ったりしてる。
Mute と MuteByKind は非公開データ(暗号化したデータ)を使っていて、他の人から見られない代わりに、読み込むときは署名アプリに、復号してや!って言いにいかないといけない。

ので、他のクライアントとかでMuteとかの情報を更新したら手動で同期ボタンを押すか、最新にしてなくても、Lumilumiでミュート操作をするときに最新データを取得して、変更するようにしている。
ちなみにミュートとかはユーザーのメニュー画面にある

絵文字は、カスタム絵文字用のNostrApp(emojitoなど)から追加したり、https://lumilumi.app/search?k=30030 で検索から追加したりできる。
また、Lumilumiではユーザーページでその人の登録してる絵文字リストが見れるようになっているので、色んな人の絵文字リストを覗いてみたり、日本ユーザー作のカスタム絵文字がまとまっているロクヨウ2さんのユーザーページから追加したりするといいかも。

Discussion