FROM arm32v7/tomcat:9-jre11 ENV GUAC_VER=1.5.4 \ GUACAMOLE_HOME=/app/guacamole \ PG_VER=9.6.24 \ LIBSSH2_VER=1.11.0 \ PGDATA=/config/postgres \ POSTGRES_USER=guacamole \ POSTGRES_DB=guacamole_db # Install base dependencies RUN apt-get update \ && apt-get install -y curl ca-certificates gnupg \ libcairo2-dev libjpeg-turbo8-dev libpng-dev libavformat-dev \ libossp-uuid-dev libavcodec-dev libavutil-dev \ libswscale-dev freerdp2-dev libfreerdp-client2-2 libpango1.0-dev \ libtelnet-dev libvncserver-dev \ libpulse-dev libssl-dev libvorbis-dev libwebp-dev libwebsockets-dev \ ghostscript build-essential libreadline-dev # Build & install libssh2 ADD https://www.libssh2.org/download/libssh2-${LIBSSH2_VER}.tar.gz /tmp RUN tar -xzvf /tmp/libssh2-${LIBSSH2_VER}.tar.gz \ && cd libssh2-${LIBSSH2_VER} \ && ./configure \ && make \ && make install \ && rm -rf /tmp/libssh2-${LIBSSH2_VER}* # Build & install postgresql ADD https://ftp.postgresql.org/pub/source/v${PG_VER}/postgresql-${PG_VER}.tar.gz /tmp RUN tar -xzvf /tmp/postgresql-${PG_VER}.tar.gz \ && cd postgresql-${PG_VER} \ && ./configure \ && make \ && make install \ && rm -rf /tmp/postgresql-${PG_VER}* RUN useradd postgres # Apply the s6-overlay ADD https://github.com/just-containers/s6-overlay/releases/download/v2.2.0.3/s6-overlay-armhf.tar.gz /tmp RUN tar -xzf /tmp/s6-overlay-armhf.tar.gz -C / \ && tar -xzf /tmp/s6-overlay-armhf.tar.gz -C /usr ./bin \ && rm -rf /tmp/s6-overlay-armhf.tar.gz RUN mkdir -p ${GUACAMOLE_HOME} \ ${GUACAMOLE_HOME}/lib \ ${GUACAMOLE_HOME}/extensions WORKDIR ${GUACAMOLE_HOME} # Link FreeRDP to where guac expects it to be RUN ln -s /usr/local/lib/freerdp /usr/lib/arm-linux-gnueabihf/freerdp || exit 0 # Install guacamole-server RUN curl -SLOk "https://archive.apache.org/dist/guacamole/${GUAC_VER}/source/guacamole-server-${GUAC_VER}.tar.gz" \ && tar -xzf guacamole-server-${GUAC_VER}.tar.gz \ && cd guacamole-server-${GUAC_VER} \ && ./configure --enable-allow-freerdp-snapshots \ && make -j$(getconf _NPROCESSORS_ONLN) \ && make install \ && cd .. \ && rm -rf guacamole-server-${GUAC_VER}.tar.gz guacamole-server-${GUAC_VER} \ && ldconfig # Install guacamole-client and postgres auth adapter RUN set -x \ && rm -rf ${CATALINA_HOME}/webapps/ROOT \ && curl -SLko ${CATALINA_HOME}/webapps/ROOT.war "https://archive.apache.org/dist/guacamole/${GUAC_VER}/binary/guacamole-${GUAC_VER}.war" \ && curl -SLko ${GUACAMOLE_HOME}/lib/postgresql-42.1.4.jar "https://jdbc.postgresql.org/download/postgresql-42.2.24.jar" \ && curl -SLkO "https://archive.apache.org/dist/guacamole/${GUAC_VER}/binary/guacamole-auth-jdbc-${GUAC_VER}.tar.gz" \ && tar -xzf guacamole-auth-jdbc-${GUAC_VER}.tar.gz \ && cp -R guacamole-auth-jdbc-${GUAC_VER}/postgresql/guacamole-auth-jdbc-postgresql-${GUAC_VER}.jar ${GUACAMOLE_HOME}/extensions/ \ && cp -R guacamole-auth-jdbc-${GUAC_VER}/postgresql/schema ${GUACAMOLE_HOME}/ \ && rm -rf guacamole-auth-jdbc-${GUAC_VER} guacamole-auth-jdbc-${GUAC_VER}.tar.gz # add auth-sso to available extensions folder structur differs from other extensions RUN set -xe \ && echo "https://archive.apache.org/dist/guacamole/${GUAC_VER}/binary/guacamole-auth-sso-${GUAC_VER}.tar.gz" \ && curl -SLO "https://archive.apache.org/dist/guacamole/${GUAC_VER}/binary/guacamole-auth-sso-${GUAC_VER}.tar.gz" \ && tar -xzf guacamole-auth-sso-${GUAC_VER}.tar.gz \ && cp guacamole-auth-sso-${GUAC_VER}/cas/guacamole-auth-sso-cas-${GUAC_VER}.jar ${GUACAMOLE_HOME}/extensions-available/ \ && cp guacamole-auth-sso-${GUAC_VER}/openid/guacamole-auth-sso-openid-${GUAC_VER}.jar ${GUACAMOLE_HOME}/extensions-available/ \ && cp guacamole-auth-sso-${GUAC_VER}/saml/guacamole-auth-sso-saml-${GUAC_VER}.jar ${GUACAMOLE_HOME}/extensions-available/ \ && rm -rf guacamole-auth-sso-${GUAC_VER} guacamole-auth-sso-${GUAC_VER}.tar.gz # add vault to available extensions folder structur differs from other extensions RUN set -xe \ && echo "https://archive.apache.org/dist/guacamole/${GUAC_VER}/binary/guacamole-vault-${GUAC_VER}.tar.gz" \ && curl -SLO "https://archive.apache.org/dist/guacamole/${GUAC_VER}/binary/guacamole-vault-${GUAC_VER}.tar.gz" \ && tar -xzf guacamole-vault-${GUAC_VER}.tar.gz \ && cp guacamole-vault-${GUAC_VER}/ksm/guacamole-vault-ksm-${GUAC_VER}.jar ${GUACAMOLE_HOME}/extensions-available/ \ && rm -rf guacamole-vault-${GUAC_VER} guacamole-vault-${GUAC_VER}.tar.gz # Add optional extensions RUN set -xe \ && for i in auth-duo auth-header auth-json auth-ldap auth-quickconnect auth-totp history-recording-storage; do \ echo "https://archive.apache.org/dist/guacamole/${GUAC_VER}/binary/guacamole-${i}-${GUAC_VER}.tar.gz" \ && curl -SLO "https://archive.apache.org/dist/guacamole/${GUAC_VER}/binary/guacamole-${i}-${GUAC_VER}.tar.gz" \ && tar -xzf guacamole-${i}-${GUAC_VER}.tar.gz \ && cp guacamole-${i}-${GUAC_VER}/guacamole-${i}-${GUAC_VER}.jar ${GUACAMOLE_HOME}/extensions-available/ \ && rm -rf guacamole-${i}-${GUAC_VER} guacamole-${i}-${GUAC_VER}.tar.gz \ ;done ENV PATH="/usr/local/pgsql/bin:$PATH" ENV GUACAMOLE_HOME=/config/guacamole WORKDIR /config COPY root / ENTRYPOINT [ "/init" ]