Quick start¶
On a fresh Ubuntu 26.04 LTS x86_64 host with sudo access:
That single command:
- Installs git, Docker, PostgreSQL, Caddy, Node.js, Python 3 + venv, build tooling, and other OS deps.
- Clones this repo to
~${SUDO_USER}/nova-ve-git. - Bootstraps the host PostgreSQL role/db (
nova/novadb) and the dockerized Guacamole stack (guacdb/guacd/guacamole). - Builds the FastAPI backend (Python venv + Alembic migrations + initial seed).
- Builds the SvelteKit frontend (
npm ci+vite build) into/var/lib/nova-ve/www. - Installs the privileged network helper at
/opt/nova-ve/bin/plus itsvisudo-validated sudoers fragment. - Drops systemd units (
nova-ve-backend,caddy) and starts them. - Runs the in-tree smoke check.
- Writes
nova-ve-install-summary.md(mode0600) into the directory you launched the installer from. It contains the bootstrapped admin password, the location of every critical config file, and a map of the env vars in/etc/nova-ve/backend.env.
The script is idempotent: re-running it fast-forwards the repo, reapplies templates, and restarts services without rotating existing secrets.
Override knobs¶
Set any of these as env vars before piping into sudo bash:
| Var | Default | Purpose |
|---|---|---|
NOVA_VE_REPO_URL |
https://github.com/fahadysf/nova-ve.git |
Source repo |
NOVA_VE_REPO_REF |
main |
Branch / tag / SHA to check out |
NOVA_VE_REPO_DIR |
~${SUDO_USER}/nova-ve-git |
Clone destination |
NOVA_VE_OWNER |
${SUDO_USER:-ubuntu} |
UNIX user that owns the repo and runs the backend |
NOVA_VE_SKIP_DEMO_IMAGES |
(unset) | Set to 1 to skip building the bundled nova-ve-alpine-telnet:latest demo image |
After install¶
Open http://<host>/ and log in with the admin credentials printed at the end of the run. The credentials are also written to nova-ve-install-summary.md — see First login.
For development workflows (running the backend with --reload, the frontend dev server, or a Rancher Desktop loop on macOS), see Deployment contract and the helper scripts in deploy/scripts/.