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
Comments