
Es ist eine Art Sport, Doom auf jedem Gerät zum Laufen zu bringen - mit entsprechenden Doom-Source-Ports. Für Checkmk genügt erfreulicherweise Vorhandenes: JS-DOS, ein Doom für DOS und eine HTML-Datei.
Im Grunde ist es ganz simpel: JS-DOS und sogar das benötigte Doom gibt es direkt aus dem Netz und dann braucht es nur noch eine HTML-Datei, um JS-DOS einzubinden und automatisch Doom zu starten.
Und natürlich: Auch wenn der Doom-Quellcode Open Source ist benötigt man, um (mehr oder weniger) legal unterwegs zu sein, selbst ein lizenziertes Doom. Genauer: Die WAD-Datei. Das ist einfach ein Dateiformat, dass die Assets von Doom beinhaltet, sprich Bilder, Level etc. Von daher ist das hier auch nur als Proof of Concept zu verstehen. Ihr könnt Doom I + II bei Steam kaufen. Oder Euch im Doom-Wiki in die komplexe Versionsgeschichte von Doom stürzen.
HTML vorbereiten
Die Syntax für die HTML-Datei hat - mit einigen Runden Fehlerbehebung und Neukonzeption ... - ChatGPT geschrieben. Hinterfragt also besser nicht jede Zeile, es ist nur ein PoC und KI längst nicht so clever, wie oft behauptet.
Man benötigt also eine Datei im Web-Root auf dem Checkmk-Server, etwa /var/www/html/doom.html mit folgendem Inhalt:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>DOOM in JS-DOS (canvas fix)</title>
<link rel="stylesheet" href="https://v8.js-dos.com/latest/js-dos.css">
<script src="https://js-dos.com/6.22/current/js-dos.js"></script>
<style>
html, body { margin: 0; padding: 0; height: 100%; background: black; }
canvas { width: 100%; height: 100%; display: block; }
</style>
</head>
<body>
<!-- ✅ Explicit canvas element for js-dos v6.22 -->
<canvas id="dosbox" tabindex="0" onclick="this.focus();"></canvas>
<script>
Dos(document.getElementById("dosbox"), {
wdosboxUrl: "https://js-dos.com/6.22/current/wdosbox.js",
cycles: 10000
}).ready(function(fs, main) {
fs.extract("https://XXXXXXXXXXXXX/DOOM-@evilution.zip")
.then(function() {
main(["-c", "cd DOOM", "-c", "DOOM.EXE"]);
});
});
</script>
</body>
</html>
Sorry für die XXXXXXXXXXXXX-URL, aber wie gesagt, Copyrightmäßig ist das tendenziell etwas unsauber.
Das ganze Blabla mal beiseite, wird zunächst die Web-Dos-Box geladen und in einem Canvas-Element dargestellt:
...
script src="https://js-dos.com/6.22/current/js-dos.js"
...
canvas id="dosbox" tabindex="0" onclick="this.focus();"
Dann wird per JS-DOS-Funktion das gehostete Doom-ZIP extrahiert und DOOM.EXE wird gestartet:
fs.extract("https://XXXXXXXXXXXXX/DOOM-@evilution.zip")
.then(function() {
main(["-c", "cd DOOM", "-c", "DOOM.EXE"]);
Ganz ähnlich ließe sich das mit lokalen Dateien bewerkstelligen.
Dashboard bauen
Anschließend braucht es in Checkmk nur noch ein Dashboard und darauf das "Custom URL"-Dashlet.
In dem Dashlet wird schlicht die URL der angelegten HTML-Datei angegeben:
http://localhost/doom.html

Und schon läuft Doom im Dashboard.

Nachbauen wird das vermutlich niemand, oder? ODER?? Aber Ihr könnt das Konzept auf etliche Web-basierte Tools übertragen - oder auch einfach den Doom-Part skippen und schon habt Ihr einen DOS-Terminal im Dashboard!
P.S.: Ja, ich weiß, die Service-Status im Bild sprechen gegen derlei Spielereien 😉