zapstoreについてのメモ


PinosuZapstoreにuploadしたいので調べたメモ。

開発者向けのドキュメントは以下。

zspというコマンドでCLIから公開できるらしい。

zapstore/zsp: Publish apps to relays

初回はwizard modeが推奨されているみたい。

zsp publish --wizard                  Interactive wizard (recommended for first-time setup)

鍵とか設定しないでこれをたたいてみる。

zsp publish --wizard
 _____                _
/ _  / __ _ _ __  ___| |_ ___  _ __ ___
\// / / _` | '_ \/ __| __/ _ \| '__/ _ \
 / //\ (_| | |_) \__ \ || (_) | | |  __/
/____/\__,_| .__/|___/\__\___/|_|  \___|
           |_|
    ═══════════════════════════════
           P U B L I S H E R

v0.4.10

Welcome to the Wizard of Publishing 🧙
Let's get your app published in no time.

Press Enter to skip if this is a closed-source app.
Repository URL (optional): https://github.com/Omochice/Pinosu

ℹ Detected: github
⋯ Checking for releases...
✓ Found APK: app-release.apk

✓ Found app: io.github.omochice.pinosu
✓ Not found on F-Droid or Play Store

Metadata available in the following sources
Optionally pull app metadata (description, screenshots) from these.
↑/↓ navigate • space toggle • a all • enter confirm

› ● GitHub

Fetching metadata from GitHub.
Would you like to provide a name, description, and more now? [y/N]: n

Signing setup
↑/↓ navigate • enter select • q quit

› Private key (nsec)
  Public key (npub) - outputs unsigned events
  Bunker connection (bunker://)
  Browser extension (NIP-07)
Enter your nsec:
Error: invalid nsec format

設定だけ作りたいのだが。

CIからリリースする場合、どこで鍵を管理するかの問題がある。

  • nsec
    • CI変数などで秘密鍵を管理しないといけないのでうれしくない
    • jksとかも管理しないといけないというのはあるが
  • npub
    • そもそも署名してないので…
  • bunker
    • bunkerをどこで動かすかという問題がある
  • nip07
    • CIからだとそもそもブラウザ開かない

CIからやるならnsecかbunkerしか実質的に選択肢がなさそう。

ただ、nsecは推奨されていなさそう。

For CI/CD, use a bunker URL stored as a secret. Avoid putting nsec directly in environment variables on shared systems — it can be exposed via /proc/*/environ or shell history.

https://zapstore.dev/docs/publish

bunkerにするとして、どこで起動するか。

Amberでいけるらしい。

よくみたらdry-run的なものもあった。

# Offline mode - sign events, output to stdout, defer upload/publish
  zsp publish zapstore.yaml --offline > events.json

そもそもbunkerちゃんとわかってないのでNIPを読む。

結局はリモート署名である。

ぬるぬるはzapstoreにあるのでみてみる。

ぬるぬる — Zapstore

null—nostr/zapstore.yaml at main · tami1A84/null—nostr

pubkeyのfieldはbunkerからもらったものの検証用でなくてもよいらしい。