LoginSignup
0
0

シェルスクリプトと SQLite3 で Nostr のリレーサーバ(っぽいの) (4) おまけ。実践

Posted at

wss 化する

Caddy2 サーバで簡単に出来る。ここ( https://github.com/caddyserver/caddy )からバイナリ( Release をクリックして自分のマシンに応じたもの)をDLして解凍。Caddyfile というファイルを作って

自分のドメイン {
	handle_path / {
			reverse_proxy localhost:wbsocketdで指定するポート
		}
(その他アイコンなどのパスを指定したければそうする)
}

で ssl 化されるので、wss 化される。

sudo ./caddy run
websocketd --port=ポート bash out.sh

として
wss://自分のドメイン
でアクセスできるようになる。

実際にアカウントを作ってみるには

NostrTool ( https://nostrtool.com/ ) で Generate new key をクリックし、秘密鍵/公開鍵を nsec/npub hex ともにコピーペーストなどで保存する。
ブラウザに nos2x 拡張を入れて、option を選び、 Private key に秘密鍵を入力しておく。

自分のデータを 自分のサーバに登録する。

NostrCli が便利なので勧める。

git clone https://github.com/FreeFromJP/NostrCli
cd NostrCli/
npm install
sudo npm link

で入る。ただしまだ設定が何もないので

touch .env

でファイルを作り、それに

DEFAULT_RELAYS=wss://自分のサーバ
PRIVATE_KEY=自分の秘密鍵

を記し、

nostr

とコマンドを入れると

❯ key 
  decode 
  encode 
  search_by_ids 
  sample 
  DMLike 
  publish 
(Move up and down to reveal more choices)

とかそんな感じで表示されるので、publishを選び

? Enter event kind:

に 0 を入れ、content に
{"picture":"Caddyfileにアイコンのパスを入れてたらそのURL","name":"適当な名前","display_name":"適当な名前","about":"適当な自己紹介"}
を入れエンターを打ち続ければ、自分のサーバの test.db と jsonsディレクトリに自分のアカウントの情報データが入るはずである。これでアカウントが出来る。
次に上と同様に publish を選び、kind で 3 、content は空、
? Would you like to add tags? (y/N)
で y を打ち
? Enter a tag:

p,自分の公開鍵
を入れてエンターで自分をフォローするデータが自分のサーバの test.db と jsonsディレクトリに入るはずである。他にも(例えば既に作っている自分の別のアカウントなども)フォローしておきたいならば、それも続けて同様に加えればよい。
(*ただし
? Enter a tag:
p,自分の公開鍵
? Would you like to add another tag? (y/N)
y
p,他にフォローしたいアカウントの公開鍵
……
と、一続きで入れなければ複数の kind 3 のデータ・ファイルが入ってしまう。大体のクライアントでは最新の kind 3 を見てフォローを判断するようだ
)

おそらくこれで Rabbit ( https://rabbit.syusui.net/ ) などにブラウザでアクセスし、リレーに自分のリレーを加えれば、プロフィールに自分がいるはずである。あとはブラウザから投稿すれば自分のリレーサーバの test.db と jsons ディレクトリにデータとファイルが適切に入り、多少のタイムラグはあるが、ブラウザに反映されると思う。

難点

何故か websocketd に ERROR が表示される。ただあまり実践には問題ない様ではある。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0