From 5159cb9ae1ea9c509c7429add6a8bb34a165f1ca Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Tue, 16 Feb 2021 22:21:48 +1300 Subject: [PATCH 01/16] build-tarball: only rebuild www if it was changed --- builder/build-tarball | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/builder/build-tarball b/builder/build-tarball index a070eaa..3cf9d2f 100755 --- a/builder/build-tarball +++ b/builder/build-tarball @@ -3,8 +3,13 @@ set -e build_www_dir() { - docker build -t kasmweb/www -f builder/dockerfile.www.build . - docker run --rm -v $PWD/builder/www:/build kasmweb/www:latest + local webpacked_www=$PWD/builder/www + local src_www=kasmweb + + if [ "$src_www" -nt "$webpacked_www" ]; then + docker build -t kasmweb/www -f builder/dockerfile.www.build . + docker run --rm -v $PWD/builder/www:/build kasmweb/www:latest + fi } shared_with_docker_dir=${GITLAB_SHARED_DIND_DIR:-/tmp} From 6575bbe1b3bda1ec074a4503f274af6bf7cad353 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 18 Feb 2021 22:00:34 +1300 Subject: [PATCH 02/16] Rpm: run xterm w/o WM in CentOS 7 barebones test --- builder/dockerfile.centos_core.barebones.rpm.test | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/builder/dockerfile.centos_core.barebones.rpm.test b/builder/dockerfile.centos_core.barebones.rpm.test index 3852d29..33098d3 100644 --- a/builder/dockerfile.centos_core.barebones.rpm.test +++ b/builder/dockerfile.centos_core.barebones.rpm.test @@ -1,7 +1,6 @@ FROM centos:centos7 -RUN yum install -y epel-release && yum install -y openbox xterm -RUN yum erase -y pm-utils xscreensaver* +RUN yum install -y xterm RUN yum install -y vim less ARG KASMVNC_PACKAGE_DIR @@ -12,8 +11,7 @@ RUN useradd -m foo USER foo:kasmvnc -RUN mkdir -p ~/.config/openbox && echo xterm > ~/.config/openbox/autostart && chmod +x ~/.config/openbox/autostart -RUN mkdir ~/.vnc && echo '/usr/bin/openbox-session &' >> ~/.vnc/xstartup && \ +RUN mkdir ~/.vnc && echo '/usr/bin/xterm &' >> ~/.vnc/xstartup && \ chmod +x ~/.vnc/xstartup RUN echo bar | kasmvncpasswd -f > $HOME/.kasmpasswd && chmod 0600 $HOME/.kasmpasswd From 24ea2d6c4505028a498d40dc6b8c605762ce9fd6 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 18 Feb 2021 22:32:09 +1300 Subject: [PATCH 03/16] Deb: switch Buster barebones to use no WM --- builder/dockerfile.debian_buster.barebones.deb.test | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/builder/dockerfile.debian_buster.barebones.deb.test b/builder/dockerfile.debian_buster.barebones.deb.test index f219d8b..a7d7218 100644 --- a/builder/dockerfile.debian_buster.barebones.deb.test +++ b/builder/dockerfile.debian_buster.barebones.deb.test @@ -3,10 +3,15 @@ FROM debian:buster-slim ARG KASMVNC_PACKAGE_DIR COPY $KASMVNC_PACKAGE_DIR/kasmvncserver_*.deb /tmp RUN apt-get update && dpkg -i /tmp/*.deb; apt-get -yf install -RUN apt-get update && apt-get -y install x11-xserver-utils xterm twm +RUN apt-get update && apt-get -y install xterm +# RUN apt-get update && apt-get -y install x11-xserver-utils xterm twm -RUN useradd -m docker && addgroup docker ssl-cert +RUN useradd -m foo && addgroup foo ssl-cert -USER docker +USER foo + +RUN mkdir ~/.vnc && echo '/usr/bin/xterm &' >> ~/.vnc/xstartup && \ + chmod +x ~/.vnc/xstartup +RUN echo bar | kasmvncpasswd -f > $HOME/.kasmpasswd && chmod 0600 $HOME/.kasmpasswd ENTRYPOINT bash -c "vncserver :1 -interface 0.0.0.0 && vncserver -kill :1 && vncserver :1 -depth 24 -geometry 1280x1050 -websocketPort 8443 -cert /etc/ssl/certs/ssl-cert-snakeoil.pem -key /etc/ssl/private/ssl-cert-snakeoil.key -sslOnly -FrameRate=24 -interface 0.0.0.0 -httpd /usr/share/kasmvnc/www && tail -f $HOME/.vnc/*.log " From 9e7d57cc3c8d202b45e18c68292ff53cfde54304 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 19 Feb 2021 22:58:38 +1300 Subject: [PATCH 04/16] tarball: include Xvnc.1 man page --- builder/build.sh | 2 +- builder/dockerfile.fedora_thirtythree.build | 38 +++++++++++ .../dockerfile.fedora_thirtythree.rpm.build | 13 ++++ .../dockerfile.fedora_thirtythree.rpm.test | 64 +++++++++++++++++++ 4 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 builder/dockerfile.fedora_thirtythree.build create mode 100644 builder/dockerfile.fedora_thirtythree.rpm.build create mode 100644 builder/dockerfile.fedora_thirtythree.rpm.test diff --git a/builder/build.sh b/builder/build.sh index 73a7b34..e9813f1 100755 --- a/builder/build.sh +++ b/builder/build.sh @@ -63,7 +63,7 @@ ln -s /src/unix/xserver/hw/vnc/Xvnc Xvnc cd .. mkdir -p man/man1 touch man/man1/Xserver.1 -touch man/man1/Xvnc.1 +cp /src/unix/xserver/hw/vnc/Xvnc.man man/man1/Xvnc.1 mkdir lib cd lib if [ -d /usr/lib/x86_64-linux-gnu/dri ]; then diff --git a/builder/dockerfile.fedora_thirtythree.build b/builder/dockerfile.fedora_thirtythree.build new file mode 100644 index 0000000..be70715 --- /dev/null +++ b/builder/dockerfile.fedora_thirtythree.build @@ -0,0 +1,38 @@ +FROM fedora:33 + +ENV KASMVNC_BUILD_OS fedora +ENV KASMVNC_BUILD_OS_CODENAME thirtythree +ENV XORG_VER 1.20.10 + +# RUN dnf install -y build-dep xorg-server libxfont-dev sudo +RUN dnf install -y gcc cmake git gnutls-devel vim wget +#tightvncserver +RUN dnf install -y libjpeg-turbo-devel libpng-devel libtiff-devel giflib-devel openssl-devel + +#libavcodec-dev +RUN dnf -y install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm +RUN dnf -y install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm +RUN dnf -y install ffmpeg-devel + +RUN dnf install -y make +RUN dnf group install -y "Development Tools" +RUN dnf install -y xorg-x11-server-devel zlib-devel libjpeg-turbo-devel +RUN dnf install -y libxkbfile-devel libXfont2-devel xorg-x11-font-utils \ + xorg-x11-xtrans-devel xorg-x11-xkb-utils-devel +RUN dnf install -y mesa-dri-drivers +RUN dnf install -y bzip2 redhat-lsb-core + +# 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 -xzvf /tmp/libwebp-* +RUN cd /tmp/libwebp-1.0.2 && \ + ./configure --enable-static --disable-shared && \ + make && make install + +RUN useradd -m docker && echo "docker:docker" | chpasswd + +COPY . /src +RUN chown -R docker:docker /src + +USER docker +ENTRYPOINT ["/src/builder/build.sh"] diff --git a/builder/dockerfile.fedora_thirtythree.rpm.build b/builder/dockerfile.fedora_thirtythree.rpm.build new file mode 100644 index 0000000..ae92ec7 --- /dev/null +++ b/builder/dockerfile.fedora_thirtythree.rpm.build @@ -0,0 +1,13 @@ +FROM fedora:33 + +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 centos/*.spec /tmp +RUN dnf builddep -y /tmp/*.spec + +RUN useradd -m docker && echo "docker:docker" | chpasswd + +USER docker diff --git a/builder/dockerfile.fedora_thirtythree.rpm.test b/builder/dockerfile.fedora_thirtythree.rpm.test new file mode 100644 index 0000000..bdd4205 --- /dev/null +++ b/builder/dockerfile.fedora_thirtythree.rpm.test @@ -0,0 +1,64 @@ +FROM fedora:33 + +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 xorg-x11-xkb-utils \ + xkeyboard-config xorg-x11-server-utils +# xorg-x11-server-Xorg +# RUN dnf install -y @xfce-desktop-environment +RUN dnf group install -y lxde-desktop +RUN dnf erase -y pm-utils xscreensaver* +RUN dnf install -y redhat-lsb-core +RUN dnf install -y vim less + +RUN echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc + +RUN mkdir -p $STARTUPDIR +COPY startup/ $STARTUPDIR + +### START CUSTOM STUFF #### + +ARG KASMVNC_PACKAGE_DIR +COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp +# RUN dnf remove -y tigervnc-server-minimal +RUN dnf localinstall -y --allowerasing /tmp/*.rpm + +### END CUSTOM STUFF ### + +RUN chown -R 1000:0 $HOME +USER 1000:kasmvnc +WORKDIR $HOME + +RUN mkdir ~/.vnc && echo '/usr/bin/lxsession -s LXDE &' >> ~/.vnc/xstartup && \ + chmod +x ~/.vnc/xstartup + +ENTRYPOINT [ "/dockerstartup/vnc_startup.sh" ] From 0d62f6b7aa9a40ffd2e770e1543ced261a8f005b Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Mon, 22 Feb 2021 21:21:21 +1300 Subject: [PATCH 05/16] Rpm: don't use update-alternatives Even if I set rpm as conflicting with TigerVNC, update-alternatives breaks in post-install. That is because files like /usr/bin/vncserver are left from TigerVNC, when post-install runs. So, I chose to use /usr/bin/vncserver without update-alternatives. --- centos/kasmvncserver.spec | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/centos/kasmvncserver.spec b/centos/kasmvncserver.spec index c456a2b..33d75d0 100644 --- a/centos/kasmvncserver.spec +++ b/centos/kasmvncserver.spec @@ -8,7 +8,7 @@ URL: https://github.com/kasmtech/KasmVNC BuildRequires: rsync Requires: xorg-x11-xauth, xorg-x11-xkb-utils, xkeyboard-config, xorg-x11-server-utils, openssl, perl -Conflicts: tigervnc-server +Conflicts: tigervnc-server, tigervnc-server-minimal %description @@ -19,6 +19,12 @@ Lorem ipsum %install rm -rf $RPM_BUILD_ROOT DESTDIR=$RPM_BUILD_ROOT make -f /src/debian/Makefile.to_fakebuild_tar_package install +cd $RPM_BUILD_ROOT/usr/bin && mv Xkasmvnc Xvnc && \ + mv kasmvncserver vncserver && mv kasmvncconfig vncconfig && \ + ln -s kasmvncpasswd vncpasswd +cd $RPM_BUILD_ROOT/usr/share/man/man1 && mv Xkasmvnc.1 Xvnc.1 && \ + mv kasmvncserver.1 vncserver.1 && mv kasmvncconfig.1 vncconfig.1 && \ + mv kasmvncpasswd.1 vncpasswd.1 %files /usr/bin/* @@ -33,18 +39,6 @@ DESTDIR=$RPM_BUILD_ROOT make -f /src/debian/Makefile.to_fakebuild_tar_package in - Initial release of the rpm package. %post - bindir=/usr/bin - mandir=/usr/share/man - commands="kasmvncserver kasmvncpasswd kasmvncconfig Xkasmvnc" - - for kasm_command in $commands; do - generic_command=`echo "$kasm_command" | sed -e 's/kasm//'`; - update-alternatives --install "$bindir/$generic_command" \ - "$generic_command" "$bindir/$kasm_command" 90 \ - --slave "$mandir/man1/$generic_command.1.gz" "$generic_command.1.gz" \ - "$mandir/man1/$kasm_command.1.gz" - done - kasmvnc_group="kasmvnc" create_kasmvnc_group() { @@ -69,13 +63,4 @@ DESTDIR=$RPM_BUILD_ROOT make -f /src/debian/Makefile.to_fakebuild_tar_package in make_self_signed_certificate %postun - bindir=/usr/bin - mandir=/usr/share/man - commands="kasmvncserver kasmvncpasswd kasmvncconfig Xkasmvnc" - - for kasm_command in $commands; do - generic_command=`echo "$kasm_command" | sed -e 's/kasm//'`; - update-alternatives --remove "$generic_command" "$bindir/$kasm_command" - done - rm -f /etc/pki/tls/private/kasmvnc.pem From f6e2675c02a635f4c5980dc9fddb328f231710a1 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Mon, 22 Feb 2021 21:24:16 +1300 Subject: [PATCH 06/16] Rpm: initial Fedora support --- debian/Makefile.to_fakebuild_tar_package | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/Makefile.to_fakebuild_tar_package b/debian/Makefile.to_fakebuild_tar_package index f6d3f7f..2db2963 100644 --- a/debian/Makefile.to_fakebuild_tar_package +++ b/debian/Makefile.to_fakebuild_tar_package @@ -1,6 +1,6 @@ TARGET_OS := $(shell lsb_release -is | tr '[:upper:]' '[:lower:]') TARGET_OS_CODENAME := $(shell lsb_release -cs | tr '[:upper:]' '[:lower:]') -ifeq ($(TARGET_OS), centos) +ifeq ($(TARGET_OS), $(filter $(TARGET_OS), centos fedora)) TARBALL_DIR := $$RPM_SOURCE_DIR else TARBALL_DIR := builder/build From 969c64ced39ab8c70a8e26bc954c4ba9b2b6b401 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Mon, 22 Feb 2021 21:25:02 +1300 Subject: [PATCH 07/16] Packages: Ubuntu 20 and Fedora 33 barebones tests --- ...rfile.fedora_thirtythree.barebones.rpm.test | 18 ++++++++++++++++++ .../dockerfile.ubuntu_focal.barebones.deb.test | 16 ++++++++++++++++ builder/test-deb-barebones | 4 ++-- builder/test-rpm-barebones | 4 ++-- 4 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 builder/dockerfile.fedora_thirtythree.barebones.rpm.test create mode 100644 builder/dockerfile.ubuntu_focal.barebones.deb.test diff --git a/builder/dockerfile.fedora_thirtythree.barebones.rpm.test b/builder/dockerfile.fedora_thirtythree.barebones.rpm.test new file mode 100644 index 0000000..d9ab4d7 --- /dev/null +++ b/builder/dockerfile.fedora_thirtythree.barebones.rpm.test @@ -0,0 +1,18 @@ +FROM fedora:33 + +RUN dnf install -y xterm +RUN dnf install -y vim less + +ARG KASMVNC_PACKAGE_DIR +COPY $KASMVNC_PACKAGE_DIR/*.rpm /tmp +RUN dnf localinstall -y /tmp/*.rpm + +RUN useradd -m foo + +USER foo:kasmvnc + +RUN mkdir ~/.vnc && echo '/usr/bin/xterm &' >> ~/.vnc/xstartup && \ + chmod +x ~/.vnc/xstartup +RUN echo bar | kasmvncpasswd -f > $HOME/.kasmpasswd && chmod 0600 $HOME/.kasmpasswd + +ENTRYPOINT bash -c "vncserver :1 -interface 0.0.0.0 && vncserver -kill :1 && vncserver :1 -depth 24 -geometry 1280x1050 -websocketPort 8443 -cert /etc/pki/tls/private/kasmvnc.pem -sslOnly -FrameRate=24 -interface 0.0.0.0 -httpd /usr/share/kasmvnc/www && tail -f $HOME/.vnc/*.log " diff --git a/builder/dockerfile.ubuntu_focal.barebones.deb.test b/builder/dockerfile.ubuntu_focal.barebones.deb.test new file mode 100644 index 0000000..4449d77 --- /dev/null +++ b/builder/dockerfile.ubuntu_focal.barebones.deb.test @@ -0,0 +1,16 @@ +FROM ubuntu:focal + +ARG KASMVNC_PACKAGE_DIR +COPY $KASMVNC_PACKAGE_DIR/kasmvncserver_*.deb /tmp +RUN apt-get update && dpkg -i /tmp/*.deb; apt-get -yf install +RUN apt-get update && apt-get -y install xterm lsb-release + +RUN useradd -m foo && addgroup foo ssl-cert + +USER foo + +RUN mkdir ~/.vnc && echo '/usr/bin/xterm &' >> ~/.vnc/xstartup && \ + chmod +x ~/.vnc/xstartup +RUN echo bar | kasmvncpasswd -f > $HOME/.kasmpasswd && chmod 0600 $HOME/.kasmpasswd + +ENTRYPOINT bash -c "vncserver :1 -interface 0.0.0.0 && vncserver -kill :1 && vncserver :1 -depth 24 -geometry 1280x1050 -websocketPort 8443 -cert /etc/ssl/certs/ssl-cert-snakeoil.pem -key /etc/ssl/private/ssl-cert-snakeoil.key -sslOnly -FrameRate=24 -interface 0.0.0.0 -httpd /usr/share/kasmvnc/www && tail -f $HOME/.vnc/*.log " diff --git a/builder/test-deb-barebones b/builder/test-deb-barebones index 36010bb..37f9e1b 100755 --- a/builder/test-deb-barebones +++ b/builder/test-deb-barebones @@ -3,8 +3,8 @@ set -e cd "$(dirname "$0")" -os="debian" -os_codename="buster" +os="${1:-debian}" +os_codename="${2:-buster}" docker build --build-arg KASMVNC_PACKAGE_DIR="build/${os_codename}" \ -t kasmvnctester_barebones_${os}:$os_codename \ diff --git a/builder/test-rpm-barebones b/builder/test-rpm-barebones index e8ba9cd..68ec718 100755 --- a/builder/test-rpm-barebones +++ b/builder/test-rpm-barebones @@ -3,8 +3,8 @@ set -e cd "$(dirname "$0")" -os="centos" -os_codename="core" +os="${1:-centos}" +os_codename="${2:-core}" docker build --build-arg KASMVNC_PACKAGE_DIR="build/${os}_${os_codename}" \ -t kasmvnctester_barebones_${os}:$os_codename \ From ece969fd059b972221fbceb441148127ccc8e90d Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Mon, 22 Feb 2021 22:28:30 +1300 Subject: [PATCH 08/16] Rpm: group kasmvnc -> kasmvnc-cert I feel it'd be confusing to use kasmvnc group to provide access to the TSL certificate. Groups like that control whether you can run software, e.g. "docker" group. Using "-cert" clearly shows it's just for certificate access. Not unlide ssl-cert group in Debian. --- builder/dockerfile.centos_core.rpm.test | 2 +- builder/dockerfile.fedora_thirtythree.rpm.test | 2 +- centos/kasmvncserver.spec | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/builder/dockerfile.centos_core.rpm.test b/builder/dockerfile.centos_core.rpm.test index ec02208..0634c40 100644 --- a/builder/dockerfile.centos_core.rpm.test +++ b/builder/dockerfile.centos_core.rpm.test @@ -52,7 +52,7 @@ RUN yum localinstall -y /tmp/*.rpm ### END CUSTOM STUFF ### RUN chown -R 1000:0 $HOME -USER 1000:kasmvnc +USER 1000:kasmvnc-cert WORKDIR $HOME RUN mkdir ~/.vnc && echo '/usr/bin/xfce4-session &' >> ~/.vnc/xstartup && \ diff --git a/builder/dockerfile.fedora_thirtythree.rpm.test b/builder/dockerfile.fedora_thirtythree.rpm.test index bdd4205..895bbc1 100644 --- a/builder/dockerfile.fedora_thirtythree.rpm.test +++ b/builder/dockerfile.fedora_thirtythree.rpm.test @@ -55,7 +55,7 @@ RUN dnf localinstall -y --allowerasing /tmp/*.rpm ### END CUSTOM STUFF ### RUN chown -R 1000:0 $HOME -USER 1000:kasmvnc +USER 1000:kasmvnc-cert WORKDIR $HOME RUN mkdir ~/.vnc && echo '/usr/bin/lxsession -s LXDE &' >> ~/.vnc/xstartup && \ diff --git a/centos/kasmvncserver.spec b/centos/kasmvncserver.spec index 33d75d0..6e94979 100644 --- a/centos/kasmvncserver.spec +++ b/centos/kasmvncserver.spec @@ -24,7 +24,7 @@ cd $RPM_BUILD_ROOT/usr/bin && mv Xkasmvnc Xvnc && \ ln -s kasmvncpasswd vncpasswd cd $RPM_BUILD_ROOT/usr/share/man/man1 && mv Xkasmvnc.1 Xvnc.1 && \ mv kasmvncserver.1 vncserver.1 && mv kasmvncconfig.1 vncconfig.1 && \ - mv kasmvncpasswd.1 vncpasswd.1 + cp kasmvncpasswd.1 vncpasswd.1 %files /usr/bin/* @@ -39,7 +39,7 @@ cd $RPM_BUILD_ROOT/usr/share/man/man1 && mv Xkasmvnc.1 Xvnc.1 && \ - Initial release of the rpm package. %post - kasmvnc_group="kasmvnc" + kasmvnc_group="kasmvnc-cert" create_kasmvnc_group() { if ! getent group "$kasmvnc_group" >/dev/null; then From 7f9a50562d82d2b360401721e16353124a96de8d Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 24 Feb 2021 21:16:53 +1300 Subject: [PATCH 09/16] Deb: fix build dependencies install --- builder/dockerfile.debian_bullseye.deb.build | 2 +- builder/dockerfile.debian_buster.deb.build | 2 +- builder/dockerfile.kali_kali-rolling.deb.build | 2 +- builder/dockerfile.ubuntu_bionic.deb.build | 2 +- builder/dockerfile.ubuntu_focal.deb.build | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/builder/dockerfile.debian_bullseye.deb.build b/builder/dockerfile.debian_bullseye.deb.build index 7cc3b16..732c6a6 100644 --- a/builder/dockerfile.debian_bullseye.deb.build +++ b/builder/dockerfile.debian_bullseye.deb.build @@ -7,6 +7,6 @@ RUN apt-get update && \ # Install build-deps for the package. COPY ./debian/control /tmp -RUN echo YYY | mk-build-deps --install --remove /tmp/control +RUN apt-get update && echo YYY | mk-build-deps --install --remove /tmp/control USER 1000 diff --git a/builder/dockerfile.debian_buster.deb.build b/builder/dockerfile.debian_buster.deb.build index d3d4e9b..9ca2b88 100644 --- a/builder/dockerfile.debian_buster.deb.build +++ b/builder/dockerfile.debian_buster.deb.build @@ -7,6 +7,6 @@ RUN apt-get update && \ # Install build-deps for the package. COPY ./debian/control /tmp -RUN echo YYY | mk-build-deps --install --remove /tmp/control +RUN apt-get update && echo YYY | mk-build-deps --install --remove /tmp/control USER 1000 diff --git a/builder/dockerfile.kali_kali-rolling.deb.build b/builder/dockerfile.kali_kali-rolling.deb.build index 8f0a2c5..240bd69 100644 --- a/builder/dockerfile.kali_kali-rolling.deb.build +++ b/builder/dockerfile.kali_kali-rolling.deb.build @@ -7,6 +7,6 @@ RUN apt-get update && \ # Install build-deps for the package. COPY ./debian/control /tmp -RUN echo YYY | mk-build-deps --install --remove /tmp/control +RUN apt-get update && echo YYY | mk-build-deps --install --remove /tmp/control USER 1000 diff --git a/builder/dockerfile.ubuntu_bionic.deb.build b/builder/dockerfile.ubuntu_bionic.deb.build index 9063fd9..ac48856 100644 --- a/builder/dockerfile.ubuntu_bionic.deb.build +++ b/builder/dockerfile.ubuntu_bionic.deb.build @@ -5,6 +5,6 @@ RUN apt-get update && \ # Install build-deps for the package. COPY ./debian/control /tmp -RUN echo YYY | mk-build-deps --install --remove /tmp/control +RUN apt-get update && echo YYY | mk-build-deps --install --remove /tmp/control USER 1000 diff --git a/builder/dockerfile.ubuntu_focal.deb.build b/builder/dockerfile.ubuntu_focal.deb.build index 703ce2b..619a93d 100644 --- a/builder/dockerfile.ubuntu_focal.deb.build +++ b/builder/dockerfile.ubuntu_focal.deb.build @@ -7,6 +7,6 @@ RUN apt-get update && \ # Install build-deps for the package. COPY ./debian/control /tmp -RUN echo YYY | mk-build-deps --install --remove /tmp/control +RUN apt-get update && echo YYY | mk-build-deps --install --remove /tmp/control USER 1000 From 9301fe9d33f6ed826387cb32a698f07a89ef8421 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 24 Feb 2021 21:19:49 +1300 Subject: [PATCH 10/16] Deb/Rpm: add package description --- centos/kasmvncserver.spec | 21 +++++++++++++++++++-- debian/control | 22 ++++++++++++++++++++-- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/centos/kasmvncserver.spec b/centos/kasmvncserver.spec index 6e94979..45e4722 100644 --- a/centos/kasmvncserver.spec +++ b/centos/kasmvncserver.spec @@ -1,7 +1,7 @@ Name: kasmvncserver Version: 0.9.1~beta Release: 1%{?dist} -Summary: Lorem ipsum +Summary: VNC server accessible from a web browser License: GPLv2+ URL: https://github.com/kasmtech/KasmVNC @@ -11,8 +11,25 @@ Requires: xorg-x11-xauth, xorg-x11-xkb-utils, xkeyboard-config, xorg-x11-server- Conflicts: tigervnc-server, tigervnc-server-minimal %description +VNC stands for Virtual Network Computing. It is, in essence, a remote +display system which allows you to view a computing `desktop' environment +not only on the machine where it is running, but from anywhere on the +Internet and from a wide variety of machine architectures. -Lorem ipsum +KasmVNC has different goals than TigerVNC: + +Web-based - KasmVNC is designed to provide a web accessible remote desktop. +It comes with a web server and web-socket server built in. There is no need to +install other components. Simply run and navigate to your desktop's URL on the +port you specify. While you can still tun on the legacy VNC port, it is +disabled by default. + +Security - KasmVNC defaults to HTTPS and allows for HTTP Basic Auth. VNC +Password authentication is limited by specification to 8 characters and is not +sufficient for use on an internet accessible remote desktop. Our goal is to +create a by default secure, web based experience. + +Simplicity - KasmVNC aims at being simple to deploy and configure. %prep diff --git a/debian/control b/debian/control index 979b52e..623d913 100644 --- a/debian/control +++ b/debian/control @@ -14,5 +14,23 @@ Architecture: amd64 Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, ssl-cert, xauth, x11-xkb-utils, xkb-data, procps Provides: vnc-server -Description: virtual network computing server with web interface - Lorem ipsum +Description: VNC server accessible from a web browser + VNC stands for Virtual Network Computing. It is, in essence, a remote + display system which allows you to view a computing `desktop' environment + not only on the machine where it is running, but from anywhere on the + Internet and from a wide variety of machine architectures. + . + KasmVNC has different goals than TigerVNC: + . + Web-based - KasmVNC is designed to provide a web accessible remote desktop. + It comes with a web server and websocket server built in. There is no need to + install other components. Simply run and navigate to your desktop's URL on the + port you specify. While you can still tun on the legacy VNC port, it is + disabled by default. + . + Security - KasmVNC defaults to HTTPS and allows for HTTP Basic Auth. VNC + Password authentication is limited by specification to 8 characters and is not + suffecient for use on an internet accessible remote desktop. Our goal is to + create a by default secure, web based experience. + . + Simplicity - KasmVNC aims at being simple to deploy and configure. From a865b6e6ebe7e5a67dfe9df734385bf831e1ee0a Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 24 Feb 2021 21:20:33 +1300 Subject: [PATCH 11/16] Deb/Rpm: all file copying to packages is done in debian/ atm --- centos/kasmvncserver.spec | 6 ---- debian/Makefile.to_fakebuild_tar_package | 36 ++++++++++++++++++------ 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/centos/kasmvncserver.spec b/centos/kasmvncserver.spec index 45e4722..02252c8 100644 --- a/centos/kasmvncserver.spec +++ b/centos/kasmvncserver.spec @@ -36,12 +36,6 @@ Simplicity - KasmVNC aims at being simple to deploy and configure. %install rm -rf $RPM_BUILD_ROOT DESTDIR=$RPM_BUILD_ROOT make -f /src/debian/Makefile.to_fakebuild_tar_package install -cd $RPM_BUILD_ROOT/usr/bin && mv Xkasmvnc Xvnc && \ - mv kasmvncserver vncserver && mv kasmvncconfig vncconfig && \ - ln -s kasmvncpasswd vncpasswd -cd $RPM_BUILD_ROOT/usr/share/man/man1 && mv Xkasmvnc.1 Xvnc.1 && \ - mv kasmvncserver.1 vncserver.1 && mv kasmvncconfig.1 vncconfig.1 && \ - cp kasmvncpasswd.1 vncpasswd.1 %files /usr/bin/* diff --git a/debian/Makefile.to_fakebuild_tar_package b/debian/Makefile.to_fakebuild_tar_package index 2db2963..cec66a9 100644 --- a/debian/Makefile.to_fakebuild_tar_package +++ b/debian/Makefile.to_fakebuild_tar_package @@ -1,8 +1,10 @@ TARGET_OS := $(shell lsb_release -is | tr '[:upper:]' '[:lower:]') TARGET_OS_CODENAME := $(shell lsb_release -cs | tr '[:upper:]' '[:lower:]') ifeq ($(TARGET_OS), $(filter $(TARGET_OS), centos fedora)) + PACKAGE_TYPE := rpm TARBALL_DIR := $$RPM_SOURCE_DIR else + PACKAGE_TYPE := deb TARBALL_DIR := builder/build endif TARBALL := $(TARBALL_DIR)/kasmvnc.$(TARGET_OS)_$(TARGET_OS_CODENAME).tar.gz @@ -16,18 +18,36 @@ install: unpack_tarball echo "installing files" mkdir -p $(DESTDIR)/usr/bin $(DESTDIR)/usr/share/man/man1 \ $(DESTDIR)/usr/share/doc/kasmvncserver - cp $(SRC_BIN)/Xvnc $(DESTDIR)/usr/bin/Xkasmvnc - cp $(SRC_BIN)/vncserver $(DESTDIR)/usr/bin/kasmvncserver - cp $(SRC_BIN)/vncconfig $(DESTDIR)/usr/bin/kasmvncconfig - cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin/ + if [ $(PACKAGE_TYPE) = deb ]; then \ + cp $(SRC_BIN)/Xvnc $(DESTDIR)/usr/bin/Xkasmvnc; \ + cp $(SRC_BIN)/vncserver $(DESTDIR)/usr/bin/kasmvncserver; \ + cp $(SRC_BIN)/vncconfig $(DESTDIR)/usr/bin/kasmvncconfig; \ + cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin/; \ + fi + if [ $(PACKAGE_TYPE) = rpm ]; then \ + cp $(SRC_BIN)/Xvnc $(DESTDIR)/usr/bin; \ + cp $(SRC_BIN)/vncserver $(DESTDIR)/usr/bin; \ + cp $(SRC_BIN)/vncconfig $(DESTDIR)/usr/bin; \ + cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin; \ + cd $(DESTDIR)/usr/bin && ln -s kasmvncpasswd vncpasswd; \ + fi cp -r $(SRC)/share/doc/kasmvnc*/* $(DESTDIR)/usr/share/doc/kasmvncserver/ rsync -r --exclude '.git*' --exclude po2js --exclude xgettext-html \ --exclude www/utils/ --exclude .eslintrc \ $(SRC)/share/kasmvnc $(DESTDIR)/usr/share - cp $(SRC)/man/man1/Xvnc.1 $(DESTDIR)/usr/share/man/man1/Xkasmvnc.1 - cp $(SRC)/share/man/man1/vncserver.1 $(DST_MAN)/kasmvncserver.1 - cp $(SRC)/share/man/man1/vncpasswd.1 $(DST_MAN)/kasmvncpasswd.1 - cp $(SRC)/share/man/man1/vncconfig.1 $(DST_MAN)/kasmvncconfig.1 + if [ $(PACKAGE_TYPE) = deb ]; then \ + cp $(SRC)/man/man1/Xvnc.1 $(DESTDIR)/usr/share/man/man1/Xkasmvnc.1; \ + cp $(SRC)/share/man/man1/vncserver.1 $(DST_MAN)/kasmvncserver.1; \ + cp $(SRC)/share/man/man1/vncpasswd.1 $(DST_MAN)/kasmvncpasswd.1; \ + cp $(SRC)/share/man/man1/vncconfig.1 $(DST_MAN)/kasmvncconfig.1; \ + fi + if [ $(PACKAGE_TYPE) = rpm ]; then \ + 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); \ + cd $(DST_MAN) && ln -s vncpasswd.1 kasmvncpasswd.1; \ + fi unpack_tarball: tar -xzf "$(TARBALL)" -C "$(TAR_DATA)" From b3ec357e99e22086c4ebfadda928da8fb5330398 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Wed, 24 Feb 2021 22:53:43 +1300 Subject: [PATCH 12/16] Rpm: extract rpm-related install to the spec --- centos/kasmvncserver.spec | 29 +++++++++++++++++++- debian/Makefile.to_fakebuild_tar_package | 34 ++++++------------------ 2 files changed, 36 insertions(+), 27 deletions(-) diff --git a/centos/kasmvncserver.spec b/centos/kasmvncserver.spec index 02252c8..0a031e3 100644 --- a/centos/kasmvncserver.spec +++ b/centos/kasmvncserver.spec @@ -35,7 +35,34 @@ Simplicity - KasmVNC aims at being simple to deploy and configure. %install rm -rf $RPM_BUILD_ROOT -DESTDIR=$RPM_BUILD_ROOT make -f /src/debian/Makefile.to_fakebuild_tar_package install + +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 +cp $SRC_BIN/Xvnc $DESTDIR/usr/bin; +cp $SRC_BIN/vncserver $DESTDIR/usr/bin; +cp $SRC_BIN/vncconfig $DESTDIR/usr/bin; +cp $SRC_BIN/kasmvncpasswd $DESTDIR/usr/bin; +cd $DESTDIR/usr/bin && ln -s kasmvncpasswd vncpasswd; +cp -r $SRC/share/doc/kasmvnc*/* $DESTDIR/usr/share/doc/kasmvncserver/ +rsync -r --exclude '.git*' --exclude po2js --exclude xgettext-html \ + --exclude www/utils/ --exclude .eslintrc \ + $SRC/share/kasmvnc $DESTDIR/usr/share +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; +cd $DST_MAN && ln -s vncpasswd.1 kasmvncpasswd.1; %files /usr/bin/* diff --git a/debian/Makefile.to_fakebuild_tar_package b/debian/Makefile.to_fakebuild_tar_package index cec66a9..c53b9b5 100644 --- a/debian/Makefile.to_fakebuild_tar_package +++ b/debian/Makefile.to_fakebuild_tar_package @@ -18,36 +18,18 @@ install: unpack_tarball echo "installing files" mkdir -p $(DESTDIR)/usr/bin $(DESTDIR)/usr/share/man/man1 \ $(DESTDIR)/usr/share/doc/kasmvncserver - if [ $(PACKAGE_TYPE) = deb ]; then \ - cp $(SRC_BIN)/Xvnc $(DESTDIR)/usr/bin/Xkasmvnc; \ - cp $(SRC_BIN)/vncserver $(DESTDIR)/usr/bin/kasmvncserver; \ - cp $(SRC_BIN)/vncconfig $(DESTDIR)/usr/bin/kasmvncconfig; \ - cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin/; \ - fi - if [ $(PACKAGE_TYPE) = rpm ]; then \ - cp $(SRC_BIN)/Xvnc $(DESTDIR)/usr/bin; \ - cp $(SRC_BIN)/vncserver $(DESTDIR)/usr/bin; \ - cp $(SRC_BIN)/vncconfig $(DESTDIR)/usr/bin; \ - cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin; \ - cd $(DESTDIR)/usr/bin && ln -s kasmvncpasswd vncpasswd; \ - fi + cp $(SRC_BIN)/Xvnc $(DESTDIR)/usr/bin/Xkasmvnc + cp $(SRC_BIN)/vncserver $(DESTDIR)/usr/bin/kasmvncserver + cp $(SRC_BIN)/vncconfig $(DESTDIR)/usr/bin/kasmvncconfig + cp $(SRC_BIN)/kasmvncpasswd $(DESTDIR)/usr/bin/ cp -r $(SRC)/share/doc/kasmvnc*/* $(DESTDIR)/usr/share/doc/kasmvncserver/ rsync -r --exclude '.git*' --exclude po2js --exclude xgettext-html \ --exclude www/utils/ --exclude .eslintrc \ $(SRC)/share/kasmvnc $(DESTDIR)/usr/share - if [ $(PACKAGE_TYPE) = deb ]; then \ - cp $(SRC)/man/man1/Xvnc.1 $(DESTDIR)/usr/share/man/man1/Xkasmvnc.1; \ - cp $(SRC)/share/man/man1/vncserver.1 $(DST_MAN)/kasmvncserver.1; \ - cp $(SRC)/share/man/man1/vncpasswd.1 $(DST_MAN)/kasmvncpasswd.1; \ - cp $(SRC)/share/man/man1/vncconfig.1 $(DST_MAN)/kasmvncconfig.1; \ - fi - if [ $(PACKAGE_TYPE) = rpm ]; then \ - 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); \ - cd $(DST_MAN) && ln -s vncpasswd.1 kasmvncpasswd.1; \ - fi + cp $(SRC)/man/man1/Xvnc.1 $(DESTDIR)/usr/share/man/man1/Xkasmvnc.1 + cp $(SRC)/share/man/man1/vncserver.1 $(DST_MAN)/kasmvncserver.1 + cp $(SRC)/share/man/man1/vncpasswd.1 $(DST_MAN)/kasmvncpasswd.1 + cp $(SRC)/share/man/man1/vncconfig.1 $(DST_MAN)/kasmvncconfig.1 unpack_tarball: tar -xzf "$(TARBALL)" -C "$(TAR_DATA)" From 120dcbeabaa0b743c92a9ec93cb33388f27353e2 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 25 Feb 2021 21:22:56 +1300 Subject: [PATCH 13/16] Deb: fix code formatting --- debian/Makefile.to_fakebuild_tar_package | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/debian/Makefile.to_fakebuild_tar_package b/debian/Makefile.to_fakebuild_tar_package index c53b9b5..d1861a9 100644 --- a/debian/Makefile.to_fakebuild_tar_package +++ b/debian/Makefile.to_fakebuild_tar_package @@ -26,10 +26,10 @@ install: unpack_tarball rsync -r --exclude '.git*' --exclude po2js --exclude xgettext-html \ --exclude www/utils/ --exclude .eslintrc \ $(SRC)/share/kasmvnc $(DESTDIR)/usr/share - cp $(SRC)/man/man1/Xvnc.1 $(DESTDIR)/usr/share/man/man1/Xkasmvnc.1 - cp $(SRC)/share/man/man1/vncserver.1 $(DST_MAN)/kasmvncserver.1 - cp $(SRC)/share/man/man1/vncpasswd.1 $(DST_MAN)/kasmvncpasswd.1 - cp $(SRC)/share/man/man1/vncconfig.1 $(DST_MAN)/kasmvncconfig.1 + cp $(SRC)/man/man1/Xvnc.1 $(DESTDIR)/usr/share/man/man1/Xkasmvnc.1 + cp $(SRC)/share/man/man1/vncserver.1 $(DST_MAN)/kasmvncserver.1 + cp $(SRC)/share/man/man1/vncpasswd.1 $(DST_MAN)/kasmvncpasswd.1 + cp $(SRC)/share/man/man1/vncconfig.1 $(DST_MAN)/kasmvncconfig.1 unpack_tarball: tar -xzf "$(TARBALL)" -C "$(TAR_DATA)" From fbe05cee861d9929fb811f3c98380edbae30e56a Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 25 Feb 2021 21:23:21 +1300 Subject: [PATCH 14/16] Fix random 401 Forbidden on Ubuntu 20 and other newer releases --- common/network/websocket.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/common/network/websocket.c b/common/network/websocket.c index 6585402..ccf492d 100644 --- a/common/network/websocket.c +++ b/common/network/websocket.c @@ -11,6 +11,7 @@ #include #include +#include #include #include #include @@ -929,7 +930,10 @@ ws_ctx_t *do_handshake(int sock) { snprintf(authbuf, 4096, "%s%s", settings.basicauth, pwbuf); authbuf[4095] = '\0'; - const char *encrypted = crypt(resppw, "$5$kasm$"); + struct crypt_data cdata; + cdata.initialized = 0; + + const char *encrypted = crypt_r(resppw, "$5$kasm$", &cdata); *resppw = '\0'; snprintf(pwbuf, 4096, "%s%s", response, encrypted); From d7916b081b94a6183c58584763cc655e07616f5a Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 25 Feb 2021 21:33:38 +1300 Subject: [PATCH 15/16] Deb: Kali XFCE works now --- builder/dockerfile.kali_kali-rolling.deb.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/dockerfile.kali_kali-rolling.deb.test b/builder/dockerfile.kali_kali-rolling.deb.test index 9ee469c..7fa1ae0 100644 --- a/builder/dockerfile.kali_kali-rolling.deb.test +++ b/builder/dockerfile.kali_kali-rolling.deb.test @@ -29,7 +29,7 @@ WORKDIR $HOME ### REQUIRED STUFF ### -RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext wget +RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal dbus-x11 xterm libnss-wrapper gettext wget RUN apt-get purge -y pm-utils xscreensaver* RUN apt-get update && apt-get install -y vim less From fbfdf216121f77327b0be37bf6c0d0482b7e9644 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Thu, 25 Feb 2021 21:58:10 +1300 Subject: [PATCH 16/16] Deb: Debian Bullseye XFCE works now --- builder/dockerfile.debian_bullseye.deb.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/dockerfile.debian_bullseye.deb.test b/builder/dockerfile.debian_bullseye.deb.test index 5749f4e..8340a9a 100644 --- a/builder/dockerfile.debian_bullseye.deb.test +++ b/builder/dockerfile.debian_bullseye.deb.test @@ -29,7 +29,7 @@ WORKDIR $HOME ### REQUIRED STUFF ### -RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal xterm libnss-wrapper gettext wget +RUN apt-get update && apt-get install -y supervisor xfce4 xfce4-terminal dbus-x11 xterm libnss-wrapper gettext wget RUN apt-get purge -y pm-utils xscreensaver* RUN apt-get update && apt-get install -y vim less