SpawnpunktSpawnpunkt
Linux

HLstatsX auf einem Linux Server installieren

von aNDJESUS·08/15/2026
Linux Tutorial

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.

Live-StatistikenRanglisteSelbst gehostet
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.

bash
sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y

Firewall konfigurieren

SSH immer zuerst freigeben, bevor UFW aktiviert wird, damit der Administrator sich nicht selbst vom Server aussperrt.

bash
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 27500/udp
sudo ufw enable
sudo ufw status

Der 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.

bash
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 \
git

Dienste aktivieren:

bash
sudo systemctl enable --now apache2
sudo systemctl enable --now mariadb

Status prüfen:

bash
sudo systemctl status apache2
sudo systemctl status mariadb

Datenbank erstellen

MariaDB absichern

bash
sudo mariadb-secure-installation

HLstatsX-Datenbank erstellen

bash
sudo mariadb
SQL
CREATE 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.

bash
cd /tmp
git clone <HLSTATSX_REPO_URL> hlstatsx
sudo mv hlstatsx /var/www/hlstatsx
sudo chown -R www-data:www-data /var/www/hlstatsx

Datenbankschema importieren

Im heruntergeladenen Repository liegt üblicherweise ein SQL-Schema für die Grundstruktur (Spieler, Server, Waffen, Ränge …):

bash
cd /var/www/hlstatsx
mysql -u hlstatsx -p hlstatsx < install/hlstats.sql

Der genaue Pfad zur SQL-Datei kann je nach HLstatsX-Fork variieren — im Zweifel im "install"- oder "sql"-Verzeichnis des Repositories nachsehen.

Webinterface konfigurieren

bash
sudo nano /var/www/hlstatsx/config.php
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

bash
sudo nano /etc/apache2/sites-available/hlstatsx.conf
apache
<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>
bash
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

bash
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.de

Das 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.

bash
cd /var/www/hlstatsx/scripts
sudo nano hlstats.conf
ini
DBHost      localhost
DBName      hlstatsx
DBUsername  hlstatsx
DBPassword  DEIN_SICHERES_PASSWORT

# Port, auf dem der Daemon eingehende Gameserver-Logs erwartet
HLstatsXPort 27500

Als systemd-Dienst einrichten

Damit der Daemon Neustarts übersteht und dauerhaft läuft, richtest du ihn als systemd-Dienst ein:

bash
sudo nano /etc/systemd/system/hlstatsx.service
ini
[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.target
bash
sudo systemctl daemon-reload
sudo systemctl enable --now hlstatsx
sudo systemctl status hlstatsx

Gameserver 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

Logging aktivieren
log on
HLstatsX-Server eintragen
logaddress_add DEINE_HLSTATSX_IP 27500
Eintrag entfernen
logaddress_del DEINE_HLSTATSX_IP 27500
Aktive Log-Ziele anzeigen
logaddress_list

In der server.cfg dauerhaft eingetragen sieht das entsprechend so aus:

cfg
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

bash
sudo systemctl status hlstatsx
sudo tail -n 100 /var/www/hlstatsx/scripts/logs/hlstats.log

Nach 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")
bash
sudo apt install -y libdbd-mysql-perl
Webinterface zeigt weiße Seite / PHP-Fehler
bash
sudo tail -n 100 /var/log/apache2/hlstatsx_error.log

Wartung

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
bash
mysqldump -u hlstatsx -p hlstatsx > /root/hlstatsx-database.sql

Installation 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.

ApacheMariaDBPerlsystemdHTTPS
HLstatsX installieren – Linux Server Anleitung | Spawnpunkt.de