From 9ec7ae5b0d8940e369934020856c7c2c82394700 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 07:57:29 +0200 Subject: [PATCH 01/45] build: Add websocketd package --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7ceea508..b4fc8892 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,13 +28,14 @@ RUN set -eu && \ ethtool \ iptables \ iproute2 \ - apt-utils \ dnsmasq \ xz-utils \ + apt-utils \ net-tools \ e2fsprogs \ qemu-utils \ iputils-ping \ + websocketd \ genisoimage \ netcat-openbsd \ ca-certificates \ From 6928907ab4b18b2d514e48cc90497fb1d5c8bd11 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 08:16:45 +0200 Subject: [PATCH 02/45] fix: Terminate tail on exit --- src/network.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/network.sh b/src/network.sh index 57915794..8690bcce 100644 --- a/src/network.sh +++ b/src/network.sh @@ -174,7 +174,7 @@ configureDNS() { fi if [[ "$DNSMASQ_DEBUG" == [Yy1]* ]]; then - tail -fn +0 "$log" & + tail -fn +0 "$log" --pid=$$ & fi return 0 @@ -369,7 +369,7 @@ configurePasst() { fi if [[ "$PASST_DEBUG" == [Yy1]* ]]; then - tail -fn +0 "$log" & + tail -fn +0 "$log" --pid=$$ & else if [[ "$DEBUG" == [Yy1]* ]]; then [ -f "$log" ] && cat "$log" && echo "" From ad3cb8edde8adcd4fcd9ffdac1ab306d7d05de22 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 08:20:17 +0200 Subject: [PATCH 03/45] Update display.sh --- src/display.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/display.sh b/src/display.sh index 95579350..ee2558c7 100644 --- a/src/display.sh +++ b/src/display.sh @@ -70,3 +70,5 @@ fi addPackage "xserver-xorg-video-intel" "Intel GPU drivers" addPackage "qemu-system-modules-opengl" "OpenGL module" + +return 0 From 05176f93c38c71cbd2d3b76acbb52bd3992e9951 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 08:20:54 +0200 Subject: [PATCH 04/45] Update install.sh --- src/install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/install.sh b/src/install.sh index 31ddff8e..93340037 100644 --- a/src/install.sh +++ b/src/install.sh @@ -456,3 +456,5 @@ dst="$STORAGE/${base%.*}.$target_ext" base=$(basename "$dst") detectType "$STORAGE/$base" && return 0 error "Cannot convert file \"${base}\"" && exit 36 + +return 0 From 0d4540777c8764644dca86bd1890d782ab944011 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 08:22:57 +0200 Subject: [PATCH 05/45] Update start.sh Updated comment to clarify script usage. --- src/start.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/start.sh b/src/start.sh index 55f68749..1b63c84e 100644 --- a/src/start.sh +++ b/src/start.sh @@ -1,4 +1,6 @@ #!/usr/bin/env bash set -Eeuo pipefail -# Override this placeholder file using a Docker bind to execute a script during startup! +# You can override this hook to execute a script before startup! + +return 0 From 21af41c3a33e4b8036f239607be20fb79afdb3a2 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 08:32:46 +0200 Subject: [PATCH 06/45] Update progress.sh --- src/progress.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/progress.sh b/src/progress.sh index 9c7549f0..6f473294 100644 --- a/src/progress.sh +++ b/src/progress.sh @@ -25,7 +25,7 @@ do if [ -s "$file" ]; then bytes=$(du -sb "$file" | cut -f1) if (( bytes > 1000 )); then - if [ -z "$total" ] || [[ "$total" == "0" ]]; then + if [ -z "$total" ] || [[ "$total" == "0" ]] || [ "$bytes" -gt "$total" ]; then size=$(numfmt --to=iec --suffix=B "$bytes" | sed -r 's/([A-Z])/ \1/') else size="$(echo "$bytes" "$total" | awk '{printf "%.1f", $1 * 100 / $2}')" From f907eb966d4ab8424edc844b9397ce44638f33e8 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 08:33:28 +0200 Subject: [PATCH 07/45] Add socket.sh script to monitor message file --- src/socket.sh | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 src/socket.sh diff --git a/src/socket.sh b/src/socket.sh new file mode 100644 index 00000000..222ae53e --- /dev/null +++ b/src/socket.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +info="/run/shm/msg.html" + +tail -fn +0 "$info" --pid=$$ & From f88cdb4a8e3e3ee8412d5dbe068f6b967c138b44 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 08:41:13 +0200 Subject: [PATCH 08/45] Update reset.sh --- src/reset.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/reset.sh b/src/reset.sh index a6b0d305..e69a5224 100644 --- a/src/reset.sh +++ b/src/reset.sh @@ -176,6 +176,8 @@ if (( VNC_PORT < 5900 )); then fi cp -r /var/www/* /run/shm +rm -f /var/run/websocketd.pid + html "Starting $APP for $ENGINE..." if [[ "${WEB:-}" != [Nn]* ]]; then @@ -208,6 +210,10 @@ if [[ "${WEB:-}" != [Nn]* ]]; then # Start webserver nginx -e stderr + # Start websocket server + websocketd --address 127.0.0.1 --port=8080 /run/socket.sh + echo "$!" > /var/run/websocketd.pid + fi return 0 From a314f01e4896db566c7e9e5dce1b24dce08d5c70 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 08:43:32 +0200 Subject: [PATCH 09/45] Implement websocket shutdown in network script Added shutdown procedure for websocket in network.sh --- src/network.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/network.sh b/src/network.sh index 8690bcce..533c5161 100644 --- a/src/network.sh +++ b/src/network.sh @@ -555,6 +555,11 @@ closeNetwork() { nginx -s stop 2> /dev/null fWait "nginx" + # Shutdown websocket + local pid="/var/run/websocketd.pid" + [ -s "$pid" ] && pKill "$(<"$pid")" + rm -f "$pid" + fi [[ "$NETWORK" == [Nn]* ]] && return 0 From 0343295c864d109994f0c571f24405d9cf1c18a1 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 08:46:51 +0200 Subject: [PATCH 10/45] Add WSD_PORT variable for websocket server port --- src/reset.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/reset.sh b/src/reset.sh index e69a5224..f3d553e8 100644 --- a/src/reset.sh +++ b/src/reset.sh @@ -168,6 +168,7 @@ addPackage() { : "${VNC_PORT:="5900"}" # VNC port : "${MON_PORT:="7100"}" # Monitor port : "${WEB_PORT:="8006"}" # Webserver port +: "${WSD_PORT:="8004"}" # Websockets port : "${WSS_PORT:="5700"}" # Websockets port if (( VNC_PORT < 5900 )); then @@ -211,7 +212,7 @@ if [[ "${WEB:-}" != [Nn]* ]]; then nginx -e stderr # Start websocket server - websocketd --address 127.0.0.1 --port=8080 /run/socket.sh + websocketd --address 127.0.0.1 --port="$WSD_PORT" /run/socket.sh & echo "$!" > /var/run/websocketd.pid fi From 0726415a89df1f37f1cb5828d64b8807653689db Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 08:47:51 +0200 Subject: [PATCH 11/45] Update network.sh --- src/network.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/src/network.sh b/src/network.sh index 533c5161..38e0a9f6 100644 --- a/src/network.sh +++ b/src/network.sh @@ -229,6 +229,7 @@ getHostPorts() { if [[ "${WEB:-}" != [Nn]* ]]; then [ -z "$list" ] && list="$WEB_PORT" || list+=",$WEB_PORT" + [ -z "$list" ] && list="$WSD_PORT" || list+=",$WSD_PORT" fi if [[ "${NETWORK,,}" == "passt" ]]; then From e1c9b9ca780d5cd067c86cb6b42cb45626a0c172 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 08:53:43 +0200 Subject: [PATCH 12/45] Update reset.sh --- src/reset.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/reset.sh b/src/reset.sh index f3d553e8..84538144 100644 --- a/src/reset.sh +++ b/src/reset.sh @@ -212,7 +212,7 @@ if [[ "${WEB:-}" != [Nn]* ]]; then nginx -e stderr # Start websocket server - websocketd --address 127.0.0.1 --port="$WSD_PORT" /run/socket.sh & + websocketd --address 127.0.0.1 --port="$WSD_PORT" /run/socket.sh >/var/log/websocketd.log & echo "$!" > /var/run/websocketd.pid fi From 663b060161b9a6022b5ecb8d997b6e19c5640ed6 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 09:18:54 +0200 Subject: [PATCH 13/45] Update script.js --- web/js/script.js | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/web/js/script.js b/web/js/script.js index 25a1ee97..5017c2a5 100644 --- a/web/js/script.js +++ b/web/js/script.js @@ -41,6 +41,14 @@ function getInfo() { } } +function getURL() { + + var protocol = window.location.protocol === "https:" ? "wss:" : "ws:"; + var path = window.location.pathname.replace(/[^/]*$/, '').replace(/\/$/, ''); + + return protocol + "//" + window.location.host + path; +} + function processInfo() { try { @@ -51,7 +59,6 @@ function processInfo() { var msg = request.responseText; if (msg == null || msg.length == 0) { setError("Lost connection"); - schedule(); return false; } @@ -62,7 +69,6 @@ function processInfo() { notFound = true; } else { setInfo(msg); - schedule(); return true; } } @@ -70,21 +76,17 @@ function processInfo() { if (notFound) { setInfo("Connecting to VNC", true); - var protocol = window.location.protocol === "https:" ? "wss:" : "ws:"; - var path = window.location.pathname.replace(/[^/]*$/, '').replace(/\/$/, ''); - var wsUrl = protocol + "//" + window.location.host + path + "/websockify"; + var wsUrl = getURL() + "/websockify"; var webSocket = webSocketFactory.connect(wsUrl); return true; } setError("Error: Received statuscode " + request.status); - schedule(); return false; } catch (e) { - var err = "Error: " + e.message; - console.log(err); + console.log("Error: " + e.message); setError(err); return false; } @@ -129,8 +131,26 @@ function setError(text) { return setInfo(text, false, true); } -function schedule() { - setTimeout(getInfo, interval); +function connect() { + + var wsUrl = getURL() + "/msg"; + var ws = new WebSocket(wsUrl); + + ws.onmessage = function(e) { + console.log('Message:', e.data); + }; + + ws.onclose = function(e) { + setTimeout(function() { + connect(); + }, 1000); + }; + + ws.onerror = function(e) { + console.log("Error: " + e.message); + ws.close(); + }; } -schedule(); +getInfo(); +connect(); From 692db5c92a41f928cfac4f6684684b30852992ea Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 09:21:45 +0200 Subject: [PATCH 14/45] Update script.js --- web/js/script.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/js/script.js b/web/js/script.js index 5017c2a5..a7b396ce 100644 --- a/web/js/script.js +++ b/web/js/script.js @@ -146,8 +146,8 @@ function connect() { }, 1000); }; - ws.onerror = function(e) { - console.log("Error: " + e.message); + ws.onerror = function(err) { + console.log("Error: " + err); ws.close(); }; } From e6c8c9ff053b8414161014b6dd01f0bd83c6bda2 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 09:23:13 +0200 Subject: [PATCH 15/45] Update nginx.conf --- web/conf/nginx.conf | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/web/conf/nginx.conf b/web/conf/nginx.conf index ea657f71..bbd4673a 100644 --- a/web/conf/nginx.conf +++ b/web/conf/nginx.conf @@ -43,6 +43,20 @@ server { } + location /msg { + + proxy_http_version 1.1; + + proxy_set_header Connection 'upgrade'; + proxy_set_header Upgrade $http_upgrade; + + proxy_buffering off; + proxy_read_timeout 3600s; + proxy_send_timeout 3600s; + + proxy_pass http://127.0.0.1:8004/; + } + location /websockify { proxy_http_version 1.1; From 281ffb9d932d52d5779fcadae93df9978ba8d990 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 09:23:50 +0200 Subject: [PATCH 16/45] Update reset.sh Update Nginx configuration to use dynamic ports for WSD. --- src/reset.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/src/reset.sh b/src/reset.sh index 84538144..7953f36b 100644 --- a/src/reset.sh +++ b/src/reset.sh @@ -200,6 +200,7 @@ if [[ "${WEB:-}" != [Nn]* ]]; then sed -i "s/listen 8006 default_server;/listen $WEB_PORT default_server;/g" /etc/nginx/sites-enabled/web.conf sed -i "s/proxy_pass http:\/\/127.0.0.1:5700\/;/proxy_pass http:\/\/127.0.0.1:$WSS_PORT\/;/g" /etc/nginx/sites-enabled/web.conf + sed -i "s/proxy_pass http:\/\/127.0.0.1:8004\/;/proxy_pass http:\/\/127.0.0.1:$WSD_PORT\/;/g" /etc/nginx/sites-enabled/web.conf # shellcheck disable=SC2143 if [ -f /proc/net/if_inet6 ] && [ -n "$(ifconfig -a | grep inet6)" ]; then From f747c67db87994f766fa7eef9b050c5bfc885974 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 10:45:06 +0200 Subject: [PATCH 17/45] Rename location block from /msg to /status --- web/conf/nginx.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/conf/nginx.conf b/web/conf/nginx.conf index bbd4673a..fa668087 100644 --- a/web/conf/nginx.conf +++ b/web/conf/nginx.conf @@ -43,7 +43,7 @@ server { } - location /msg { + location /status { proxy_http_version 1.1; From 2e26d2938bc5a6eb8311f3fa32049cdd76d7b3a2 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 10:46:26 +0200 Subject: [PATCH 18/45] Revert Refactored WebSocket connection logic and removed unused getURL function. --- web/js/script.js | 42 +++++++++++------------------------------- 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/web/js/script.js b/web/js/script.js index a7b396ce..25a1ee97 100644 --- a/web/js/script.js +++ b/web/js/script.js @@ -41,14 +41,6 @@ function getInfo() { } } -function getURL() { - - var protocol = window.location.protocol === "https:" ? "wss:" : "ws:"; - var path = window.location.pathname.replace(/[^/]*$/, '').replace(/\/$/, ''); - - return protocol + "//" + window.location.host + path; -} - function processInfo() { try { @@ -59,6 +51,7 @@ function processInfo() { var msg = request.responseText; if (msg == null || msg.length == 0) { setError("Lost connection"); + schedule(); return false; } @@ -69,6 +62,7 @@ function processInfo() { notFound = true; } else { setInfo(msg); + schedule(); return true; } } @@ -76,17 +70,21 @@ function processInfo() { if (notFound) { setInfo("Connecting to VNC", true); - var wsUrl = getURL() + "/websockify"; + var protocol = window.location.protocol === "https:" ? "wss:" : "ws:"; + var path = window.location.pathname.replace(/[^/]*$/, '').replace(/\/$/, ''); + var wsUrl = protocol + "//" + window.location.host + path + "/websockify"; var webSocket = webSocketFactory.connect(wsUrl); return true; } setError("Error: Received statuscode " + request.status); + schedule(); return false; } catch (e) { - console.log("Error: " + e.message); + var err = "Error: " + e.message; + console.log(err); setError(err); return false; } @@ -131,26 +129,8 @@ function setError(text) { return setInfo(text, false, true); } -function connect() { - - var wsUrl = getURL() + "/msg"; - var ws = new WebSocket(wsUrl); - - ws.onmessage = function(e) { - console.log('Message:', e.data); - }; - - ws.onclose = function(e) { - setTimeout(function() { - connect(); - }, 1000); - }; - - ws.onerror = function(err) { - console.log("Error: " + err); - ws.close(); - }; +function schedule() { + setTimeout(getInfo, interval); } -getInfo(); -connect(); +schedule(); From e5ac344578f0f4f3f032d7538fb8cebbbbc5477d Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 10:51:33 +0200 Subject: [PATCH 19/45] Update script.js --- web/js/script.js | 46 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/web/js/script.js b/web/js/script.js index 25a1ee97..e17a50a3 100644 --- a/web/js/script.js +++ b/web/js/script.js @@ -35,12 +35,18 @@ function getInfo() { request.send(); } catch (e) { - var err = "Error: " + e.message; - console.log(err); - setError(err); + setError("Error: " + e.message); } } +function getURL() { + + var protocol = window.location.protocol === "https:" ? "wss:" : "ws:"; + var path = window.location.pathname.replace(/[^/]*$/, '').replace(/\/$/, ''); + + return protocol + "//" + window.location.host + path; +} + function processInfo() { try { @@ -62,7 +68,6 @@ function processInfo() { notFound = true; } else { setInfo(msg); - schedule(); return true; } } @@ -70,9 +75,7 @@ function processInfo() { if (notFound) { setInfo("Connecting to VNC", true); - var protocol = window.location.protocol === "https:" ? "wss:" : "ws:"; - var path = window.location.pathname.replace(/[^/]*$/, '').replace(/\/$/, ''); - var wsUrl = protocol + "//" + window.location.host + path + "/websockify"; + var wsUrl = getURL() + "/websockify"; var webSocket = webSocketFactory.connect(wsUrl); return true; @@ -83,9 +86,7 @@ function processInfo() { return false; } catch (e) { - var err = "Error: " + e.message; - console.log(err); - setError(err); + setError("Error: " + e.message); return false; } } @@ -126,6 +127,7 @@ function setInfo(msg, loading, error) { } function setError(text) { + console.warn(text); return setInfo(text, false, true); } @@ -133,4 +135,26 @@ function schedule() { setTimeout(getInfo, interval); } -schedule(); +function connect() { + + var wsUrl = getURL() + "/status"; + var ws = new WebSocket(wsUrl); + + ws.onmessage = function(e) { + setInfo(e.data); + }; + + ws.onclose = function(e) { + setTimeout(function() { + connect(); + }, interval); + }; + + ws.onerror = function(err) { + setError("Error: " + err); + ws.close(); + }; +} + +getInfo(); +connect(); From ac2e5618bad2937c330d47fe76ab5a3c26016edf Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 10:52:44 +0200 Subject: [PATCH 20/45] Update reset.sh --- src/reset.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/reset.sh b/src/reset.sh index 7953f36b..aa4f6f14 100644 --- a/src/reset.sh +++ b/src/reset.sh @@ -215,7 +215,7 @@ if [[ "${WEB:-}" != [Nn]* ]]; then # Start websocket server websocketd --address 127.0.0.1 --port="$WSD_PORT" /run/socket.sh >/var/log/websocketd.log & echo "$!" > /var/run/websocketd.pid - + fi return 0 From 1a12627265172a7bba5d094acd03eba802f5d13d Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:02:24 +0200 Subject: [PATCH 21/45] Update socket.sh --- src/socket.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/socket.sh b/src/socket.sh index 222ae53e..4b11812f 100644 --- a/src/socket.sh +++ b/src/socket.sh @@ -1,6 +1,12 @@ #!/usr/bin/env bash set -Eeuo pipefail -info="/run/shm/msg.html" +path="/run/shm/msg.html" -tail -fn +0 "$info" --pid=$$ & +inotifywait -m "$path" | + while read fp event fn; do + case "${event,,}" in + "modify" ) cat "$path" ;; + "delete" ) echo "DONE" ;; + esac + done From b1461d265e1dc2d51742ee6ee034745a818774be Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:03:03 +0200 Subject: [PATCH 22/45] Update Dockerfile --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index b4fc8892..d5de5563 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,6 +37,7 @@ RUN set -eu && \ iputils-ping \ websocketd \ genisoimage \ + inotify-tools \ netcat-openbsd \ ca-certificates \ qemu-system-x86 && \ From 4e28dfc2684beb5d6122585a439da381b1de5306 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:03:52 +0200 Subject: [PATCH 23/45] Remove and re-add iputils-ping in Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d5de5563..cd50964a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,8 +34,8 @@ RUN set -eu && \ net-tools \ e2fsprogs \ qemu-utils \ - iputils-ping \ websocketd \ + iputils-ping \ genisoimage \ inotify-tools \ netcat-openbsd \ From 820055c98974be7e5e79fe4eb27be3016b9b6e6e Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:17:25 +0200 Subject: [PATCH 24/45] Update script.js --- web/js/script.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/web/js/script.js b/web/js/script.js index e17a50a3..0dcc5108 100644 --- a/web/js/script.js +++ b/web/js/script.js @@ -141,7 +141,19 @@ function connect() { var ws = new WebSocket(wsUrl); ws.onmessage = function(e) { - setInfo(e.data); + + var pos = e.data.indexOf(":"); + var cmd = e.data.substring(0, pos; + var msg = e.data.substring(pos + 1); + + switch(cmd) { + case "s": + setInfo(msg); + break; + case "c": + setError("X + msg + "X"); + break; + } }; ws.onclose = function(e) { @@ -150,8 +162,8 @@ function connect() { }, interval); }; - ws.onerror = function(err) { - setError("Error: " + err); + ws.onerror = function(e) { + setError("Error: " + e.message); ws.close(); }; } From db41b595726227e9bc4acc4cae2c712551ac1b1d Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:23:59 +0200 Subject: [PATCH 25/45] Update utils.sh --- src/utils.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/utils.sh b/src/utils.sh index e158f555..29535001 100644 --- a/src/utils.sh +++ b/src/utils.sh @@ -159,4 +159,21 @@ hasDisk() { return 1 } +addPackage() { + local pkg=$1 + local desc=$2 + + if apt-mark showinstall | grep -qx "$pkg"; then + return 0 + fi + + local msg="Installing $desc..." + info "$msg" && html "$msg" + + DEBIAN_FRONTEND=noninteractive apt-get -qq update + DEBIAN_FRONTEND=noninteractive apt-get -qq --no-install-recommends -y install "$pkg" > /dev/null + + return 0 +} + return 0 From 86c6e4ddbf6e9f250bb946e9ee3dbd3803f4e46b Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:25:28 +0200 Subject: [PATCH 26/45] Implement KVM acceleration checks in reset.sh Add KVM support checks and warnings for performance. --- src/reset.sh | 57 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 45 insertions(+), 12 deletions(-) diff --git a/src/reset.sh b/src/reset.sh index aa4f6f14..bef879e4 100644 --- a/src/reset.sh +++ b/src/reset.sh @@ -9,6 +9,7 @@ trap 'error "Status $? while: $BASH_COMMAND (line $LINENO/$BASH_LINENO)"' ERR # Docker environment variables +: "${KVM:="Y"}" # KVM acceleration : "${BOOT:=""}" # Path of ISO file : "${DEBUG:="N"}" # Disable debugging : "${MACHINE:="q35"}" # Machine selection @@ -148,22 +149,54 @@ if [[ "$RAM_CHECK" != [Nn]* ]] && (( (RAM_WANTED + RAM_SPARE) > RAM_AVAIL )); th info "$msg" fi -addPackage() { - local pkg=$1 - local desc=$2 - - if apt-mark showinstall | grep -qx "$pkg"; then - return 0 +if [[ "$KVM" == [Nn]* ]]; then + warn "KVM acceleration is disabled, this will cause the machine to run about 10 times slower!" +else + if [[ "${ARCH,,}" != "amd64" ]]; then + KVM="N" + warn "your CPU architecture is ${ARCH^^} and cannot provide KVM acceleration for x64 instructions, so the machine will run about 10 times slower." fi +fi - MSG="Installing $desc..." - info "$MSG" && html "$MSG" +# Check KVM support - DEBIAN_FRONTEND=noninteractive apt-get -qq update - DEBIAN_FRONTEND=noninteractive apt-get -qq --no-install-recommends -y install "$pkg" > /dev/null +if [[ "$KVM" != [Nn]* ]]; then - return 0 -} + KVM_ERR="" + + if [ ! -e /dev/kvm ]; then + KVM_ERR="(/dev/kvm is missing)" + else + if ! sh -c 'echo -n > /dev/kvm' &> /dev/null; then + KVM_ERR="(/dev/kvm is unwriteable)" + else + flags=$(sed -ne '/^flags/s/^.*: //p' /proc/cpuinfo) + if ! grep -qw "vmx\|svm" <<< "$flags"; then + KVM_ERR="(not enabled in BIOS)" + fi + fi + fi + + if [ -n "$KVM_ERR" ]; then + KVM="N" + if [[ "$OSTYPE" =~ ^darwin ]]; then + warn "you are using macOS which has no KVM support, so the machine will run about 10 times slower." + else + kernel=$(uname -a) + case "${kernel,,}" in + *"microsoft"* ) + error "Please bind '/dev/kvm' as a volume in the optional container settings when using Docker Desktop." ;; + *"synology"* ) + error "Please make sure that Synology VMM (Virtual Machine Manager) is installed and that '/dev/kvm' is binded to this container." ;; + *) + error "KVM acceleration is not available $KVM_ERR, this will cause the machine to run about 10 times slower." + error "See the FAQ for possible causes, or disable acceleration by adding the \"KVM=N\" variable (not recommended)." ;; + esac + [[ "$DEBUG" != [Yy1]* ]] && exit 88 + fi + fi + +fi : "${VNC_PORT:="5900"}" # VNC port : "${MON_PORT:="7100"}" # Monitor port From 71f0ada10678fbe107f95c0f8dd32a998295f779 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:25:52 +0200 Subject: [PATCH 27/45] Remove KVM checks from proc.sh Removed KVM acceleration checks and related warnings. --- src/proc.sh | 47 ----------------------------------------------- 1 file changed, 47 deletions(-) diff --git a/src/proc.sh b/src/proc.sh index 8cb47666..f78a8e25 100644 --- a/src/proc.sh +++ b/src/proc.sh @@ -11,53 +11,6 @@ set -Eeuo pipefail [[ "$DEBUG" == [Yy1]* ]] && echo "Configuring KVM..." -if [[ "$KVM" == [Nn]* ]]; then - warn "KVM acceleration is disabled, this will cause the machine to run about 10 times slower!" -else - if [[ "${ARCH,,}" != "amd64" ]]; then - KVM="N" - warn "your CPU architecture is ${ARCH^^} and cannot provide KVM acceleration for x64 instructions, so the machine will run about 10 times slower." - fi -fi - -if [[ "$KVM" != [Nn]* ]]; then - - KVM_ERR="" - - if [ ! -e /dev/kvm ]; then - KVM_ERR="(/dev/kvm is missing)" - else - if ! sh -c 'echo -n > /dev/kvm' &> /dev/null; then - KVM_ERR="(/dev/kvm is unwriteable)" - else - flags=$(sed -ne '/^flags/s/^.*: //p' /proc/cpuinfo) - if ! grep -qw "vmx\|svm" <<< "$flags"; then - KVM_ERR="(not enabled in BIOS)" - fi - fi - fi - - if [ -n "$KVM_ERR" ]; then - KVM="N" - if [[ "$OSTYPE" =~ ^darwin ]]; then - warn "you are using macOS which has no KVM support, so the machine will run about 10 times slower." - else - kernel=$(uname -a) - case "${kernel,,}" in - *"microsoft"* ) - error "Please bind '/dev/kvm' as a volume in the optional container settings when using Docker Desktop." ;; - *"synology"* ) - error "Please make sure that Synology VMM (Virtual Machine Manager) is installed and that '/dev/kvm' is binded to this container." ;; - *) - error "KVM acceleration is not available $KVM_ERR, this will cause the machine to run about 10 times slower." - error "See the FAQ for possible causes, or disable acceleration by adding the \"KVM=N\" variable (not recommended)." ;; - esac - [[ "$DEBUG" != [Yy1]* ]] && exit 88 - fi - fi - -fi - vendor=$(lscpu | awk '/Vendor ID/{print $3}') if [[ "$KVM" != [Nn]* ]]; then From c8c4706e317babbf58b2a1abbcaefbbfa974f26b Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:29:21 +0200 Subject: [PATCH 28/45] Update socket.sh --- src/socket.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/socket.sh b/src/socket.sh index 4b11812f..dcd37f3b 100644 --- a/src/socket.sh +++ b/src/socket.sh @@ -6,7 +6,7 @@ path="/run/shm/msg.html" inotifywait -m "$path" | while read fp event fn; do case "${event,,}" in - "modify" ) cat "$path" ;; - "delete" ) echo "DONE" ;; + "modify" ) echo -n "s: " && cat "$path" ;; + "delete" ) echo "c: vnc" ;; esac done From 4821077991ec75a5863b9cb86a2a8b5d7aa8763b Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:30:00 +0200 Subject: [PATCH 29/45] Update socket.sh --- src/socket.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/socket.sh b/src/socket.sh index dcd37f3b..3f1c0700 100644 --- a/src/socket.sh +++ b/src/socket.sh @@ -3,8 +3,8 @@ set -Eeuo pipefail path="/run/shm/msg.html" -inotifywait -m "$path" | - while read fp event fn; do +inotifywait -m "$path" | + while read fp event fn; do case "${event,,}" in "modify" ) echo -n "s: " && cat "$path" ;; "delete" ) echo "c: vnc" ;; From b0899f657f372cc543df84649a705462f4067f7f Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:32:45 +0200 Subject: [PATCH 30/45] Update proc.sh --- src/proc.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/src/proc.sh b/src/proc.sh index f78a8e25..452a6758 100644 --- a/src/proc.sh +++ b/src/proc.sh @@ -4,7 +4,6 @@ set -Eeuo pipefail # Docker environment variables : "${HV="Y"}" -: "${KVM:="Y"}" : "${VMX:="N"}" : "${CPU_FLAGS:=""}" : "${CPU_MODEL:=""}" From a4e7906b6ea46087c1b4381f79c4940d1c1c9523 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:34:34 +0200 Subject: [PATCH 31/45] Handle unknown events in socket.sh --- src/socket.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/socket.sh b/src/socket.sh index 3f1c0700..559b2ea2 100644 --- a/src/socket.sh +++ b/src/socket.sh @@ -8,5 +8,6 @@ inotifywait -m "$path" | case "${event,,}" in "modify" ) echo -n "s: " && cat "$path" ;; "delete" ) echo "c: vnc" ;; - esac + * ) echo "e: Unknown event: $event" ;; + esac done From d43a33864caf8582b127a69074fb88b50f175d90 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:35:02 +0200 Subject: [PATCH 32/45] Add error handling for case 'e' in script.js --- web/js/script.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/web/js/script.js b/web/js/script.js index 0dcc5108..2dee8da7 100644 --- a/web/js/script.js +++ b/web/js/script.js @@ -153,6 +153,9 @@ function connect() { case "c": setError("X + msg + "X"); break; + case "e": + setError("X + msg + "X"); + break; } }; From 5e73b19c7f4521b452700ab0152dcc85ee590248 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:37:48 +0200 Subject: [PATCH 33/45] Update script.js --- web/js/script.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/web/js/script.js b/web/js/script.js index 2dee8da7..1b40c2cb 100644 --- a/web/js/script.js +++ b/web/js/script.js @@ -143,7 +143,7 @@ function connect() { ws.onmessage = function(e) { var pos = e.data.indexOf(":"); - var cmd = e.data.substring(0, pos; + var cmd = e.data.substring(0, pos); var msg = e.data.substring(pos + 1); switch(cmd) { @@ -151,11 +151,11 @@ function connect() { setInfo(msg); break; case "c": - setError("X + msg + "X"); + setError("X" + msg + "X"); break; case "e": - setError("X + msg + "X"); - break; + setError("X" + msg + "X"); + break; } }; @@ -166,7 +166,7 @@ function connect() { }; ws.onerror = function(e) { - setError("Error: " + e.message); + setError("Error: " + e); ws.close(); }; } From 0ad255368d561d818dd58cf0da1b9a94fbc0c35c Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:39:58 +0200 Subject: [PATCH 34/45] Change delete event to delete_self in socket.sh --- src/socket.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/socket.sh b/src/socket.sh index 559b2ea2..14acab94 100644 --- a/src/socket.sh +++ b/src/socket.sh @@ -7,7 +7,6 @@ inotifywait -m "$path" | while read fp event fn; do case "${event,,}" in "modify" ) echo -n "s: " && cat "$path" ;; - "delete" ) echo "c: vnc" ;; - * ) echo "e: Unknown event: $event" ;; + "delete_self" ) echo "c: vnc" ;; esac done From a3676b8000534f7895fb81ec09c70371a9a256e2 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:40:48 +0200 Subject: [PATCH 35/45] Fix message parsing and error handling in script.js --- web/js/script.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/js/script.js b/web/js/script.js index 1b40c2cb..0139c07f 100644 --- a/web/js/script.js +++ b/web/js/script.js @@ -144,17 +144,17 @@ function connect() { var pos = e.data.indexOf(":"); var cmd = e.data.substring(0, pos); - var msg = e.data.substring(pos + 1); + var msg = e.data.substring(pos + 2); switch(cmd) { case "s": setInfo(msg); break; case "c": - setError("X" + msg + "X"); + setError(msg); break; case "e": - setError("X" + msg + "X"); + setError(msg); break; } }; From 22b75caef83d8cd227772b99a291ec2db8287ef8 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:43:45 +0200 Subject: [PATCH 36/45] Update websocket error handling message --- web/js/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/js/script.js b/web/js/script.js index 0139c07f..9c87e9f8 100644 --- a/web/js/script.js +++ b/web/js/script.js @@ -166,7 +166,7 @@ function connect() { }; ws.onerror = function(e) { - setError("Error: " + e); + setError("Websocket closed"); ws.close(); }; } From 88dedb9ea082cf1e078d879a379743a2098e2cdb Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:56:58 +0200 Subject: [PATCH 37/45] Refactor VNC connection handling in script.js --- web/js/script.js | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/web/js/script.js b/web/js/script.js index 9c87e9f8..21e17aa4 100644 --- a/web/js/script.js +++ b/web/js/script.js @@ -47,6 +47,16 @@ function getURL() { return protocol + "//" + window.location.host + path; } +function redirect() { + + setInfo("Connecting to VNC", true); + + var wsUrl = getURL() + "/websockify"; + var webSocket = webSocketFactory.connect(wsUrl); + + return true; +} + function processInfo() { try { @@ -73,11 +83,7 @@ function processInfo() { } if (notFound) { - setInfo("Connecting to VNC", true); - - var wsUrl = getURL() + "/websockify"; - var webSocket = webSocketFactory.connect(wsUrl); - + redirect(); return true; } @@ -145,17 +151,27 @@ function connect() { var pos = e.data.indexOf(":"); var cmd = e.data.substring(0, pos); var msg = e.data.substring(pos + 2); - + switch(cmd) { case "s": setInfo(msg); break; case "c": - setError(msg); + switch(msg) { + case "vnc": + redirect(); + break; + default: + console.warn("Unknown command: " + msg); + break; + } break; case "e": setError(msg); break; + default: + console.warn("Unknown event: " + cmd); + break; } }; @@ -166,7 +182,7 @@ function connect() { }; ws.onerror = function(e) { - setError("Websocket closed"); + console.warn("Websocket closed"); ws.close(); }; } From b68f53cdabb29097ba75c13989e01585aed140d8 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 11:57:59 +0200 Subject: [PATCH 38/45] Update script.js --- web/js/script.js | 82 ++++++++++++++++++++++++------------------------ 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/web/js/script.js b/web/js/script.js index 21e17aa4..32bec2db 100644 --- a/web/js/script.js +++ b/web/js/script.js @@ -143,48 +143,48 @@ function schedule() { function connect() { - var wsUrl = getURL() + "/status"; - var ws = new WebSocket(wsUrl); - - ws.onmessage = function(e) { - - var pos = e.data.indexOf(":"); - var cmd = e.data.substring(0, pos); - var msg = e.data.substring(pos + 2); - - switch(cmd) { - case "s": - setInfo(msg); - break; - case "c": - switch(msg) { - case "vnc": - redirect(); - break; - default: - console.warn("Unknown command: " + msg); - break; + var wsUrl = getURL() + "/status"; + var ws = new WebSocket(wsUrl); + + ws.onmessage = function(e) { + + var pos = e.data.indexOf(":"); + var cmd = e.data.substring(0, pos); + var msg = e.data.substring(pos + 2); + + switch (cmd) { + case "s": + setInfo(msg); + break; + case "c": + switch (msg) { + case "vnc": + redirect(); + break; + default: + console.warn("Unknown command: " + msg); + break; + } + break; + case "e": + setError(msg); + break; + default: + console.warn("Unknown event: " + cmd); + break; } - break; - case "e": - setError(msg); - break; - default: - console.warn("Unknown event: " + cmd); - break; - } - }; - - ws.onclose = function(e) { - setTimeout(function() { - connect(); - }, interval); - }; - - ws.onerror = function(e) { - console.warn("Websocket closed"); - ws.close(); - }; + }; + + ws.onclose = function(e) { + setTimeout(function() { + connect(); + }, interval); + }; + + ws.onerror = function(e) { + console.warn("Websocket closed"); + ws.close(); + }; } getInfo(); From ca2242da66fb5b89a72a01cd901139a3c99555f1 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 12:54:36 +0200 Subject: [PATCH 39/45] Update script.js --- web/js/script.js | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/web/js/script.js b/web/js/script.js index 32bec2db..3faca263 100644 --- a/web/js/script.js +++ b/web/js/script.js @@ -8,7 +8,7 @@ var webSocketFactory = { ws.addEventListener("open", e => { ws.close(); - document.location.reload(); + window.location.reload(); }); ws.addEventListener("error", e => { @@ -67,7 +67,7 @@ function processInfo() { var msg = request.responseText; if (msg == null || msg.length == 0) { setError("Lost connection"); - schedule(); + window.location.reload(); return false; } @@ -88,7 +88,6 @@ function processInfo() { } setError("Error: Received statuscode " + request.status); - schedule(); return false; } catch (e) { @@ -137,10 +136,6 @@ function setError(text) { return setInfo(text, false, true); } -function schedule() { - setTimeout(getInfo, interval); -} - function connect() { var wsUrl = getURL() + "/status"; @@ -182,8 +177,8 @@ function connect() { }; ws.onerror = function(e) { - console.warn("Websocket closed"); ws.close(); + window.location.reload(); }; } From 933e02b6c02ff39ef23e0d9752afc83fc8a4c19b Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 13:11:30 +0200 Subject: [PATCH 40/45] Update reset.sh --- src/reset.sh | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/reset.sh b/src/reset.sh index bef879e4..76adbbb3 100644 --- a/src/reset.sh +++ b/src/reset.sh @@ -149,17 +149,23 @@ if [[ "$RAM_CHECK" != [Nn]* ]] && (( (RAM_WANTED + RAM_SPARE) > RAM_AVAIL )); th info "$msg" fi +# Check KVM support + +if [[ "${PLATFORM,,}" == "x64" ]]; then + TARGET="amd64" +else + TARGET="arm64" +fi + if [[ "$KVM" == [Nn]* ]]; then warn "KVM acceleration is disabled, this will cause the machine to run about 10 times slower!" else - if [[ "${ARCH,,}" != "amd64" ]]; then + if [[ "${ARCH,,}" != "$TARGET" ]]; then KVM="N" - warn "your CPU architecture is ${ARCH^^} and cannot provide KVM acceleration for x64 instructions, so the machine will run about 10 times slower." + warn "your CPU architecture is ${ARCH^^} and cannot provide KVM acceleration for ${PLATFORM^^} instructions, so the machine will run about 10 times slower." fi fi -# Check KVM support - if [[ "$KVM" != [Nn]* ]]; then KVM_ERR="" @@ -170,9 +176,11 @@ if [[ "$KVM" != [Nn]* ]]; then if ! sh -c 'echo -n > /dev/kvm' &> /dev/null; then KVM_ERR="(/dev/kvm is unwriteable)" else - flags=$(sed -ne '/^flags/s/^.*: //p' /proc/cpuinfo) - if ! grep -qw "vmx\|svm" <<< "$flags"; then - KVM_ERR="(not enabled in BIOS)" + if [[ "${PLATFORM,,}" == "x64" ]]; then + flags=$(sed -ne '/^flags/s/^.*: //p' /proc/cpuinfo) + if ! grep -qw "vmx\|svm" <<< "$flags"; then + KVM_ERR="(not enabled in BIOS)" + fi fi fi fi From 2f40d9f6dc320f1cc0914b2c088791f4ffe5412e Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 13:14:12 +0200 Subject: [PATCH 41/45] Update entry.sh --- src/entry.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/entry.sh b/src/entry.sh index 4f0f249c..e478dcea 100755 --- a/src/entry.sh +++ b/src/entry.sh @@ -7,9 +7,10 @@ set -Eeuo pipefail cd /run -. start.sh # Placeholder +. start.sh # Startup hook . utils.sh # Load functions . reset.sh # Initialize system +. server.sh # Start webserver . define.sh # Define images . install.sh # Download image . disk.sh # Initialize disks From b76da42ce4eded0a9fd793167a161c426a66cb2b Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 13:15:01 +0200 Subject: [PATCH 42/45] Create server.sh --- src/server.sh | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/server.sh diff --git a/src/server.sh b/src/server.sh new file mode 100644 index 00000000..3ed85707 --- /dev/null +++ b/src/server.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +: "${VNC_PORT:="5900"}" # VNC port +: "${MON_PORT:="7100"}" # Monitor port +: "${WEB_PORT:="8006"}" # Webserver port +: "${WSD_PORT:="8004"}" # Websockets port +: "${WSS_PORT:="5700"}" # Websockets port + +if (( VNC_PORT < 5900 )); then + warn "VNC port cannot be set lower than 5900, ignoring value $VNC_PORT." + VNC_PORT="5900" +fi + +cp -r /var/www/* /run/shm +rm -f /var/run/websocketd.pid + +if [[ "${WEB:-}" != [Nn]* ]]; then + + mkdir -p /etc/nginx/sites-enabled + cp /etc/nginx/default.conf /etc/nginx/sites-enabled/web.conf + + user="admin" + [ -n "${USER:-}" ] && user="${USER:-}" + + if [ -n "${PASS:-}" ]; then + + # Set password + echo "$user:{PLAIN}${PASS:-}" > /etc/nginx/.htpasswd + + sed -i "s/auth_basic off/auth_basic \"NoVNC\"/g" /etc/nginx/sites-enabled/web.conf + + fi + + sed -i "s/listen 8006 default_server;/listen $WEB_PORT default_server;/g" /etc/nginx/sites-enabled/web.conf + sed -i "s/proxy_pass http:\/\/127.0.0.1:5700\/;/proxy_pass http:\/\/127.0.0.1:$WSS_PORT\/;/g" /etc/nginx/sites-enabled/web.conf + sed -i "s/proxy_pass http:\/\/127.0.0.1:8004\/;/proxy_pass http:\/\/127.0.0.1:$WSD_PORT\/;/g" /etc/nginx/sites-enabled/web.conf + + # shellcheck disable=SC2143 + if [ -f /proc/net/if_inet6 ] && [ -n "$(ifconfig -a | grep inet6)" ]; then + + sed -i "s/listen $WEB_PORT default_server;/listen [::]:$WEB_PORT default_server ipv6only=off;/g" /etc/nginx/sites-enabled/web.conf + + fi + + # Start webserver + nginx -e stderr + + # Start websocket server + websocketd --address 127.0.0.1 --port="$WSD_PORT" /run/socket.sh >/var/log/websocketd.log & + echo "$!" > /var/run/websocketd.pid + +fi + +return 0 From 1eab8e0369804474aa401acaa3bc796f36b0b295 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 13:15:34 +0200 Subject: [PATCH 43/45] Update reset.sh --- src/reset.sh | 51 --------------------------------------------------- 1 file changed, 51 deletions(-) diff --git a/src/reset.sh b/src/reset.sh index 76adbbb3..d4ac87ba 100644 --- a/src/reset.sh +++ b/src/reset.sh @@ -206,57 +206,6 @@ if [[ "$KVM" != [Nn]* ]]; then fi -: "${VNC_PORT:="5900"}" # VNC port -: "${MON_PORT:="7100"}" # Monitor port -: "${WEB_PORT:="8006"}" # Webserver port -: "${WSD_PORT:="8004"}" # Websockets port -: "${WSS_PORT:="5700"}" # Websockets port - -if (( VNC_PORT < 5900 )); then - warn "VNC port cannot be set lower than 5900, ignoring value $VNC_PORT." - VNC_PORT="5900" -fi - -cp -r /var/www/* /run/shm -rm -f /var/run/websocketd.pid - html "Starting $APP for $ENGINE..." -if [[ "${WEB:-}" != [Nn]* ]]; then - - mkdir -p /etc/nginx/sites-enabled - cp /etc/nginx/default.conf /etc/nginx/sites-enabled/web.conf - - user="admin" - [ -n "${USER:-}" ] && user="${USER:-}" - - if [ -n "${PASS:-}" ]; then - - # Set password - echo "$user:{PLAIN}${PASS:-}" > /etc/nginx/.htpasswd - - sed -i "s/auth_basic off/auth_basic \"NoVNC\"/g" /etc/nginx/sites-enabled/web.conf - - fi - - sed -i "s/listen 8006 default_server;/listen $WEB_PORT default_server;/g" /etc/nginx/sites-enabled/web.conf - sed -i "s/proxy_pass http:\/\/127.0.0.1:5700\/;/proxy_pass http:\/\/127.0.0.1:$WSS_PORT\/;/g" /etc/nginx/sites-enabled/web.conf - sed -i "s/proxy_pass http:\/\/127.0.0.1:8004\/;/proxy_pass http:\/\/127.0.0.1:$WSD_PORT\/;/g" /etc/nginx/sites-enabled/web.conf - - # shellcheck disable=SC2143 - if [ -f /proc/net/if_inet6 ] && [ -n "$(ifconfig -a | grep inet6)" ]; then - - sed -i "s/listen $WEB_PORT default_server;/listen [::]:$WEB_PORT default_server ipv6only=off;/g" /etc/nginx/sites-enabled/web.conf - - fi - - # Start webserver - nginx -e stderr - - # Start websocket server - websocketd --address 127.0.0.1 --port="$WSD_PORT" /run/socket.sh >/var/log/websocketd.log & - echo "$!" > /var/run/websocketd.pid - -fi - return 0 From 003c4853e935fe8d081291335c0718ec719c2f80 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 13:17:37 +0200 Subject: [PATCH 44/45] Update proc.sh --- src/proc.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/src/proc.sh b/src/proc.sh index 452a6758..a2254628 100644 --- a/src/proc.sh +++ b/src/proc.sh @@ -11,6 +11,7 @@ set -Eeuo pipefail [[ "$DEBUG" == [Yy1]* ]] && echo "Configuring KVM..." vendor=$(lscpu | awk '/Vendor ID/{print $3}') +flags=$(sed -ne '/^flags/s/^.*: //p' /proc/cpuinfo) if [[ "$KVM" != [Nn]* ]]; then From 16240c7f23b3dc6348f469ee85f0d3006dffc6b8 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 8 Oct 2025 13:19:58 +0200 Subject: [PATCH 45/45] Update socket.sh --- src/socket.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/socket.sh b/src/socket.sh index 14acab94..c095e674 100644 --- a/src/socket.sh +++ b/src/socket.sh @@ -4,7 +4,7 @@ set -Eeuo pipefail path="/run/shm/msg.html" inotifywait -m "$path" | - while read fp event fn; do + while read -r fp event fn; do case "${event,,}" in "modify" ) echo -n "s: " && cat "$path" ;; "delete_self" ) echo "c: vnc" ;;