Skip to content

docs(self-host): use digest-less tags when mirroring Hub postgres/busybox - #7

Closed
fetw882 wants to merge 12 commits into
mainfrom
cursor/docs-hub-image-digest-less-tag-682d
Closed

docs(self-host): use digest-less tags when mirroring Hub postgres/busybox#7
fetw882 wants to merge 12 commits into
mainfrom
cursor/docs-hub-image-digest-less-tag-682d

Conversation

@fetw882

@fetw882 fetw882 commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Wrong target (intra-fork). Open the real PR against elie222/rakazo from this compare URL:

https://github.com/elie222/rakazo/compare/main...fetw882:cursor/docs-hub-image-digest-less-tag-682d?quick_pull=1&title=docs(self-host)%3A%20use%20digest-less%20tags%20when%20mirroring%20Hub%20postgres%2Fbusybox


Why

elie222#493 already lets published-images Compose override Hub postgres / busybox via POSTGRES_IMAGE / BUSYBOX_IMAGE. Restricted-network operators who copy the default digest-pinned reference into a registry mirror often fail the pull — mirrors commonly republish a tag, not that exact digest. The Restricted networks section still said Stage C does not cover Hub images.

What

Docs-only in docs/self-host.md Restricted networks:

  • Point at the existing POSTGRES_IMAGE / BUSYBOX_IMAGE env overrides
  • Tell operators to use a digest-less tag (e.g. postgres:16)
  • Keep daemon registry-mirrors as the unset-var alternative
  • Generic registry.example.com only — no vendor CDN brand defaults

Out of scope

