A fully animated, real-time landing page for a Killing Floor 2 server.
This project provides a lightweight, visually rich status page that displays live server information without using frameworks, Node.js, or build tools.
The landing page displays live data pulled directly from a KF2 server, including:
- Server online/offline status
- Current map and game mode
- Real-time player list
- One-click Steam connect
- Password popup with copy-to-clipboard buttons
Built using vanilla HTML, CSS, JavaScript, and PHP with SourceQuery.
No frameworks.
No Node.js.
No build step.
- 🎮 Live Killing Floor 2 server status
- 👥 Player list (name, kills, playtime)
- 🗺️ Current map & game mode display
- 🔐 Password popup with copy buttons
- 🔊 Optional background music (user-initiated)
- 🧊 Glassmorphism UI
- 🎨 Animated hex-grid canvas background
- 🖱️ Mouse-based parallax background
- 🧲 Draggable modal window
- 📱 Fully responsive layout
- ⚡ Zero JavaScript dependencies
This project will not work without the following:
- NGINX or Apache
- PHP 8.x recommended
This project uses xPaw’s PHP SourceQuery to query the Killing Floor 2 server.
GitHub repository:
https://github.com/xPaw/PHP-Source-Query
cd /var/www/your-site/api
git clone https://github.com/xPaw/PHP-Source-Query.git SourceQueryResulting file:
api/SourceQuery/SourceQuery.class.php
require __DIR__ . '/SourceQuery/SourceQuery.class.php';Endpoint:
/api/status.php
The frontend (js/status.js) polls this endpoint every 5 seconds.
{
"online": true,
"name": "[TR] KF2 Server",
"mode": "Survival",
"map": "KF-BioticsLab",
"players": 5,
"max": 10,
"playerlist": [
{ "Name": "Player1", "Kills": 120, "Time": "12:34" }
]
}If the query fails or times out, the frontend automatically switches to offline mode.
apt update
apt install nginx php php-fpm php-curl php-sockets php-json -yserver {
listen 80;
server_name yourdomain.com;
root /var/www/your-site;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
location ~ /\. {
deny all;
}
}nginx -t && systemctl reload nginx- Upload all project files to your web root
- Install SourceQuery
- Configure
api/status.php:- Server IP
- Query port
- Update the Steam connect link in
index.html - Open the site in your browser
index.html→ Steam connect URLapi/status.php→ SourceQuery host & port
js/status.js
const REFRESH_MS = 5000;- Place
.webpimages inside/img/ - Images are auto-randomized on page load
- UDP port blocked
- Wrong query port
- PHP sockets disabled
- Firewall blocking outbound UDP
- Server is empty (normal behavior)
- SourceQuery timeout too low
- KF2 server not responding to queries
Yanoee
© 2026
Steam:
https://steamcommunity.com/id/triacetontriperoxide/
Free to use, modify, and self-host.
No warranty. No support obligation.