Unvanquished
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 team and a human team. This SecureAnyCloud 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 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 and verified against the upstream SHA-512 checksum. Every SecureAnyCloud 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 hosting the plat23 map.
What you get:
- 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, so no default password ships in the image
- The game protocol on
27960/udpfor players, with no web or unauthenticated admin surface - A small
unvanquished-queryhelper for status and rcon from the command line - 24/7 SecureAnyCloud support
The engine and game code are licensed under GPLv3 and the game media under CC-BY-SA 2.5. Corresponding source is linked at the end of this guide.
Prerequisites
You need an active Azure subscription, an SSH key pair, and a VNet with a subnet in the target region. Standard_B2s (2 vCPU / 4 GiB RAM) is sufficient for a dedicated server, which idles at well under 1 GiB.
Configure these inbound network security group (NSG) 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 SecureAnyCloud, and select Create.
On the Basics tab, 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
# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:unvanquished-ubuntu-24-04:default:latest
az vm create \
--resource-group <your-rg> \
--name unvanquished \
--image sac1647283583153:unvanquished-ubuntu-24-04:default:latest \
--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 1010Step 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 that the service is active, runs as the unprivileged unvanquished user, and is bound to the game port:
systemctl is-active unvanquished ps -o user=,comm= -C daemonded
sudo ss -ulnp | grep 27960The output shows the service as 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. The query needs no password. The reply shows that the server is serving the protocol, which map it is running, and how many player slots it has:
unvanquished-query getinfoThe 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 generated on first boot. Read it from the root-only credentials file:
sudo grep '^RCON_PASSWORD=' /root/unvanquished-credentials.txtRun an admin command with the unvanquished-query rcon helper, which reads the password from that file for you. The status command returns the live server console. The rcon-check command confirms that the correct password works and that a wrong one is rejected:
sudo unvanquished-query rcon statusYou can run any server console command this way. For example, change the map:
sudo unvanquished-query rcon "map station15"Step 7 - Connect players
Have players install the Unvanquished client from unvanquished.net/download, open the console (the ~ key) and connect to your VM:
connect <vm-public-ip>:27960Confirm that 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
The image contains no shared secret. 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/sac/data/unvanquished-firstboot.doneStep 9 - Customise the server
Edit the server configuration to change the map, server name or 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 unvanquishedJoining the game is public by default (empty g_password), as is normal for a dedicated game server. Set g_password to require a join password.
The 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 and 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 SecureAnyCloud image comes with 24/7 support, is patched at build time, and ships with unattended security updates enabled. For help with this image or your deployment, contact SecureAnyCloud support.
Deploy on Azure
Launch Unvanquished Server on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.
View this image
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com