Store relay settings overrides in PostgreSQL (SETTINGS_BACKEND=db)
Los mantenedores suelen responder en 1 día
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Problem
Operator settings overrides currently live in settings.yaml under NOSTR_CONFIG_DIR with legacy settings.json fallback. That creates operational friction:
- When nostream releases add new default settings keys, operators editing YAML may not know new values exist or need to be added.
- Deploy/bootstrap flows copy config files that can drift from what the application expects after upgrades.
- Operators end up maintaining files that are easy to overwrite or fall out of sync with releases.
We need durable storage for operator overrides that survives upgrades without requiring manual YAML edits for every new setting.
Proposal
Store only operator overrides in PostgreSQL — not the full settings blob. Shipped defaults remain in resources/default-settings.yaml and are merged at runtime.
- Add a
settings_overridestable (pathTEXT PK,valueJSONB,updated_atTIMESTAMPTZ). - Introduce
SETTINGS_BACKEND=file|db(default:filefor backwards compatibility). - When
SETTINGS_BACKEND=db:- Bootstrap loads overrides from PostgreSQL on startup.
- If the table is empty, import existing
settings.yaml/ legacysettings.jsononce. - Admin settings PATCH and restore persist overrides to the DB.
- Runtime settings = shipped defaults merged with DB overrides.
Out of scope (follow-ups)
- DB-mode backup snapshots on each PATCH file mode still creates timestamped YAML backups.
- Hot-reload of DB overrides across all cluster workers after admin changes.
- Refactoring compose, bootstrap copied files so operators never edit release-owned files.
- Full settings schema migration, versioning in the DB.
- Lenguaje dominante
- TypeScript
- Estrellas
- 829
- Forks
- 234
- Merge medio
- 2 d 10 h
- PR fusionados (30 d)
- 24
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de cameri/nostream
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
feat(admin): bounded NIP-66 probe history and Network Health timelinePosiblemente ocupada @Ferryx349 la tomó hace 4 días. AbiertoAdmin Console enhancement
cameri/nostream#800 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
feat(nip85): Web-of-Trust spam mitigation engineQuizá libre de nuevo @Ferryx349 la tomó hace 67 días y no hay ningún pull request abierto. Abiertoenhancement
cameri/nostream#720 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
feat(nip96): native HTTP media storage pipelineQuizá libre de nuevo @Ferryx349 la tomó hace 67 días y no hay ningún pull request abierto. Abiertoenhancement
cameri/nostream#719 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
feat(nip67): support EOSE completeness hintsQuizá libre de nuevo @Ferryx349 la tomó hace 67 días y no hay ningún pull request abierto. Abiertoenhancement
cameri/nostream#718 · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de cameri/nostream
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
[Bug]: [A11y] Missing accessible name on icon-only standalone links (WCAG 2.1 SC 2.4.4, 4.1.2)Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
jaegertracing/jaeger-ui#4596 ·
Los mantenedores suelen responder en 1 día
-
area:tui enhancement platform:macos
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
anthropics/claude-code#101490 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
netlify/netlify-mcp#75 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día