2026-05-17 08:57:58 +02:00
|
|
|
# Triton Manage Server — standalone compose file.
|
|
|
|
|
#
|
|
|
|
|
# Self-contained: bundles its own PostgreSQL for both the manage schema
|
|
|
|
|
# and the AES-256-GCM credential vault. Designed to run on a host that
|
|
|
|
|
# only hosts the manage server.
|
|
|
|
|
#
|
|
|
|
|
# Reads .env from the same directory (this file's parent).
|
|
|
|
|
|
|
|
|
|
services:
|
|
|
|
|
|
|
|
|
|
postgres:
|
|
|
|
|
image: docker.io/library/postgres:18-alpine
|
|
|
|
|
container_name: triton-manage-db
|
|
|
|
|
hostname: triton-manage-db
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
environment:
|
|
|
|
|
POSTGRES_USER: ${POSTGRES_USER:-triton}
|
|
|
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
|
|
|
POSTGRES_DB: ${POSTGRES_DB:-triton_manage}
|
|
|
|
|
volumes:
|
|
|
|
|
- triton-manage-db-data:/var/lib/postgresql
|
|
|
|
|
ports:
|
|
|
|
|
- "127.0.0.1:${POSTGRES_PORT:-5435}:5432"
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-triton} -d ${POSTGRES_DB:-triton_manage}"]
|
|
|
|
|
interval: 5s
|
|
|
|
|
timeout: 3s
|
|
|
|
|
retries: 20
|
|
|
|
|
|
|
|
|
|
manage-server:
|
2026-05-31 12:41:05 +08:00
|
|
|
image: ${TRITON_MANAGE_IMAGE:-forgejo.primatekun.tech/primatekuntech/triton-manage-server:latest}
|
2026-05-17 08:57:58 +02:00
|
|
|
container_name: triton-manageserver
|
|
|
|
|
hostname: triton-manageserver
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
depends_on:
|
|
|
|
|
postgres:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
environment:
|
|
|
|
|
# Required
|
|
|
|
|
TRITON_MANAGE_DB_URL: postgres://${POSTGRES_USER:-triton}:${POSTGRES_PASSWORD}@triton-manage-db:5432/${POSTGRES_DB:-triton_manage}?sslmode=disable
|
|
|
|
|
TRITON_MANAGE_JWT_SIGNING_KEY: ${TRITON_MANAGE_JWT_SIGNING_KEY}
|
|
|
|
|
TRITON_MANAGE_LICENSE_SERVER_PUBKEY: ${TRITON_MANAGE_LICENSE_SERVER_PUBKEY}
|
|
|
|
|
# Listener
|
|
|
|
|
TRITON_MANAGE_LISTEN: ${TRITON_MANAGE_LISTEN:-:8082}
|
|
|
|
|
TRITON_MANAGE_GATEWAY_LISTEN: ${TRITON_MANAGE_GATEWAY_LISTEN:-:8443}
|
|
|
|
|
TRITON_MANAGE_GATEWAY_HOSTNAME: ${TRITON_MANAGE_GATEWAY_HOSTNAME:-localhost}
|
|
|
|
|
TRITON_MANAGE_GATEWAY_URL: ${TRITON_MANAGE_GATEWAY_URL:-}
|
|
|
|
|
TRITON_MANAGE_HOST_IP: ${TRITON_MANAGE_HOST_IP:-}
|
|
|
|
|
TRITON_MANAGE_HOST_HOSTNAME: ${TRITON_MANAGE_HOST_HOSTNAME:-}
|
|
|
|
|
# License server connection (for binary sync + heartbeat)
|
|
|
|
|
TRITON_LICENSE_SERVER_URL: ${TRITON_LICENSE_SERVER_URL:-}
|
|
|
|
|
TRITON_LICENSE_TOKEN: ${TRITON_LICENSE_TOKEN:-}
|
|
|
|
|
TRITON_LICENSE_KEY: ${TRITON_LICENSE_KEY:-}
|
|
|
|
|
# Worker plumbing
|
|
|
|
|
TRITON_MANAGE_WORKER_KEY: ${TRITON_MANAGE_WORKER_KEY}
|
|
|
|
|
TRITON_MANAGE_BIN_DIR: /bins
|
|
|
|
|
TRITON_MANAGE_PARALLELISM: ${TRITON_MANAGE_PARALLELISM:-10}
|
|
|
|
|
# Credential vault (PostgreSQL AES-256-GCM)
|
|
|
|
|
TRITON_VAULT_KEY: ${TRITON_VAULT_KEY:-}
|
|
|
|
|
# TLS (optional — usually a reverse proxy terminates TLS instead)
|
|
|
|
|
TRITON_MANAGE_TLS_CERT: ${TRITON_MANAGE_TLS_CERT:-}
|
|
|
|
|
TRITON_MANAGE_TLS_KEY: ${TRITON_MANAGE_TLS_KEY:-}
|
|
|
|
|
TRITON_MANAGE_SESSION_TTL: ${TRITON_MANAGE_SESSION_TTL:-24h}
|
|
|
|
|
volumes:
|
|
|
|
|
- triton-manage-bins:/bins
|
|
|
|
|
- ${TLS_CERT_HOST_DIR:-/etc/triton/tls}:/etc/triton/tls:ro
|
2026-05-22 21:19:08 +08:00
|
|
|
- /etc/machine-id:/etc/machine-id:ro
|
2026-05-17 08:57:58 +02:00
|
|
|
ports:
|
|
|
|
|
- "${TRITON_MANAGE_HOST_PORT:-8082}:8082"
|
|
|
|
|
- "${TRITON_MANAGE_GATEWAY_HOST_PORT:-8443}:8443"
|
|
|
|
|
|
|
|
|
|
volumes:
|
|
|
|
|
triton-manage-db-data:
|
|
|
|
|
name: triton-manage-db-data
|
|
|
|
|
triton-manage-bins:
|
|
|
|
|
name: triton-manage-bins
|