Backend refuses to start with the default note permission settings
Correction. The first version of this issue said the published Docker quickstart was affected. It is not: that quickstart pins
2.0.0-alpha.3, which predates this code. This is a regression ondeveloponly. Description replaced on 2026-09-12.
On develop, the backend exits during configuration validation when neither HD_NOTE_PERMISSIONS_MAX_GUEST_LEVEL nor HD_NOTE_PERMISSIONS_DEFAULT_EVERYONE is set, because their two defaults contradict each other.
Measured on develop at f199a28, with ghcr.io/hedgedoc/hedgedoc/backend:develop.
To reproduce
Start the develop backend without setting either variable. It prints
There were some errors with your configuration:
- HD_NOTE: 'HD_NOTE_PERMISSIONS_MAX_GUEST_LEVEL' is set to 'full', but
'HD_NOTE_PERMISSIONS_DEFAULT_EVERYONE' is set to 'read'. This does not
allow the guest users to write in the notes they can create.and exits before listening.
Why it happens
Neither variable was set — those are the defaults:
maxGuestLeveldefaults toFULL—backend/src/config/note.config.ts:36permissions.default.everyonedefaults toREAD—:43- the refinement at
:87rejects exactly that pair
The refinement and the current variable names arrived in 8fe382131 (2026-01-07, "fix(noteConfig): correctly handle default everyone and max guest level interaction").
Not affected
2.0.0-alpha.3, and so the published quickstart that pins it. At that tag the settings are HD_GUEST_ACCESS (default write) and HD_PERMISSION_DEFAULT_EVERYONE (default read), validated differently; the alpha.3 backend starts without either set.
Expected
A backend built from develop starts on its own defaults, or the defaults are a combination the validator accepts.
Possible resolutions, in case it helps
- default
maxGuestLeveltoWRITE, so it agrees with the other two defaults; - or default
everyonetoWRITE; - or relax the refinement when neither variable was explicitly provided.
Source: hedgedoc/hedgedoc