Commit Graph
39 Commits
Author SHA1 Message Date
inference-admin f195f4509b Pin manifest to 20261026-13f2b3a 2026-10-26 03:24:17 +00:00
inference-admin 0102c1790f Stage: run the per-member key seed from the image, not the volume
Ready to build, not yet deployed — deploying the repointed scheduler command
without the new image would break the seed on schedule, which is why this sits on
a branch with the ordering written down.

- Dockerfile: COPY sync-keys.js /app/code/sync-keys.js; rule 3 in the header now
  states the one exception (operational scripts that must not depend on a volume).
- CloudronManifest.json: scheduler command repointed to /app/code/sync-keys.js.
- README: ordering (build -> deploy -> verify -> delete the volume copy), and the
  table row moved from the volume layer to the image layer.

After deploy: delete /app/data/sync-keys.js, but keep it until you are past the
rollback window — the previous image tag still runs the volume copy.
2026-10-26 01:35:06 +00:00
inference-admin 4e28b7a612 Key sync runs inside the app: scheduler addon task every 10 min, plus write guards
The per-member key seed ran from a steward cron on the co-op agent VM, shelling
into this app over the Cloudron API. That made a member-facing function depend on
a separate machine's uptime and paths (it went silently stale once, exiting 127
on schedule while the job looked healthy).

- CloudronManifest.json: addons.scheduler gains librechat_key_sync
  (cd /app/code/librechat/api && node /app/data/sync-keys.js, */10 * * * *).
  Official addon set (postgresql, mongodb, localstorage, oidc, sendmail) and the
  dockerImage pin are untouched.
- sync-keys.js: refuse to write unless CREDS_KEY can first decrypt an existing
  key row, and unless each fresh ciphertext round-trips back to the plaintext.
  Scheduled runs get a different environment than an interactive exec, so a wrong
  or absent CREDS_KEY must fail loudly instead of overwriting working member keys.
2026-10-25 22:25:10 +00:00
Nathan Schneider 22f9422259 Pin manifest to 20261023-65a38bb 2026-10-23 11:11:45 -06:00
Nathan Schneider 10b63c9454 Pin manifest to 20261023-515c92c 2026-10-23 11:02:42 -06:00
Nathan Schneider 7e94135bc5 Pin manifest to 20261022-17e7c92 2026-10-22 13:32:33 -06:00
Nathan Schneider 077e6141b3 Pin manifest to 20261022-4a2b9c1 (no-cache rebuild — stale COPY layer shipped the old maskable icon) 2026-10-22 12:31:00 -06:00
Nathan Schneider 637fcc3472 Pin manifest to 20261022-d86483e 2026-10-21 21:07:23 -06:00
Nathan Schneider 7eb13856d7 Pin manifest to 20261021-c2c674a 2026-10-20 22:29:25 -06:00
Nathan Schneider 2767536d1f Pin manifest to 20261021-db2dbe3 2026-10-20 22:27:31 -06:00
Nathan Schneider 28790d2fe7 Pin manifest to 20261021-c47c311 2026-10-20 22:21:10 -06:00
Nathan Schneider 0560c6e26b Pin manifest to 20261021-7e1de2f 2026-10-20 22:12:17 -06:00
Nathan Schneider 6a6f8b4103 Pin manifest to 20261021-dcd7486 2026-10-20 21:57:03 -06:00
Nathan Schneider 04b217b306 Pin manifest to 20261020-0468562 2026-10-20 13:45:58 -06:00
Nathan Schneider 3b706eed74 Pin manifest to 20261020-1594a60 2026-10-20 13:41:03 -06:00
Nathan Schneider 5864741233 Pin manifest to e9850d7 2026-10-19 21:43:56 -06:00
Nathan Schneider 289ab2f9ff Pin manifest to 8abdc95 2026-10-19 21:41:48 -06:00
Nathan Schneider 15035fd69e Pin manifest to 05c3681 2026-10-19 12:52:33 -06:00
Nathan Schneider 17129e462b Pin manifest to 429de96 2026-10-19 12:45:20 -06:00
Nathan Schneider ef692d524c Pin manifest to 0a363b3 2026-10-19 12:38:23 -06:00
Nathan Schneider a2c180f848 Pin manifest to a24286c 2026-10-19 10:40:40 -06:00
Nathan Schneider 3bbdda6371 Pin manifest to 499d4fa 2026-10-19 10:32:36 -06:00
Nathan Schneider 911ce3cb1a Pin manifest to 957293d 2026-10-18 23:49:14 -06:00
Nathan Schneider 8398908427 Pin manifest to 990b2db 2026-10-18 23:46:23 -06:00
Nathan Schneider 85e0282cef Pin manifest to da99640 2026-10-18 23:44:18 -06:00
Nathan Schneider 571084d8bf Pin manifest to no-cache image fc9b11e 2026-10-18 22:43:58 -06:00
Nathan Schneider 9f1f12238e Update manifest to new image tag 2026-10-18 22:14:07 -06:00
Nathan Schneider ef795a388b Update manifest dockerImage to latest overlay 2026-10-18 21:39:31 -06:00
Nathan Schneider 6cc87e5833 Update manifest dockerImage to new overlay tag 2026-10-18 21:27:14 -06:00
Nathan Schneider ff8532afd8 Deploy 20261019-5e214e4 (proper favicon sizes) 2026-10-18 20:53:14 -06:00
Nathan Schneider f40680f5a7 Point manifest.dockerImage at the brand-overlay image (CLI deploys manifest.dockerImage) 2026-10-18 20:28:36 -06:00
Nathan Schneider 070dec3d29 Sustainable LibreChat setup: official manifest, config layer, brand overlay
- CloudronManifest.json: byte-identical copy of the OFFICIAL appstore manifest
  (the hand-edited one stripped addons and crash-looped the app on 2026-10-18)
- Dockerfile: pinned base (202610150224320000), brand assets only + title sed
- librechat.yaml: schema 1.3.17; chat models only in picker (qwen-image moved
  to the agent image tool); speech via gateway with capped key refs; SearXNG
  web search; inference-docs MCP server; forward-compatible interface.theme
- mcp/server.py: docs MCP server (stdio, stdlib-only, tool search_docs)
- assets/: co-op logo + favicons/PWA icons
2026-10-18 20:26:40 -06:00
Nathan Schneider 6e4ca9319f Set manifest id to reverse domain for reinstall 2026-10-18 18:16:05 -06:00
Nathan Schneider 6d7d5bdd54 Revert id to original for update compatibility 2026-10-18 18:14:31 -06:00
Nathan Schneider 4140abcd27 Fix CloudronManifest with reverseDomain id 2026-10-18 18:12:41 -06:00
Nathan Schneider c30ca8e23e Update CloudronManifest with required fields 2026-10-18 18:10:14 -06:00
Nathan Schneider e54d6e8233 Add httpPort to CloudronManifest 2026-10-18 18:09:12 -06:00
Nathan Schneider 6bbacecb52 Add manifestVersion to CloudronManifest 2026-10-18 18:08:16 -06:00
Nathan Schneider 447005e4e7 Add CloudronManifest and copy logo into client assets 2026-10-18 17:51:25 -06:00