diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8da7484..23912e2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,21 +13,21 @@ jobs: docker: runs-on: ubuntu-latest steps: - - name: FreeUp - id: free - run: | - before=$(df -a $1 | awk 'NR > 1 {avail+=$4} END {print avail}') - sudo apt-get remove -y '^dotnet-.*' - sudo apt-get remove -y '^llvm-.*' - sudo apt-get remove -y 'php.*' - sudo apt-get remove -y '^mongodb-.*' - sudo apt-get remove -y '^mysql-.*' - sudo apt-get remove -y azure-cli google-cloud-sdk hhvm google-chrome-stable firefox powershell mono-devel libgl1-mesa-dri - sudo apt-get -y autoremove - sudo apt-get clean - after=$(df -a $1 | awk 'NR > 1 {avail+=$4} END {print avail}') - saved=$((after-before)) - echo "Saved: $saved" +# - name: FreeUp +# id: free +# run: | +# before=$(df -a $1 | awk 'NR > 1 {avail+=$4} END {print avail}') +# sudo apt-get remove -y '^dotnet-.*' +# sudo apt-get remove -y '^llvm-.*' +# sudo apt-get remove -y 'php.*' +# sudo apt-get remove -y '^mongodb-.*' +# sudo apt-get remove -y '^mysql-.*' +# sudo apt-get remove -y azure-cli google-cloud-sdk hhvm google-chrome-stable firefox powershell mono-devel libgl1-mesa-dri +# sudo apt-get -y autoremove +# sudo apt-get clean +# after=$(df -a $1 | awk 'NR > 1 {avail+=$4} END {print avail}') +# saved=$((after-before)) +# echo "Saved: $saved" - name: Checkout uses: actions/checkout@v3 diff --git a/CHANGELOG.md b/CHANGELOG.md index f168c71..04e1f36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.4.19 2023-01-18 + + ### Added + - Collabora Office cp-22.05.9-3 + - Collabora Online cp-22.05.9-3 + - Add libpng-dev packages for building + - Add x11-dev packages for building + + ### Changed + - Switch to package management via base image functions + + ## 2.4.18 2022-12-19 ### Added diff --git a/Dockerfile b/Dockerfile index d10500a..15a399d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,10 +12,10 @@ ARG APP_NAME ARG APP_BRAND ### Environment Variables -ENV COLLABORA_ONLINE_VERSION=${COLLABORA_ONLINE_VERSION:-"cp-22.05.9-2"} \ +ENV COLLABORA_ONLINE_VERSION=${COLLABORA_ONLINE_VERSION:-"cp-22.05.9-3"} \ COLLABORA_ONLINE_REPO_URL=${COLLABORA_ONLINE_REPO_URL:-"https://github.com/CollaboraOnline/online"} \ # - LIBREOFFICE_VERSION=${LIBREOFFICE_VERSION:-"cp-22.05.9-2"} \ + LIBREOFFICE_VERSION=${LIBREOFFICE_VERSION:-"cp-22.05.9-3"} \ LIBREOFFICE_REPO_URL=${LIBREOFFICE_REPO_URL:-"https://github.com/LibreOffice/core"} \ # APP_NAME=${APP_NAME:-"Document Editor"} \ @@ -32,11 +32,11 @@ COPY build-assets /build-assets RUN source /assets/functions/00-container && \ set -x && \ - apt-get update && \ + package update && \ apt-get -o Dpkg::Options::="--force-confold" upgrade -y && \ echo "deb-src http://deb.debian.org/debian $(cat /etc/os-release |grep "VERSION=" | awk 'NR>1{print $1}' RS='(' FS=')') main" >> /etc/apt/sources.list && \ echo "deb http://deb.debian.org/debian $(cat /etc/os-release |grep "VERSION=" | awk 'NR>1{print $1}' RS='(' FS=')') contrib" >> /etc/apt/sources.list && \ - curl -sL https://deb.nodesource.com/setup_14.x | bash - && \ + curl -sL https://deb.nodesource.com/setup_16.x | bash - && \ \ ### Setup Distribution echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections && \ @@ -46,74 +46,80 @@ RUN source /assets/functions/00-container && \ chown cool:cool /home/cool -R && \ \ BUILD_DEPS=' \ - adduser \ - automake \ - build-essential \ - cpio \ - default-jre \ - devscripts \ - fontconfig \ - g++ \ - git \ - inotify-tools \ - libcap-dev \ - libcap2-bin \ - libcppunit-dev \ - libghc-zlib-dev \ - libkrb5-dev \ - libpam-dev \ - libpam0g-dev \ - libpng16-16 \ - libssl-dev \ - libtool \ - libubsan1 \ - libzstd-dev \ - locales-all \ - m4 \ - nasm \ - nodejs \ - openssl \ - pkg-config \ - procps \ - python3-lxml \ - python3-polib \ - sudo \ - translate-toolkit \ - ttf-mscorefonts-installer \ - wget \ - ' && \ + adduser \ + automake \ + build-essential \ + bison \ + cpio \ + default-jre \ + devscripts \ + flex \ + fontconfig \ + g++ \ + git \ + gperf \ + inotify-tools \ + libcap-dev \ + libcap2-bin \ + libcppunit-dev \ + libghc-zlib-dev \ + libkrb5-dev \ + libpam-dev \ + libpam0g-dev \ + libpng-dev \ + libssl-dev \ + libtool \ + libubsan1 \ + libx11-dev \ + libzstd-dev \ + locales-all \ + m4 \ + nasm \ + nodejs \ + openssl \ + pkg-config \ + procps \ + python3-lxml \ + python3-polib \ + sudo \ + translate-toolkit \ + ttf-mscorefonts-installer \ + unzip \ + wget \ + zip \ + ' && \ ## Add Build Dependencies - apt-get install -y \ - ${BUILD_DEPS} \ - && \ + package install -y \ + ${BUILD_DEPS} \ + && \ \ - apt-get build-dep -y \ - libreoffice \ - && \ + package build-dep -y \ + libreoffice \ + && \ \ ### Build Poco mkdir -p /usr/src/poco && \ curl -sSL ${POCO_URL}${POCO_VERSION} | tar xvfz - --strip 1 -C /usr/src/poco && \ cd /usr/src/poco && \ ./configure \ - --static \ - --no-tests \ - --no-samples \ - --no-sharedlibs \ - --cflags="-fPIC" \ - --omit=Zip,Data,Data/SQLite,Data/ODBC,Data/MySQL,MongoDB,PDF,CppParser,PageCompiler,Redis,Encodings \ - --prefix=/opt/poco \ - && \ + --static \ + --no-tests \ + --no-samples \ + --no-sharedlibs \ + --cflags="-fPIC" \ + --omit=Zip,Data,Data/SQLite,Data/ODBC,Data/MySQL,MongoDB,PDF,CppParser,PageCompiler,Redis,Encodings \ + --prefix=/opt/poco \ + && \ make -j$(nproc) && \ make install && \ \ ### Build Fetch LibreOffice - This will take a while.. clone_git_repo ${LIBREOFFICE_REPO_URL} ${LIBREOFFICE_VERSION} ${GIT_REPO_SRC_CORE} && \ - if [ -d "/build-assets/core/src" ] ; then cp -R /build-assets/core/src/* ${GIT_REPO_SRC_CORE} ; fi; \ - if [ -d "/build-assets/core/scripts" ] ; then for script in /build-assets/core/scripts/*.sh; do echo "** Applying $script"; bash $script; done && \ ; fi ; \ + if [ -d "/build-assets/core/src" ] && [ -n "$(ls -A "/build-assets/core/src" 2>/dev/null)" ]; then cp -R /build-assets/core/src/* / ; fi; \ + if [ -d "/build-assets/core/scripts" ] && [ -n "$(ls -A "/build-assets/core/scripts" 2>/dev/null)" ]; then for script in /build-assets/core/scripts/*.sh; do echo "** Applying $script"; bash $script; done && \ ; fi ; \ sed -i "s|--enable-symbols|--disable-symbols|g" ${GIT_REPO_SRC_CORE}/distro-configs/CPLinux-LOKit.conf && \ \ - echo "--prefix=/opt/libreoffice" >> ${GIT_REPO_SRC_CORE}/distro-configs/CPLinux-LOKit.conf && \ + echo "--prefix=/opt/libreoffice" >> ${GIT_REPO_SRC_CORE}/distro-configs/CPLinux-LOKit.conf && \ ./autogen.sh \ --with-distro="CPLinux-LOKit" \ --disable-epm \ @@ -138,7 +144,8 @@ RUN source /assets/functions/00-container && \ ${GIT_REPO_SRC_ONLINE}/browser/src/core/Socket.js \ ${GIT_REPO_SRC_ONLINE}/browser/src/layer/marker/ProgressOverlay.js \ ${GIT_REPO_SRC_ONLINE}/browser/src/map/Clipboard.js \ - ${GIT_REPO_SRC_ONLINE}/browser/welcome/*.html && \ + ${GIT_REPO_SRC_ONLINE}/browser/welcome/*.html \ + && \ ./autogen.sh && \ ./configure --enable-silent-rules \ --with-lokit-path="${GIT_REPO_SRC_CORE}/include" \ @@ -164,14 +171,13 @@ RUN source /assets/functions/00-container && \ \ ### Cleanup cd / && \ - apt-get autoremove -y && \ - apt-get clean && \ - rm -rf /usr/src/* && \ - rm -rf /usr/share/doc && \ - rm -rf /usr/share/man && \ - rm -rf /usr/share/locale && \ - rm -rf /var/lib/apt/lists/* && \ - rm -rf /var/log/* + package cleanup && \ + rm -rf \ + /usr/share/doc \ + /usr/share/locale \ + /usr/share/man \ + /usr/src/* \ + /var/log/* FROM docker.io/tiredofit/debian:bullseye LABEL maintainer="Dave Conroy (dave at tiredofit dot ca)" @@ -190,46 +196,47 @@ COPY CHANGELOG.md /assets/.changelogs/tiredofit_docker-collabora-online.md COPY build-assets /build-assets ### Install Dependencies -RUN set -x && \ +RUN source /assets/functions/00-container && \ + set -x && \ adduser --quiet --system --group --home /opt/cool cool && \ \ ### Add Repositories echo "deb http://deb.debian.org/debian $(cat /etc/os-release |grep "VERSION=" | awk 'NR>1{print $1}' RS='(' FS=')') contrib" >> /etc/apt/sources.list && \ echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections && \ - apt-get update && \ + package update && \ apt-get -o Dpkg::Options::="--force-confold" upgrade -y && \ - apt-get install -y\ - apt-transport-https \ - cpio \ - findutils \ - fontconfig \ - hunspell \ - hunspell-en-ca \ - hunspell-en-gb \ - hunspell-en-us \ - inotify-tools \ - libcap2-bin \ - libcups2 \ - libfontconfig1 \ - libfreetype6 \ - libgl1-mesa-glx \ - libpam0g \ - libpng16-16 \ - libsm6 \ - libubsan1 \ - libxcb-render0 \ - libxcb-shm0 \ - libxinerama1 \ - libxrender1 \ - locales \ - locales-all \ - openssl \ - openssh-client \ - procps \ - python3-requests \ - python3-websocket \ - ttf-mscorefonts-installer \ - && \ + package install \ + apt-transport-https \ + cpio \ + findutils \ + fontconfig \ + hunspell \ + hunspell-en-ca \ + hunspell-en-gb \ + hunspell-en-us \ + inotify-tools \ + libcap2-bin \ + libcups2 \ + libfontconfig1 \ + libfreetype6 \ + libgl1-mesa-glx \ + libpam0g \ + libpng16-16 \ + libsm6 \ + libubsan1 \ + libxcb-render0 \ + libxcb-shm0 \ + libxinerama1 \ + libxrender1 \ + locales \ + locales-all \ + openssl \ + openssh-client \ + procps \ + python3-requests \ + python3-websocket \ + ttf-mscorefonts-installer \ + && \ \ ### Setup Directories and Permissions mkdir -p /etc/coolwsd && \ @@ -254,20 +261,18 @@ RUN set -x && \ ### Setup LibreOffice Online Jails sudo -u cool /opt/cool/bin/coolwsd-systemplate-setup /opt/cool/systemplate /opt/libreoffice && \ \ - if [ -d "/build-assets/container/src" ] ; then cp -R /build-assets/container/src/* / ; fi; \ - if [ -d "/build-assets/container/scripts" ] ; then for script in /build-assets/container/scripts/*.sh; do echo "** Applying $script"; bash $script; done && \ ; fi ; \ - apt-get autoremove -y && \ - apt-get clean && \ - \ - rm -rf /usr/src/* && \ - rm -rf /usr/share/doc && \ - rm -rf /usr/share/man && \ - rm -rf /var/lib/apt/lists/* && \ - rm -rf /var/log/* && \ - rm -rf /build-assets && \ - rm -rf /tmp/* + if [ -d "/build-assets/container/src" ] && [ -n "$(ls -A "/build-assets/container/src" 2>/dev/null)" ]; then cp -R /build-assets/container/src/* / ; fi; \ + if [ -d "/build-assets/container/scripts" ] && [ -n "$(ls -A "/build-assets/container/scripts" 2>/dev/null)" ]; then for script in /build-assets/container/scripts/*.sh; do echo "** Applying $script"; bash $script; done && \ ; fi ; \ + package cleanup && \ + rm -rf \ + /build-assets \ + /tmp/* \ + /usr/src/* \ + /usr/share/doc \ + /usr/share/man \ + /var/lib/apt/lists/* \ + /var/log/* -### Networking Configuration EXPOSE 9980 ### Assets diff --git a/README.md b/README.md index 14198f0..9fca3c0 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ ## About -This will build a Docker image for [Collabora Online](https://www.collaboraoffice.com/collabora-online//) for editing documents in a browser from supported applications. +This will build a Docker image for [Collabora Online](https://www.collaboraoffice.com/collabora-online/) for editing documents in a browser from supported applications. * Configurable Concurrent User and Document Limit (set to generarous values by default) * Custom Font Support @@ -128,18 +128,18 @@ Be sure to view the following repositories to understand all the customizable op | [OS Base](https://github.com/tiredofit/docker-debian/) | Customized Image based on Debian Linux | #### General Usage -| Parameter | Description | Default | -| -------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------- | -| `SETUP_TYPE` | Automatically generate configuration with defaults. Set to `MANUAL` and map the configuration file to use your own | `AUTO` | -| `ALLOWED_HOSTS` | Set which domains which can access service Seperate Multiple with `,` - Example: `https://www.example\.org` (no wildcards) | `` | -| `EXTRA_OPTIONS` | If you want to pass additional arguments upon startup, add it here | `` | -| `INTERFACE` | Web interface type `classic` or `notebookbar` | `notebookbar` | -| `WATERMARK_OPACITY` | Watermark Opacity | `0.2` | -| `WATERMARK_TEXT` | Text to display for watermark | `` | -| `ENABLE_MACROS` | Enable Macros | `FALSE` | -| `MACRO_SECURITY_LEVEL` | Macro Security Level `1` Medium `0` Low | `1` | -| `ENABLE_METRICS_UNAUTHENTICATED` | Enable Unauthenticated Metrics | `FALSE` | -| `ENABLE_HOME_MODE` | Enable more features with home mode | `FALSE` | +| Parameter | Description | Default | +| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | ------------- | +| `SETUP_TYPE` | Automatically generate configuration with defaults. Set to `MANUAL` and map the configuration file to use your own | `AUTO` | +| `ALLOWED_HOSTS` | Set which domains which can access service Seperate Multiple with `,` - Example: `https://www.example\.org` (no wildcards) | `` | +| `EXTRA_OPTIONS` | If you want to pass additional arguments upon startup, add it here | `` | +| `INTERFACE` | Web interface type `classic` or `notebookbar` | `notebookbar` | +| `WATERMARK_OPACITY` | Watermark Opacity | `0.2` | +| `WATERMARK_TEXT` | Text to display for watermark | `` | +| `ENABLE_MACROS` | Enable Macros | `FALSE` | +| `MACRO_SECURITY_LEVEL` | Macro Security Level `1` Medium `0` Low | `1` | +| `ENABLE_METRICS_UNAUTHENTICATED` | Enable Unauthenticated Metrics | `FALSE` | +| `ENABLE_HOME_MODE` | Enable more features with home mode | `FALSE` | #### Administration diff --git a/examples/docker-compose.yml.traefik b/examples/compose.yml similarity index 69% rename from examples/docker-compose.yml.traefik rename to examples/compose.yml index b879c5b..2532e4d 100644 --- a/examples/docker-compose.yml.traefik +++ b/examples/compose.yml @@ -1,26 +1,20 @@ -version: '3.7' services: - collabora-online-app: image: tiredofit/collabora-online container_name: collabora-online-app - hostname: collabora-online.example.com - expose: - - 9980 + hostname: online.example.com cap_add: - MKNOD - NET_ADMIN privileged: true labels: - traefik.enable=true - - traefik.frontend.rule=Host:collabora-online.example.com - - traefik.port=9980 - - traefik.protocol=http - - traefik.docker.network=proxy - - traefik.backend=collabora-online-app + - traefik.http.routers.collabora-online-app.rule=Host(`online.example.com`) + - traefik.http.services.collabora-online-app.loadbalancer.server.port=9980 volumes: - ./logs:/logs environment: + - TIMEZONE=America/Vancouver - CONTAINER_NAME=collabora-online-app - ADMIN_USER=admin @@ -30,6 +24,9 @@ services: - ENABLE_TLS=FALSE - ENABLE_TLS_REVERSE_PROXY=TRUE + + - INTERFACE=notebookbar + - LOG_TYPE=FILE networks: - proxy - services @@ -40,4 +37,3 @@ networks: external: true services: external: true - diff --git a/examples/docker-compose.yml b/examples/docker-compose.yml deleted file mode 100644 index d75430e..0000000 --- a/examples/docker-compose.yml +++ /dev/null @@ -1,48 +0,0 @@ -version: '3.7' -services: - - collabora-online-app: - image: tiredofit/collabora-online:latest - hostname: collabora-online.example.com - container_name: collabora-online-app - expose: - - 9980 - cap_add: - - MKNOD - labels: - - traefik.enable=true - - traefik.frontend.rule=Host:collabora-online.example.com - - traefik.port=9980 - - traefik.protocol=http - - traefik.docker.network=proxy - - traefik.backend=collabora-online-app - environment: - - VIRTUAL_HOST=collabora-online.example.com - - VIRTUAL_NETWORK=proxy - - VIRTUAL_PORT=9980 - - VIRTUAL_PROTO=https - - LETSENCRYPT_HOST=collabora-online.example.com - - LETSENCRYPT_EMAIL=techsupport@example.com - - - CONTAINER_NAME=collabora-online-app - - - ADMIN_USER=admin - - ADMIN_PASS=collabora-online - - ALLOWED_HOSTS=host1.example.org,host2.example.org,host1.example.net - - DICTIONARIES="en_GB en_US" - - LOG_LEVEL=warning - networks: - - proxy - - internal - - services - restart: always - -networks: - proxy: - external: true - internal: - external: false - services: - external: true - - diff --git a/examples/docker-compose.yml.nginx-proxy b/examples/docker-compose.yml.nginx-proxy deleted file mode 100644 index f8253e6..0000000 --- a/examples/docker-compose.yml.nginx-proxy +++ /dev/null @@ -1,31 +0,0 @@ - collabora-online-app: - image: tiredofit/collabora-online - hostname: collabora-online.example.com - container_name: collabora-online-app - expose: - - 9980 - cap_add: - - MKNOD - environment: - - VIRTUAL_HOST=collabora-online.example.com - - VIRTUAL_NETWORK=nginx-proxy - - VIRTUAL_PORT=9980 - - VIRTUAL_PROTO=https - - LETSENCRYPT_HOST=collabora-online.example.com - - LETSENCRYPT_EMAIL=techsupport@example.com - - - CONTAINER_NAME=collabora-online-app - - - ADMIN_USER=admin - - ADMIN_PASS=collabora-online - - ALLOWED_HOSTS=allowedhostname.example.com - - DICTIONARIES="en_GB en_US" - - LOG_LEVEL=warning - networks: - - proxy-tier - -networks: - proxy-tier: - external: - name: nginx-proxy - diff --git a/install/etc/services.available/11-inotify/run b/install/etc/services.available/11-inotify/run index 70819bf..58863b5 100755 --- a/install/etc/services.available/11-inotify/run +++ b/install/etc/services.available/11-inotify/run @@ -8,9 +8,8 @@ check_container_initialized check_service_initialized init 10-coolwsd liftoff -while inotifywait -q -e create,delete,modify,attrib /etc/coolwsd/coolwsd.xml - do - print_info "Reloading coolwsd configuration do to a detected certificate change" - pkill -f --signal 1 coolwsd - exit 0 +while inotifywait -q -e create,delete,modify,attrib /etc/coolwsd/coolwsd.xml ; do + print_info "Reloading coolwsd configuration do to a detected certificate change" + pkill -f --signal 1 coolwsd + exit 0 done