Added TurboVNC backend to xrdp

This commit is contained in:
Héctor Molinero Fernández
2021-12-30 16:32:40 +01:00
parent d3083562d8
commit 6daf0794f0
4 changed files with 71 additions and 13 deletions

View File

@@ -27,11 +27,13 @@ m4_ifelse(ENABLE_32BIT_SUPPORT, 1, [[m4_dnl
flex \
git \
intltool \
libbz2-dev \
libegl-dev \
libegl1-mesa \
libegl1-mesa-dev \
libepoxy-dev \
libfdk-aac-dev \
libfreetype-dev \
libfuse-dev \
libgbm-dev \
libgl-dev \
@@ -56,15 +58,20 @@ m4_ifelse(ENABLE_32BIT_SUPPORT, 1, [[m4_dnl
libxfixes-dev \
libxml2-dev \
libxrandr-dev \
libxt-dev \
libxtst-dev \
libxv-dev \
nasm \
ocl-icd-opencl-dev \
pkg-config \
texinfo \
x11-xkb-utils \
xauth \
xkb-data \
xserver-xorg-dev \
xsltproc \
xutils-dev \
zlib1g-dev \
m4_ifelse(ENABLE_32BIT_SUPPORT, 1, [[m4_dnl
&& apt-get install -y --no-install-recommends -o APT::Immediate-Configure=0 \
g++-multilib \
@@ -163,6 +170,36 @@ RUN make deb
RUN dpkg -i ./virtualgl32_*.deb
]])m4_dnl
# Build TurboVNC
ARG TURBOVNC_TREEISH=3.0beta1
ARG TURBOVNC_REMOTE=https://github.com/TurboVNC/turbovnc.git
RUN mkdir /tmp/turbovnc/
WORKDIR /tmp/turbovnc/
RUN git clone "${TURBOVNC_REMOTE:?}" ./
RUN git checkout "${TURBOVNC_TREEISH:?}"
RUN git submodule update --init --recursive
RUN mkdir /tmp/turbovnc/build/
WORKDIR /tmp/turbovnc/build/
RUN cmake ./ \
-G 'Unix Makefiles' \
-D PKGNAME=turbovnc \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/opt/TurboVNC \
-D TVNC_BUILDSERVER=1 \
-D TVNC_BUILDWEBSERVER=0 \
-D TVNC_BUILDVIEWER=0 \
-D TVNC_BUILDHELPER=0 \
-D TVNC_SYSTEMLIBS=1 \
-D TVNC_SYSTEMX11=1 \
-D TVNC_DLOPENSSL=1 \
-D TVNC_USEPAM=1 \
-D TVNC_GLX=1 \
-D TVNC_NVCONTROL=1 \
../
RUN make -j"$(nproc)"
RUN make deb
RUN dpkg -i ./turbovnc_*.deb
# Build xrdp
ARG XRDP_TREEISH=v0.9.17
ARG XRDP_REMOTE=https://github.com/neutrinolabs/xrdp.git
@@ -233,10 +270,12 @@ m4_ifelse(ENABLE_32BIT_SUPPORT, 1, [[m4_dnl
ca-certificates \
dbus \
dbus-x11 \
libbz2-1.0 \
libegl1 \
libegl1-mesa \
libepoxy0 \
libfdk-aac1 \
libfreetype6 \
libfuse2 \
libgbm1 \
libgl1 \
@@ -261,6 +300,7 @@ m4_ifelse(ENABLE_32BIT_SUPPORT, 1, [[m4_dnl
libxfixes3 \
libxml2 \
libxrandr2 \
libxt6 \
libxtst6 \
libxv1 \
locales \
@@ -277,6 +317,9 @@ m4_ifelse(ENABLE_32BIT_SUPPORT, 1, [[m4_dnl
runit \
tini \
tzdata \
x11-xkb-utils \
xauth \
xkb-data \
xserver-xorg-core \
xserver-xorg-input-evdev \
xserver-xorg-input-joystick \
@@ -284,6 +327,7 @@ m4_ifelse(ENABLE_32BIT_SUPPORT, 1, [[m4_dnl
xserver-xorg-video-dummy \
xserver-xorg-video-fbdev \
xserver-xorg-video-vesa \
zlib1g \
m4_ifelse(ENABLE_32BIT_SUPPORT, 1, [[m4_dnl
&& apt-get install -y --no-install-recommends -o APT::Immediate-Configure=0 \
libegl1:i386 \
@@ -446,6 +490,10 @@ COPY --from=build --chown=root:root /tmp/virtualgl/build32/virtualgl32_*.deb /op
RUN dpkg -i /opt/pkg/virtualgl32.deb
]])m4_dnl
# Install TurboVNC from package
COPY --from=build --chown=root:root /tmp/turbovnc/build/turbovnc_*.deb /opt/pkg/turbovnc.deb
RUN dpkg -i /opt/pkg/turbovnc.deb
# Install xrdp from package
COPY --from=build --chown=root:root /tmp/xrdp/xrdp_*.deb /opt/pkg/xrdp.deb
RUN dpkg -i /opt/pkg/xrdp.deb
@@ -483,7 +531,7 @@ RUN printf '%s\n' "${TZ:?}" > /etc/timezone \
# Setup PATH
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
ENV PATH=/opt/VirtualGL/bin:${PATH}
ENV PATH=/opt/libjpeg-turbo/bin:/opt/VirtualGL/bin:/opt/TurboVNC/bin:${PATH}
# Setup D-Bus
RUN mkdir /run/dbus/ && chown messagebus:messagebus /run/dbus/

View File

@@ -22,7 +22,7 @@ Policy=Default
[Logging]
LogFile=/var/log/xrdp-sesman.log
LogLevel=INFO
EnableSyslog=0
EnableSyslog=false
SyslogLevel=INFO
[Xorg]
@@ -33,6 +33,15 @@ param=-noreset
param=-nolisten
param=tcp
[Xvnc]
param=/opt/TurboVNC/bin/Xvnc
param=-bs
param=-nolisten
param=tcp
param=-localhost
param=-dpi
param=96
[Chansrv]
EnableFuseMount=true
FuseMountName=.thinclient_drives

View File

@@ -1,17 +1,17 @@
[Globals]
ini_version=1
fork=true
address=0.0.0.0
port=3389
use_vsock=false
tcp_nodelay=true
tcp_nodelay=false
tcp_keepalive=true
security_layer=tls
crypt_level=high
key_file=/etc/xrdp/key.pem
certificate=/etc/xrdp/cert.pem
ssl_protocols=TLSv1.2, TLSv1.3
tls_ciphers=HIGH
autorun=Xorg
autorun=
allow_channels=true
allow_multimon=true
bitmap_cache=true
@@ -67,10 +67,10 @@ ip=127.0.0.1
port=-1
code=20
;[Xvnc]
;name=Xvnc
;lib=libvnc.so
;username=ask
;password=ask
;ip=127.0.0.1
;port=-1
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1

View File

@@ -5,12 +5,13 @@ export LC_ALL=C
RDP_HOST=127.0.0.1
RDP_PORT=3389
RDP_DOMAIN=Xorg
RDP_USER=user
RDP_PASSWORD=password
exec xfreerdp \
/v:"${RDP_HOST:?}":"${RDP_PORT:?}" \
/u:"${RDP_USER:?}" /p:"${RDP_PASSWORD:?}" \
/u:"${RDP_DOMAIN:?}"\\"${RDP_USER:?}" /p:"${RDP_PASSWORD:?}" \
/log-level:INFO /cert:ignore \
/rfx /rfx-mode:video /dynamic-resolution \
/audio-mode:0 /sound:sys:pulse,rate:44100 \