Deployment Guide
This guide describes the current AIOHM production flow.
Branch Strategy
local-dev-*branches are the full development workspacefiltered-pr-*branches are GitHub-generated production snapshotsmainis the clean production branch
You do not develop directly on main.
Release Flow
- Work locally on a
local-dev-*branch. - Push that branch to GitHub.
- GitHub builds VitePress from
changeslog/and prepares the filtered production PR. - After merge,
mainbuilds a release ZIP with built frontend assets and built docs. - The VPS deploy script downloads the latest release asset and updates the live platform.
What Ships To Production
- application code under
app/,config/,routes/,resources/,database/, and related runtime paths install/for first-time setup only- built documentation in
public/docs/ - built frontend assets in
public/build/
What Does Not Ship To Production
- raw VitePress source in
changeslog/ - dev helpers such as
scripts/ - tests
- local dependency folders
- runtime
storage/contents from a developer machine
First Install
Fresh installs use the installer package:
bash
bash install/bin/first-install.sh --production --yesThe installer handles setup tasks such as environment preparation, dependency install, migrations, seeding, storage linking, and initial cache warmup. After a successful first install, the install/ folder can be removed from the server.
Updating A Live VPS
From a full dev checkout, use the deployment helper:
bash
VPS_USE_SUDO=true bash scripts/github-aiohm-last-version.shThat script downloads the latest GitHub release ZIP, preserves runtime state, updates application files, and runs the Laravel post-deploy steps on the VPS.
Runtime Paths To Preserve
.envstorage/bootstrap/cache/permissions- server-specific web and process manager configuration
Verification Checklist
https://aiohm.orgreturns200https://aiohm.org/docs/returns200- the expected release asset version is deployed
install/is removed after first setup or upgrade finalization