Files
voice-cat/docs/deployment.md
Talon 08e6c5930a
Build and test / test (macos-latest) (push) Canceled after 0s
Build and test / test (ubuntu-24.04) (push) Canceled after 0s
Build and test / test (windows-latest) (push) Canceled after 0s
Build and test / apple-client (push) Canceled after 0s
Retire legacy implementations and flatten managed layout
2026-09-21 00:11:32 +02:00

1.3 KiB

Server deployment

Publish a locked, self-contained server from the repository root:

./scripts/publish-server.ps1
./scripts/publish-server.ps1 -Runtime linux-x64
./artifacts/server/win-x64/VoiceCat.Server.exe --help

The default endpoint is TCP and UDP port 8384. The server creates its TLS identity and SQLite database in the data directory. Account passwords are accepted only through a hidden prompt, redirected standard input, or VOICECAT_ADMIN_PASSWORD; they are never command arguments.

./artifacts/server/win-x64/VoiceCat.Server.exe account add Operator --admin --data-dir ./voicecat-data
./artifacts/server/win-x64/VoiceCat.Server.exe --data-dir ./voicecat-data --allow-guests false

The checked-in Dockerfile builds the managed Linux server. docker-compose.yml runs it as a non-root user with a read-only filesystem, persistent /data, and TCP/UDP 8384 exposed.

For a host installation, deploy/linux/install.sh installs a published Linux binary and the systemd unit. Validate a published binary with:

sh deploy/linux/smoke.sh artifacts/server/linux-x64/VoiceCat.Server

The server exposes --health-check host:port for TLS-aware probes. Before release, run the container and the concurrent client soak:

./scripts/soak-server.ps1 -HostName 127.0.0.1 -Port 8384 -Minutes 30 -Pairs 4