Repository navigation
feat(install): offline install bundle and procedure for Ubuntu 24.04 (#60) - #97
Merged
Merged
Conversation
…buntu 24.04 (#60) build_bundle.sh (connected machine) packs the app, CPython 3.12 wheels, the frontend built for a Node server, and Ubuntu 24.04 packages for PostgreSQL 16, python3.12-venv and Node.js as a local apt repository. install.sh (offline VM) installs from that bundle alone, deploys te_mgmt_prod, writes a mode-600 env file with generated secrets, starts systemd units for the API and frontend, and runs smoke_test.sh. Rehearsed end to end inside a network namespace with loopback only: install exit 0, smoke test 5/5. A clean-VM dry run is still needed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019YPoXzBSj89ZHgw7nfTmbB
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #60, the 15 Nov offline-install commitment. It doesn't close #60: the clean-VM dry run is still needed.
What's added
scripts/offline/build_bundle.sh. Runs on a connected Ubuntu 24.04 machine and builds one.tar.gzcontaining:NITRO_PRESET=node-server; the default build targets Cloudflare);python3.12-venvand Node.js, with an index so apt can use the folder as a local repository;scripts/offline/install.sh. Runs on the offline VM and installs from the bundle alone. It:te_mgmt_prodwith its app role and a generated password;scripts/offline/smoke_test.sh. Five PASS/FAIL checks: health; a missing key returns 401; a CSV upload inserts 2 rows; the persisted counts are listed; the frontend serves the app. It can be re-run.docs/offline-install.md. The procedure, the evidence to attach to 2026-11-15: ship air-gapped install procedure or keep interim wording #60, the known limits, and how the rehearsal was done.Rehearsal (Claude's Ubuntu 24.04 workspace)
I ran
install.shend to end inside a Linux network namespace with loopback only.curl https://pypi.orgreturned000there.te_mgmt_proddeployed with 12te_prodtablesinstall.shWhat differed from a real VM: systemd was replaced by a stand-in that starts each unit's
ExecStartas itsUser, and PostgreSQL 16 was already installed in the workspace (Node.js was installed from the bundle).Problems the rehearsal caught and fixed:
nodejs-doc) that wasn't in the bundle..debfiles offline ("Pathname to install is not absolute"), so the bundle now ships as a local repository.The final commit differs from the rehearsed bundle only in that smoke-test fix and the docs.
Checks on this branch
scripts/lint.sh: clean.bash -non all three scripts: clean.Known limits (also in the doc)
Generated by Claude Code