TZX MESH
Sign in

Install the control plane

One command on a fresh Debian or Ubuntu VPS. About five minutes, most of it waiting for the certificate.

Before you start

Run the installer

curl -fsSL https://tzxmesh.com/install.sh | sh

It asks for the domain and the owner email, then:

  1. installs Docker Engine and the Compose plugin from Docker's repository if they are missing;
  2. writes /opt/tzxmesh/app: the compose file, the reverse-proxy config, the control-plane config, and a .env with freshly generated secrets (mode 600);
  3. starts Caddy, the control plane, the console and Postgres; Caddy obtains the TLS certificate;
  4. prints the console address and the owner's initial password.

Non-interactive installs pass the two answers as variables:

TZX_DOMAIN=mesh.example.com [email protected] sh install.sh
Prefer to read the script first? Open install.sh. It is short, and everything it writes lands in one directory on your server.

First sign-in

  1. Open https://mesh.example.com and sign in with the owner email and the printed password.
  2. Change the password.
  3. Go to Settings → Authentication and switch Peer Approval on. From now on every new device waits in Warden until you admit it.

What you get

ServiceContainerNotes
Reverse proxy + TLStzxmesh-caddyroutes API, sign-in and gRPC to the control plane, everything else to the console
Control planetzxmesh-servermanagement, signalling, relay, STUN and the built-in identity provider in one process
Consoletzxmesh-dashboardstatic web app
Databasetzxmesh-postgrestwo databases: the control plane and the identity provider

If something is off