
HLstatsX installieren & verbinden
Diese Anleitung zeigt dir Schritt für Schritt, wie du HLstatsX (Community Edition) auf einem Linux-Server installierst und mit einem Half-Life-/Source-Gameserver (z.B. Counter-Strike: Source, Team Fortress 2) verbindest, um Spielerstatistiken automatisch zu erfassen.
- Betriebssystem
- Ubuntu Server 24.04 LTS
- Schwierigkeit
- Fortgeschritten
- Dauer
- ca. 30–45 Minuten
- Zugriff
- Root/sudo erforderlich
Voraussetzungen
Voraussetzungen
- Ubuntu Server 24.04 LTS (oder vergleichbare Distribution)
- Root- oder sudo-Zugriff
- Eigene Domain oder Subdomain für das Webinterface
- Ein oder mehrere laufende Half-Life-/Source-Gameserver (z.B. CS:S, TF2)
- Ports 80/443 (Webinterface) sowie UDP-Port für den Log-Empfang erreichbar
HLstatsX (Community Edition) unterstützt klassische Half-Life-Engine- und Source-Engine-Spiele — u.a. Counter-Strike: Source und Team Fortress 2, die auch auf unseren eigenen Servern laufen.
Server vorbereiten
Aktualisiere zunächst das Betriebssystem und installiere vorhandene Sicherheits- und Paketupdates.
sudo apt update
sudo apt upgrade -y
sudo apt autoremove -yFirewall konfigurieren
SSH immer zuerst freigeben, bevor UFW aktiviert wird, damit der Administrator sich nicht selbst vom Server aussperrt.
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 27500/udp
sudo ufw enable
sudo ufw statusDer UDP-Port (hier beispielhaft 27500) ist der Port, auf dem der HLstatsX-Daemon die Log-Zeilen deiner Gameserver empfängt — frei wählbar, muss aber mit der Daemon-Konfiguration und dem logaddress_add-Befehl auf dem Gameserver übereinstimmen.
Apache, MariaDB, PHP und Perl installieren
HLstatsX besteht aus zwei Teilen: einem PHP-Webinterface (Rangliste, Statistiken) und einem Perl-Daemon (hlstats.pl), der die Gameserver-Logs parst und in die Datenbank schreibt.
sudo apt install -y \
apache2 \
mariadb-server \
libapache2-mod-php \
php \
php-cli \
php-mysql \
php-gd \
php-mbstring \
perl \
libdbi-perl \
libdbd-mysql-perl \
libgd-perl \
libgeo-ip-perl \
unzip \
gitDienste aktivieren:
sudo systemctl enable --now apache2
sudo systemctl enable --now mariadbStatus prüfen:
sudo systemctl status apache2
sudo systemctl status mariadbDatenbank erstellen
MariaDB absichern
sudo mariadb-secure-installationHLstatsX-Datenbank erstellen
sudo mariadbCREATE DATABASE hlstatsx CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'hlstatsx'@'localhost'
IDENTIFIED BY 'DEIN_SICHERES_PASSWORT';
GRANT ALL PRIVILEGES ON hlstatsx.*
TO 'hlstatsx'@'localhost';
FLUSH PRIVILEGES;
EXIT;"DEIN_SICHERES_PASSWORT" muss durch ein eigenes langes und sicheres Passwort ersetzt werden.
HLstatsX herunterladen
Trage hier die aktuelle Repository-Adresse deiner bevorzugten HLstatsX:CE-Quelle ein — z.B. den entsprechenden GitHub-Fork des Projekts. Kein bestimmtes Repository wird hier vorausgesetzt, da sich Forks/Maintainer über die Zeit ändern können.
cd /tmp
git clone <HLSTATSX_REPO_URL> hlstatsx
sudo mv hlstatsx /var/www/hlstatsx
sudo chown -R www-data:www-data /var/www/hlstatsxDatenbankschema importieren
Im heruntergeladenen Repository liegt üblicherweise ein SQL-Schema für die Grundstruktur (Spieler, Server, Waffen, Ränge …):
cd /var/www/hlstatsx
mysql -u hlstatsx -p hlstatsx < install/hlstats.sqlDer genaue Pfad zur SQL-Datei kann je nach HLstatsX-Fork variieren — im Zweifel im "install"- oder "sql"-Verzeichnis des Repositories nachsehen.
Webinterface konfigurieren
sudo nano /var/www/hlstatsx/config.php<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'hlstatsx');
define('DB_USER', 'hlstatsx');
define('DB_PASS', 'DEIN_SICHERES_PASSWORT');Zugangsdaten hier exakt so eintragen wie beim Datenbank-Anlegen vergeben — Tippfehler führen zu "Access denied for user".
Apache Virtual Host einrichten
sudo nano /etc/apache2/sites-available/hlstatsx.conf<VirtualHost *:80>
ServerName stats.deinedomain.de
DocumentRoot /var/www/hlstatsx
<Directory /var/www/hlstatsx/>
Require all granted
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/hlstatsx_error.log
CustomLog ${APACHE_LOG_DIR}/hlstatsx_access.log combined
</VirtualHost>sudo a2enmod rewrite
sudo a2ensite hlstatsx.conf
sudo apache2ctl configtest
sudo systemctl reload apache2"stats.deinedomain.de" ersetzt du durch deine eigene Subdomain, z.B. angelehnt an unser stats.spawnpunkt.de für unsere eigene HLstatsX-Instanz.
HTTPS aktivieren
sudo apt install -y snapd
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
sudo certbot --apache -d stats.deinedomain.deDas Webinterface sollte anschließend ausschließlich über HTTPS aufgerufen werden.
Den HLstatsX-Daemon konfigurieren
Der Perl-Daemon (hlstats.pl) läuft dauerhaft im Hintergrund, empfängt die Log-Zeilen deiner Gameserver per UDP und schreibt die ausgewerteten Ereignisse (Kills, Runden, Waffen …) in die Datenbank.
cd /var/www/hlstatsx/scripts
sudo nano hlstats.confDBHost localhost
DBName hlstatsx
DBUsername hlstatsx
DBPassword DEIN_SICHERES_PASSWORT
# Port, auf dem der Daemon eingehende Gameserver-Logs erwartet
HLstatsXPort 27500Als systemd-Dienst einrichten
Damit der Daemon Neustarts übersteht und dauerhaft läuft, richtest du ihn als systemd-Dienst ein:
sudo nano /etc/systemd/system/hlstatsx.service[Unit]
Description=HLstatsX Daemon
After=network.target mariadb.service
[Service]
Type=simple
WorkingDirectory=/var/www/hlstatsx/scripts
ExecStart=/usr/bin/perl hlstats.pl
Restart=on-failure
User=www-data
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now hlstatsx
sudo systemctl status hlstatsxGameserver mit HLstatsX verbinden
Auf jedem Source-Engine-Gameserver (z.B. Counter-Strike: Source, Team Fortress 2), den du tracken willst, aktivierst du das Loggen und trägst die Adresse deines HLstatsX-Servers ein — entweder direkt in der server.cfg oder per Server-Konsole:
Konsolenbefehle auf dem Gameserver
log onlogaddress_add DEINE_HLSTATSX_IP 27500logaddress_del DEINE_HLSTATSX_IP 27500logaddress_listIn der server.cfg dauerhaft eingetragen sieht das entsprechend so aus:
log on
logaddress_add "DEINE_HLSTATSX_IP" "27500"Der eingetragene Port muss exakt dem Port entsprechen, auf dem der HLstatsX-Daemon lauscht (siehe HLstatsXPort in hlstats.conf) — sonst kommen die Logs nie an, ohne dass eine Fehlermeldung erscheint.
Server im Webinterface eintragen
Zusätzlich muss der Gameserver auch im HLstatsX-Webinterface (Admin-Bereich → Server hinzufügen) mit seiner IP, seinem Query-Port und dem RCON-Passwort eingetragen werden, damit HLstatsX ihn eindeutig zuordnen und abfragen kann.
Installation überprüfen
sudo systemctl status hlstatsx
sudo tail -n 100 /var/www/hlstatsx/scripts/logs/hlstats.logNach ein paar gespielten Runden auf dem verbundenen Gameserver sollten in der Datenbank neue Kills/Events erscheinen und im Webinterface die ersten Spieler und Ranglisten sichtbar werden.
Fehlerbehebung
Häufige Probleme und ihre Lösungen — zum Aufklappen anklicken.
Keine Daten kommen im Webinterface an
- UFW/Firewall: ist 27500/udp wirklich offen? ("sudo ufw status")
- Stimmt der Port in "logaddress_add" auf dem Gameserver mit "HLstatsXPort" in hlstats.conf überein?
- Läuft der Daemon überhaupt? ("sudo systemctl status hlstatsx")
- Ist "log on" auf dem Gameserver aktiv? ("logaddress_list" zur Kontrolle)
"Access denied for user" beim Start des Daemons
Zugangsdaten in "hlstats.conf" und "config.php" stimmen nicht mit dem angelegten MySQL-Benutzer überein — Passwort in beiden Dateien identisch prüfen.
Perl-Modul fehlt ("Can't locate DBD/mysql.pm")
sudo apt install -y libdbd-mysql-perlWebinterface zeigt weiße Seite / PHP-Fehler
sudo tail -n 100 /var/log/apache2/hlstatsx_error.logWartung
HLstatsX aktuell halten
- Betriebssystem regelmäßig aktualisieren
- Datenbank regelmäßig sichern (mysqldump)
- HLstatsX-Log-Datei im Blick behalten (Speicherplatz)
- Bei mehreren Gameservern: jeden einzeln per logaddress_add eintragen
- RCON-Passwörter im Webinterface aktuell halten
mysqldump -u hlstatsx -p hlstatsx > /root/hlstatsx-database.sqlInstallation abgeschlossen
HLstatsX läuft jetzt als Dienst, empfängt Logs von deinem Gameserver und zeigt Spielerstatistiken im Webinterface an. Trage weitere Gameserver einfach zusätzlich per logaddress_add und im Admin-Bereich ein.
