Unvanquished Dedicated Server on Ubuntu 24.04 on Azure User Guide
Overview
Unvanquished is a free and open source game that fuses first-person-shooter combat with real-time-strategy base building, played between an alien and a human team. This cloudimg image runs the headless dedicated server (daemonded, part of the Daemon engine) — the program that hosts the game world that players join from the separate Unvanquished client. It is not the graphical game client and it has no web interface; you administer it from the command line and over the game's remote console (rcon), and players connect over the game port.
The image installs the stock upstream Unvanquished 0.56.2 server and the full game assets, unmodified, verified against the upstream SHA-512 checksum. Every cloudimg customisation is external configuration only. On first boot the VM generates a unique remote-console (rcon) password, writes the server configuration, and starts the server automatically hosting the plat23 map. Backed by 24/7 cloudimg support.
What is included:
- Unvanquished 0.56.2 dedicated server (
daemonded) plus the full game assets (maps and paks) - An
unvanquished.servicesystemd unit that starts the server on boot, running as an unprivilegedunvanquisheduser - A unique rcon (remote console) admin password generated on first boot — no default password ships in the image
- The game protocol on
27960/udpfor players; no web or unauthenticated admin surface - A small
unvanquished-queryhelper for status and rcon from the command line - 24/7 cloudimg support
The engine and game code are licensed GPLv3 and the game media is licensed CC-BY-SA 2.5; corresponding source is linked at the end of this guide.
Prerequisites
An active Azure subscription, an SSH key pair, and a VNet + subnet in the target region. Standard_B2s (2 vCPU / 4 GiB RAM) is sufficient for a dedicated server; the server idles at well under 1 GiB. NSG inbound rules:
22/tcpfrom your management network (SSH administration)27960/udpfrom your players (the Unvanquished game port)
There is no web or metrics port to open — administration is over SSH and rcon only.
Step 1 - Deploy from the Azure Marketplace
Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Unvanquished Server by cloudimg, and select Create. On Basics pick your subscription, resource group, region and size (Standard_B2s recommended); under Administrator account choose SSH public key and paste your key; under Inbound port rules allow SSH (22). After deployment, add an inbound rule for 27960/udp so players can connect.
Step 2 - Deploy from the Azure CLI
az vm create \
--resource-group <your-rg> \
--name unvanquished \
--image <marketplace-image-urn> \
--size Standard_B2s \
--admin-username azureuser \
--ssh-key-values ~/.ssh/id_ed25519.pub \
--vnet-name <your-vnet> --subnet <your-subnet> \
--public-ip-sku Standard
# open the Unvanquished game port (UDP 27960) to your players
az vm open-port --resource-group <your-rg> --name unvanquished --port 27960 --priority 1010
Step 3 - Connect to your VM
ssh azureuser@<vm-public-ip>
Step 4 - Confirm the server is running
The server starts automatically on first boot, hosting the plat23 map. Confirm the service is active, running as the unprivileged unvanquished user, and bound to the game port:
systemctl is-active unvanquished
ps -o user=,comm= -C daemonded
sudo ss -ulnp | grep 27960
You should see the service active, daemonded owned by the unvanquished account, and a UDP listener on 0.0.0.0:27960:

Step 5 - Check the server is live with a status query
The bundled unvanquished-query helper sends the game's connectionless getinfo query and prints the reply. This needs no password and proves the server is serving the protocol, which map it is running, and how many player slots it has:
unvanquished-query getinfo
The infoResponse reports mapname\plat23, the protocol and engine version, and the player slots:

Step 6 - Administer the server over rcon
The server's remote console (rcon) is protected by a password that is unique to this VM and was generated on first boot. Read it from the root-only credentials file:
sudo grep '^RCON_PASSWORD=' /root/unvanquished-credentials.txt
Run an admin command with the unvanquished-query rcon helper (it reads the password from that file for you). The status command returns the live server console, and rcon-check proves the correct password works while a wrong one is rejected:
sudo unvanquished-query rcon status

Any server console command can be run this way, for example to change the map:
sudo unvanquished-query rcon "map station15"
Step 7 - Connect players
Players install the Unvanquished client from unvanquished.net/download, open the console (the ~ key) and connect to your VM:
connect <vm-public-ip>:27960
Make sure the 27960/udp inbound NSG rule is in place. The server hosts plat23 by default and advertises to the Unvanquished master server list so players can also find it in the in-game server browser.
Step 8 - Secure by default
There is no shared secret in the image. The rcon password is generated per-VM on first boot and stored only in the root-only credentials file (0600 root:root) and the server config (0640 root:unvanquished); with no password set, rcon is disabled, so the shipped image has no default rcon password. The server runs as an unprivileged unvanquished user and exposes only the game protocol on UDP 27960 — there is no web or metrics interface.
sudo stat -c '%a %U:%G %n' /root/unvanquished-credentials.txt /var/lib/unvanquished/config/server.cfg
ls -l /var/lib/cloudimg/unvanquished-firstboot.done

Step 9 - Customise the server
Edit the server configuration to change the map, server name, player limit, or to require a join password, then restart the service:
sudo nano /var/lib/unvanquished/config/server.cfg
# common settings:
# set sv_hostname "My Unvanquished Server"
# set sv_maxclients 24
# seta g_password "join-password" # empty = public
# +map <mapname> # change the default map in the unit's ExecStart
sudo systemctl restart unvanquished
The game join is public by default (empty g_password) as is normal for a dedicated game server; set g_password to require a join password. Base maps shipped with the image include plat23, station15, parpax, chasm, forlorn, perseus and more.
Licensing and source
The Daemon engine and game code are licensed under the GNU GPL version 3; the game media (assets, maps, sounds) is licensed under Creative Commons Attribution-ShareAlike 2.5. This image ships the stock upstream server and assets unmodified. Corresponding source:
- Game: github.com/Unvanquished/Unvanquished (tag v0.56.2)
- Engine: github.com/DaemonEngine/Daemon
Support
Every cloudimg image is backed by 24/7 support and ships fully patched with unattended security updates enabled. If you need help, contact cloudimg support.