upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/docs/reference
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2026-01-14 13:40:33 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2026-01-14 13:43:40 +0000
commit5897e4bccd41f1a9ebb01a11280cea929c93d2c0 (patch)
treecbe4d2447312b7bc7653bef874b6fb23d60a0ede /docs/reference
parent4c8f1813fada9ce2bfd371095b0721bff68173e3 (diff)
parent2821578202d1313c23c30a5dbae39548822e3c55 (diff)
Add defensive relay features with rate limiting and connection limits
Implement defensive measures to protect against DoS attacks: - Add explicit rate limits (500 subscriptions, 60 events/min per connection) - Add total connection limit (default: 500, configurable via NGIT_MAX_CONNECTIONS) - Update configuration across all 4 locations (src, nix, docs, .env.example) Per-IP rate limiting deferred until abuse is detected in production or implemented in rust-nostr relay-builder to benefit the entire Nostr ecosystem. Documentation added explaining the defensive features and rationale. Detailed analysis of other relay implementations preserved in commit history.
Diffstat (limited to 'docs/reference')
-rw-r--r--docs/reference/configuration.md40
1 files changed, 40 insertions, 0 deletions
diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md
index 8b49297..c3001d3 100644
--- a/docs/reference/configuration.md
+++ b/docs/reference/configuration.md
@@ -925,6 +925,46 @@ Event blacklist does **not** affect NIP-11 metadata:
925 925
926--- 926---
927 927
928### Rate Limiting & DoS Protection
929
930#### `NGIT_MAX_CONNECTIONS`
931
932**Description:** Maximum total connections to the relay. Prevents connection exhaustion DoS attacks.
933**Type:** Integer
934**Default:** `500`
935**Required:** No
936
937**Examples:**
938
939```bash
940# Default: 500 connections
941NGIT_MAX_CONNECTIONS=500
942
943# Higher limit for large public relay
944NGIT_MAX_CONNECTIONS=1000
945
946# Lower limit for private relay
947NGIT_MAX_CONNECTIONS=100
948```
949
950**Notes:**
951
952- Limits total concurrent WebSocket connections to the relay
953- Prevents connection exhaustion attacks
954- Works in conjunction with per-connection limits (500 subscriptions, 60 events/min)
955- When limit is reached, new connections are rejected
956- Existing connections continue to work normally
957
958**Related Limits:**
959
960Per-connection limits (built-in to relay-builder, not configurable):
961- Max subscriptions per connection: 500
962- Max events per minute per connection: 60
963- Max subscription ID length: 250 characters
964- Max results per filter: 500
965
966---
967
928### Logging Configuration 968### Logging Configuration
929 969
930#### `RUST_LOG` 970#### `RUST_LOG`