jirorian/README.md
randogoth 1f57b690dd Update README and declare missing dependencies
Add JIRORIAN_BASE_URL, JIRORIAN_PORT, JIRORIAN_APP_SECRETS to env var
table, fix dev command path (src/jirorian/), and explicitly declare
coincurve and cryptography in pyproject.toml.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 10:29:16 +03:00

1.4 KiB

jirorian

Nostr-native image upload API for Cloudflare R2.

Authenticates requests via NIP-98, issues presigned R2 PUT URLs, and manages access via a custom Nostr registration event (kind 5392). NIP-96 compliant.

Requirements

  • Cloudflare R2 bucket with public CDN URL
  • A Nostr keypair for the service identity
  • A Nostr relay

Configuration

All configuration is via environment variables:

Variable Description
JIRORIAN_BASE_URL Public base URL of this service (e.g. https://upload.example.com)
JIRORIAN_PORT Port to listen on (default: 8000)
JIRORIAN_DB SQLite DB path (default: jirorian.db)
JIRORIAN_APP_SECRETS JSON object mapping app names to their shared secrets, e.g. {"myapp": "secret123"}
R2_ENDPOINT https://<account_id>.r2.cloudflarestorage.com
R2_ACCESS_KEY_ID R2 access key
R2_SECRET_ACCESS_KEY R2 secret key
R2_BUCKET_NAME Target bucket
R2_CDN_URL Public CDN base URL
SERVICE_NOSTR_PRIVKEY Service Nostr private key (hex)
SERVICE_RELAY_URL Relay to subscribe to for registrations

Development

nix develop   # enter dev shell with uv + virtualenv
uv run fastapi dev src/jirorian/main.py

Deployment

Packaged as a Nix flake, consumed by the NixOS host configuration as a flake input.