From a32bc2dc8fa7896182e55b0cbfb9f8f466b3bf7b Mon Sep 17 00:00:00 2001 From: Kroese Date: Sun, 7 Jan 2024 23:51:05 +0100 Subject: [PATCH] feat: Add web-based VNC viewer (#308) --- readme.md | 61 +++++++++++++++++++++++++++++--------------------- src/display.sh | 3 +-- src/entry.sh | 4 ++-- 3 files changed, 39 insertions(+), 29 deletions(-) diff --git a/readme.md b/readme.md index 557fa1bb..add2b839 100644 --- a/readme.md +++ b/readme.md @@ -64,27 +64,29 @@ docker run -it --rm -e "DISPLAY=vnc" -e "BOOT=http://example.com/image.iso" -p 5 It will be downloaded only once, during the initial run of the container. - * ### How do I change the size of the data disk? + * ### How do I interact with the VM? - To expand the default size of 16 GB, add the `DISK_SIZE` setting to your compose file and set it to your preferred capacity: + If you just need text-based output you can use the Docker console, or connect via SSH. + + If you need graphical output, you can enable VNC by adding the following lines to your compose file: ```yaml environment: - DISK_SIZE: "128G" + DISPLAY: "vnc" + ports: + - 5900:5900 ``` - - This can also be used to resize the existing disk to a larger capacity without any data loss. - - * ### How do I change the location of the data disk? - To change the location of the data disk, include the following bind mount in your compose file: + If you want to enable the web-based VNC viewer, so that you do not need to install any client software, add the following lines to your compose file instead: ```yaml - volumes: - - /var/qemu:/storage + environment: + DISPLAY: "web" + ports: + - 8006:8006 ``` - Replace the example path `/var/qemu` with the desired storage folder. + Afterwards you can visit [http://localhost:8006/vnc.html](http://localhost:8006/vnc.html) using any webbrowser to view the screen of the VM and interact with it via the keyboard/mouse. * ### How do I increase the amount of CPU or RAM? @@ -98,6 +100,28 @@ docker run -it --rm -e "DISPLAY=vnc" -e "BOOT=http://example.com/image.iso" -p 5 CPU_CORES: "4" ``` + * ### How do I change the size of the data disk? + + To expand the default size of 16 GB, add the `DISK_SIZE` setting to your compose file and set it to your preferred capacity: + + ```yaml + environment: + DISK_SIZE: "128G" + ``` + + This can also be used to resize the existing disk to a larger capacity without any data loss. + + * ### How do I change the location of the data disk? + + To change the location of the data disk, include the following bind mount in your compose file: + + ```yaml + volumes: + - /var/qemu:/storage + ``` + + Replace the example path `/var/qemu` with the desired storage folder. + * ### How do I verify if my system supports KVM? To verify if your system supports KVM, run the following commands: @@ -160,19 +184,6 @@ docker run -it --rm -e "DISPLAY=vnc" -e "BOOT=http://example.com/image.iso" -p 5 Please note that even if you don't need DHCP, it's still recommended to enable this feature as it prevents NAT issues and increases performance by using a `macvtap` interface. - * ### How can I connect with VNC? - - To enable VNC, add the following lines to your compose file: - - ```yaml - environment: - DISPLAY: "vnc" - ports: - - 5900:5900 - ``` - - Afterwards you can connect with any VNC client to port 5900. - * ### How do I boot with UEFI? To enable UEFI booting, add the following line to your compose file: @@ -182,7 +193,7 @@ docker run -it --rm -e "DISPLAY=vnc" -e "BOOT=http://example.com/image.iso" -p 5 BOOT_MODE: "uefi" ``` - You can also set this to ```secure``` to enable secure boot, or to ```windows``` to enable Windows 11 booting. + You can also set this to ```windows``` to enable Windows booting. * ### How do I provide custom arguments to QEMU? diff --git a/src/display.sh b/src/display.sh index 3aca9399..cfffeae0 100644 --- a/src/display.sh +++ b/src/display.sh @@ -11,8 +11,7 @@ case "${DISPLAY,,}" in DISPLAY_OPTS="-display vnc=:0 -vga virtio" ;; web) - addPackage "novnc" "NoVNC" - addPackage "websockify" "Websockify" + addPackage "novnc" "web-based VNC client" DISPLAY_OPTS="-display vnc=:0 -vga virtio" ;; *) diff --git a/src/entry.sh b/src/entry.sh index ebb9e9e4..db77e1e9 100755 --- a/src/entry.sh +++ b/src/entry.sh @@ -2,7 +2,7 @@ set -Eeuo pipefail echo "❯ Starting QEMU for Docker v$(/dev/null fi info "Booting image using $VERS..."