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

40 lines
1.4 KiB
Markdown

# jirorian
Nostr-native image upload API for Cloudflare R2.
Authenticates requests via [NIP-98](https://github.com/nostr-protocol/nips/blob/master/98.md), issues presigned R2 PUT URLs, and manages access via a custom Nostr registration event (kind `5392`). [NIP-96](https://github.com/nostr-protocol/nips/blob/master/96.md) 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
```bash
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.