a4d94f522ab3029825615e277a5e3486b0e1c284
Some checks failed
CI / Backend (push) Failing after 11s
CI / UI (push) Successful in 51s
Release / Test backend (push) Successful in 54s
Release / Check ui (push) Successful in 1m9s
CI / Backend (pull_request) Successful in 45s
CI / UI (pull_request) Successful in 56s
Release / Docker / caddy (push) Successful in 1m22s
Release / Docker / backend (push) Failing after 1m46s
Release / Docker / ui (push) Successful in 2m32s
Release / Docker / runner (push) Successful in 3m35s
Release / Gitea Release (push) Has been skipped
- ui/src/error.html: custom SvelteKit last-resort fallback (replaces the bare '500 | Internal Error' shown when +error.svelte itself fails) — branded, auto-refreshes in 20s, book+lightning SVG illustration - ui/src/routes/+error.svelte: improved with context-aware SVG illustrations (question mark book for 404, lightning bolt for 5xx), larger status watermark, and a Retry button on non-404 errors - caddy/errors/500.html: new static error page matching the 502/503/504 design — served by Caddy when a gateway-level 500 occurs - Caddyfile: add handle_errors 500 block pointing at /srv/errors/500.html - caddy/Dockerfile: COPY errors/ into image so static pages are baked in
LibNovel
Self-hosted audiobook platform. Go backend + SvelteKit UI + MinIO/PocketBase/Meilisearch.
Requirements
- Docker + Docker Compose
- just
- Doppler CLI
Setup
doppler login
doppler setup # project=libnovel, config=prd
Usage
just up # start everything
just down # stop
just logs # tail all logs
just log backend # tail one service
just build # rebuild images
just restart # down + up
just secrets # view/edit secrets
Secrets
Managed via Doppler (project=libnovel, config=prd). No .env files.
To add or update a secret:
doppler secrets set MY_SECRET=value
Description