Web Monitor for Half-Life Servers
Find a file
2026-03-04 22:02:28 +02:00
bin init symfony framework 2024-01-06 14:06:07 +02:00
config add new config entries 2026-03-04 19:59:24 +02:00
migrations cache latest server HostName in database 2024-01-13 03:58:36 +02:00
public remove custom branding 2024-01-25 05:22:50 +02:00
src reorder arguments api 2026-03-04 21:25:02 +02:00
templates/default init default info members 2026-03-04 21:10:27 +02:00
tests init symfony framework 2024-01-06 14:06:07 +02:00
translations init symfony framework 2024-01-06 14:06:07 +02:00
.env implement players online monthly chart 2024-01-24 04:39:47 +02:00
.env.test init symfony framework 2024-01-06 14:06:07 +02:00
.gitignore add new config entries 2026-03-04 19:59:24 +02:00
compose.override.yaml init symfony framework 2024-01-06 14:06:07 +02:00
compose.yaml init symfony framework 2024-01-06 14:06:07 +02:00
composer.json use stable xpaw/php-source-query-class version 2026-03-04 22:02:28 +02:00
composer.lock use stable xpaw/php-source-query-class version 2026-03-04 22:02:28 +02:00
LICENSE Initial commit 2024-01-05 22:44:12 +02:00
phpunit.xml.dist init symfony framework 2024-01-06 14:06:07 +02:00
README.md add nginx example 2026-03-04 19:54:36 +02:00
symfony.lock update composer component versions 2026-03-04 19:59:53 +02:00

HLState

Web monitor for Half-Life game servers based on Xash3D FWGS masters crawler.

Project initially written to explore Yggdrasil servers, but compatible with any other network

Features

  • Live scrape of each server for online status, active map, players total
  • Game session info: names, frags, time in game, etc
  • Subscription for online updates and players join to server with RSS
  • History keeping in SQLite DB for any charts building
  • New instances crawler based on multiple master nodes
  • Flexible environment settings

Examples

  • http://94.140.114.89/hl/ - Clearnet
  • http://[201:5eb5:f061:678e:7565:6338:c02c:5251]/hl/ - Yggdrasil
  • http://hl.ygg - Alfis DNS

Install

  • apt install git composer curl memcached php php-xml php-intl php-mbstring php-curl php-sqlite3 php-memcached
  • git clone https://github.com/YGGverse/HLState.git
  • cd HLState
  • composer install
  • php bin/console doctrine:migrations:migrate

Setup

  • chown -R www-data:www-data var
  • cp .env .env.local
  • crontab -e > * * * * * /usr/bin/curl --silent http://localhost/crontab/index &> /dev/null

Nginx

map $request_uri $loggable {
    ~^/crontab/index  0;
    default           1;
}

server {
    listen [::]:27080;

    server_name hl.ygg ygg.hl.srv;

    access_log /var/log/nginx/hl.access.log combined if=$loggable;
    error_log /var/log/nginx/hl.error.log warn;

    root /var/www/hlstate/HLState/public;

    index index.php index.html;

    location / {
        try_files $uri /index.php$is_args$args;
    }
    location ~ ^/index\.php(/|$) {
        fastcgi_pass unix:/run/php/php8.4-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;

        internal;
    }
    location ~ \.php$ {
        return 404;
    }
}

Update

  • git pull
  • git merge
  • composer update
  • php bin/console doctrine:migrations:migrate
  • APP_ENV=prod APP_DEBUG=0 php bin/console cache:clear

Contribution

Please create new branch from main before make PR

  • git checkout main
  • git checkout -b 'new-commit-branch'

License

Versioning

Semantic Versioning 2.0.0

Components

Support

Blog

See also