Difference between revisions of "How to server"

From QWiki
*>Mushi
(40 intermediate revisions by 3 users not shown)
Line 2: Line 2:
 
<br /><br />
 
<br /><br />
  
'''The easiest way of running a server is installing [[nQuakesv]] package. [http://nquake.com/ webpage]'''<br /> It includes everything you need to start a server, including:<br />
+
'''The easiest way of running a server is installing [[nQuakesv]] package. [http://nquake.com/ webpage]''' Set the mouse cursor over the download button so you get a popup window and choose Windows or Linux server download.<br /> It includes everything you need to start a server, including:<br />
 
* Modern QuakeWorld server: [[MVDSV]] <br />
 
* Modern QuakeWorld server: [[MVDSV]] <br />
 
* Modern modification: [[ktx]]<br />
 
* Modern modification: [[ktx]]<br />
 +
* Optional: [[QuakeTV]], [[QWfwd]]
  
 
It is preconfigured, just asks the user simple questions to complete the configuration. Take note on the ports the servers will be running (you must know them to connect to the servers)<br />
 
It is preconfigured, just asks the user simple questions to complete the configuration. Take note on the ports the servers will be running (you must know them to connect to the servers)<br />
  
 
+
'''If for some reason you don't want to use nQuakesv, continue reading.'''
 +
<br /><br /><br />
 
== KTX Server Setup ==
 
