From dec79fe35b5be71a43a121a12a044ad9ca1dbc3d Mon Sep 17 00:00:00 2001 From: David Beniamine <david.beniamine@tetras-libre.fr> Date: Mon, 13 Sep 2021 18:00:23 +0200 Subject: [PATCH] Upgrade to focal and better password management Password persistance now uses a copy of /etc/shadow file instead of persisting the whole /etc directory. This makes upgrades safer --- docker-compose.yml | 5 +++-- docker/vnc/Dockerfile | 32 +++++++++++--------------------- docker/vnc/shadow_monitor.sh | 12 ++++++++++++ docker/vnc/start.sh | 9 +++++++++ 4 files changed, 35 insertions(+), 23 deletions(-) create mode 100755 docker/vnc/shadow_monitor.sh diff --git a/docker-compose.yml b/docker-compose.yml index 0303740..2f41dcf 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,12 +10,13 @@ services: USER: ${VNCUSER} SSL_PORT: 443 PASSWORD: ${PASSWORD} + REPO: ${REPO} expose: - 443 - 80 volumes: - vnc_shared:/home/shared - - etc:/etc + - etc_shadow:/opt/shadow - home:/home shm_size: '2gb' cap_add: @@ -30,7 +31,7 @@ services: - vnc_shared:/srv/shared/ volumes: - etc: + etc_shadow: home: vnc_shared: external: true diff --git a/docker/vnc/Dockerfile b/docker/vnc/Dockerfile index 347536a..80b9bc3 100644 --- a/docker/vnc/Dockerfile +++ b/docker/vnc/Dockerfile @@ -1,13 +1,13 @@ -From dorowu/ubuntu-desktop-lxde-vnc:bionic +From dorowu/ubuntu-desktop-lxde-vnc:focal as tlvnc ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update \ && apt-get upgrade -y \ && apt-get install -y \ - autoconf \ aspell-es \ aspell-it \ + autoconf \ chromium-browser \ cron \ emacs \ @@ -16,20 +16,22 @@ RUN apt-get update \ git-cola \ gnome-system-tools \ imagemagick \ + inotify-tools \ libaspell-dev \ libreoffice \ - mysql-workbench \ nginx-full \ pandoc \ poppler-utils \ - python-pip \ - python-virtualenv \ python3-pip \ python3-virtualenv \ rename \ - vim-nox + vim-nox \ + wget -RUN apt-get purge -y x11vnc +RUN wget https://dev.mysql.com/get/mysql-apt-config_0.8.15-1_all.deb +RUN dpkg -i mysql-apt-config_0.8.15-1_all.deb +RUN apt-get update +RUN apt-get install -y mysql-workbench-community RUN update-alternatives --auto convert RUN update-alternatives --auto identify @@ -46,20 +48,6 @@ COPY pam_nginx /etc/pam.d/nginx # Logo COPY logo.png /usr/local/share -## Install latest x11vnc -RUN mkdir -p /opt -WORKDIR /opt -RUN git clone git://github.com/LibVNC/x11vnc -### Download source deps -RUN sed -i.bak -e 's/^# \(deb-src .*\)$/\1/' /etc/apt/sources.list -RUN apt-get update -RUN apt-get build-dep -y x11vnc -WORKDIR /opt/x11vnc -RUN git checkout 0.9.15 -RUN autoreconf -fiv -RUN ./autogen.sh && ./configure && make && make install -RUN ln -s /usr/local/bin/x11vnc /usr/bin/x11vnc - # Add xlaunch script COPY xlaunch.sh /opt/ RUN chmod +x /opt/xlaunch.sh @@ -74,4 +62,6 @@ RUN date > /build_date COPY start.sh /tlstart.sh RUN chmod +x /tlstart.sh +COPY shadow_monitor.sh / + ENTRYPOINT ["/tlstart.sh"] diff --git a/docker/vnc/shadow_monitor.sh b/docker/vnc/shadow_monitor.sh new file mode 100755 index 0000000..805d5cc --- /dev/null +++ b/docker/vnc/shadow_monitor.sh @@ -0,0 +1,12 @@ +#!/bin/bash +sleep 10 + +while true; do + modif=$(inotifywait --event move /etc) + echo "Modif : '$modif'" + if [ ! -z "$(echo $modif | grep 'MOVED_FROM nshadow')" ]; then + echo "Shadow file has changed" + sync + cp /etc/shadow /opt/shadow/shadow + fi +done diff --git a/docker/vnc/start.sh b/docker/vnc/start.sh index da51439..32dcaad 100644 --- a/docker/vnc/start.sh +++ b/docker/vnc/start.sh @@ -219,5 +219,14 @@ fi # Automatically reconnect on connection drop sed -i -e 's/\(autoconnect=1\)/\1\&reconnect=1/' /usr/local/lib/web/frontend/static/js/app.1f2067be7db4becef715.js +if [ -f "/opt/shadow/shadow" ] +then + echo "Copying shadow file" + cp /opt/shadow/shadow /etc/shadow + sync +fi + +/shadow_monitor.sh & + # run final exec exec /start.sh -- GitLab