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>
40 lines
1.4 KiB
Markdown
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.
|