38 lines
1.2 KiB
Markdown
38 lines
1.2 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 |
|
||
|
|
|---|---|
|
||
|
|
| `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 |
|
||
|
|
| `JIRORIAN_DB` | SQLite DB path (default: `jirorian.db`) |
|
||
|
|
|
||
|
|
## Development
|
||
|
|
|
||
|
|
```bash
|
||
|
|
nix develop # enter dev shell with uv + virtualenv
|
||
|
|
uv run fastapi dev jirorian/main.py
|
||
|
|
```
|
||
|
|
|
||
|
|
## Deployment
|
||
|
|
|
||
|
|
Packaged as a Nix flake, consumed by the NixOS host configuration as a flake input.
|