How to Set Up a Quake (DarkPlaces) Server on a VPS
This guide will help you host your own Quake server using the DarkPlaces engine (e.g., Zircon) on a Linux VPS , and manage it with PM2 , a powerful process manager.
✅ Requirements
A Linux-based VPS (Ubuntu/Debian preferred
Access via SSH
Your Quake game files (at least the id1 folder)
The server executable (e.g., zircon_beta_linux_dedicated_server )
1. Connect to Your VPS
Use any SSH client like PuTTY or terminal:
ssh username@your_vps_ip
2. Create Server Directory
mkdir quake
cd quake
3. Upload Game Files
Transfer your id1 folder (containing pak0.pak and pak1.pak ) to the quake directory using scp , SFTP, or any file manager.
Example (from your local machine):
scp -r id1 username@your_vps_ip:/home/youruser/quake/
4. Upload the Server Executable
Copy your DarkPlaces server binary (e.g., zircon_beta_linux_dedicated_server ) into the quake directory.
Make it executable:
chmod +x ./zircon_beta_linux_dedicated_server
5. Install Node.js and PM2
Install Node Version Manager and PM2 :
sudo apt update
sudo apt install npm -y
sudo npm install -g n
sudo n stable
sudo npm install pm2@latest -g
pm2 startup
6. Setup PM2 Log Rotation
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 1G
pm2 set pm2-logrotate:compress true pm2 set pm2-logrotate:rotateInterval '0 * * * *'
7. Create autoexec.cfg (Optional but Recommended)
Inside quake/id1/autoexec.cfg , add your server CVARs:
hostname "My Quake COOP Server"
sv_cheats 0
pausable 0
deathmatch 0
coop 1
skill 1
teamplay 1
rcon_password "YourPassword"
8. Start the Server with PM2
pm2 start "cd quake; ./zircon_beta_linux_dedicated_server -customgamename ModName -customgamenetworkfiltername ModName -dedicated 4 -nosound -nocdaudio +map start" --name quake_server
Replace ModName and other values as needed.
Optional Engine Parameters (start with -):
Parameter | Description |
---|---|
-game ModDir | Sets a custom mod folder for loading game files instead of id1. |
-customgamename ModName | Sets a custom game (mod) name. |
-customgamenetworkfiltername ModName | Sets the name used for filtering on network/server browsers (e.g., in a server list). |
-dedicated 4 | Sets the amount of player slots available. |
-nosound | Disables sound. Essential for servers (saves resources). |
-nocdaudio | Disables CD audio playback (usually not needed or even available on servers). |
Optional CVARs (start with +):
CVAR | Description |
---|---|
+hostname COOP | Sets the name of the server that appears in server browsers. |
+sys_ticrate 0.02 | Controls how often the server ticks (updates). 0.02 = 50 updates/sec (20ms). Lower is faster but uses more CPU. |
+net_usesizelimit 0 | Disables network packet size limits. Useful for mods or large maps, but may increase bandwidth usage. |
+sv_cheats 0 | Disables cheat commands. Set to 1 if you want to allow cheat use (e.g., noclip, god). |
+pausable 0 | Disables the ability to pause the game (useful for multiplayer servers). |
+rcon_password YourPassword | Sets the RCON password (remote admin access). Change this to something secure! |
+deathmatch 0 | Disables deathmatch mode. Set to 1 for PvP-style free-for-all. |
+coop 1 | Enables cooperative mode (team PvE, usually for campaign maps). |
+skill 1 | Sets game difficulty. Values: • 0 = Easy • 1 = Normal • 2 = Hard • 3 = Nightmare |
+teamplay 1 | Enables teamplay rules (e.g., friendly fire, team scoring). Useful for co-op. |
+map start | Loads the specified map at server startup. Here, it loads the start map (the Quake episode hub). |
9. Check Server Status
pm2 status
10. Save PM2 Process List
pm2 save
✅ Tips:
- Use pm2 attach 0 to access server console (0 is the process index shown in pm2 status)
Use pm2 restart quake_server to restart your server.
Use pm2 logs to view logs.
Use pm2 stop quake_server to stop it.
Tags: darkplaces, vps, server