Skip to content

Add Uchiyomi - #6055

Open
AngeloSha wants to merge 1 commit into
getumbrel:masterfrom
AngeloSha:add-uchiyomi
Open

AngeloSha wants to merge 1 commit into
getumbrel:masterfrom
AngeloSha:add-uchiyomi

Conversation

@AngeloSha

Copy link
Copy Markdown

Uchiyomi 0.19.0

App: Uchiyomi — a self-hosted manga & manhwa reader that also fetches new chapters (discover, grab, monitor, serve, read in one app).
Upstream: https://github.com/AngeloSha/uchiyomi · https://uchiyomi.com · MPL-2.0
Image: ghcr.io/angelosha/uchiyomi:v0.19.0@sha256:3ef240fe2074e860546c0adfccd17b3f97116b96ec0badbe339af2fb946b0743 — built by the project's own release workflow on native amd64 and arm64 runners, with a SLSA provenance attestation (gh attestation verify oci://ghcr.io/angelosha/uchiyomi:v0.19.0 --owner AngeloSha).
Sidecar: ghcr.io/flaresolverr/flaresolverr:v3.5.0@sha256:139dfee1c6f89249c8d665d1333a42e8ec74ec0a86bc6bb1c8461e10d3a66a47 — the Cloudflare solver most manga sites need; only contacted when a source requires it; capped at 2 GB with 1 GB /dev/shm (Chrome crashes under Docker's default 64 MB).

Package notes

  • One container, database included. With DATABASE_URL unset the image runs its own Postgres 16 on a unix socket under /data → ${APP_DATA_DIR}/data/db. No database sidecar, no password to manage.
  • First run: the app opens to an account-creation page in the browser; there is no default password (defaultUsername/defaultPassword empty).
  • PUID/PGID 1000 rather than user: — the image's entrypoint starts as root, takes ownership of its app-owned paths, and drops to that uid (it also adds a passwd entry for the uid so Postgres will run as it). Verified against arbitrary uids in the project's CI.
  • permissions: [STORAGE_DOWNLOADS]: the user's existing library is read from Downloads/manga (the Files app or a share), the same pattern as audiobookshelf.
  • Proxy whitelist /opds/*, /img/*, /api/*: OPDS readers (Panels, Chunky, KOReader) authenticate with a per-user HTTP Basic token and load covers/pages from /img, and scripts use personal API tokens — none can carry the Umbrel cookie, and each of those paths is protected by the app's own auth (401 without it). /api/setup is blacklisted so first-run account creation stays behind Umbrel auth.
  • exports.sh derives the session secret with derive_entropy instead of the image's own generated file.
  • backupIgnore: data/cache/* — the image cache is regenerable.
  • stop_grace_period: 40s — the app finishes the chapter it is writing on stop, then Postgres checkpoints.
  • Not included: the optional Mihon extension engine (a separate 800 MB JVM), stated in the description.

Testing performed

  • npm run lint:apps -- uchiyomi --check-images: no issues. git diff --check clean. Both images carry linux/amd64 and linux/arm64.
  • Not tested through Umbrel — I have no Umbrel device and the only Linux host available runs a production Docker stack where a privileged, host-network umbrelOS container is not safe. Stating that plainly, per the testing skill.
  • Raw Docker Compose smoke of this package (amd64), with Umbrel's variables stubbed (APP_DATA_DIR, UMBREL_ROOT, DEVICE_DOMAIN_NAME, APP_PROXY_PORT, the exported secret), app_proxy removed and Umbrel's injected container names applied: healthy in 5 s; first-run setup and login OK; the app reports database: embedded; /api/docs/json served; the solver answered at http://uchiyomi_flaresolverr_1:8191; the library mount visible; a restart came back in 2 s with the account intact and initdb having run exactly once; clean stop in under a second with exit 0; zero server errors. This is Compose testing, not Umbrel verification.
  • The image's own CI drives the one-container layout end to end in a real browser (Puppeteer) on every commit, and the entrypoint is unit-tested with fake Postgres binaries (signal forwarding, watchdog, version guard, passwd handling).

Assets for the store (not committed, per the packaging guide)

Logo: https://raw.githubusercontent.com/AngeloSha/uchiyomi/main/web/public/icons/icon-512.png (512×512; a maskable variant is beside it).
Screenshots (2732×1720):
https://raw.githubusercontent.com/AngeloSha/uchiyomi/main/docs/shots/home.webp
https://raw.githubusercontent.com/AngeloSha/uchiyomi/main/docs/shots/library.webp
https://raw.githubusercontent.com/AngeloSha/uchiyomi/main/docs/shots/discover.webp
https://raw.githubusercontent.com/AngeloSha/uchiyomi/main/docs/shots/admin-extensions.webp

Happy to adjust anything to house style.

🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant