Add Quire Ink by joiha-steven · Pull Request #6025 · getumbrel/umbrel-apps · GitHub
Skip to content

Add Quire Ink - #6025

Open
joiha-steven wants to merge 2 commits into
getumbrel:masterfrom
joiha-steven:quireink-2.2.1
Open

Add Quire Ink#6025
joiha-steven wants to merge 2 commits into
getumbrel:masterfrom
joiha-steven:quireink-2.2.1

Conversation

@joiha-steven

Copy link
Copy Markdown

Type

New app

App

App ID: quireink
Upstream project: https://github.com/joiha-steven/quireink
Version: 2.2.1

Summary

Adds Quire Ink, a self-hosted blog platform in one container: Markdown editor with tables,
footnotes and mathematics, scheduled publishing, newsletters over the owner's own SMTP,
comments with a built-in spam gate, cookie-free analytics, full-text search, book-style
reading mode, importers for WordPress/Ghost/Substack/Medium, an MCP server so AI agents can
write and steward the blog, and eleven interface languages. One process, two SQLite files,
one uploads directory — no database sidecar. Readers are served 3.8–8.7 KB of JavaScript
and no third-party request anywhere.

I am the upstream developer.

Verification

Umbrel testing performed: composed the package outside umbrelOS (app_proxy stubbed,
APP_DATA_DIR and DEVICE_DOMAIN_NAME provided): the pinned image pulls by digest, the
app answers /api/health ok, data persists to ${APP_DATA_DIR}/data/... bind mounts
across restart, the process drops to UID 1000 (the image's entrypoint adopts PUID/PGID
1000:1000 and chowns the bind mounts only when needed), and the first-run claim link is
printed with the Umbrel-facing URL http://umbrel.local:3477/....

Environment tested:

  • Umbrel device
  • Local umbrelOS test environment
  • Not runtime tested (on umbrelOS itself — see above for what was tested outside it)

Architecture tested:

  • amd64
  • arm64

Known lint warnings or caveats: none known.

Notes

  • PROXY_AUTH_ADD: "false": a blog is intentionally public, and the admin has its own
    password + TOTP login.
  • No default credentials: first run is a claim flow. The app prints a one-time
    /setup?token=… link into its log at every start until claimed; the description tells
    users to open the app's logs from Troubleshoot right after install. Everything after the
    link is in the browser (account, authenticator QR, recovery codes).
  • SITE_URL is set to http://${DEVICE_DOMAIN_NAME}:3477; users who expose the blog
    publicly (e.g. Cloudflare Tunnel) change the address later in the app's own Settings.
  • Multi-arch image published on Docker Hub and GHCR by CI from a version tag; the digest
    pinned here is the manifest-list digest, identical on both registries.

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