Hosting on Azure
Deploy a complete Netzilo Server on Azure from the Azure Marketplace. You don't build or configure anything by hand — a guided wizard (a Managed Application) does it all. You fill in a short form, point your domain at the server, and log in.
Typical time to a working server: 10–15 minutes.
How it works
The Managed Application deploys into your own Azure subscription and automatically:
- launches the server (a virtual machine) running the full Netzilo stack — management, signal, dashboard, identity provider, TURN relay, database, cache, and reverse proxy;
- creates the virtual network, a static public IP, and the security group with exactly the right ports;
- installs and starts everything, and obtains a free HTTPS certificate on first boot.
You never touch VMs, networking, or firewall rules manually. You just fill in the wizard.
Billing is per named user, per hour, metered through the Azure Marketplace — you're billed only for the users you actually create.
What you need
Only two things:
- An Azure subscription.
- A domain name you can add a DNS record to (e.g.
go.example.com).
An SSH public key is nice to have for logging into the VM later, but you can also choose a password in the wizard. Everything else is created for you.
What you'll do
- Open the wizard from the Azure Marketplace and fill in the form.
- Point your domain at the server's IP (shown after deployment).
- Log in.
Step 1 — Deploy from the wizard
- In the Azure Portal, open Marketplace, search for Netzilo, open Netzilo Server, and select Create.
- The wizard has three short tabs. Fill them in:
Basics — pick your Subscription, Resource group, and Region, then:
| Field | What to enter |
|---|---|
| Domain (FQDN) | e.g. go.example.com |
| Admin email | Your login username, e.g. admin@example.com |
| Admin first / last name | The first administrator |
| Admin password | 12+ chars with upper, lower, number, and a symbol |
Virtual machine — pick the VM size (leave the recommended default for
most cases), the OS login username (default azureuser), and your SSH
public key or a password.
Network & access — set the Allowed admin source CIDR, the range allowed
to SSH in (e.g. 203.0.113.5/32 for your office/VPN), or * for anywhere.
- Give the deployment an Application name, accept the pre-filled Managed resource group, then Review + create → Create.
You don't need to reserve an IP — a static public IP is created for you. You'll point your domain at it in the next step.
Step 2 — Point your domain at the server
When the deployment finishes, open its Outputs to find the public IP
address, and create a DNS A record pointing at it:
go.example.com → A →
Once your domain resolves to that IP, the server obtains a trusted HTTPS certificate automatically within a few minutes — nothing more to do.
Step 3 — Log in
- Open
https://<your-domain>(e.g.https://go.example.com). - Sign in with the admin email and password you entered.
- You'll be asked to set a new password on first login.
A certificate warning means DNS hasn't propagated yet or the certificate is
still issuing — confirm the A record points at the server's IP, then wait a
minute and refresh.
Reference: sizing
The VM size is a picker in the wizard. Defaults suit most deployments:
| VM size | vCPU | Memory | Good for |
|---|---|---|---|
Standard_D2s_v5 (recommended) | 2 | 8 GB | Most deployments (up to a few hundred machines) |
Standard_D4s_v5 | 4 | 16 GB | Larger networks / heavier relay traffic |
Storage (a Premium SSD disk) is provisioned automatically.
Reference: ports
You don't configure these — the deployment creates the security group for you. Listed only so you know what's open:
| Port(s) | Protocol | Source | Purpose |
|---|---|---|---|
22 | TCP | Your admin CIDR | SSH (admin) |
80 | TCP | Public | Certificate validation + redirect to HTTPS |
443 | TCP | Public | Dashboard, API, and login |
3478 | TCP & UDP | Public | STUN/TURN |
5349 | TCP & UDP | Public | TURN over TLS |
Managing the server
SSH to the VM with the username and key you set. The stack lives under
/opt/netzilo:
cd /opt/netzilo
sudo docker compose ps # what's running
sudo docker compose logs -f # follow logs
sudo docker compose pull # fetch the latest version
sudo docker compose up -d # apply updates / restart
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Certificate warning in browser | DNS not on the VM IP yet, or cert still issuing | Confirm the A record → VM public IP (from Outputs); wait a minute and refresh |
| Can't SSH | Admin CIDR too narrow | Widen the Allowed admin source CIDR, or connect from an allowed IP |
| Dashboard unreachable | VM still finishing first boot | Wait for the deployment to finish plus a few minutes |
Need help? Contact support@netzilo.com.

