Initial commit
This commit is contained in:
22
builder/README.md
Normal file
22
builder/README.md
Normal file
@@ -0,0 +1,22 @@
|
||||
REQIUREMENTS
|
||||
Docker CE
|
||||
|
||||
# build the docker image
|
||||
cd /src_code_root
|
||||
sudo docker build -t kasmvncbuilder:18.04 -f builder/dockerfile.build .
|
||||
|
||||
# run the builder
|
||||
sudo docker run -v /tmp:/build kasmvncbuilder:18.04
|
||||
|
||||
# tar will be on /tmp of host
|
||||
cp /tmp/kasmvnc*.tar.gz builder/
|
||||
|
||||
# build test desktop container with new binary installed
|
||||
cd builder
|
||||
sudo docker build -t kasmvnctester:18.04 -f dockerfile.test .
|
||||
|
||||
# run an instance of the new destkop
|
||||
sudo docker run -d -p 80:6901 -p 5901:5901 -e VNCOPTIONS="-detectScrolling -PreferBandwidth -DynamicQualityMin=0" kasmvnctester:latest
|
||||
|
||||
open browser and point to http://IPAddress/vnc_lite.html
|
||||
default password is "vncpassword" or use a VNC client
|
||||
66
builder/build.sh
Executable file
66
builder/build.sh
Executable file
@@ -0,0 +1,66 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
# For build-dep to work, the apt sources need to have the source server
|
||||
#sudo apt-get build-dep xorg-server
|
||||
|
||||
#sudo apt-get install cmake git libjpeg-dev libgnutls-dev
|
||||
|
||||
# Ubuntu applies a million patches, but here we use upstream to simplify matters
|
||||
cd /tmp
|
||||
wget https://www.x.org/archive//individual/xserver/xorg-server-1.18.4.tar.bz2
|
||||
|
||||
#git clone https://kasmweb@bitbucket.org/kasmtech/kasmvnc.git
|
||||
#cd kasmvnc
|
||||
#git checkout dynjpeg
|
||||
cd /src
|
||||
|
||||
# We only want the server, so FLTK and manual tests aren't useful.
|
||||
# Alternatively, install fltk 1.3 and its dev packages.
|
||||
sed -i -e '/find_package(FLTK/s@^@#@' \
|
||||
-e '/add_subdirectory(tests/s@^@#@' \
|
||||
CMakeLists.txt
|
||||
|
||||
cmake .
|
||||
make -j5
|
||||
|
||||
tar -C unix/xserver -xvf /tmp/xorg-server-1.18.4.tar.bz2 --strip-components=1
|
||||
|
||||
cd unix/xserver
|
||||
patch -Np1 -i ../xserver118.patch
|
||||
autoreconf -i
|
||||
# Configuring Xorg is long and has many distro-specific paths.
|
||||
# The distro paths start after prefix and end with the font path,
|
||||
# everything after that is based on BUILDING.txt to remove unneeded
|
||||
# components.
|
||||
./configure --prefix=/opt/kasmweb \
|
||||
--with-xkb-path=/usr/share/X11/xkb \
|
||||
--with-xkb-output=/var/lib/xkb \
|
||||
--with-xkb-bin-directory=/usr/bin \
|
||||
--with-default-font-path="/usr/share/fonts/X11/misc,/usr/share/fonts/X11/cyrillic,/usr/share/fonts/X11/100dpi/:unscaled,/usr/share/fonts/X11/75dpi/:unscaled,/usr/share/fonts/X11/Type1,/usr/share/fonts/X11/100dpi,/usr/share/fonts/X11/75dpi,built-ins" \
|
||||
--with-pic --without-dtrace --disable-static --disable-dri \
|
||||
--disable-xinerama --disable-xvfb --disable-xnest --disable-xorg \
|
||||
--disable-dmx --disable-xwin --disable-xephyr --disable-kdrive \
|
||||
--disable-config-hal --disable-config-udev \
|
||||
--disable-dri2 --enable-glx --disable-xwayland --disable-dri3
|
||||
make -j5
|
||||
|
||||
# modifications for the servertarball
|
||||
cd /src
|
||||
mkdir -p xorg.build/bin
|
||||
cd xorg.build/bin/
|
||||
ln -s /src/unix/xserver/hw/vnc/Xvnc Xvnc
|
||||
cd ..
|
||||
mkdir -p man/man1
|
||||
touch man/man1/Xserver.1
|
||||
touch man/man1/Xvnc.1
|
||||
mkdir lib
|
||||
cd lib
|
||||
ln -s /usr/lib/x86_64-linux-gnu/dri dri
|
||||
cd /src
|
||||
sed $'s#pushd $TMPDIR/inst#CWD=$(pwd)\\\ncd $TMPDIR/inst#' release/maketarball > release/maketarball2
|
||||
sed $'s#popd#cd $CWD#' release/maketarball2 > release/maketarball3
|
||||
mv release/maketarball3 release/maketarball
|
||||
|
||||
make servertarball
|
||||
|
||||
cp kasmvnc*.tar.gz /build/
|
||||
20
builder/build_and_deploy_kasm.sh
Executable file
20
builder/build_and_deploy_kasm.sh
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
# this script will build kasmvnc and build a new kasm desktop image
|
||||
# this script assumes you have an instance of kasm already deployed
|
||||
# it will replace the existing kasm desktop image so the next kasm you launch will use the updated image
|
||||
|
||||
set -e
|
||||
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo "This script must be run as root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
docker build -t kasmvncbuilder:latest -f builder/dockerfile.build .
|
||||
docker run -v /tmp:/build kasmvncbuilder:latest
|
||||
cp /tmp/kasmvnc*.tar.gz builder/
|
||||
cd builder
|
||||
docker build -t kasmweb/desktop-deluxe:develop -f dockerfile.test .
|
||||
docker ps -aq --no-trunc -f status=exited | xargs docker rm
|
||||
docker rmi $(docker images | grep "<none>" | awk "{print $3}")
|
||||
22
builder/dockerfile.16.04.build
Normal file
22
builder/dockerfile.16.04.build
Normal file
@@ -0,0 +1,22 @@
|
||||
FROM ubuntu:16.04
|
||||
|
||||
RUN sed -i 's$# deb-src$deb-src$' /etc/apt/sources.list
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get -y install sudo
|
||||
|
||||
RUN apt-get -y build-dep xorg-server
|
||||
RUN apt-get -y install cmake git libjpeg-dev libgnutls-dev vim wget tightvncserver
|
||||
RUN apt-get -y install libjpeg-dev libpng-dev libtiff-dev libgif-dev
|
||||
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 && make && make install
|
||||
|
||||
RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo
|
||||
|
||||
COPY . /src
|
||||
RUN chown -R docker:docker /src
|
||||
|
||||
|
||||
USER docker
|
||||
ENTRYPOINT ["/src/builder/build.sh"]
|
||||
29
builder/dockerfile.build
Normal file
29
builder/dockerfile.build
Normal file
@@ -0,0 +1,29 @@
|
||||
FROM ubuntu:18.04
|
||||
|
||||
RUN sed -i 's$# deb-src$deb-src$' /etc/apt/sources.list
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get -y install sudo
|
||||
|
||||
RUN apt-get -y build-dep xorg-server libxfont-dev
|
||||
RUN apt-get -y install cmake git libjpeg-dev libgnutls28-dev vim wget tightvncserver
|
||||
RUN apt-get -y install libjpeg-dev libpng-dev libtiff-dev libgif-dev libavcodec-dev libssl-dev
|
||||
|
||||
# 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 && make && make install
|
||||
|
||||
# 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 . /src
|
||||
RUN chown -R docker:docker /src
|
||||
|
||||
USER docker
|
||||
ENTRYPOINT ["/src/builder/build.sh"]
|
||||
12
builder/dockerfile.test
Normal file
12
builder/dockerfile.test
Normal file
@@ -0,0 +1,12 @@
|
||||
FROM kasmweb/desktop-deluxe:develop
|
||||
|
||||
ENV VNCOPTIONS "-PreferBandwidth -DynamicQualityMin=3 -DynamicQualityMax=7 -detectScrolling"
|
||||
|
||||
USER root
|
||||
|
||||
COPY kasmvnc-Linux-x86_64-*.tar.gz /tmp/
|
||||
RUN tar -xzvf /tmp/kasmvnc-Linux-x86_64-*.tar.gz --strip 1 -C /
|
||||
|
||||
USER 1000
|
||||
|
||||
CMD ["--tail-log"]
|
||||
79
builder/install/install.sh
Executable file
79
builder/install/install.sh
Executable file
@@ -0,0 +1,79 @@
|
||||
set -e
|
||||
|
||||
OS_ID='unknown'
|
||||
OS_VERSION_ID='unknown'
|
||||
SUPPORTED='false'
|
||||
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo "This script must ran with sudo"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
function install_deps_ubuntu_18(){
|
||||
# install deps and build tools
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install libjpeg-dev libpng-dev libtiff-dev libgif-dev build-essential cmake libxfont-dev
|
||||
|
||||
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
|
||||
sudo dpkg -i libxfont1*.deb
|
||||
rm /tmp/libxfont1*.deb
|
||||
}
|
||||
|
||||
function build_webp(){
|
||||
# build webp
|
||||
wget https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.0.2.tar.gz
|
||||
tar -xzvf /tmp/libwebp-*
|
||||
cd /tmp/libwebp-1.0.2
|
||||
./configure
|
||||
make
|
||||
sudo make install
|
||||
cd /
|
||||
rm -rf /tmp/libwebp*
|
||||
sudo ldconfig
|
||||
}
|
||||
|
||||
function install_kasmvnc(){
|
||||
# install kasmvnc
|
||||
wget -qO- https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/c0ab0111ae47a39720f26a7dd7ac54a3681540f8/kasmvnc_1.9.c0ab0111ae47a39720f26a7dd7ac54a3681540f8.tar.gz | sudo tar xz --strip 1 -C /
|
||||
#install cert
|
||||
sudo mkdir /usr/local/share/kasmvnc/certs
|
||||
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /usr/local/share/kasmvnc/certs/self.pem -out /usr/local/share/kasmvnc/certs/self.pem -subj "/C=US/ST=VA/L=None/O=None/OU=DoFu/CN=kasm/emailAddress=none@none.none"
|
||||
}
|
||||
|
||||
cd /tmp
|
||||
|
||||
# Get the OS and version
|
||||
if [ -f /etc/os-release ] ; then
|
||||
OS_ID="$(awk -F= '/^ID=/{print $2}' /etc/os-release)"
|
||||
OS_VERSION_ID="$(awk -F= '/^VERSION_ID/{print $2}' /etc/os-release)"
|
||||
fi
|
||||
|
||||
|
||||
if [ "${OS_ID}" == "ubuntu" ] && ( [ "${OS_VERSION_ID}" == '"16.04"' ] || [ "${OS_VERSION_ID}" == '"18.04"' ] || [ "${OS_VERSION_ID}" == '"20.04"' ]) ; then
|
||||
|
||||
if [ "${OS_VERSION_ID}" == '"18.04"' ] ; then
|
||||
SUPPORTED='true'
|
||||
install_deps_ubuntu_18
|
||||
build_webp
|
||||
install_kasmvnc
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${OS_ID}" == "debian" ] && ( [ "${OS_VERSION_ID}" == '"9"' ] || [ "${OS_VERSION_ID}" == '"10"' ] ) ; then
|
||||
#TODO: Add support for debian
|
||||
echo 'Debian is currently not supported'
|
||||
fi
|
||||
|
||||
if [ "${OS_ID}" == '"centos"' ] && ( [ "${OS_VERSION_ID}" == '"7"' ] || [ "${OS_VERSION_ID}" == '"8"' ] ) ; then
|
||||
#TODO: Add support for Centos
|
||||
echo 'CentOS is currently not supported'
|
||||
fi
|
||||
|
||||
if [ "${SUPPORTED}" == "false" ] ; then
|
||||
echo "Installation Not Supported for this Operating System. You must compile KasmVNC from source."
|
||||
exit -1
|
||||
fi
|
||||
|
||||
echo "Installation is complete"
|
||||
echo "Follow the instructions to complete setup"
|
||||
Reference in New Issue
Block a user