Admin overview
/admin is gated behind sign-in. Once signed in, the page is split into
three sections:
- Branding — organization name, collection title, favicon, theme.
- Links — categories and links, import/export, refresh assets.
- Admins — manage admin accounts.
Every mutation in the UI calls the JSON API (see API reference)
which writes back to links.json atomically (temp file + rename). The
server then broadcasts the change to all other open browsers via SSE —
they update in real time without a refresh.
Read-only mode
If jabol detects that links.json isn’t writable at boot (read-only mount,
permission denied), the admin UI shows a yellow banner and disables every
save / upload / delete action. Auth still works so admins can sign in and
view hidden links — they just can’t edit.
The most common cause on hosted platforms is a UID mismatch between the
container’s process user and the mounted volume’s owner. The Docker image’s
entrypoint chowns /data and /config at startup and seeds a starter
links.json if one doesn’t exist, which covers the typical Coolify case.
See Coolify for the specifics.