== KTX Server Setup ==
If for some reason you need to upgrade KTX, you'll have to compile it. here's how to do it (using dimman's github)
+
If for some reason you need to upgrade KTX, you'll have to compile it. here's how to do it (using deurk's github)
<pre>1. git clone https://github.com/jite/ktx
+
<pre>1. git clone https://github.com/deurk/ktx
 
2. cd ktx
 
2. cd ktx
 
3. ./configure
 
3. ./configure
Line 20: Line 22:
 
When restarting the server, if it outputs a message about failing to load qwprogs.so you'll have to recompile mvdsv also.<br />
 
When restarting the server, if it outputs a message about failing to load qwprogs.so you'll have to recompile mvdsv also.<br />
 
If you haven't done it already, you should edit pwd.cfg and change the rcon password. You should also edit portX.cfg and change the sv_serverip to the external (WAN) ip:port of the machine.
 
If you haven't done it already, you should edit pwd.cfg and change the rcon password. You should also edit portX.cfg and change the sv_serverip to the external (WAN) ip:port of the machine.
 
  
 
== MVDSV Setup ==
 
== MVDSV Setup ==
Compiling MVDSV (using dimman's github):
+
Compiling MVDSV (using deurk's github):
<pre>1. git clone https://github.com/jite/mvdsv
+
<pre>1. git clone https://github.com/deurk/mvdsv
 
2. cd mvdsv/build/make/
 
2. cd mvdsv/build/make/
 
3. ./configure
 
3. ./configure
Line 34: Line 35:
 
./mvdsv -port 27500 -game prox +exec qw_server.cfg
 
./mvdsv -port 27500 -game prox +exec qw_server.cfg
 
./mvdsv -port 27501 -game ktx +exec port1.cfg</pre>
 
./mvdsv -port 27501 -game ktx +exec port1.cfg</pre>
 +
 
== Firewall Configuration ==
 
== Firewall Configuration ==
 
''iptables -A PREROUTING -t nat -p udp -i eth1 --dport 27500 -j DNAT --to 192.168.0.1:27500''
 
''iptables -A PREROUTING -t nat -p udp -i eth1 --dport 27500 -j DNAT --to 192.168.0.1:27500''
  
 
== Raspberry Pi server ==
 
== Raspberry Pi server ==
[[eb]] compiled mvdsv and ktx binaries for Raspberry Pi. <br />
+
[[eb]] compiled mvdsv and ktx binaries for Raspberry Pi. Download them from [https://mega.nz/#!q5Y2FYrQ!BxHv40BeIzkPMw0T0LAZD16ll0xaYliNaptE-LJIII0 here]
Download the raspberry pi binaries from [https://mega.co.nz/#!mhY3DIjJ!BxHv40BeIzkPMw0T0LAZD16ll0xaYliNaptE-LJIII0 here]
 
 
<br />
 
<br />
Test results: <br />
+
[[Spike]] also compiled binaries for [[FTE]], both client and server. Download them from [https://mega.co.nz/#!ykhhjbTD!C6EoEjmykfQ5FJrrNFml-GlkFaJ23c8iPN9Ekqm_YxY here]<br>
 +
Also [[QWfwd]] -> * [https://mega.co.nz/#!S8RliDga!LTznxkiWja-qOcTfsteagpiK-oA3gsrL7JhJqmtC-hM Raspberry pi qwfwd binaries download]
 +
 
 +
Test results on a raspberry 1, 512mb ram: <br />
 
- with 7 players + 1 spec, cpu usage was around 80% with everyone spamming sng at dm3 outside <br>
 
- with 7 players + 1 spec, cpu usage was around 80% with everyone spamming sng at dm3 outside <br>
 
- in conclusion it will be enough for 2on2, not sure on a competitive 4on4 match. <br>
 
- in conclusion it will be enough for 2on2, not sure on a competitive 4on4 match. <br>
<br />
+
- raspberry pi 2 should be enough for 4on4<br>
[[Spike]] also compiled binaries for [[FTE]], both client and server. Download them from [https://mega.co.nz/#!ykhhjbTD!C6EoEjmykfQ5FJrrNFml-GlkFaJ23c8iPN9Ekqm_YxY here]<br>
 
There are also QWFwd -> * [https://mega.co.nz/#!S8RliDga!LTznxkiWja-qOcTfsteagpiK-oA3gsrL7JhJqmtC-hM Raspberry pi qwfwd binaries download]
 
  
 
== Qizmo ==
 
== Qizmo ==
Even though Qizmo was created in 1997, it STILL is useful to lower a player packetloss. To install qizmo:
+
Even though Qizmo was created in 1997, it STILL is useful to:
 +
  -> Nail filter: Run on a server-side Qizmo, this can help with both the network and FPS lag associated with a lot of nailgun activity (think about 4on4 on e1m2).
 +
  -> Compression: Yes, people still have low bandwidth connections and compression does help with this.
 +
  -> Sending Multiple Packets: This is probably the most important one. With this feature alone you can lower and in some cases eliminate packet loss.
 +
 
 +
=== Installation ===
 +
To install qizmo (LINUX!):
 
<pre>mkdir qizmo && cd qizmo
 
<pre>mkdir qizmo && cd qizmo
 
wget https://www.quaddicted.com/files/tools/qizmo-2.91-intel-linux-glibc.tar.gz
 
wget https://www.quaddicted.com/files/tools/qizmo-2.91-intel-linux-glibc.tar.gz
 
tar -xvf qizmo-2.91-intel-linux-glibc.tar.gz
 
tar -xvf qizmo-2.91-intel-linux-glibc.tar.gz
 
chmod +x qizmo </pre>
 
chmod +x qizmo </pre>
You'll need a qizmo.cfg. It is generated the first time you use. Here's an example:
+
 
 +
alternative url to download: ftp://62.8.228.163/pub/games/quakeworld/qizmo-2.91-intel-linux-glibc.tar.gz
 +
 
 +
=== Recommended configuration files ===
 +
These are up to date server configuration files as of 2020.
 +
==== filters.txt ====
 +
<pre>
 +
not empty
 +
10  if players = "0" remove
 +
 
 +
not full
 +
10  if players = maxplayers remove
 +
 
 +
ping less than 100
 +
10  if ping >= "100" remove
 +
 
 +
ping less than 50
 +
10  if ping >= "50" remove
 +
 
 +
QWfwd (proxy)
 +
10  if hostname ~!= "*qwfwd*" remove
 +
 
 +
not QWfwd (proxy)
 +
10  if hostname ~= "*qwfwd*" remove
 +
20  if hostname ~= "*qizmo*" remove
 +
 
 +
Qizmo
 +
10  if hostname ~!= "*Qizmo*" remove
 +
 
 +
Capture the Flag
 +
10  if gamedir ~!= "ctf" remove
 +
 
 +
Team Fortress
 +
10  if gamedir ~!= "fortress" remove
 +
 
 +
Rocket Arena
 +
10  if gamedir ~!= "*arena" remove
 +
 
 +
Cooperative
 +
10  if hostname ~!= "*coop*" remove
 +
 
 +
Race
 +
10  if hostname ~!= "*race*" remove
 +
</pre>
 +
 
 +
==== qizmo.cfg ====
 +
qizmo.cfg is generated the first time you use. so you might want to run qizmo first, and then edit the file. The changes you made in the generic menus (once you insert the password) are saved here.
 +
Here's an example:
 
<pre>
 
<pre>
 
maxclients 32
 
maxclients 32
Line 61: Line 116:
 
hostname Qizmo - ie.besmella.com
 
hostname Qizmo - ie.besmella.com
 
public 1
 
public 1
quakedir ./
+
quakedir ./ //if qizmo binary is in the same folder as Quake
 
maxs2crepeat 5
 
maxs2crepeat 5
 
</pre>
 
</pre>
Change name and hostname for your own. Notice that public is 1. Then you'll just have to run it. Try to run it with ./qizmo <br>
+
Change name and hostname for your own. Notice that ''public'' is 1.
If it doesn't run, its a dependency problem. Try to install the libraries ''ia32-libs'' or ''libc6-i386'' and then try again. The following steps are optional.<br>
+
 
you can edit ''sources.txt'' and remove all the lines there, and add:
+
==== sources.txt ====
<pre>master "quakeservers.net" master.quakeservers.net:27000 2
+
Editing server sources  is important because it will allow the clients to ping the quakeworld servers and connect to them.
master "FodQuake" qwmaster.fodquake.net:27000 2
+
The file sources.txt should have the following lines (you can remove everything else):
 +
<pre>
 +
master "QuakeServers.net" 78.47.113.68:27000 2
 +
master "FodQuake" 5.9.97.180:27000 2
 
</pre>
 
</pre>
Here's an example script you can use to run it (default port - 27500):
+
The explanation for those lines are:<br>
 +
<pre>master <name of the master> <ip:port> <password protection></pre>
 +
'''Notes:'''
 +
*<ip> MUST BE IP, hostname doesn't work;
 +
*<password protection> possible values: 0: none ; 1: protect delete; 2: protect delete/add; 3: protect delete/add/read
 +
<br>
 +
 
 +
=== Starting Qizmo ===
 +
Starting qizmo (with the following settings: port 28000, report to masterservers, admin password set to passwd)
 +
<pre>
 +
./qizmo -p 28000 -r -a passwd
 +
</pre>
 +
 
 +
Here's an example script you can use to run it (or just run a screen):
 
<pre>
 
<pre>
 
echo -n "* Starting qizmo... "
 
echo -n "* Starting qizmo... "
Line 77: Line 148:
 
echo "[ALREADY RUNNING]"
 
echo "[ALREADY RUNNING]"
 
else
 
else
./qizmo > /dev/null &
+
./qizmo -p 28000 -r  -a passwd > /dev/null &
 
echo "[OK]"
 
echo "[OK]"
 
fi
 
fi
 
</pre>
 
</pre>
  
 +
=== Troubleshooting ===
 +
Dependencies: try to get the library lib32z1
 +
<pre>apt-get install lib32z1
 +
</pre>
 +
if that doesn't work, try these:  ''ia32-libs'' or ''libc6-i386'' or ''libc6-dev-i386'' <br />
 +
For the server admins that run Qizmo(s) and when they refuse to start. You can use the following command in the shell (linux) to clear the queue without needing to restart/reboot the whole machine.
 +
<pre>ipcs -q | cut -d" " -f2 | xargs -n 1 ipcrm -q</pre>
  
 +
=== more info ===
 +
refer to the qizmo.html page below.
  
 +
== External links ==
 +
* [http://www.nisda.net/files/qizmo291.zip Qizmo download] (unofficial)
 +
* [https://docs.google.com/document/d/1GITmaQoa_ze0b6HbQvnW_wrnclnztcAbv--5n1uBb2w/edit?usp=sharing  index.htm page from qizmo]
 +
* [https://drive.google.com/file/d/0B0fC6_bVPTdlb0FMVGEtQ0laMGc/view?usp=sharing Qizmo stuff]
 +
* [[Qizmo]] main page
 
[[Category:Tutorials]]
 
[[Category:Tutorials]]

Revision as of 14:35, 11 August 2020

This page describes how to setup a QuakeWorld server.

The easiest way of running a server is installing nQuakesv package. webpage Set the mouse cursor over the download button so you get a popup window and choose Windows or Linux server download.
It includes everything you need to start a server, including:

It is preconfigured, just asks the user simple questions to complete the configuration. Take note on the ports the servers will be running (you must know them to connect to the servers)

If for some reason you don't want to use nQuakesv, continue reading.


KTX Server Setup

If for some reason you need to upgrade KTX, you'll have to compile it. here's how to do it (using deurk's github)

1. git clone https://github.com/deurk/ktx
2. cd ktx
3. ./configure
4. make dl
5. ls -altr (look for qwprogs.so)
6. copy qwprogs.so to ktx/ folder
7. restart the server

When restarting the server, if it outputs a message about failing to load qwprogs.so you'll have to recompile mvdsv also.
If you haven't done it already, you should edit pwd.cfg and change the rcon password. You should also edit portX.cfg and change the sv_serverip to the external (WAN) ip:port of the machine.

MVDSV Setup

Compiling MVDSV (using deurk's github):

1. git clone https://github.com/deurk/mvdsv
2. cd mvdsv/build/make/
3. ./configure
4. make
5. chmod 755 mvdsv
6. copy mvdsv to your quake/ folder

Then run it. it has several command line parameters, such as -port (to choose port) -game (to choose folder) and +exec (to automatically run a cfg and +set sv_getrealip ). Example mvdsv execution commands:

./mvdsv -port 27502 -game ctf +set sv_getrealip 1
./mvdsv -port 27500 -game prox +exec qw_server.cfg
./mvdsv -port 27501 -game ktx +exec port1.cfg

Firewall Configuration

iptables -A PREROUTING -t nat -p udp -i eth1 --dport 27500 -j DNAT --to 192.168.0.1:27500

Raspberry Pi server

eb compiled mvdsv and ktx binaries for Raspberry Pi. Download them from here
Spike also compiled binaries for FTE, both client and server. Download them from here
Also QWfwd -> * Raspberry pi qwfwd binaries download

Test results on a raspberry 1, 512mb ram:
- with 7 players + 1 spec, cpu usage was around 80% with everyone spamming sng at dm3 outside
- in conclusion it will be enough for 2on2, not sure on a competitive 4on4 match.
- raspberry pi 2 should be enough for 4on4

Qizmo

Even though Qizmo was created in 1997, it STILL is useful to:

  -> Nail filter: Run on a server-side Qizmo, this can help with both the network and FPS lag associated with a lot of nailgun activity (think about 4on4 on e1m2).
  -> Compression: Yes, people still have low bandwidth connections and compression does help with this.
  -> Sending Multiple Packets: This is probably the most important one. With this feature alone you can lower and in some cases eliminate packet loss.

Installation

To install qizmo (LINUX!):

mkdir qizmo && cd qizmo
wget https://www.quaddicted.com/files/tools/qizmo-2.91-intel-linux-glibc.tar.gz
tar -xvf qizmo-2.91-intel-linux-glibc.tar.gz
chmod +x qizmo 

alternative url to download: ftp://62.8.228.163/pub/games/quakeworld/qizmo-2.91-intel-linux-glibc.tar.gz

Recommended configuration files

These are up to date server configuration files as of 2020.

filters.txt

not empty
10   if players = "0" remove

not full
10   if players = maxplayers remove

ping less than 100
10   if ping >= "100" remove

ping less than 50
10   if ping >= "50" remove

QWfwd (proxy)
10   if hostname ~!= "*qwfwd*" remove

not QWfwd (proxy)
10   if hostname ~= "*qwfwd*" remove
20   if hostname ~= "*qizmo*" remove

Qizmo
10   if hostname ~!= "*Qizmo*" remove

Capture the Flag
10   if gamedir ~!= "ctf" remove

Team Fortress
10   if gamedir ~!= "fortress" remove

Rocket Arena
10   if gamedir ~!= "*arena" remove

Cooperative
10   if hostname ~!= "*coop*" remove

Race
10   if hostname ~!= "*race*" remove

qizmo.cfg

qizmo.cfg is generated the first time you use. so you might want to run qizmo first, and then edit the file. The changes you made in the generic menus (once you insert the password) are saved here. Here's an example:

maxclients 32
browser_a 100 20 1.000000 2.000000
name ie.besmella.com
hostname Qizmo - ie.besmella.com
public 1
quakedir ./ //if qizmo binary is in the same folder as Quake
maxs2crepeat 5

Change name and hostname for your own. Notice that public is 1.

sources.txt

Editing server sources is important because it will allow the clients to ping the quakeworld servers and connect to them. The file sources.txt should have the following lines (you can remove everything else):

master "QuakeServers.net" 78.47.113.68:27000 2
master "FodQuake" 5.9.97.180:27000 2

The explanation for those lines are:

master <name of the master> <ip:port> <password protection>

Notes:

  • <ip> MUST BE IP, hostname doesn't work;
  • <password protection> possible values: 0: none ; 1: protect delete; 2: protect delete/add; 3: protect delete/add/read


Starting Qizmo

Starting qizmo (with the following settings: port 28000, report to masterservers, admin password set to passwd)

./qizmo -p 28000 -r -a passwd

Here's an example script you can use to run it (or just run a screen):

echo -n "* Starting qizmo... "
if ps ax | grep -v grep | grep "qizmo" > /dev/null
then
echo "[ALREADY RUNNING]"
else
./qizmo -p 28000 -r  -a passwd > /dev/null &
echo "[OK]"
fi

Troubleshooting

Dependencies: try to get the library lib32z1

apt-get install lib32z1

if that doesn't work, try these: ia32-libs or libc6-i386 or libc6-dev-i386
For the server admins that run Qizmo(s) and when they refuse to start. You can use the following command in the shell (linux) to clear the queue without needing to restart/reboot the whole machine.

ipcs -q | cut -d" " -f2 | xargs -n 1 ipcrm -q

more info

refer to the qizmo.html page below.

External links