cli v0.1.1
voipappz
Command-line tool to install, run, and deploy the VoIPAppz platform. The stack (docker-compose + configs) ships in this repo; the CLI brings it up on the local machine and deploys it to remote hosts over SSH.
Install
One command, on the machine that will run the platform:
curl -fsSL https://raw.githubusercontent.com/voipappz/cli/main/install.sh | sh
It ensures Docker (plus git and openssl), fetches the CLI + stack into /opt/voipappz, installs the voipappz binary on PATH, then runs voipappz bootstrap — docker login → setup → up -p app → up -p voip → health.
Env overrides:
INSTALL_DIR=/opt/voipappz # where the CLI + stack live (compose runs here)
VERSION=v0.1.1 # pin a CLI release (default: latest)
BOOTSTRAP=0 # install only; print the bring-up command instead
SKIP_VOIP=1 # app profile only
Unattended install
install.sh runs setup --ci, which auto-detects everything and prompts for nothing. To install unattended and choose your own answers (domain, TLS, alerts), prepare an answer file and run setup against it:
BOOTSTRAP=0 curl -fsSL https://raw.githubusercontent.com/voipappz/cli/main/install.sh | sh
cd /opt/voipappz
cp installer.env.example installer.env # edit: domain, Cloudflare token, SMTP
voipappz setup --env-file installer.env
voipappz up -p app && voipappz up -p voip
Every VOIPAPPZ_* key in the file answers one wizard prompt. The file holds credentials — it is git-ignored; delete it after the install.
TLS
Certificates are issued by acme.sh over DNS-01, so no inbound port has to be open for validation. The customer creates one static DNS record delegating the challenge into the zone we control:
_acme-challenge.<your-domain> CNAME _acme-challenge.<VA_ACME_ALIAS>
Setup asks for a Cloudflare API token (scoped Zone:DNS:Edit) and verifies it live. Issue and install with voipappz cert --issue; check status any time with voipappz cert. Without a token the node runs on a self-signed placeholder — TLS still negotiates, so check voipappz cert before going live.
Commands
voipappz setup generate .env config + secrets (wizard)
voipappz setup --env-file F unattended setup from an answer file
voipappz up [-p app|voip] start the stack (docker compose)
voipappz down | restart stop / restart
voipappz status container states
voipappz health [--api] health check
voipappz cert [--issue] TLS status / issue via acme.sh (DNS-01)
voipappz logs container logs
voipappz deploy --host <ip> --user <u> --key <key> provision + deploy over SSH
./.env is auto-loaded; process env wins. Run voipappz --help for the full list.
Configuration
voipappz setup writes .env (config + generated secrets) and config/va.yaml. Both are git-ignored and stay on the machine.
Deploy a remote host
export VA_REGISTRY_PASSWORD=<registry-token>
voipappz deploy --host <ip> --user <user> --key ~/.ssh/<key> --check # preflight
voipappz deploy --host <ip> --user <user> --key ~/.ssh/<key> # deploy
Build from source
./build.sh # static binary via Docker -> bin/voipappz
ARCH=arm64 ./build.sh # cross-build for aarch64
cli
- 0
- 0
- 0
- 0
- 2
- 20 days ago
- July 21, 2026
Wed, 29 Jul 2026 19:54:16 GMT