Call-of-Duty 4 Server einrichten
Diese Anleitung setzt vorraus, dass ein lauffähiges Linux mit den neusten Updates vorhanden als Server vorhanden ist. Siehe dazu auch Vorbereitungen für den Gameserverbetrieb. Außerdem wird noch entweder die Installations-DVD oder eine Installation von Call of Duty 4 gebraucht.
Inhaltsverzeichnis
Vorbereitungen
Zuerst lege ich einen neuen Benutzer für den Callofduty4-Server an und installier wget (falls es nocht nicht installiert ist)
# useradd -m callofduty4
Centos:
yum install -y wget
Debian:
aptitude install wget
Hochladen der Spieldateien und der Serverfiles
Als nächstes müssen die Ordner main und zone von der Installations-DVD oder deiner lokalen Installation hochgeladen werden.
Sollte der SSH/SFTP-Login mit root klappen (Standard), kann man die dateien gleich nach /home/callofduty4 laden, ich habe in der sshd_config PermitRootLogin no, daher lade ich sie erst in mein Homeverzeichnis und verschiebe sie dann. Bitte plane für den Upload genügend Zeit ein, denn der Upload von mehreren Gigabytes (bei mir waren es 6,4GB) von zu Hause aus wird wahrscheinlich etwas länger dauern.
Wer die Dateien gleich in den richtigen Ordner hochgeladen hat, kann mit dem nächsten Schritt fortfahren, ansonsten müssen die Spieldateien noch ins richtige Verzeichnis:
# mv /home/benutzername/temp_cod4/* /home/callofduty4/
Nun müssen die Serverfiles gesucht (am einfachsten geht es, wenn du in Google cod4-linux-server-06282008.tar.bz2 eingibst) und heruntergeladen werden:
# wget http://server/pfad/cod4-linux-server-06282008.tar.bz2
und gleich noch entpacken:
# tar xvfj cod4-linux-server-06282008.tar.bz2
Da die gepackten Serverfiles nicht mehr benötigt werden, werden sie von mir gelöscht:
# rm -f cod4-linux-server-06282008.tar.bz2
Die entpackten Serverfiles müssen jetzt zu den hochgeladenen Spieldateien, der Ordner cod4-linux-server wird nicht mehr benötigt, deswegen löschen wir ihn:
# cp -r -f cod4-linux-server/* /home/callofduty4/ # rm -rf cod4-linux-server
Nun ändere ich den Eigentümer der Serverfiles, denn ich will den Gameserver nicht als root laufen lassen.
# chown -R callofduty4:callofduty4 /home/callofduty4
Dann noch Benutzer wechseln und ins Homeverzeichnis vom Benutzer callofduty4 gehen:
# su callofduty4 $ cd /home/callofduty4
Punkbuster einrichten
Gegen die Cheater installieren wir noch Punkbuster:
$ ./pbsetup.run -e
Man wird gefragt ob man die EULA akzeptiert, ich akzeptiere diese, deswegen bestätige ich mit y. Als nächstes fügen wir Call of Duty 4 zu Punkbuster hinzu:
$ ./pbsetup.run --add-game=cod4 --add-game-path=/home/callofduty4 pbsetup v2.0 Do you agree to the PunkBuster EULA? (Y/N):
Wir bestätigen nochmals mit y
y Game Added! cod4 (/home/callofduty4/)
Nun muss Punkbuster noch aktualisiert werden, es muss nochmal die EULA akzeptiert werden.
Falls bei euch folgender Fehler auftritt:
**ERROR: Downloading a global config file failed for the following reason: Couldn't resolve host 'websec2.evenbalance.com'
Ihr gebt in eure Konsole
ping -c 1 websec2.evenbalance.com
ein, notiert euch die IP, und fügt einen entsprechenden Eintrag für websec2.evenbalance.com in eure /etc/hosts ein. macht einen ping auf websec2.evenbalance.com, notiert euch die IP und fügt die IP zusammen mit websec2.evenbalance.com in die /etc/hosts ein.
Konfigurieren und Starten
Für die Konfiguration erstelle ich eine Datei /home/callofduty4/main/server.cfg.
Beispielkonfiguration: http://www.wiki.netcup.de/images/Cod4-server.txt
Folgende Stellen müssen unbedingt angepasst werden:
sets sv_hostname "DeinHostName hier"
Wie dein Server heißen soll, so wird er dann auch in Clients wie HLSW etc angezeigt.
set net_ip "your.public.ip.here"
Die IP deines Servers (WICHTIG!)
set rcon_password "geheimnis" set sv_privatePassword "undnocheingeheimis"
RCON-Passwort: Damit kannst du während dem Spiel Spieler kicken/bannen und auch Einstellungen ändern, welche aber nach einem Neustart des Servers verloren gehen Private-Passwort: Sollte dein Server voll sein und du mit set sv_privateclients dir Slots offengehalten hast, kannst du so auf deinem Server spielen, obwohl alle "normalen" Slots belegt sind.
set sv_maxclients "12" // MAX server player slots, this is TOTAL player slots
Maximale Anzahl an Spielern auf deinem Server incl. privaten Clients
set sv_privateclients "3" // Number of private player slots, maxclients - privateclients = public slots
Anzahl an privaten, reservierten Slots.
Der Bequemlichkeit wegen erstelle ich noch ein kleines Startskript, welches ich start.sh nenne und in /home/callofduty4/start.sh speichere:
echo "./cod4_lnxded +exec server.cfg +set loc_language 2 +map_rotate" > /home/callofduty4/start.sh
Zum Starten des Servers einfach als user callofduty4 folgendes eingeben:
$ sh start.sh
Wenn du willst, dass der Server weiterläuft, wenn du die SSH-Session beendest, starte den CoD4-Server einfach in einer screen-session ;).
Verbinden
Nun solltest du dich auf den Server verbinden können, indem du im Spiel (Client) in der Konsole
connect 12.34.56.789:28960
eingibst. Solltest du eine Domain auf deinen Server geschaltet und den Port nicht verändert haben, kannst du auch
connect domain.tld
in die Konsole eintippen.
Folgende Ports müssen geöffnet werden:
UDP 28960
UDP 20800
UDP 20810
Eingesendet von Dominik F.