From f88bcd573b165e0e2d149bdfadd19e7ad7b06afc Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 28 Jan 2025 12:16:00 +1300 Subject: [PATCH 01/10] Debian: add missing dependency on libdatetime-perl --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index bff5f2a..11fac2f 100644 --- a/debian/control +++ b/debian/control @@ -14,7 +14,7 @@ Architecture: amd64 arm64 Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, ssl-cert, xauth, x11-xkb-utils, xkb-data, procps, libswitch-perl, libyaml-tiny-perl, libhash-merge-simple-perl, libscalar-list-utils-perl, liblist-moreutils-perl, - libtry-tiny-perl, libdatetime-timezone-perl, libgbm1 + libtry-tiny-perl, libdatetime-perl, libdatetime-timezone-perl, libgbm1 Provides: vnc-server Description: KasmVNC provides remote web-based access to a Desktop or application. While VNC is in the name, KasmVNC differs from other VNC variants such From 0b701e6c18ac78d2344578335e3be8dac3a7c0c8 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 31 Jan 2025 17:54:05 +1300 Subject: [PATCH 02/10] KASM-6518 Remove Bionic support --- .gitlab-ci.yml | 54 +++----------------- builder/README.md | 11 ++--- builder/dockerfile.ubuntu_bionic.build | 32 ------------ builder/dockerfile.ubuntu_bionic.deb.build | 17 ------- builder/dockerfile.ubuntu_bionic.deb.test | 57 ---------------------- builder/dockerfile.ubuntu_bionic.test | 51 ------------------- builder/dockerfile.ubuntu_focal.deb.test | 2 +- builder/dockerfile.ubuntu_jammy.deb.test | 2 +- builder/os_ver_cli.sh | 2 +- 9 files changed, 16 insertions(+), 212 deletions(-) delete mode 100644 builder/dockerfile.ubuntu_bionic.build delete mode 100644 builder/dockerfile.ubuntu_bionic.deb.build delete mode 100644 builder/dockerfile.ubuntu_bionic.deb.test delete mode 100644 builder/dockerfile.ubuntu_bionic.test diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6dd1bf6..73fec9a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,7 +7,7 @@ variables: GITLAB_SHARED_DIND_DIR: /builds/$CI_PROJECT_PATH/shared GIT_SUBMODULE_STRATEGY: normal GIT_FETCH_EXTRA_FLAGS: --tags --force - # E.g. BUILD_JOBS: build_debian_buster,build_ubuntu_bionic. This will include + # E.g. BUILD_JOBS: build_debian_buster,build_ubuntu_focal. This will include # arm builds, because build_debian_buster_arm matches build_debian_buster. # "BUILD_JOBS: none" won't build any build jobs, nor www. BUILD_JOBS: all @@ -66,44 +66,6 @@ build_www: paths: - output/ -build_ubuntu_bionic: - stage: build - allow_failure: true - tags: - - oci-fixed-amd - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package ubuntu bionic - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - -build_ubuntu_bionic_arm: - stage: build - allow_failure: false - tags: - - oci-fixed-arm - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package ubuntu bionic - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - build_ubuntu_focal: stage: build allow_failure: true @@ -198,7 +160,7 @@ build_ubuntu_noble: artifacts: paths: - output/ - + build_ubuntu_noble_arm: stage: build allow_failure: true @@ -209,7 +171,7 @@ build_ubuntu_noble_arm: - *prepare_www after_script: - *prepare_artfacts - script: + script: - bash builder/build-package ubuntu noble; only: variables: @@ -617,13 +579,13 @@ build_fedora_forty: artifacts: paths: - output/ - + build_fedora_forty_arm: stage: build allow_failure: true tags: - oci-fixed-arm - before_script: + before_script: - *prepare_build - *prepare_www after_script: @@ -655,18 +617,18 @@ build_fedora_fortyone: artifacts: paths: - output/ - + build_fedora_fortyone_arm: stage: build allow_failure: true tags: - oci-fixed-arm - before_script: + before_script: - *prepare_build - *prepare_www after_script: - *prepare_artfacts - script: + script: - bash builder/build-package fedora fortyone; only: variables: diff --git a/builder/README.md b/builder/README.md index ea05cc1..b5f5276 100644 --- a/builder/README.md +++ b/builder/README.md @@ -7,7 +7,7 @@ Docker CE # os_codename is what "lsb_release -c" outputs, e.g. buster, focal. # # build_tag allows building multiple versions of deb package (rpm not supported) -# targeting a single distro release (e.g. Ubuntu Bionic). If build_tag is given, +# targeting a single distro release (e.g. Ubuntu Focal). If build_tag is given, # the package name will include build_tag as part of Debian revision. For # example: # * with build_tag: kasmvncserver_0.9.1~beta-1+libjpeg-turbo-latest_amd64.deb @@ -16,7 +16,6 @@ Docker CE # # Packages will be placed under builder/build/ -builder/build-package ubuntu bionic builder/build-package ubuntu focal builder/build-package debian buster builder/build-package debian bullseye @@ -118,7 +117,7 @@ locally by doing stuff like this: ``` bash -c ' . .ci/upload.sh; -prepare_upload_filename "bionic/kasmvncserver_0.9.1~beta-1+libjpeg-turbo-latest_amd64.deb"; +prepare_upload_filename "focal/kasmvncserver_0.9.1~beta-1+libjpeg-turbo-latest_amd64.deb"; echo $upload_filename;' ``` @@ -178,7 +177,7 @@ These instructions assume KasmVNC has been cloned at $HOME and ```kasm_www.tar.g cd ~ tar -zxf kasm_www.tar.gz -C KasmVNC/builder/ cd KasmVNC -sudo builder/build-package ubuntu bionic +sudo builder/build-package ubuntu focal ``` -The resulting deb package can be found under ~/KasmVNC/builder/build/bionic -Replace ```bionic``` with ```focal``` to build for Ubuntu 20.04LTS. At this time, only Ubuntu Bionic has been tested, however, other Debian based builds we support should also work. +The resulting deb package can be found under ~/KasmVNC/builder/build/focal +Replace ```focal``` with ```noble``` to build for Ubuntu 24.04LTS. diff --git a/builder/dockerfile.ubuntu_bionic.build b/builder/dockerfile.ubuntu_bionic.build deleted file mode 100644 index c76b4eb..0000000 --- a/builder/dockerfile.ubuntu_bionic.build +++ /dev/null @@ -1,32 +0,0 @@ -FROM ubuntu:18.04 - -ENV KASMVNC_BUILD_OS ubuntu -ENV KASMVNC_BUILD_OS_CODENAME bionic -ENV XORG_VER 1.20.10 - -RUN sed -i 's$# deb-src$deb-src$' /etc/apt/sources.list - -RUN apt-get update && \ - apt-get -y install sudo - -RUN apt-get update && apt-get -y build-dep xorg-server libxfont-dev -RUN apt-get update && apt-get -y install cmake git libgnutls28-dev vim wget tightvncserver curl -RUN apt-get update && apt-get -y install libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev - -ENV SCRIPTS_DIR=/tmp/scripts -COPY builder/scripts $SCRIPTS_DIR -RUN $SCRIPTS_DIR/build-webp -RUN $SCRIPTS_DIR/build-libjpeg-turbo - -# Fix for older required libs -#RUN cd /tmp && wget http://launchpadlibrarian.net/347526424/libxfont1-dev_1.5.2-4ubuntu2_amd64.deb && \ -# wget http://launchpadlibrarian.net/347526425/libxfont1_1.5.2-4ubuntu2_amd64.deb && \ -# dpkg -i libxfont1_1.5.2-4ubuntu2_amd64.deb && \ -# dpkg -i libxfont1-dev_1.5.2-4ubuntu2_amd64.deb - -RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo - -COPY --chown=docker:docker . /src/ - -USER docker -ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.ubuntu_bionic.deb.build b/builder/dockerfile.ubuntu_bionic.deb.build deleted file mode 100644 index a554ecb..0000000 --- a/builder/dockerfile.ubuntu_bionic.deb.build +++ /dev/null @@ -1,17 +0,0 @@ -FROM ubuntu:bionic - -RUN apt-get update && \ - apt-get -y install vim build-essential devscripts equivs - -# Install build-deps for the package. -COPY ./debian/control /tmp -RUN apt-get update && echo YYY | mk-build-deps --install --remove /tmp/control - -ARG L_UID -RUN if [ "$L_UID" -eq 0 ]; then \ - useradd -m docker; \ - else \ - useradd -m docker -u $L_UID;\ - fi - -USER docker diff --git a/builder/dockerfile.ubuntu_bionic.deb.test b/builder/dockerfile.ubuntu_bionic.deb.test deleted file mode 100644 index 8d68055..0000000 --- a/builder/dockerfile.ubuntu_bionic.deb.test +++ /dev/null @@ -1,57 +0,0 @@ -FROM ubuntu:bionic - -ENV DISPLAY=:1 \ - VNC_PORT=8443 \ - VNC_RESOLUTION=1280x720 \ - MAX_FRAME_RATE=24 \ - VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7" \ - HOME=/home/user \ - TERM=xterm \ - STARTUPDIR=/dockerstartup \ - INST_SCRIPTS=/dockerstartup/install \ - KASM_RX_HOME=/dockerstartup/kasmrx \ - DEBIAN_FRONTEND=noninteractive \ - VNC_COL_DEPTH=24 \ - VNC_RESOLUTION=1280x1024 \ - VNC_PW=vncpassword \ - VNC_USER=user \ - VNC_VIEW_ONLY_PW=vncviewonlypassword \ - LD_LIBRARY_PATH=/usr/local/lib/ \ - OMP_WAIT_POLICY=PASSIVE \ - SHELL=/bin/bash \ - SINGLE_APPLICATION=0 \ - KASMVNC_BUILD_OS=ubuntu \ - KASMVNC_BUILD_OS_CODENAME=bionic - -EXPOSE $VNC_PORT - -WORKDIR $HOME - -### REQUIRED STUFF ### - -RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext wget -RUN apt-get purge -y pm-utils xscreensaver* -RUN apt-get update && apt-get install -y vim less -RUN apt-get update && apt-get -y install lsb-release - -RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc - -RUN mkdir -p $STARTUPDIR -COPY builder/startup/ $STARTUPDIR - -### START CUSTOM STUFF #### - -COPY ./builder/scripts/ /tmp/scripts/ -COPY ./debian/changelog /tmp - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/kasmvncserver_*.deb /tmp/ -RUN /tmp/scripts/install_kasmvncserver_package - -### END CUSTOM STUFF ### - -RUN chown -R 1000:0 $HOME -USER 1000:ssl-cert -WORKDIR $HOME - -ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] diff --git a/builder/dockerfile.ubuntu_bionic.test b/builder/dockerfile.ubuntu_bionic.test deleted file mode 100644 index a9c2049..0000000 --- a/builder/dockerfile.ubuntu_bionic.test +++ /dev/null @@ -1,51 +0,0 @@ -FROM ubuntu:18.04 - -ENV DISPLAY=:1 \ - VNC_PORT=8443 \ - VNC_RESOLUTION=1280x720 \ - MAX_FRAME_RATE=24 \ - VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7" \ - HOME=/home/user \ - TERM=xterm \ - STARTUPDIR=/dockerstartup \ - INST_SCRIPTS=/dockerstartup/install \ - KASM_RX_HOME=/dockerstartup/kasmrx \ - DEBIAN_FRONTEND=noninteractive \ - VNC_COL_DEPTH=24 \ - VNC_RESOLUTION=1280x1024 \ - VNC_PW=vncpassword \ - VNC_USER=user \ - VNC_VIEW_ONLY_PW=vncviewonlypassword \ - LD_LIBRARY_PATH=/usr/local/lib/ \ - OMP_WAIT_POLICY=PASSIVE \ - SHELL=/bin/bash \ - SINGLE_APPLICATION=0 \ - KASMVNC_BUILD_OS=ubuntu \ - KASMVNC_BUILD_OS_CODENAME=bionic - -EXPOSE $VNC_PORT - -WORKDIR $HOME - -### REQUIRED STUFF ### - -RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext wget -RUN apt-get purge -y pm-utils xscreensaver* - -RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc - -RUN mkdir -p $STARTUPDIR -COPY builder/startup/ $STARTUPDIR - -### START CUSTOM STUFF #### - -COPY build/kasmvnc.${KASMVNC_BUILD_OS}_${KASMVNC_BUILD_OS_CODENAME}.tar.gz /tmp/ -RUN tar -xzvf /tmp/kasmvnc.${KASMVNC_BUILD_OS}_${KASMVNC_BUILD_OS_CODENAME}.tar.gz --strip 1 -C / - -### END CUSTOM STUFF ### - -RUN chown -R 1000:0 $HOME -USER 1000 -WORKDIR $HOME - -ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] diff --git a/builder/dockerfile.ubuntu_focal.deb.test b/builder/dockerfile.ubuntu_focal.deb.test index 16cd8a0..1ee3ad0 100644 --- a/builder/dockerfile.ubuntu_focal.deb.test +++ b/builder/dockerfile.ubuntu_focal.deb.test @@ -21,7 +21,7 @@ ENV DISPLAY=:1 \ SHELL=/bin/bash \ SINGLE_APPLICATION=0 \ KASMVNC_BUILD_OS=ubuntu \ - KASMVNC_BUILD_OS_CODENAME=bionic + KASMVNC_BUILD_OS_CODENAME=focal EXPOSE $VNC_PORT diff --git a/builder/dockerfile.ubuntu_jammy.deb.test b/builder/dockerfile.ubuntu_jammy.deb.test index 4e5f0dd..831a7c8 100644 --- a/builder/dockerfile.ubuntu_jammy.deb.test +++ b/builder/dockerfile.ubuntu_jammy.deb.test @@ -21,7 +21,7 @@ ENV DISPLAY=:1 \ SHELL=/bin/bash \ SINGLE_APPLICATION=0 \ KASMVNC_BUILD_OS=ubuntu \ - KASMVNC_BUILD_OS_CODENAME=bionic + KASMVNC_BUILD_OS_CODENAME=jammy EXPOSE $VNC_PORT diff --git a/builder/os_ver_cli.sh b/builder/os_ver_cli.sh index 534810d..cc19427 100644 --- a/builder/os_ver_cli.sh +++ b/builder/os_ver_cli.sh @@ -1,7 +1,7 @@ #!/bin/bash default_os=${default_os:-ubuntu} -default_os_codename=${default_os_codename:-bionic} +default_os_codename=${default_os_codename:-noble} os=${1:-$default_os} os_codename=${2:-$default_os_codename} From 18bb21671e140348bba08f5d14dd35360b91ae55 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 31 Jan 2025 18:02:45 +1300 Subject: [PATCH 03/10] KASM-6518 Remove support for Alpine 3.17 --- .gitlab-ci.yml | 37 ----------- builder/dockerfile.alpine_317.apk.build | 7 --- builder/dockerfile.alpine_317.build | 82 ------------------------- 3 files changed, 126 deletions(-) delete mode 100644 builder/dockerfile.alpine_317.apk.build delete mode 100644 builder/dockerfile.alpine_317.build diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 73fec9a..295c93b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -637,43 +637,6 @@ build_fedora_fortyone_arm: paths: - output/ -build_alpine_317: - stage: build - allow_failure: true - tags: - - oci-fixed-amd - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package alpine 317; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - -build_alpine_317_arm: - stage: build - allow_failure: true - tags: - - oci-fixed-arm - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package alpine 317; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ test: stage: test diff --git a/builder/dockerfile.alpine_317.apk.build b/builder/dockerfile.alpine_317.apk.build deleted file mode 100644 index 732f5f0..0000000 --- a/builder/dockerfile.alpine_317.apk.build +++ /dev/null @@ -1,7 +0,0 @@ -FROM alpine:3.17 - -RUN apk add shadow bash - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -USER docker diff --git a/builder/dockerfile.alpine_317.build b/builder/dockerfile.alpine_317.build deleted file mode 100644 index 0b23bcb..0000000 --- a/builder/dockerfile.alpine_317.build +++ /dev/null @@ -1,82 +0,0 @@ -FROM alpine:3.17 - -ENV KASMVNC_BUILD_OS alpine -ENV KASMVNC_BUILD_OS_CODENAME 317 -ENV XORG_VER 21.1.8 - -RUN \ - echo "**** install build deps ****" && \ - apk add \ - alpine-release \ - alpine-sdk \ - autoconf \ - automake \ - bash \ - ca-certificates \ - cmake \ - coreutils \ - curl \ - eudev-dev \ - font-cursor-misc \ - font-misc-misc \ - font-util-dev \ - git \ - grep \ - jq \ - libdrm-dev \ - libepoxy-dev \ - libjpeg-turbo-dev \ - libjpeg-turbo-static \ - libpciaccess-dev \ - libtool \ - libwebp-dev \ - libx11-dev \ - libxau-dev \ - libxcb-dev \ - libxcursor-dev \ - libxcvt-dev \ - libxdmcp-dev \ - libxext-dev \ - libxfont2-dev \ - libxkbfile-dev \ - libxrandr-dev \ - libxshmfence-dev \ - libxtst-dev \ - mesa-dev \ - mesa-dri-gallium \ - meson \ - nettle-dev \ - openssl-dev \ - pixman-dev \ - procps \ - shadow \ - tar \ - tzdata \ - wayland-dev \ - wayland-protocols \ - xcb-util-dev \ - xcb-util-image-dev \ - xcb-util-keysyms-dev \ - xcb-util-renderutil-dev \ - xcb-util-wm-dev \ - xinit \ - xkbcomp \ - xkbcomp-dev \ - xkeyboard-config \ - xorgproto \ - xorg-server-common \ - xorg-server-dev \ - xtrans - - -ENV SCRIPTS_DIR=/tmp/scripts -COPY builder/scripts $SCRIPTS_DIR -RUN $SCRIPTS_DIR/build-webp -RUN $SCRIPTS_DIR/build-libjpeg-turbo - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -COPY --chown=docker:docker . /src/ - -USER docker -ENTRYPOINT ["/src/builder/build.sh"] From 0eba021bde01240edefde0d42150f43e19147c74 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 31 Jan 2025 18:22:01 +1300 Subject: [PATCH 04/10] KASM-6518 Remove CentOS support --- BUILDING.txt | 14 +- README.md | 18 +- builder/README.md | 3 +- builder/build.sh | 12 -- builder/bump-package-version-rpm | 2 +- .../dockerfile.centos_core.barebones.rpm.test | 20 --- builder/dockerfile.centos_core.build | 35 ---- builder/dockerfile.centos_core.rpm.build | 12 -- builder/dockerfile.centos_core.rpm.test | 64 ------- builder/scripts/common.sh | 5 +- builder/test-rpm-barebones | 4 +- centos/kasmvncserver.spec | 158 ------------------ 12 files changed, 13 insertions(+), 334 deletions(-) delete mode 100644 builder/dockerfile.centos_core.barebones.rpm.test delete mode 100644 builder/dockerfile.centos_core.build delete mode 100644 builder/dockerfile.centos_core.rpm.build delete mode 100644 builder/dockerfile.centos_core.rpm.test delete mode 100644 centos/kasmvncserver.spec diff --git a/BUILDING.txt b/BUILDING.txt index b0f3782..b792555 100644 --- a/BUILDING.txt +++ b/BUILDING.txt @@ -48,7 +48,7 @@ Build Requirements (Windows) You also need the Inno Setup Preprocessor, which is available in the Inno Setup QuickStart Pack. - Add the directory containing iscc.exe (for instance, + Add the directory containing iscc.exe (for instance, C:\Program Files\Inno Setup 5) to the system or user PATH environment variable prior to building KasmVNC. @@ -90,7 +90,7 @@ but the general outline is as follows. > cp -R {xorg_source}/* unix/xserver/ (NOTE: {xorg_source} is the directory containing the Xorg source for the machine on which you are building KasmVNC. The most recent versions of - Red Hat/CentOS/Fedora, for instance, provide an RPM called + Red Hat/Fedora, for instance, provide an RPM called "xorg-x11-server-source", which installs the Xorg source under /usr/share/xorg-x11-server-source.) @@ -113,8 +113,8 @@ but the general outline is as follows. --with-serverconfig-path=/usr/lib[64]/xorg \ --with-dri-driver-path=/usr/lib[64]/dri \ {additional configure options} - (NOTE: This is merely an example that works with Red Hat Enterprise/CentOS - 6 and recent Fedora releases. You should customize it for your particular + (NOTE: This is merely an example that works with Red Hat Enterprise + and recent Fedora releases. You should customize it for your particular system. In particular, it will be necessary to customize the font, XKB, and DRI directories.) @@ -187,7 +187,7 @@ Building TLS Support ====================================== TLS requires GnuTLS, which is supplied with most Linux distributions and -with MinGW for Windows and can be built from source on OS X and other +with MinGW for Windows and can be built from source on OS X and other Unix variants. However, GnuTLS versions > 2.12.x && < 3.3.x should be avoided because of potential incompatibilities during initial handshaking. @@ -314,7 +314,7 @@ X server source (for instance, --host=i686-pc-linux-gnu). Add -DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.5.sdk \ - -DCMAKE_OSX_DEPLOYMENT_TARGET=10.5 + -DCMAKE_OSX_DEPLOYMENT_TARGET=10.5 to the CMake command line. The OS X 10.5 SDK must be installed. @@ -406,7 +406,7 @@ Distribution-Specific Packaging =============================== -RPM Packages for RHEL / CentOS +RPM Packages for RHEL ------------------------------ The RPM spec files and patches used to create the nightly builds diff --git a/README.md b/README.md index 5efc230..ccc0f50 100644 --- a/README.md +++ b/README.md @@ -46,22 +46,6 @@ sudo dnf localinstall ./kasmvncserver_*.rpm sudo usermod -a -G kasmvnc-cert $USER ``` -### CentOS 7 - -```sh -# Please choose the package for your distro here (under Assets): -# https://github.com/kasmtech/KasmVNC/releases -wget - -# Ensure KasmVNC dependencies are available -sudo yum install epel-release - -sudo yum install ./kasmvncserver_*.rpm - -# Add your user to the kasmvnc-cert group -sudo usermod -a -G kasmvnc-cert $USER -``` - ## Getting Started The following examples provide basic usage of KasmVNC with the tools provided. For full documentation on all the utilities and the runtime environment, see our [KasmVNC Documentation](https://www.kasmweb.com/kasmvnc/docs/latest/index.html) @@ -250,7 +234,7 @@ command_line: - Keyboard input rate limit - Screen region selection - Deb packages for Debian, Ubuntu, and Kali Linux included in release. - - RPM packages for CentOS, Oracle, OpenSUSE, Fedora. RPM packages are currently not updatable and not released, though you can build and install them. See build documentation. + - RPM packages for Oracle, OpenSUSE, Fedora. RPM packages are currently not updatable and not released, though you can build and install them. See build documentation. - Web [API](https://github.com/kasmtech/KasmVNC/wiki/API) added for remotely controlling and getting information from KasmVNC - Multi-User support with permissions that can be changed via the API - Web UI uses a webpack for faster load times. diff --git a/builder/README.md b/builder/README.md index b5f5276..64b8513 100644 --- a/builder/README.md +++ b/builder/README.md @@ -20,14 +20,13 @@ builder/build-package ubuntu focal builder/build-package debian buster builder/build-package debian bullseye builder/build-package kali kali-rolling -builder/build-package centos core # CentOS 7 builder/build-package fedora thirtythree ``` # Build and test a package ``` builder/build-and-test-deb ubuntu focal -builder/build-and-test-rpm centos core +builder/build-and-test-rpm oracle 8 ``` Open browser and point to https://localhost:443/ or https://\:443/ diff --git a/builder/build.sh b/builder/build.sh index cb0541b..be9d899 100755 --- a/builder/build.sh +++ b/builder/build.sh @@ -9,13 +9,6 @@ detect_quilt() { fi } -ensure_crashpad_can_fetch_line_number_by_address() { - if [ ! -f /etc/centos-release ]; then - export LDFLAGS="$LDFLAGS -no-pie" - fi -} - - fail_on_gcc_12() { if [[ -n "$CC" && -n "$CXX" ]]; then return; @@ -89,11 +82,6 @@ autoreconf -i # The distro paths start after prefix and end with the font path, # everything after that is based on BUILDING.txt to remove unneeded # components. -ensure_crashpad_can_fetch_line_number_by_address -# Centos7 is too old for dri3 -if [ ! "${KASMVNC_BUILD_OS}" == "centos" ]; then - CONFIG_OPTIONS="--enable-dri3" -fi # remove gl check for opensuse if [ "${KASMVNC_BUILD_OS}" == "opensuse" ] || ([ "${KASMVNC_BUILD_OS}" == "oracle" ] && [ "${KASMVNC_BUILD_OS_CODENAME}" == 9 ]); then sed -i 's/LIBGL="gl >= 7.1.0"/LIBGL="gl >= 1.1"/g' configure diff --git a/builder/bump-package-version-rpm b/builder/bump-package-version-rpm index fe3fc4d..2ef427d 100755 --- a/builder/bump-package-version-rpm +++ b/builder/bump-package-version-rpm @@ -3,7 +3,7 @@ set -eo pipefail new_version="$1" -spec_dirs=(centos oracle opensuse fedora) +spec_dirs=(oracle opensuse fedora) spec_files() { for d in "${spec_dirs[@]}"; do diff --git a/builder/dockerfile.centos_core.barebones.rpm.test b/builder/dockerfile.centos_core.barebones.rpm.test deleted file mode 100644 index 84dcd08..0000000 --- a/builder/dockerfile.centos_core.barebones.rpm.test +++ /dev/null @@ -1,20 +0,0 @@ -FROM centos:centos7 - -ENV STARTUPDIR=/dockerstartup - -RUN yum install -y xterm -RUN yum install -y vim less -RUN yum install -y redhat-lsb-core -RUN yum install -y epel-release - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp/ -RUN yum localinstall -y /tmp/*.rpm - -RUN mkdir -p $STARTUPDIR -COPY startup/vnc_startup_barebones.sh $STARTUPDIR - -RUN useradd -m foo -USER foo:kasmvnc-cert - -ENTRYPOINT "/$STARTUPDIR/vnc_startup_barebones.sh" diff --git a/builder/dockerfile.centos_core.build b/builder/dockerfile.centos_core.build deleted file mode 100644 index cb6d4fa..0000000 --- a/builder/dockerfile.centos_core.build +++ /dev/null @@ -1,35 +0,0 @@ -FROM centos:centos7 - -ENV KASMVNC_BUILD_OS centos -ENV KASMVNC_BUILD_OS_CODENAME core - -RUN yum install -y ca-certificates -RUN yum install -y build-dep xorg-server libxfont-dev sudo -RUN yum install -y gcc cmake git libgnutls28-dev vim wget tightvncserver -RUN yum install -y libpng-dev libtiff-dev libgif-dev libavcodec-dev openssl-devel -RUN yum install -y make -RUN yum group install -y "Development Tools" -RUN yum install -y xorg-x11-server-devel zlib-devel -RUN yum install -y libxkbfile-devel libXfont2-devel xorg-x11-font-utils \ - xorg-x11-xtrans-devel xorg-x11-xkb-utils-devel libXrandr-devel pam-devel \ - gnutls-devel libX11-devel libXtst-devel libXcursor-devel -RUN yum install -y mesa-dri-drivers -RUN yum install -y ca-certificates - -# Additions for webp -RUN cd /tmp && wget https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.0.2.tar.gz -RUN cd /tmp && tar -xzf /tmp/libwebp-* -RUN cd /tmp/libwebp-1.0.2 && \ - ./configure --enable-static --disable-shared && \ - make && make install - -ENV SCRIPTS_DIR=/tmp/scripts -COPY builder/scripts $SCRIPTS_DIR -RUN $SCRIPTS_DIR/build-libjpeg-turbo - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -COPY --chown=docker:docker . /src/ - -USER docker -ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.centos_core.rpm.build b/builder/dockerfile.centos_core.rpm.build deleted file mode 100644 index 7a4e208..0000000 --- a/builder/dockerfile.centos_core.rpm.build +++ /dev/null @@ -1,12 +0,0 @@ -FROM centos:centos7 - -RUN yum install -y rpm* gpg* rng-tools rpmlint -RUN yum install -y tree vim less -RUN yum install -y redhat-lsb-core - -COPY centos/*.spec /tmp -RUN yum-builddep -y /tmp/*.spec - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -USER docker diff --git a/builder/dockerfile.centos_core.rpm.test b/builder/dockerfile.centos_core.rpm.test deleted file mode 100644 index 4ae4377..0000000 --- a/builder/dockerfile.centos_core.rpm.test +++ /dev/null @@ -1,64 +0,0 @@ -FROM centos:centos7 - -ENV DISPLAY=:1 \ - VNC_PORT=8443 \ - VNC_RESOLUTION=1280x720 \ - MAX_FRAME_RATE=24 \ - VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7" \ - HOME=/home/user \ - TERM=xterm \ - STARTUPDIR=/dockerstartup \ - INST_SCRIPTS=/dockerstartup/install \ - KASM_RX_HOME=/dockerstartup/kasmrx \ - DEBIAN_FRONTEND=noninteractive \ - VNC_COL_DEPTH=24 \ - VNC_RESOLUTION=1280x1024 \ - VNC_PW=vncpassword \ - VNC_USER=user \ - VNC_VIEW_ONLY_PW=vncviewonlypassword \ - LD_LIBRARY_PATH=/usr/local/lib/ \ - OMP_WAIT_POLICY=PASSIVE \ - SHELL=/bin/bash \ - SINGLE_APPLICATION=0 \ - KASMVNC_BUILD_OS=centos \ - KASMVNC_BUILD_OS_CODENAME=core - -EXPOSE $VNC_PORT - -WORKDIR $HOME - -### REQUIRED STUFF ### - -RUN yum install -y openssl xterm gettext wget -RUN yum install -y centos-release-scl-rh && yum install -y nss_wrapper -RUN yum install -y xorg-x11-server xorg-x11-xauth xorg-x11-xkb-utils \ - xkeyboard-config xorg-x11-server-utils -RUN yum install -y epel-release && yum groupinstall xfce -y -RUN yum erase -y pm-utils xscreensaver* -RUN yum install -y redhat-lsb-core -RUN yum install -y vim less - -RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc - -RUN mkdir -p $STARTUPDIR -COPY builder/startup/ $STARTUPDIR - -### START CUSTOM STUFF #### - -COPY ./builder/scripts/ /tmp/scripts/ -COPY ./centos/kasmvncserver.spec /tmp - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp/ -RUN /tmp/scripts/install_kasmvncserver_package - -### END CUSTOM STUFF ### - -RUN chown -R 1000:0 $HOME -USER 1000:kasmvnc-cert -WORKDIR $HOME - -RUN mkdir ~/.vnc && echo '/usr/bin/xfce4-session &' >> ~/.vnc/xstartup && \ - chmod +x ~/.vnc/xstartup - -ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] diff --git a/builder/scripts/common.sh b/builder/scripts/common.sh index 4440b66..e22deef 100644 --- a/builder/scripts/common.sh +++ b/builder/scripts/common.sh @@ -1,9 +1,7 @@ #!/bin/bash detect_distro() { - if [ -f /etc/centos-release ]; then - DISTRO=centos - elif [ -f /etc/oracle-release ]; then + if [ -f /etc/oracle-release ]; then DISTRO=oracle elif [ -f /etc/fedora-release ]; then DISTRO=fedora @@ -20,7 +18,6 @@ install_packages() { local install_cmd=no-command-defined case "$DISTRO" in - centos) install_cmd="yum install -y" ;; oracle) install_cmd="dnf install -y" ;; fedora) install_cmd="dnf install -y" ;; opensuse) install_cmd="zypper install -y" ;; diff --git a/builder/test-rpm-barebones b/builder/test-rpm-barebones index 6318bda..ea4cae6 100755 --- a/builder/test-rpm-barebones +++ b/builder/test-rpm-barebones @@ -5,8 +5,8 @@ set -e cd "$(dirname "$0")" . ./process_test_options.sh . ./common.sh -os="${1:-centos}" -os_codename="${2:-core}" +os="${1:-oracle}" +os_codename="${2:-8}" docker build --build-arg KASMVNC_PACKAGE_DIR="build/${os}_${os_codename}" \ -t kasmvnctester_barebones_${os}:$os_codename \ diff --git a/centos/kasmvncserver.spec b/centos/kasmvncserver.spec deleted file mode 100644 index b860978..0000000 --- a/centos/kasmvncserver.spec +++ /dev/null @@ -1,158 +0,0 @@ -Name: kasmvncserver -Version: 1.3.3 -Release: 1%{?dist} -Summary: VNC server accessible from a web browser - -License: GPLv2+ -URL: https://github.com/kasmtech/KasmVNC - -BuildRequires: rsync -Requires: xorg-x11-xauth, xorg-x11-xkb-utils, xkeyboard-config, xorg-x11-server-utils, openssl, perl, perl-Switch, perl-YAML-Tiny, perl-Hash-Merge-Simple, perl-Scalar-List-Utils, perl-List-MoreUtils, perl-Try-Tiny, perl-DateTime-TimeZone -Conflicts: tigervnc-server, tigervnc-server-minimal - -%description -KasmVNC provides remote web-based access to a Desktop or application. -While VNC is in the name, KasmVNC differs from other VNC variants such -as TigerVNC, RealVNC, and TurboVNC. KasmVNC has broken from the RFB -specification which defines VNC, in order to support modern technologies -and increase security. KasmVNC is accessed by users from any modern -browser and does not support legacy VNC viewer applications. KasmVNC -uses a modern YAML based configuration at the server and user level, -allowing for ease of management. KasmVNC is maintained by Kasm -Technologies Corp, www.kasmweb.com. - -WARNING: this package requires EPEL. - -%prep - -%install -rm -rf $RPM_BUILD_ROOT - -TARGET_OS=$(lsb_release -is | tr '[:upper:]' '[:lower:]') -TARGET_OS_CODENAME=$(lsb_release -cs | tr '[:upper:]' '[:lower:]') -TARBALL=$RPM_SOURCE_DIR/kasmvnc.${TARGET_OS}_${TARGET_OS_CODENAME}.tar.gz -TAR_DATA=$(mktemp -d) -tar -xzf "$TARBALL" -C "$TAR_DATA" - -SRC=$TAR_DATA/usr/local -SRC_BIN=$SRC/bin -DESTDIR=$RPM_BUILD_ROOT -DST_MAN=$DESTDIR/usr/share/man/man1 - -mkdir -p $DESTDIR/usr/bin $DESTDIR/usr/share/man/man1 \ - $DESTDIR/usr/share/doc/kasmvncserver $DESTDIR/usr/lib \ - $DESTDIR/usr/share/perl5 $DESTDIR/etc/kasmvnc - -cp $SRC_BIN/Xvnc $DESTDIR/usr/bin; -cp $SRC_BIN/vncserver $DESTDIR/usr/bin; -cp -a $SRC_BIN/KasmVNC $DESTDIR/usr/share/perl5/ -cp $SRC_BIN/vncconfig $DESTDIR/usr/bin; -cp $SRC_BIN/kasmvncpasswd $DESTDIR/usr/bin; -cp $SRC_BIN/kasmxproxy $DESTDIR/usr/bin; -cp -r $SRC/lib/kasmvnc/ $DESTDIR/usr/lib/kasmvncserver -cd $DESTDIR/usr/bin && ln -s kasmvncpasswd vncpasswd; -cp -r $SRC/share/doc/kasmvnc*/* $DESTDIR/usr/share/doc/kasmvncserver/ -rsync -r --links --safe-links --exclude '.git*' --exclude po2js --exclude xgettext-html \ - --exclude www/utils/ --exclude .eslintrc --exclude configure \ - $SRC/share/kasmvnc $DESTDIR/usr/share - -sed -i -e 's!pem_certificate: .\+$!pem_certificate: /etc/pki/tls/private/kasmvnc.pem!' \ - $DESTDIR/usr/share/kasmvnc/kasmvnc_defaults.yaml -sed -i -e 's!pem_key: .\+$!pem_key: /etc/pki/tls/private/kasmvnc.pem!' \ - $DESTDIR/usr/share/kasmvnc/kasmvnc_defaults.yaml -sed -e 's/^\([^#]\)/# \1/' $DESTDIR/usr/share/kasmvnc/kasmvnc_defaults.yaml > \ - $DESTDIR/etc/kasmvnc/kasmvnc.yaml -cp $SRC/man/man1/Xvnc.1 $DESTDIR/usr/share/man/man1/; -cp $SRC/share/man/man1/vncserver.1 $DST_MAN; -cp $SRC/share/man/man1/vncconfig.1 $DST_MAN; -cp $SRC/share/man/man1/vncpasswd.1 $DST_MAN; -cp $SRC/share/man/man1/kasmxproxy.1 $DST_MAN; -cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; - - -%files -%config(noreplace) /etc/kasmvnc - -/usr/bin/* -/usr/lib/kasmvncserver -/usr/share/man/man1/* -/usr/share/perl5/KasmVNC -/usr/share/kasmvnc - -%license /usr/share/doc/kasmvncserver/LICENSE.TXT -%doc /usr/share/doc/kasmvncserver/README.md - -%changelog -* Fri Oct 25 2024 KasmTech - 1.3.3-1 -- Allow disabling IP blacklist -- Downloads API for detailed file downloads information -* Tue Sep 24 2024 KasmTech - 1.3.2-1 -- Disable seamless clipboard on Firefox by default, due to the Firefox overlaying a Paste menu over the canvas. -- Fixed CVE-2024-38449, directory traversal bug in built-in web server. -- Allow for larger header sizes, up to 16k. Provide better logging and handling for requests that contain HTTP headers that are larger than the 16k limit. -- Fixed memory leak in kasmproxy. -- Fixed mime types of downloads to ensure the browser interprets them as downloads. -* Tue Mar 12 2024 KasmTech - 1.3.1-1 -- Fix exception thrown on Firefox 124 and higher -- Fix artifacts on high resolution secondary screens -- Fixes for touch support on primary and secondary screens -- Fix for Oculus keyboard input -* Mon Feb 05 2024 KasmTech - 1.3.0-1 -- Multi-monitor support. -- Increased performance with watermark enabled. -- Added support for Fedora 39 and Alpine 319. -- Allow special characters in usernames. -- Better logging of client settings when client connects or changes settings. -- Add support for rotation of text-based watermark. -* Fri Aug 25 2023 KasmTech - 1.2.0-1 -- Add support for Unix relays for bidirectional communication between noVNC - and containerized applications. -- Text based watermark overlays with date and time support. -- New builds for Bookworm, Alpine 3.18, and Fedora 38. -- Multi-language support. -- Add support for rendering pixmaps via DRI3 GPU acceleration allowing - compositing and other 3d accelerated workloads in a KasmVNC session. -- Fix crash that can occur. -- Fixed tearing when compositing is enabled with DRI3 hardware acceleration. -- Fix stuck command key on MacOS clients. -* Wed Apr 05 2023 KasmTech - 1.1.0-1 -- Upstream release -* Tue Nov 29 2022 KasmTech - 1.0.0-1 -- WebRTC UDP transit support with support of STUN servers -- Lossless compression using multi-threaded WASM QOI decoder client side -- New yaml based configuration -- Significantly improved FPS through both client-side and server-side improvements. -- Support for the admin to define arbitrary http response headers for the built in web server -- Support for additional mouse buttons -- Refinement of vncserver checks and user prompts -- Added send_full_frame to developer API, forces full frame to be sent to all connected users that have at least read permission. -* Tue Mar 22 2022 KasmTech - 0.9.3~beta-1 -* Fri Feb 12 2021 KasmTech - 0.9.1~beta-1 -- Initial release of the rpm package. - -%post - kasmvnc_group="kasmvnc-cert" - - create_kasmvnc_group() { - if ! getent group "$kasmvnc_group" >/dev/null; then - groupadd --system "$kasmvnc_group" - fi - } - - make_self_signed_certificate() { - local cert_file=/etc/pki/tls/private/kasmvnc.pem - [ -f "$cert_file" ] && return 0 - - openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ - -keyout "$cert_file" \ - -out "$cert_file" -subj \ - "/C=US/ST=VA/L=None/O=None/OU=DoFu/CN=kasm/emailAddress=none@none.none" - chgrp "$kasmvnc_group" "$cert_file" - chmod 640 "$cert_file" - } - - create_kasmvnc_group - make_self_signed_certificate - -%postun - rm -f /etc/pki/tls/private/kasmvnc.pem From b69b660d738b1550ec52ce6d91a1deb0b6c1c3e2 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 31 Jan 2025 18:25:24 +1300 Subject: [PATCH 05/10] KASM-6518 Remove support for Fedora 37, 38 --- .gitlab-ci.yml | 76 ---------------- ...file.fedora_thirtyeight.barebones.rpm.test | 19 ---- builder/dockerfile.fedora_thirtyeight.build | 86 ------------------- .../dockerfile.fedora_thirtyeight.rpm.build | 13 --- .../dockerfile.fedora_thirtyeight.rpm.test | 62 ------------- ...file.fedora_thirtyseven.barebones.rpm.test | 19 ---- builder/dockerfile.fedora_thirtyseven.build | 86 ------------------- .../dockerfile.fedora_thirtyseven.rpm.build | 13 --- .../dockerfile.fedora_thirtyseven.rpm.test | 62 ------------- 9 files changed, 436 deletions(-) delete mode 100644 builder/dockerfile.fedora_thirtyeight.barebones.rpm.test delete mode 100644 builder/dockerfile.fedora_thirtyeight.build delete mode 100644 builder/dockerfile.fedora_thirtyeight.rpm.build delete mode 100644 builder/dockerfile.fedora_thirtyeight.rpm.test delete mode 100644 builder/dockerfile.fedora_thirtyseven.barebones.rpm.test delete mode 100644 builder/dockerfile.fedora_thirtyseven.build delete mode 100644 builder/dockerfile.fedora_thirtyseven.rpm.build delete mode 100644 builder/dockerfile.fedora_thirtyseven.rpm.test diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 295c93b..f3f8a26 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -447,82 +447,6 @@ build_opensuse_15_arm: paths: - output/ -build_fedora_thirtyseven: - stage: build - allow_failure: true - tags: - - oci-fixed-amd - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package fedora thirtyseven; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - -build_fedora_thirtyseven_arm: - stage: build - allow_failure: true - tags: - - oci-fixed-arm - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package fedora thirtyseven; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - -build_fedora_thirtyeight: - stage: build - allow_failure: true - tags: - - oci-fixed-amd - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package fedora thirtyeight; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - -build_fedora_thirtyeight_arm: - stage: build - allow_failure: true - tags: - - oci-fixed-arm - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package fedora thirtyeight; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - build_fedora_thirtynine: stage: build allow_failure: true diff --git a/builder/dockerfile.fedora_thirtyeight.barebones.rpm.test b/builder/dockerfile.fedora_thirtyeight.barebones.rpm.test deleted file mode 100644 index 4252609..0000000 --- a/builder/dockerfile.fedora_thirtyeight.barebones.rpm.test +++ /dev/null @@ -1,19 +0,0 @@ -FROM fedora:38 - -ENV STARTUPDIR=/dockerstartup - -RUN dnf install -y xterm -RUN dnf install -y vim less -RUN yum install -y redhat-lsb-core - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp/ -RUN dnf localinstall -y /tmp/*.rpm - -RUN mkdir -p $STARTUPDIR -COPY startup/vnc_startup_barebones.sh $STARTUPDIR - -RUN useradd -m foo -USER foo:kasmvnc-cert - -ENTRYPOINT "/$STARTUPDIR/vnc_startup_barebones.sh" diff --git a/builder/dockerfile.fedora_thirtyeight.build b/builder/dockerfile.fedora_thirtyeight.build deleted file mode 100644 index dbfae34..0000000 --- a/builder/dockerfile.fedora_thirtyeight.build +++ /dev/null @@ -1,86 +0,0 @@ -FROM fedora:38 - -ENV KASMVNC_BUILD_OS fedora -ENV KASMVNC_BUILD_OS_CODENAME thirtyeight -ENV XORG_VER 1.20.14 - -RUN \ - echo "**** install build deps ****" && \ - dnf group install -y \ - "C Development Tools and Libraries" \ - "Development Tools" && \ - dnf install -y \ - autoconf \ - automake \ - bison \ - byacc \ - bzip2 \ - cmake \ - diffutils \ - doxygen \ - file \ - flex \ - fop \ - gcc \ - gcc-c++ \ - git \ - glibc-devel \ - libdrm-devel \ - libepoxy-devel \ - libmd-devel \ - libpciaccess-devel \ - libtool \ - libwebp-devel \ - libX11-devel \ - libXau-devel \ - libxcb-devel \ - libXcursor-devel \ - libxcvt-devel \ - libXdmcp-devel \ - libXext-devel \ - libXfont2-devel \ - libxkbfile-devel \ - libXrandr-devel \ - libxshmfence-devel \ - libXtst-devel \ - mesa-libEGL-devel \ - mesa-libgbm-devel \ - mesa-libGL-devel \ - meson \ - mingw64-binutils \ - mt-st \ - nettle-devel \ - openssl-devel \ - patch \ - pixman-devel \ - wayland-devel \ - wget \ - which \ - xcb-util-devel \ - xcb-util-image-devel \ - xcb-util-keysyms-devel \ - xcb-util-renderutil-devel \ - xcb-util-wm-devel \ - xinit \ - xkbcomp \ - xkbcomp-devel \ - xkeyboard-config \ - xmlto \ - xorg-x11-font-utils \ - xorg-x11-proto-devel \ - xorg-x11-server-common \ - xorg-x11-server-devel \ - xorg-x11-xtrans-devel \ - xsltproc - -ENV SCRIPTS_DIR=/tmp/scripts -COPY builder/scripts $SCRIPTS_DIR -RUN $SCRIPTS_DIR/build-webp -RUN $SCRIPTS_DIR/build-libjpeg-turbo - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -COPY --chown=docker:docker . /src/ - -USER docker -ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.fedora_thirtyeight.rpm.build b/builder/dockerfile.fedora_thirtyeight.rpm.build deleted file mode 100644 index 8fc556f..0000000 --- a/builder/dockerfile.fedora_thirtyeight.rpm.build +++ /dev/null @@ -1,13 +0,0 @@ -FROM fedora:38 - -RUN dnf install -y fedora-packager fedora-review -RUN dnf install -y tree vim less -RUN dnf install -y redhat-lsb-core -RUN dnf install -y dnf-plugins-core - -COPY fedora/*.spec /tmp -RUN dnf builddep -y /tmp/*.spec - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -USER docker diff --git a/builder/dockerfile.fedora_thirtyeight.rpm.test b/builder/dockerfile.fedora_thirtyeight.rpm.test deleted file mode 100644 index 16975a0..0000000 --- a/builder/dockerfile.fedora_thirtyeight.rpm.test +++ /dev/null @@ -1,62 +0,0 @@ -FROM fedora:38 - -ENV DISPLAY=:1 \ - VNC_PORT=8443 \ - VNC_RESOLUTION=1280x720 \ - MAX_FRAME_RATE=24 \ - VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7" \ - HOME=/home/user \ - TERM=xterm \ - STARTUPDIR=/dockerstartup \ - INST_SCRIPTS=/dockerstartup/install \ - KASM_RX_HOME=/dockerstartup/kasmrx \ - DEBIAN_FRONTEND=noninteractive \ - VNC_COL_DEPTH=24 \ - VNC_RESOLUTION=1280x1024 \ - VNC_PW=vncpassword \ - VNC_USER=user \ - VNC_VIEW_ONLY_PW=vncviewonlypassword \ - LD_LIBRARY_PATH=/usr/local/lib/ \ - OMP_WAIT_POLICY=PASSIVE \ - SHELL=/bin/bash \ - SINGLE_APPLICATION=0 \ - KASMVNC_BUILD_OS=fedora \ - KASMVNC_BUILD_OS_CODENAME=thirtythree - -EXPOSE $VNC_PORT - -WORKDIR $HOME - -### REQUIRED STUFF ### - -RUN dnf install -y openssl xterm gettext wget -RUN dnf install -y nss_wrapper -RUN dnf install -y xorg-x11-xauth xkeyboard-config -# xorg-x11-server-Xorg -# RUN dnf install -y @xfce-desktop-environment -RUN dnf erase -y pm-utils xscreensaver* -RUN dnf install -y redhat-lsb-core -RUN dnf install -y vim less -RUN dnf install -y @xfce-desktop-environment - -RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc - -RUN mkdir -p $STARTUPDIR -COPY builder/startup/ $STARTUPDIR - -### START CUSTOM STUFF #### -COPY ./builder/scripts/ /tmp/scripts/ -COPY ./fedora/kasmvncserver.spec /tmp - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp/ -# RUN dnf remove -y tigervnc-server-minimal -RUN /tmp/scripts/install_kasmvncserver_package - -### END CUSTOM STUFF ### - -RUN chown -R 1000:0 $HOME -USER 1000:kasmvnc-cert -WORKDIR $HOME - -ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] diff --git a/builder/dockerfile.fedora_thirtyseven.barebones.rpm.test b/builder/dockerfile.fedora_thirtyseven.barebones.rpm.test deleted file mode 100644 index ba97bf8..0000000 --- a/builder/dockerfile.fedora_thirtyseven.barebones.rpm.test +++ /dev/null @@ -1,19 +0,0 @@ -FROM fedora:37 - -ENV STARTUPDIR=/dockerstartup - -RUN dnf install -y xterm -RUN dnf install -y vim less -RUN yum install -y redhat-lsb-core - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp/ -RUN dnf localinstall -y /tmp/*.rpm - -RUN mkdir -p $STARTUPDIR -COPY startup/vnc_startup_barebones.sh $STARTUPDIR - -RUN useradd -m foo -USER foo:kasmvnc-cert - -ENTRYPOINT "/$STARTUPDIR/vnc_startup_barebones.sh" diff --git a/builder/dockerfile.fedora_thirtyseven.build b/builder/dockerfile.fedora_thirtyseven.build deleted file mode 100644 index 4557431..0000000 --- a/builder/dockerfile.fedora_thirtyseven.build +++ /dev/null @@ -1,86 +0,0 @@ -FROM fedora:37 - -ENV KASMVNC_BUILD_OS fedora -ENV KASMVNC_BUILD_OS_CODENAME thirtyseven -ENV XORG_VER 1.20.14 - -RUN \ - echo "**** install build deps ****" && \ - dnf group install -y \ - "C Development Tools and Libraries" \ - "Development Tools" && \ - dnf install -y \ - autoconf \ - automake \ - bison \ - byacc \ - bzip2 \ - cmake \ - diffutils \ - doxygen \ - file \ - flex \ - fop \ - gcc \ - gcc-c++ \ - git \ - glibc-devel \ - libdrm-devel \ - libepoxy-devel \ - libmd-devel \ - libpciaccess-devel \ - libtool \ - libwebp-devel \ - libX11-devel \ - libXau-devel \ - libxcb-devel \ - libXcursor-devel \ - libxcvt-devel \ - libXdmcp-devel \ - libXext-devel \ - libXfont2-devel \ - libxkbfile-devel \ - libXrandr-devel \ - libxshmfence-devel \ - libXtst-devel \ - mesa-libEGL-devel \ - mesa-libgbm-devel \ - mesa-libGL-devel \ - meson \ - mingw64-binutils \ - mt-st \ - nettle-devel \ - openssl-devel \ - patch \ - pixman-devel \ - wayland-devel \ - wget \ - which \ - xcb-util-devel \ - xcb-util-image-devel \ - xcb-util-keysyms-devel \ - xcb-util-renderutil-devel \ - xcb-util-wm-devel \ - xinit \ - xkbcomp \ - xkbcomp-devel \ - xkeyboard-config \ - xmlto \ - xorg-x11-font-utils \ - xorg-x11-proto-devel \ - xorg-x11-server-common \ - xorg-x11-server-devel \ - xorg-x11-xtrans-devel \ - xsltproc - -ENV SCRIPTS_DIR=/tmp/scripts -COPY builder/scripts $SCRIPTS_DIR -RUN $SCRIPTS_DIR/build-webp -RUN $SCRIPTS_DIR/build-libjpeg-turbo - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -COPY --chown=docker:docker . /src/ - -USER docker -ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.fedora_thirtyseven.rpm.build b/builder/dockerfile.fedora_thirtyseven.rpm.build deleted file mode 100644 index 8384b10..0000000 --- a/builder/dockerfile.fedora_thirtyseven.rpm.build +++ /dev/null @@ -1,13 +0,0 @@ -FROM fedora:37 - -RUN dnf install -y fedora-packager fedora-review -RUN dnf install -y tree vim less -RUN dnf install -y redhat-lsb-core -RUN dnf install -y dnf-plugins-core - -COPY fedora/*.spec /tmp -RUN dnf builddep -y /tmp/*.spec - -RUN useradd -m docker && echo "docker:docker" | chpasswd - -USER docker diff --git a/builder/dockerfile.fedora_thirtyseven.rpm.test b/builder/dockerfile.fedora_thirtyseven.rpm.test deleted file mode 100644 index 5c7dea3..0000000 --- a/builder/dockerfile.fedora_thirtyseven.rpm.test +++ /dev/null @@ -1,62 +0,0 @@ -FROM fedora:37 - -ENV DISPLAY=:1 \ - VNC_PORT=8443 \ - VNC_RESOLUTION=1280x720 \ - MAX_FRAME_RATE=24 \ - VNCOPTIONS="-PreferBandwidth -DynamicQualityMin=4 -DynamicQualityMax=7" \ - HOME=/home/user \ - TERM=xterm \ - STARTUPDIR=/dockerstartup \ - INST_SCRIPTS=/dockerstartup/install \ - KASM_RX_HOME=/dockerstartup/kasmrx \ - DEBIAN_FRONTEND=noninteractive \ - VNC_COL_DEPTH=24 \ - VNC_RESOLUTION=1280x1024 \ - VNC_PW=vncpassword \ - VNC_USER=user \ - VNC_VIEW_ONLY_PW=vncviewonlypassword \ - LD_LIBRARY_PATH=/usr/local/lib/ \ - OMP_WAIT_POLICY=PASSIVE \ - SHELL=/bin/bash \ - SINGLE_APPLICATION=0 \ - KASMVNC_BUILD_OS=fedora \ - KASMVNC_BUILD_OS_CODENAME=thirtythree - -EXPOSE $VNC_PORT - -WORKDIR $HOME - -### REQUIRED STUFF ### - -RUN dnf install -y openssl xterm gettext wget -RUN dnf install -y nss_wrapper -RUN dnf install -y xorg-x11-xauth xkeyboard-config -# xorg-x11-server-Xorg -# RUN dnf install -y @xfce-desktop-environment -RUN dnf erase -y pm-utils xscreensaver* -RUN dnf install -y redhat-lsb-core -RUN dnf install -y vim less -RUN dnf install -y @xfce-desktop-environment - -RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc - -RUN mkdir -p $STARTUPDIR -COPY builder/startup/ $STARTUPDIR - -### START CUSTOM STUFF #### -COPY ./builder/scripts/ /tmp/scripts/ -COPY ./fedora/kasmvncserver.spec /tmp - -ARG KASMVNC_PACKAGE_DIR -COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp/ -# RUN dnf remove -y tigervnc-server-minimal -RUN /tmp/scripts/install_kasmvncserver_package - -### END CUSTOM STUFF ### - -RUN chown -R 1000:0 $HOME -USER 1000:kasmvnc-cert -WORKDIR $HOME - -ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] From 8f410e1887485c80ce22f0817111bc025aac132e Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 6 Feb 2025 18:37:54 +1300 Subject: [PATCH 06/10] KASM-6518 Remove Debian Buster support --- .gitlab-ci.yml | 38 -------------------------------------- 1 file changed, 38 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f3f8a26..93d2610 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -180,44 +180,6 @@ build_ubuntu_noble_arm: paths: - output/ -build_debian_buster: - stage: build - allow_failure: true - tags: - - oci-fixed-amd - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package debian buster; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - -build_debian_buster_arm: - stage: build - allow_failure: true - tags: - - oci-fixed-arm - before_script: - - *prepare_build - - *prepare_www - after_script: - - *prepare_artfacts - script: - - bash builder/build-package debian buster; - only: - variables: - - $BUILD_JOBS == 'all' || $BUILD_JOBS =~ $CI_JOB_NAME - artifacts: - paths: - - output/ - build_debian_bullseye: stage: build allow_failure: true From 03d99c1456f2c704ea321fd3b83cd576f3df1243 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 11 Feb 2025 15:51:50 +1300 Subject: [PATCH 07/10] KASM-6670 Fedora: add missing dependency on hostname --- fedora/kasmvncserver.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fedora/kasmvncserver.spec b/fedora/kasmvncserver.spec index 260d5ce..739530c 100644 --- a/fedora/kasmvncserver.spec +++ b/fedora/kasmvncserver.spec @@ -7,7 +7,7 @@ License: GPLv2+ URL: https://github.com/kasmtech/KasmVNC BuildRequires: rsync -Requires: xorg-x11-xauth, xkeyboard-config, xkbcomp, openssl, perl, perl-Switch, perl-YAML-Tiny, perl-Hash-Merge-Simple, perl-Scalar-List-Utils, perl-List-MoreUtils, perl-Try-Tiny, perl-DateTime-TimeZone, mesa-libgbm, libxshmfence +Requires: xorg-x11-xauth, xkeyboard-config, xkbcomp, openssl, perl, perl-Switch, perl-YAML-Tiny, perl-Hash-Merge-Simple, perl-Scalar-List-Utils, perl-List-MoreUtils, perl-Try-Tiny, perl-DateTime-TimeZone, mesa-libgbm, libxshmfence, hostname Conflicts: tigervnc-server, tigervnc-server-minimal %description From d933dc99abddeee71f0a6baca3cf072467283a7f Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 11 Feb 2025 20:10:22 +1300 Subject: [PATCH 08/10] KASM-5204 Add config key network.udp.payload_size --- unix/kasmvnc_defaults.yaml | 1 + unix/vncserver | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/unix/kasmvnc_defaults.yaml b/unix/kasmvnc_defaults.yaml index 292e93d..3d0551c 100644 --- a/unix/kasmvnc_defaults.yaml +++ b/unix/kasmvnc_defaults.yaml @@ -18,6 +18,7 @@ network: udp: public_ip: auto port: auto + payload_size: auto stun_server: auto ssl: pem_certificate: /etc/ssl/certs/ssl-cert-snakeoil.pem diff --git a/unix/vncserver b/unix/vncserver index ecdec9e..41fc1be 100755 --- a/unix/vncserver +++ b/unix/vncserver @@ -2366,6 +2366,24 @@ sub DefineConfigToCLIConversion { $value; } }), + KasmVNC::CliOption->new({ + name => 'udpSize', + configKeys => [ + KasmVNC::ConfigKey->new({ + name => "network.udp.payload_size", + validator => KasmVNC::PatternValidator->new({ + pattern => qr/^(auto|\d+)$/, + errorMessage => "must be 'auto' or an integer" + }), + }) + ], + isActiveSub => sub { + $self = shift; + + my $value = $self->configValue(); + isPresent($value) && $value ne 'auto'; + } + }), KasmVNC::CliOption->new({ name => 'udpPort', configKeys => [ From 628039aed3ea98990fdd5e5cfc69202138b9a1f7 Mon Sep 17 00:00:00 2001 From: matt Date: Mon, 3 Mar 2025 12:58:05 +0000 Subject: [PATCH 09/10] added dev container for building kasmvnc --- .gitignore | 5 +++++ BUILDING.txt | 26 ++++++++++++++++++++++++++ CMakeLists.txt | 2 +- builder/dockerfile.ubuntu_jammy.dev | 25 +++++++++++++++++++++++++ builder/scripts/build-libjpeg-turbo | 1 + builder/scripts/build-webp | 20 ++++++++++++++------ 6 files changed, 72 insertions(+), 7 deletions(-) create mode 100644 builder/dockerfile.ubuntu_jammy.dev diff --git a/.gitignore b/.gitignore index f4a278e..bc7e8b5 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ *.lo .deps .libs +*.swp CMakeFiles CMakeCache.txt @@ -12,6 +13,10 @@ Makefile Makefile.in config.h +libjpeg-turbo/ +xorg.build/ +install_manifest.txt + builder/build/ builder/www/ spec/tmp diff --git a/BUILDING.txt b/BUILDING.txt index b0f3782..45b5f3f 100644 --- a/BUILDING.txt +++ b/BUILDING.txt @@ -71,6 +71,32 @@ For in-tree builds, these directories are the same. Building KasmVNC ================= +Building the KasmVNC Server using Docker +---------------------------------------- + +```bash +git submodule init +git submodule update --remote --merge +sudo docker build -t kasmvnc:dev -f builder/dockerfile.ubuntu_jammy.dev . +sudo docker run -it -v ./:/src -p 6901:6901 kasmvnc:dev +``` + +Now from inside the container. + +```bash +kasm-user@5c2802e4cf1e:/src$ sudo builder/scripts/build-webp +kasm-user@5c2802e4cf1e:/src$ sudo builder/scripts/build-build-libjpeg-turbo +kasm-user@5c2802e4cf1e:/src$ builder/build.sh +``` + +Now run Xvnc and Xfce4 from inside the container + +```bash +/src/xorg.build/bin/Xvnc -interface 0.0.0.0 -PublicIP 127.0.0.1 -disableBasicAuth -RectThreads 0 -Log *:stdout:100 -httpd /src/kasmweb/dist -sslOnly 0 -SecurityTypes None -websocketPort 6901 :1 +/usr/bin/xfce4-session --display :1 +``` + +Now open a browser and navigate to your dev VM on port 6901. Building the KasmVNC Server on Modern Unix/Linux Systems --------------------------------------------------------- diff --git a/CMakeLists.txt b/CMakeLists.txt index 3807fc4..1c3bded 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -245,7 +245,7 @@ if(ENABLE_NLS) add_subdirectory(po) endif() -add_subdirectory(tests) +####add_subdirectory(tests) include(cmake/BuildPackages.cmake) diff --git a/builder/dockerfile.ubuntu_jammy.dev b/builder/dockerfile.ubuntu_jammy.dev new file mode 100644 index 0000000..d13638d --- /dev/null +++ b/builder/dockerfile.ubuntu_jammy.dev @@ -0,0 +1,25 @@ +FROM kasmweb/ubuntu-jammy-desktop:develop + +ENV KASMVNC_BUILD_OS ubuntu +ENV KASMVNC_BUILD_OS_CODENAME jammy +ENV XORG_VER 21.1.3 +ENV XORG_PATCH 21 +ENV DEBIAN_FRONTEND noninteractive + +EXPOSE 6901 + +USER root + +RUN sed -i 's$# deb-src$deb-src$' /etc/apt/sources.list && \ + apt update && \ + apt install -y socat sudo libxfont-dev cmake git libgnutls28-dev vim wget tightvncserver curl libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev libxrandr-dev libxcursor-dev pkg-config libfreetype6-dev libxtst-dev autoconf automake libtool xutils-dev libpixman-1-dev libxshmfence-dev libxcvt-dev libxkbfile-dev x11proto-dev libgbm-dev inotify-tools && \ + echo "kasm-user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers + +RUN curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - +RUN apt install -y nodejs + +USER 1000 + +WORKDIR /src + +ENTRYPOINT /bin/bash diff --git a/builder/scripts/build-libjpeg-turbo b/builder/scripts/build-libjpeg-turbo index 1510f24..13d1f3f 100755 --- a/builder/scripts/build-libjpeg-turbo +++ b/builder/scripts/build-libjpeg-turbo @@ -22,6 +22,7 @@ ensure_libjpeg_is_fast() { prepare_libjpeg_source() { export JPEG_TURBO_RELEASE=$(curl -sX GET "https://api.github.com/repos/libjpeg-turbo/libjpeg-turbo/releases/latest" \ | awk '/tag_name/{print $4;exit}' FS='[""]') + [ -d ./libjpeg-turbo ] && rm -rf ./libjpeg-turbo mkdir libjpeg-turbo curl -Ls "https://github.com/libjpeg-turbo/libjpeg-turbo/archive/${JPEG_TURBO_RELEASE}.tar.gz" | \ tar xzvf - -C libjpeg-turbo/ --strip-components=1 diff --git a/builder/scripts/build-webp b/builder/scripts/build-webp index 82b07ba..a6b2fd0 100755 --- a/builder/scripts/build-webp +++ b/builder/scripts/build-webp @@ -2,18 +2,25 @@ set -euo pipefail -webp_tar_url=https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.2.4.tar.gz +WEBP_VERSION="1.2.4" +WEBP_TAR_URL="https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz" +WEBP_TAR_FILE="/tmp/libwebp-${WEBP_VERSION}.tar.gz" +WEBP_SRC_DIR="/tmp/libwebp-${WEBP_VERSION}" prepare_source() { cd /tmp - wget "$webp_tar_url" - tar -xzf /tmp/libwebp-* - rm /tmp/libwebp-*.tar.gz - cd /tmp/libwebp-* + + # Remove old files if they exist + [ -f "$WEBP_TAR_FILE" ] && rm "$WEBP_TAR_FILE" + [ -d "$WEBP_SRC_DIR" ] && rm -rf "$WEBP_SRC_DIR" + + wget "$WEBP_TAR_URL" + tar -xzf "$WEBP_TAR_FILE" + cd "$WEBP_SRC_DIR" } build_and_install() { - export MAKEFLAGS=-j`nproc` + export MAKEFLAGS=-j$(nproc) ./configure --enable-static --disable-shared make make install @@ -21,3 +28,4 @@ build_and_install() { prepare_source build_and_install + From 3182b902d2a19ab1a5e807e3f53e1e1ddf78f921 Mon Sep 17 00:00:00 2001 From: matt Date: Mon, 3 Mar 2025 13:14:11 +0000 Subject: [PATCH 10/10] updates to build instructions --- BUILDING.txt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/BUILDING.txt b/BUILDING.txt index 45b5f3f..85918e5 100644 --- a/BUILDING.txt +++ b/BUILDING.txt @@ -84,15 +84,22 @@ sudo docker run -it -v ./:/src -p 6901:6901 kasmvnc:dev Now from inside the container. ```bash -kasm-user@5c2802e4cf1e:/src$ sudo builder/scripts/build-webp -kasm-user@5c2802e4cf1e:/src$ sudo builder/scripts/build-build-libjpeg-turbo -kasm-user@5c2802e4cf1e:/src$ builder/build.sh +# build frontend +cd kasmweb +npm install +npm run build # <-- only run this on subsequent changes to front-end code +cd .. +# build dependencies +sudo builder/scripts/build-webp +sudo builder/scripts/build-build-libjpeg-turbo +# Build KasmVNC +builder/build.sh ``` Now run Xvnc and Xfce4 from inside the container ```bash -/src/xorg.build/bin/Xvnc -interface 0.0.0.0 -PublicIP 127.0.0.1 -disableBasicAuth -RectThreads 0 -Log *:stdout:100 -httpd /src/kasmweb/dist -sslOnly 0 -SecurityTypes None -websocketPort 6901 :1 +/src/xorg.build/bin/Xvnc -interface 0.0.0.0 -PublicIP 127.0.0.1 -disableBasicAuth -RectThreads 0 -Log *:stdout:100 -httpd /src/kasmweb/dist -sslOnly 0 -SecurityTypes None -websocketPort 6901 :1 & /usr/bin/xfce4-session --display :1 ```