Skip to content

Configuration

All configuration is supplied through environment variables. The server resolves them at startup through four independent config interfaces; the agent reads two variables directly. Defaults are shown in the tables below.

Env var Default Meaning
VERTX_SERVER_PORT 8080 HTTP/WebSocket listen port (bound to 127.0.0.1).
VERTX_ALIASES_DIR ./aliases Directory of deploy alias *.yml files.
VERTX_RECIPES_DIR ./recipes Directory of recipe *.yml files.
Env var Default Meaning
DASHBOARD_PATH /deploy/dashboard Dashboard base path.
DASHBOARD_REFRESH_MS 2000 SSE push interval (ms).
SERVER_LOG_FILE /var/log/deploy-server-1/current Server log file tailed on the dashboard’s Log screen; set it blank to disable that screen.
Env var Default Meaning
REDMINE_URL "" Redmine base URL.
REDMINE_API_ACCESS_KEY "" Redmine API key (secret).
REDMINE_STATUS_ACCEPT_ID 1 Status id: accepted.
REDMINE_STATUS_PROCESSING_ID 2 Status id: in progress.
REDMINE_STATUS_DONE_ID 3 Status id: done.
REDMINE_STATUS_FAILED_ID 6 Status id: failed.
REDMINE_CONNECT_TIMEOUT 120 Connect timeout (s).
REDMINE_READ_TIMEOUT 120 Read timeout (s).
REDMINE_CALLBACK_URI "" HTTP URI matched for the Redmine webhook.
ISSUE_VALIDATION_SCRIPT "" Path to a JS file validating each issue (Nashorn).
STATUS_PAGE_PATH /deploy/status Status endpoint path prefix.
QUEUE_DIR ./queue Durable spool root (redmine/, telegram/ and deploy-review/ subdirs).
GITLAB_URL "" GitLab base URL.
GITLAB_API_KEY "" GitLab API key (secret).
TELEGRAM_ENABLED false Enable Telegram notifications.
TELEGRAM_CHAT_ID 0 Target Telegram chat id.
TELEGRAM_TOKEN "" Telegram bot token (secret).
TELEGRAM_URL https://api.telegram.org/bot Telegram Bot API base URL (override for a proxy or a mock).

An outbound POST sent at deploy start so an external service can analyse the release while it is being rolled out. Disabled by default; when enabled, DEPLOY_REVIEW_URL must be set or the server fails fast at startup.

Env var Default Meaning
DEPLOY_REVIEW_ENABLED false Enable the deploy-start webhook.
DEPLOY_REVIEW_URL "" Endpoint the notification is posted to.
DEPLOY_REVIEW_TOKEN "" Bearer token sent in Authorization (secret).
DEPLOY_REVIEW_TIMEOUT_MS 20000 Connect/read timeout (ms).

The request body carries the identity from the alias diff: block plus both versions:

{
"project": "payneteasy/paynet",
"app": "ams2-paynet-proc",
"instance": "AMS-2",
"old_version": "3.36.16-117",
"new_version": "3.36.16-118",
"deployed_at": "2026-08-11T15:07:39Z"
}

Delivery goes through a durable spool (QUEUE_DIR/deploy-review), so it survives a restart and is retried with backoff; it is at-least-once, which is safe because the receiver dedupes by version. 4xx answers (bad token, bad version format) are dead-lettered immediately instead of being retried. The notification is only sent for aliases whose diff: block is enabled and carries project and instance — the plain ?command=run path never reads the old version, so it sends nothing.

The agent reads exactly two variables, both required — the process throws on startup if either is missing or blank:

Env var Meaning
SERVER_BASE_URL WebSocket base URL; AGENT_ID is appended, so it should end with /.
AGENT_ID Agent identity (the last path segment the server keys on).
AGENT_POLICY_FILE What a deploy plan may do on this host. Default ./etc/policy.yml; with no such file the agent refuses plans and runs only the older commands.