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>
1.4 KiB
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.