docker-novnc-base/alpine.Dockerfile

62 lines
1.6 KiB
Docker

FROM alpine
RUN apk update \
&& apk add \
# Some basic helpers \
bash \
sudo \
git \
procps \
\
# X11 and XFCE \
&& apk add \
xvfb xauth dbus-x11 xfce4 xfce4-terminal \
\
# VNC \
&& apk add \
python3 py3-numpy \
tigervnc \
openssl \
\
# NoVNC \
&& mkdir -p /opt/noVNC \
&& git clone --single-branch https://github.com/novnc/noVNC.git /opt/noVNC \
&& git clone --single-branch https://github.com/novnc/websockify.git /opt/noVNC/utils/websockify \
&& ln -s /opt/noVNC/vnc.html /opt/noVNC/index.html \
&& openssl req -batch -new -x509 -days 365 -nodes -out self.pem -keyout /opt/noVNC/utils/websockify/self.pem \
# Audio requirements \
&& apk add \
pulseaudio \
pavucontrol \
ucspi-tcp6 \
gstreamer \
gstreamer-tools \
gst-plugins-good \
xfce4-pulseaudio-plugin
COPY pulse/ /etc/pulse
COPY novnc /opt/noVNC/
RUN sed -i "/import RFB/a \
import '../webaudio.js'" \
/opt/noVNC/app/ui.js
# Base applications
RUN apk update \
&& apk add \
firefox-esr neovim
COPY entrypoint.sh /opt/noVNC/entrypoint.sh
ENTRYPOINT ["/opt/noVNC/entrypoint.sh"]
EXPOSE 8080
# Add a custom version of vncserver which discards all arguments but the display
RUN mv /usr/bin/vncserver /usr/bin/vncserver-orig \
&& echo -e "#!/bin/bash \n \
/usr/bin/vncserver-orig \$1" > /usr/bin/vncserver \
&& chmod +x /usr/bin/vncserver
RUN mkdir -p /etc/skel/.vnc/ \
&& echo -e "-Securitytypes=none" > /etc/skel/.vnc/config \
&& touch /etc/skel/.vnc/passwd && chmod 0600 /etc/skel/.vnc/passwd