No compose YAML, install-script, or .env.images.example changes (orthogonal open PRs elie222#494elie222#498 / elie222#497).

Test plan

Open in Web Open in Cursor 

elie222 and others added 12 commits September 2, 2026 12:46
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
* feat(web): add Simplified Chinese UI locale

* fix(web): drop em dashes from zh-CN UI copy

Replace em dashes in Simplified Chinese Settings/MCP strings with
commas so the new locale matches product copy guidelines.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>
Treat any path ending in /vN as a complete OpenAI-compatible API root so
bases like /v4 or /api/paas/v4 are not rewritten to /v4/v1.
…#484)

* fix(compose): allow generic installer download base override

Let restricted networks mirror Compose installer assets via
RAKAZO_DOWNLOAD_BASE, curl retries, and explicit local/skip, without
hardcoding regional CDN defaults.

* chore: retrigger CI after unrelated Web E2E flake

* fix(compose): harden installer download base to HTTPS-only

Require https for RAKAZO_DOWNLOAD_BASE, strip all trailing slashes, and
block HTTPS→HTTP redirects on Compose asset curls.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>
Restricted-network installs already cover Stage A (installer URL) and
Stage B (DOWNLOAD_BASE / --local) after elie222#484. Document the existing
RAKAZO_IMAGE* compose-pull override so operators can point at a generic
registry mirror when GHCR is unreachable. No runtime change.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Zhang Ning <fetw882@users.noreply.github.com>
…222#489)

* docs(self-host): add published-images TLS reverse-proxy snippet

Images Compose already binds web to loopback :5173; Vite preview
same-origin-proxies /api and /rpc. Give operators a host Caddy
example and point in-stack Caddy + E2B at production Compose.

Co-authored-by: Zhang Ning <fetw882@users.noreply.github.com>

* docs(self-host): set RAKAZO_HOST when proxying published images

Vite preview allowlists RAKAZO_HOST. A host Caddy example that
forwards Host: app.example.com fails closed if the images env
leaves RAKAZO_HOST=localhost.

Co-authored-by: Zhang Ning <fetw882@users.noreply.github.com>

* docs(self-host): spell out RAKAZO_HOST for host TLS proxy

Vite preview allowlists RAKAZO_HOST. The images example default is
localhost; operators using the published-images Caddy snippet must
set the public hostname, not leave that default.

Co-authored-by: Zhang Ning <fetw882@users.noreply.github.com>

* docs(self-host): drop em dash in published-images TLS note

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Zhang Ning <fetw882@users.noreply.github.com>
Co-authored-by: elie222 <elie222@users.noreply.github.com>
…elie222#492)

* fix(compose): wait for healthy services in published-images installer

Prefer `docker compose up -d --wait` after pull so the printed URL is not
shown until api/web healthchecks pass. Feature-detect `--wait` via
`docker compose up --help` and fall back to `up -d` on older Compose.

Co-authored-by: Zhang Ning <fetw882@users.noreply.github.com>

* fix(compose): bound installer health wait to 300s

Greptile: `up --wait` can hang if a service never becomes healthy.
Use `--wait-timeout 300` when Compose advertises it, matching the
production updater. Older Compose keeps unbounded `--wait` or `up -d`.

Co-authored-by: Zhang Ning <fetw882@users.noreply.github.com>

* fix(compose): wait only when Compose can time out

Review bots: `up --wait` without `--wait-timeout` can hang on one-shot
services (Compose < 2.7) or never return if health stays red. Use
`--wait --wait-timeout 300` only when help lists `--wait-timeout`;
otherwise keep `up -d`.

Co-authored-by: Zhang Ning <fetw882@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Zhang Ning <fetw882@users.noreply.github.com>
* fix(compose): allow overriding Hub postgres/busybox images on published-images path

POSTGRES_IMAGE and BUSYBOX_IMAGE interpolate on the images Compose file so
restricted-network operators can pin mirrors. Unset keeps the existing
digest-pinned postgres:16 and busybox:1 defaults.

Co-authored-by: Zhang Ning <fetw882@users.noreply.github.com>

* test(compose): accept Hub image env interpolation in images contract

The images compose file now wraps postgres/busybox in POSTGRES_IMAGE and
BUSYBOX_IMAGE defaults. Keep the digest-pin and busybox:1 assertions on
those defaults so the raw-YAML contract still holds.

Co-authored-by: Zhang Ning <fetw882@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Zhang Ning <fetw882@users.noreply.github.com>
* Simplify rakazo.com self-host to short CTAs

Drop the Docker install one-liner, secret generation, and arch footnotes
from the marketing homepage and Get started dialog. Point visitors at
docs and GitHub instead, and add a www Playwright coverage that captures
the simplified Self-host section for CI screenshots.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

* Isolate marketing homepage E2E from product Playwright

Move the marketing homepage spec into apps/www with its own Playwright
config so product chromium no longer starts Astro on every Web E2E run.
CI runs the www suite after product e2e and still writes screenshots under
apps/web/test-results for the existing gallery publisher.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

* Scope marketing Get started click to the Self-host CTA

Exercise the Self-host section opener directly so the test does not
pass via the hero button alone.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

* Honor WWW_PORT in the www Astro server

Playwright already chooses the marketing baseURL from WWW_PORT. Read the
same env in astro.config so custom-port E2E runs start Astro on that port.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

* Validate WWW_PORT for Astro and Playwright together

Empty or invalid WWW_PORT values were becoming 0 via Number(...), which
can bind Vite to an OS-assigned port while Playwright still waits on :0.
Share one integer 1..65535 resolver between both configs.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>
* Add System / Light / Dark appearance across web and mobile

Shared ui-tokens now expose light and dark palettes as CSS variables and
JS tokens. Web persists the preference locally, applies it before paint,
and adds a compact Appearance control in account settings. Mobile uses
the same preference with native theme APIs. Playwright covers the light
path for CI screenshots.

Closes elie222#502

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

* Fix appearance lint: format token classNames and fieldset control

Biome wanted wraps after the hex-to-CSS-var migration. Appearance uses a
fieldset for the segmented control, and the unused mobile type import is gone.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

* Fix light-mode chrome holes after hex-to-token pass.

Map remaining dark hover/surface hex and button variants to shared
tokens (cream uses cream-ink), rebuild mobile StyleSheets per
appearance so account/nav restyle, and cover the mapping in unit tests.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

* Format appearance follow-up files for Biome lint.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

* Rerender mobile System theme when the OS scheme flips.

useResolvedAppearance now snapshots resolved light/dark so
useSyncExternalStore updates StyleSheets, nav, and status bar
when preference stays system.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

* Address CodeRabbit light-mode contrast and i18n gaps.

Theme Auth/MCP/wordmark chrome with readable tokens, fill Appearance
locale strings, harden localStorage access, and keep artifact card
borders distinct from their elevated fill.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

* Fix light-mode chrome holes in settings and shell frames.

Selected rows and choice options use themed surfaces with ink instead of
hardcoded near-black fills; Appearance labels and settings scroll stay
readable; cream/cream-ink primary replaces washed accent purple.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

* Format theme-touched files for Biome lint.

CI lint failed on ternary wrapping in mobile account/nav screens and
web model/onboarding/voice overlays after the appearance pass.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

* Use white surface wash for the selected sidebar row.

Elevated and sidebar are nearly the same in light mode, so selection
barely showed. Surface (white) on the gray sidebar matches Grok Bot and
keeps ink readable. Also bump search/composer placeholders to body.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

* Strengthen composer placeholder contrast in light mode.

Use body ink for the Message placeholder so it stays readable on the
light composer field.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

* Keep Change password accent on cream + cream-ink when disabled.

Disabled opacity was washing the cream primary into a medium gray pill
in the light-mode settings frames. Accent CTAs now keep --rk-cream /
--rk-cream-ink at full strength.

Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Elie Steinbock <elie222@users.noreply.github.com>
Restricted-network operators can already override POSTGRES_IMAGE and
BUSYBOX_IMAGE. Copying the default digest pin often fails on registry
mirrors, so document digest-less tags such as postgres:16.

Co-authored-by: Zhang Ning <fetw882@users.noreply.github.com>
@cursor

cursor Bot commented Sep 3, 2026

Copy link
Copy Markdown

Wrong target: this is an intra-fork PR on fetw882/rakazo. The knife needs a cross-repo PR against elie222/rakazo.

Open it from:

https://github.com/elie222/rakazo/compare/main...fetw882:cursor/docs-hub-image-digest-less-tag-682d?quick_pull=1&title=docs(self-host)%3A%20use%20digest-less%20tags%20when%20mirroring%20Hub%20postgres%2Fbusybox

Branch is 1 commit ahead of elie222/main (docs/self-host.md only). Same pattern as elie222#487 / elie222#493.

@fetw882

fetw882 commented Sep 3, 2026

Copy link
Copy Markdown
Owner Author

Superseded: Cloud Agent branched from stale fork main and picked up 115-file drift. Will re-open a docs-only PR to elie222/rakazo.

@fetw882 fetw882 closed this Sep 3, 2026
@fetw882
fetw882 deleted the cursor/docs-hub-image-digest-less-tag-682d branch September 3, 2026 06:43
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.

3 participants