Quacke

Quake III: Arena Server Manager Tool – UNRELEASED

This game is nearly as old as I am and the third-party tools designed for it are antiquated, abandoned, or just really really ugly.

This desktop tool makes it easy for new or experienced players to deploy, manage, and sync multiple VPS servers for your Quake III: Arena needs.

Enter your SSH credentials, configure your server settings, and click deploy. The application handles everything - generating configs, uploading maps, and syncing changes across all servers.

The burden of uploading necesarry content is taken care of in the cloud (Except your very legally obtained copy of pak0.pk3!), and map updates are pushed automatically through a community-managed repository of current and essential multiplayer maps. As the community benefits from your decision to host servers, you can benefit from a community effort to keep the mappool updated and relevant.

Built in C#.

Please enjoy this AI generated documentation.

Prerequisites

Before you begin, make sure you have:

📋 Required Items:

  • Windows PC running Quacke Server Manager
  • VPS (Virtual Private Server) running x64 Linux (Ubuntu/Debian recommended)
    • Root SSH access (hostname/IP, username, password)
    • Recommended: 1GB+ RAM, 10GB+ storage
  • Quake 3 Arena files: pak0.pk3 from your Quake 3 installation
  • Server executable: cnq3-server-x64 or ioq3ded.x86_64
  • CPMA mod files: z-cpma-pak1XX.pk3 (CPMA without maps)
  • Optional: map_cpm*.pk3 (CPMA maps pack)

Set Up Your First VPS Profile

Launch Quacke Server Manager

Open the application on your Windows PC.

Create a New VPS Profile

  1. Click “Add VPS” button

  2. Fill in the connection details:

    • Profile Name: A friendly name (e.g., “my-east-server”)
    • Hostname/IP: Your VPS IP address or domain
    • Username: Typically root
    • Password: Your VPS root password
    • Port: SSH port (default: 22)
  3. Click “Test Connection” to verify SSH access

  4. Click “Save” to create the profile

📝 Note: The profile is saved locally to /profiles/[profile-name]/ and contains a meta.json file with your connection settings.


Upload Core Game Files

Upload pak0.pk3

Step-by-Step:

  1. Navigate to your VPS profile in Quacke
  2. Go to the “Base Files” section
  3. Click “Upload pak0.pk3”
  4. Select your pak0.pk3 file from your local Quake 3 installation
  5. Quacke uploads it to /root/cpma/baseq3/pak0.pk3 on the VPS

What This Does:

The pak0.pk3 file contains the core Quake 3 Arena game assets including maps, textures, sounds, and models. This file is required and must come from a legitimate Quake 3 installation.

Upload CPMA Mod Files

  1. In the “Base Files” section
  2. Click “Upload CPMA Files”
  3. Select z-cpma-pak1XX.pk3 (the CPMA mod without maps)
  4. Quacke uploads it to /root/cpma/cpma/

Upload Map Pack (Optional)

If you have the CPMA maps pack:

  1. Click “Upload Map Pack”
  2. Select map_cpm*.pk3
  3. Uploaded to /root/cpma/baseq3/

Upload Server Executable

  1. Click “Upload Server Executable”
  2. Select your dedicated server binary:
    • CNQ3: cnq3-server-x64
    • ioquake3: ioq3ded.x86_64
  3. Quacke uploads it to /root/cpma/ and makes it executable

⚠️ Warning: Make sure you download the dedicated server version of the executable, not the client version. CNQ3 is recommended for modern CPMA servers.


Create Your First Server Instance

Add a New Server Instance

  1. Click “Add Server Instance” or “New Instance”
  2. Enter a name (e.g., “server_1”, “CTF-Main”)
  3. Click “Create”

📝 Note: This creates a local configuration file: /profiles/[profile-name]/[instance-name].json

Configure Basic Settings

Fill in the following essential settings:

Setting Description Example
Server Hostname Name players see in browser “My CPMA Server”
Max Players Maximum player count 16
Server Port Network port 27960
RCON Password Admin password (secure password)
Referee Password Referee privileges (optional)

💡 Tip: For multiple server instances, increment the port number (27961, 27962, etc.)

Configure Map Rotation

  1. Go to the “Map Pool” section
  2. Add maps one by one or import a list:
    • Click “Add Map”
    • Enter map name (e.g., cpm3a, cpm15)
    • Repeat for each map in rotation

The map rotation determines which maps cycle during gameplay.

Configure Game Mode Settings

Basic Settings:

  • Game Type: FFA, Team Deathmatch, CTF, CA (Clan Arena)
  • Frag Limit: Score needed to win (e.g., 50)
  • Time Limit: Match duration in minutes (e.g., 20)
  • Friendly Fire: On/Off

Popular Configurations:

Duel (1v1):

  • Game Type: Tournament
  • Frag Limit: 15-25
  • Time Limit: 10 minutes

FFA:

  • Game Type: Free For All
  • Frag Limit: 50
  • Time Limit: 20 minutes

CTF:

  • Game Type: Capture The Flag
  • Capture Limit: 8
  • Time Limit: 20 minutes

Advanced Settings (Optional)

Click “Advanced Settings” to customize additional server.cfg parameters:

Advanced Configuration Options
  • Vote settings
  • Weapon respawn times
  • Powerup settings
  • Server rates and network tuning
  • Anti-cheat options
  • Logging preferences

Configure Player Classes (Optional)

CPMA supports customizable player classes (Fighter, Scout, Sniper, Tank).

