Store relay settings overrides in PostgreSQL (SETTINGS_BACKEND=db)
Mantenedores costumam responder em até 1 dia
@Ferryx349 já está trabalhando nisso.
Desde 5/9/2026.
Avaliação
Esta issue ainda não foi avaliada.
Descrição
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.
- Linguagem predominante
- TypeScript
- Estrelas
- 829
- Forks
- 234
- Merge médio
- 4d 5h
- PRs com merge (30d)
- 22
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de cameri/nostream
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
cameri/nostream#811 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
feat(nip77): negentropy reconciliation core for the PostgreSQL backendTalvez já em andamento @Priyanshubhartistm assumiu há 2 dias. Abertaenhancement
cameri/nostream#801 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
feat(admin): bounded NIP-66 probe history and Network Health timelineTalvez já em andamento @Ferryx349 assumiu há 2 dias. AbertaAdmin Console enhancement
cameri/nostream#800 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
feat(nip85): Web-of-Trust spam mitigation engineTalvez livre de novo @Ferryx349 assumiu há 66 dias e não há nenhum pull request aberto. Abertaenhancement
cameri/nostream#720 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
Todas as issues de cameri/nostream
Issues semelhantes
-
effort:S priority:P2
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
dam-agents/dam#4562 ·
Mantenedores costumam responder em até 1 dia
-
bug p3 triaged
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
Mantenedores costumam responder em até 1 dia
-
bug javascript P2-medium python release:v3.1
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
adrirubio/claude-deck#546 ·
Mantenedores costumam responder em até 1 dia
-
area: desktop area: website priority: P2 type: feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
appandflow/stim#3411 · 1 comentário ·
Mantenedores costumam responder em até 1 dia