Public stand
The public stand uses the quickstart stack behind the operator's existing
Caddy edge. It is an evaluation deployment with operator-issued credentials.
The repository's redeploy script targets https://yabanin.ai by default;
this page describes that deployment contract, not a live availability check.
Access
Obtain an admin account and organization gateway key from the operator. The local demo's fixed credentials do not apply here.
| Surface | Public path | Backend |
|---|---|---|
| Website and documentation | /, /docs | Static Docusaurus build |
| Gateway | /gw/healthz, /gw/v1/... | Gateway on loopback port 8082; edge strips /gw |
| Admin login and API | /auth/..., /api/... | Admin on loopback port 8086 |
A separately served dashboard may use /stand; its assets and edge routing
are managed outside the quickstart redeploy script. Use the dashboard URL
provided by the operator. The shared VPS Caddy configuration is not the
three-domain template in deploy/caddy/Caddyfile.tmpl.
Use https://yabanin.ai/gw/v1 as an OpenAI-compatible client base URL, with
your gateway key. Use a model returned by /gw/v1/models; the redeploy
smoke test expects the seeded mock-model. A mock response verifies the
request path, not a real provider connection. To configure a real upstream,
follow BYOK and Organization setup.
Redeploy an existing stand
Run from the repository root with Docker running and SSH access to the existing stand host:
scripts/deploy-public-stand.sh --host operator@stand.example.com
The script builds yabanin-quickstart:local for linux/amd64, tags the
currently installed image as yabanin-quickstart:previous, transfers the new
image, and syncs only the quickstart Compose/bootstrap files and scripts.
It then runs docker compose --profile mock up -d --wait remotely.
Remote deploy/quickstart/.env and .stand-key are preserved. The image
comes from the current working tree, including uncommitted changes; the
script records the commit label (with -dirty when applicable) in the
remote .deployed-version file. It does not provision a new VPS, DNS, TLS,
a dashboard build, or database backups.
| Option | Meaning |
|---|---|
--host USER@HOST | Override SSH destination |
--skip-build | Transfer the existing local image; it must already exist |
--skip-smoke | Skip post-deployment checks |
--yes | Accepted by the script; currently it has no confirmation prompt |
YABANIN_STAND_DIR | Remote source directory, default /opt/yabanin-src |
YABANIN_STAND_URL | Public base URL, default https://yabanin.ai |
YABANIN_STAND_HOST | SSH destination when --host is absent; set explicitly |
Smoke checks cover local/public gateway health, authenticated model listing,
a short mock chat completion, and the admin login page. The script reads
.stand-key over SSH without printing it. These checks do not validate a
user's BYOK provider or every dashboard workflow.
Image rollback
On the stand host, after verifying the previous image is compatible with the current database schema:
docker tag yabanin-quickstart:previous yabanin-quickstart:local
cd /opt/yabanin-src/deploy/quickstart
docker compose --profile mock up -d --wait
This rolls back the image only. Synced Compose files, the recorded version
label, and database migrations are not reverted. Keep database backups and
the previous configuration when deploying changes that need more than an
image rollback. A first deployment may have no :previous image.
Website deployment is separate
scripts/deploy-site.sh builds web/site, backs up the VPS webroot, and uses
rsync --delete to replace its contents in place. Files absent from the
build, including manually uploaded Overview HTML or dashboard assets stored
there, are deleted. Check the complete build contents before publishing.
Do not swap the webroot directory: Caddy's bind mount follows its inode.
For a new deployment with separate API, admin, and dashboard domains, explicit persistent volumes, alerts, status generation, and backups, use the production Compose runbook.