Edit Class Files

  1. Navigate to “Classes” section
  2. Select a class file (e.g., fighter.cfg)
  3. Edit health, armor, speed, and weapon loadouts
  4. Save changes

📝 Note: These files are uploaded to /root/cpma/cpma/ during deployment.


Deploy to Your VPS

Save Your Profile

  1. Click “Save Profile” to write all configuration changes to disk
  2. Verify settings in the GUI before deploying

Deploy

Deployment Process:

Click Deploy  Generate Configs  Generate Scripts  Upload Files  Set Permissions  Complete
  1. Click “Deploy” button

  2. Quacke performs the following:

    • Generates quacke_[instance-name].cfg based on your settings
    • Generates shell scripts:
      • start_server_[instance-name].sh
      • stop_server_[instance-name].sh
      • restart_server_[instance-name].sh
    • Uploads all generated files to /root/cpma/
    • Uploads class configs to /root/cpma/cpma/
    • Uploads maps (if new or changed)
  3. Deployment is complete when you see success confirmation


Start Your Server

Launch the Server Instance

Option A: From Quacke GUI

  1. Select your instance from the dropdown
  2. Click “Start Server”
  3. Quacke executes /root/cpma/start_server_[name].sh via SSH

Option B: Manually via SSH

cd /root/cpma
./start_server_server_1.sh

Verify Server Is Running

Check running servers:

cd /root/cpma
./list_running_servers.sh

✅ Success: You should see output showing:

  • Process ID (PID)
  • Server command
  • Uptime
  • CPU/memory usage

Attach to Screen Session

To view live server console output:

screen -r q1

💡 Tip:

  • q1 is the default screen session name for the first server
  • q2, q3, etc. for additional instances
  • Press Ctrl+A then D to detach without stopping the server

Test Your Server

Connect from Quake 3 Client

  1. Launch Quake 3 Arena with CPMA mod
  2. Open console (press ~)
  3. Type: /connect [your-vps-ip]:27960
  4. Press Enter

✅ Success: You should connect to your server and see the first map loading.

Test RCON Access

From in-game console:

/rconpassword [your-rcon-password]
/rcon status

You should see a list of connected players and server info.

Test Map Rotation

Play through a map or force map change:

/rcon map cpm15

The server should switch to the next map in your rotation.


Managing Your Server

Stop the Server

From Quacke GUI: Click “Stop Server”

Manually via SSH:

cd /root/cpma
./stop_server_server_1.sh

Restart the Server

From Quacke GUI: Click “Restart Server”

Manually via SSH:

cd /root/cpma
./restart_server_server_1.sh

Update Configuration

When you need to change settings:

Edit in GUI → Save Profile → Deploy → Restart Server → Changes Applied

Add More Server Instances (Optional)

To host multiple game modes or maps simultaneously:

Create Additional Instances

  1. Click “Add Server Instance”
  2. Name it (e.g., “server_2”, “Instagib”)
  3. Configure with different settings:
    • Different port (e.g., 27961, 27962)
    • Different game mode
    • Different map pool

Deploy All Instances

  1. Save all instance configurations
  2. Click “Deploy” (uploads configs for all instances)
  3. Start each instance individually

📝 Note: Each instance runs in its own screen session (q1, q2, q3, etc.) and can be managed independently.


Troubleshooting

Server Won't Start

Check screen sessions:

screen -ls

View server logs:

screen -r q1

Look for error messages about missing files or configuration issues.

Can't Connect to Server
  • Verify server is running: ./list_running_servers.sh
  • Check firewall allows UDP traffic on your server port (27960)
  • Ensure VPS has proper network configuration
  • Test with: /connect [ip]:[port] from Quake 3 console
Maps Won't Load
  • Ensure pak0.pk3 is uploaded to /root/cpma/baseq3/
  • Verify map pack map_cpm*.pk3 is uploaded
  • Check map names in rotation match available maps exactly
Permission Denied Errors

Make server executable:

chmod +x /root/cpma/cnq3-server-x64
chmod +x /root/cpma/*.sh

Next Steps

✅ Congratulations! Your CPMA server is now running.

Now you can:

  • Customize further: Explore advanced settings and weapon configs
  • Monitor performance: Use list_running_servers.sh regularly
  • Add admins: Share RCON password with trusted admins
  • Promote your server: Share IP with the CPMA community
  • Set up multiple instances: Host different game modes simultaneously

Reference: Final Directory Structure

VPS Directory Structure

After complete setup, your VPS should look like:

/root/cpma/
├── baseq3/
│   ├── pak0.pk3                    # id's Quake 3 assets
│   └── map_cpm*.pk3                # CPMA maps
├── cpma/
│   ├── z-cpma-pak1XX.pk3          # CPMA mod files
│   ├── quacke_server_1.cfg        # Generated config
│   ├── fighter.cfg                 # Class configs
│   ├── scout.cfg
│   ├── sniper.cfg
│   └── tank.cfg
├── cnq3-server-x64                 # Server executable
├── start_server_server_1.sh        # Start script
├── stop_server_server_1.sh         # Stop script
├── restart_server_server_1.sh      # Restart script
└── list_running_servers.sh         # Status script
Local Quacke Profile Structure

Your local Quacke profile folder:

/profiles/my-east-server/
├── meta.json                       # VPS connection settings
├── server_1.json                   # Instance config
└── server_2.json                   # Additional instances

💡 Need Help? Check the Troubleshooting Guide or join the CPMA community Discord for support.