Skip to Content
DeploymentOverview

Deployment overview

Three things get deployed:

The moving parts

What you need

To runYou need
The signaling serverA host with a public IP or DNS name, a TLS cert (Let’s Encrypt via the proxy), Rust toolchain or a prebuilt binary
The Android appThe APK from Releases, and the server URL set in Settings → Server
The CIA self-hosted runner with the Android SDK + JDK 21 (the workflow is runs-on: self-hosted)
These docs onlineAny static host - GitHub Pages, Cloudflare Pages, Netlify, or the same VPS

Configuration surface

The entire deployment config is:

WhereSetting
Server envHOST (default 0.0.0.0), PORT (default 8080), RUST_LOG (default info)
Reverse proxyyour-host127.0.0.1:8080, WebSocket upgrade passthrough, TLS
Android appSettings → Server → Signaling server URL (wss://your-host/)
CIANDROID_HOME / ANDROID_SDK_ROOT in the workflow env

There are no secrets to manage on the server - a room code is the only shared secret, and it’s chosen per-call by the users.