| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | AB | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | ||||||||||||||||||||||||||||
2 | Setup a QSSM Linux Dedicated Server (exabytes.com in Denver, CO) | |||||||||||||||||||||||||||
3 | ||||||||||||||||||||||||||||
4 | instruction | https://www.exabytes.com/hosting/vps-hosting | ||||||||||||||||||||||||||
5 | instruction | Pay: Linux SSD VPS 1 (Ubuntu 16.04) | ||||||||||||||||||||||||||
6 | instruction | Email from exabytes: "Linux SSD VPS Starter Account Details", Find SSH IP and SSH Port | ||||||||||||||||||||||||||
7 | instruction | SSH login via putty | ||||||||||||||||||||||||||
8 | ||||||||||||||||||||||||||||
9 | command | apt update | ||||||||||||||||||||||||||
10 | command | apt upgrade | ||||||||||||||||||||||||||
11 | command | sudo dpkg --configure -a | ||||||||||||||||||||||||||
12 | command | sudo reboot | ||||||||||||||||||||||||||
13 | command | sudo do-release-upgrade | three upgrades to 18.04, then 20.04, then 22.04 -- end at Ubuntu 22.04.1 LTS | |||||||||||||||||||||||||
14 | command | lsb_release -a | check ubuntu version | |||||||||||||||||||||||||
15 | command | sudo apt install vsftpd | install FTP to upload files | |||||||||||||||||||||||||
16 | command | sudo timedatectl set-timezone America/Los_Angeles | set local time to a location to yours or servers | |||||||||||||||||||||||||
17 | command | date | check date / time | |||||||||||||||||||||||||
18 | command | sudo systemctl start vsftpd | ||||||||||||||||||||||||||
19 | command | sudo systemctl enable vsftpd | ||||||||||||||||||||||||||
20 | command | sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig | back up the original config | |||||||||||||||||||||||||
21 | command | sudo nano /etc/vsftpd.conf | enable write access write_enable=YES | |||||||||||||||||||||||||
22 | command | sudo systemctl restart vsftpd | ||||||||||||||||||||||||||
23 | command | adduser woods | set a password: | |||||||||||||||||||||||||
24 | command | usermod -aG sudo woods | add woods to admin group | |||||||||||||||||||||||||
25 | command | sudo apt-get install build-essential | ||||||||||||||||||||||||||
26 | command | sudo apt install git -y | install git | |||||||||||||||||||||||||
27 | sudo apt install curl | |||||||||||||||||||||||||||
28 | command | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | install homebrew | |||||||||||||||||||||||||
29 | command | eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | add Homebrew to your PATH | |||||||||||||||||||||||||
30 | command | brew doctor | check Brew is working fine | |||||||||||||||||||||||||
31 | command | sudo apt-get install libsdl2-2.0 | ||||||||||||||||||||||||||
32 | command | sudo apt install screen | ||||||||||||||||||||||||||
33 | command | brew install sdl2 | latest sdl2 2.26.x, apt doesn't have latest. sdl2 required to run qss) -- this takes ~20 min | |||||||||||||||||||||||||
34 | command | sudo apt-get install -y libgl1-mesa-glx | ||||||||||||||||||||||||||
35 | command | sudo apt-get install libopusfile0 | ||||||||||||||||||||||||||
36 | command | sudo apt-get install libvorbisfile3 | ||||||||||||||||||||||||||
37 | command | sudo apt-get install libmad0 | ||||||||||||||||||||||||||
38 | instruction | upload QSS-M files via FTP to /home/woods/qssm | ||||||||||||||||||||||||||
39 | command | sudo chmod 755 QSS-M-l64 | set permissions for binary | |||||||||||||||||||||||||
40 | ||||||||||||||||||||||||||||
41 | Running CRx Mod In QSS-M | |||||||||||||||||||||||||||
42 | ||||||||||||||||||||||||||||
43 | instruction | download CRx | https://github.com/quakeone/CRx | |||||||||||||||||||||||||
44 | instruction | edit server.cfg, configs, motd.qc then compile progs.dat using fteqcc | customize to your liking | |||||||||||||||||||||||||
45 | instruction | upload CRx files via FTP to /home/woods/qssm/id1 | progs.dat, server.cfg, configs folder, maps | |||||||||||||||||||||||||
46 | command | screen -S qssm26001 | create a screen named "qssm26001" to keep server running in background | |||||||||||||||||||||||||
47 | command | ./QSS-M-l64 -dedicated -port 26001 -protocol 666 -condebug | other option for more info: +developer 1 | |||||||||||||||||||||||||
48 | command | ctrl+a ctrl+d | detatch the screen | |||||||||||||||||||||||||
49 | command | screen -r qssm26001 | resume the screen | |||||||||||||||||||||||||
50 | instruction | optional: contact to add to https://servers.quakeone.com/about | ||||||||||||||||||||||||||
51 | instruction | download ctf maps | https://www.quaddicted.com/files/mirrors/ftp.planetquake.com/threewave/ctf/client/ | |||||||||||||||||||||||||
52 | instruction | download more ctf maps | https://www.quaddicted.com/files/mirrors/ftp.planetquake.com/captured/loc/ | |||||||||||||||||||||||||
53 | instruction | download rocket arena maps | https://www.quaddicted.com/files/idgames2/planetquake/servers/arena/farena12.zip | |||||||||||||||||||||||||
54 | ||||||||||||||||||||||||||||
55 | Other Useful Commands | |||||||||||||||||||||||||||
56 | ||||||||||||||||||||||||||||
57 | killall screen | |||||||||||||||||||||||||||
58 | ||||||||||||||||||||||||||||
59 | ||||||||||||||||||||||||||||
60 | ||||||||||||||||||||||||||||
61 | ✅ QSS-M (QuakeSpasm Spiked Mod) Server | |||||||||||||||||||||||||||
62 | Single socket model: Uses one single UDP socket, typically on port 26000 or whatever you specify. | |||||||||||||||||||||||||||
63 | ||||||||||||||||||||||||||||
64 | Simplified port forwarding: You only need to forward one UDP port from your router (e.g. 26000) directly to the same port on your server. | |||||||||||||||||||||||||||
65 | ||||||||||||||||||||||||||||
66 | Client compatibility: Compatible with normal Quake clients (e.g., ProQuake, Mark V, FTE, DarkPlaces, etc.), no special client required. | |||||||||||||||||||||||||||
67 | ||||||||||||||||||||||||||||
68 | Better NAT handling: QSS-M handles client NAT traversal better, as it doesn’t rely on ephemeral ports. This means even players behind routers or firewalls should connect just fine. | |||||||||||||||||||||||||||
69 | ||||||||||||||||||||||||||||
70 | Identity-mapped NAT is ideal, but generally not an issue with typical home setups. | |||||||||||||||||||||||||||
71 | ||||||||||||||||||||||||||||
72 | ✅ Recommended for modern hosting, especially when dealing with port restrictions or NAT environments. | |||||||||||||||||||||||||||
73 | ||||||||||||||||||||||||||||
74 | ⚠️ ProQuake Server | |||||||||||||||||||||||||||
75 | Ephemeral ports required: In addition to the main port (e.g., 26000), ProQuake servers also use extra random UDP ports for communication. These must also be open for it to work fully, especially across NATs. | |||||||||||||||||||||||||||
76 | ||||||||||||||||||||||||||||
77 | Complicated port forwarding: Requires more than one port to be open on the server and forwarded correctly. This can cause issues when: | |||||||||||||||||||||||||||
78 | ||||||||||||||||||||||||||||
79 | Hosting from behind a NAT (typical home routers), | |||||||||||||||||||||||||||
80 | ||||||||||||||||||||||||||||
81 | Hosting on networks where only limited ports can be forwarded. | |||||||||||||||||||||||||||
82 | ||||||||||||||||||||||||||||
83 | Local connections may still work, but remote clients might fail unless all necessary ports are open and mapped. | |||||||||||||||||||||||||||
84 | ||||||||||||||||||||||||||||
85 | Workarounds: You’d need to either forward a range of UDP ports (which is messy) or use a server without NAT in front of it. | |||||||||||||||||||||||||||
86 | ||||||||||||||||||||||||||||
87 | ❌ Not ideal for NAT or restrictive network setups. | |||||||||||||||||||||||||||
88 | ||||||||||||||||||||||||||||
89 | ||||||||||||||||||||||||||||
90 | ||||||||||||||||||||||||||||
91 | ||||||||||||||||||||||||||||
92 | ||||||||||||||||||||||||||||
93 | ||||||||||||||||||||||||||||
94 | ||||||||||||||||||||||||||||
95 | ||||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||||
97 | ||||||||||||||||||||||||||||
98 | ||||||||||||||||||||||||||||
99 | ||||||||||||||||||||||||||||
100 |