FROM nextcloud:20.0.11-fpm ARG BASE_DIR="/usr/src/nextcloud" ARG TMP_PATCH_DIR="/tmp/build_patches" ARG THEME_VERSION="19.0.9.6" ARG NEWS_VERSION="16.0.0" ARG QUOTA_WARN_VERSION="1.9.1" ARG NOTES_VERSION="4.1.0" ARG CONTACTS_VERSION="3.5.1" ARG CALENDAR_VERSION="2.3.0" ARG USER_BACKEND_RAW_SQL_VERSION="1.1.0" ARG EMAIL_RECOVERY_JOB_ID="162557" ARG RAINLOOP_VERSION="7.1.2" ARG RAINLOOP_COMMIT_SHA="aa5c57a7" ARG USC_VERSION="1.0.0" ARG EDA_TAG="nc-20" RUN mkdir -p /var/www/skeleton/Documents && mkdir -p /var/www/skeleton/Images COPY patches/ ${TMP_PATCH_DIR}/ COPY custom_entrypoint.sh / RUN chmod +x /custom_entrypoint.sh RUN sed -i 's/20,0,11,1/20,0,11,2/' ${BASE_DIR}/version.php # Install unzip for unzipping artifacts RUN apt-get update && apt-get install unzip # Custom apps RUN curl -fsSL -o news.tar.gz \ "https://github.com/nextcloud/news/releases/download/${NEWS_VERSION}/news.tar.gz" && \ tar -xf news.tar.gz -C ${BASE_DIR}/custom_apps/ && \ rm news.tar.gz; RUN curl -fsSL -o quota_warning.tar.gz \ "https://github.com/nextcloud/quota_warning/releases/download/v${QUOTA_WARN_VERSION}/quota_warning-${QUOTA_WARN_VERSION}.tar.gz" && \ tar -xf quota_warning.tar.gz -C ${BASE_DIR}/custom_apps/ && \ rm quota_warning.tar.gz; RUN curl -fsSL -o notes.tar.gz \ "https://github.com/nextcloud/notes/releases/download/v${NOTES_VERSION}/notes.tar.gz" && \ tar -xf notes.tar.gz -C ${BASE_DIR}/custom_apps/ && \ rm notes.tar.gz; RUN curl -fsSL -o contacts.tar.gz \ "https://github.com/nextcloud/contacts/releases/download/v${CONTACTS_VERSION}/contacts.tar.gz" && \ tar -xf contacts.tar.gz -C ${BASE_DIR}/custom_apps/ && \ rm contacts.tar.gz; RUN curl -fsSL -o calendar.tar.gz \ "https://github.com/nextcloud-releases/calendar/releases/download/v${CALENDAR_VERSION}/calendar.tar.gz" && \ tar -xf calendar.tar.gz -C ${BASE_DIR}/custom_apps/ && \ rm calendar.tar.gz; RUN curl -fsSL -o user_backend_sql_raw.tar.gz \ "https://github.com/PanCakeConnaisseur/user_backend_sql_raw/releases/download/v${USER_BACKEND_RAW_SQL_VERSION}/user_backend_sql_raw.tar.gz" && \ tar -xf user_backend_sql_raw.tar.gz -C ${BASE_DIR}/custom_apps/ && \ rm user_backend_sql_raw.tar.gz; RUN curl -fsSL -o email-recovery.zip \ "https://gitlab.e.foundation/e/infra/selfhost/nextcloud-apps/email-recovery/-/jobs/${EMAIL_RECOVERY_JOB_ID}/artifacts/download" && \ unzip email-recovery.zip && \ cd dist && tar -xf email-recovery.tar.gz -C ${BASE_DIR}/custom_apps/ && \ rm email-recovery.tar.gz; RUN curl -fsSL -o rainloop.tar.gz \ "https://gitlab.e.foundation/e/infra/selfhost/nextcloud-apps/rainloop-nextcloud/-/archive/${RAINLOOP_VERSION}-${RAINLOOP_COMMIT_SHA}/rainloop-nextcloud-${RAINLOOP_VERSION}-${RAINLOOP_COMMIT_SHA}.tar.gz" && \ tar -xf rainloop.tar.gz -C ${BASE_DIR}/custom_apps/ && \ mv "${BASE_DIR}/custom_apps/rainloop-nextcloud-${RAINLOOP_VERSION}-${RAINLOOP_COMMIT_SHA}" "${BASE_DIR}/custom_apps/rainloop" && \ rm rainloop.tar.gz; RUN curl -fsSL -o ecloud_drop_account.tar.gz \ "https://gitlab.e.foundation/e/infra/selfhost/nextcloud-apps/ecloud-drop-account/-/archive/${EDA_TAG}/ecloud-drop-account-${EDA_TAG}.tar.gz" && \ tar -xf ecloud_drop_account.tar.gz -C ${BASE_DIR}/custom_apps/ && \ mv "${BASE_DIR}/custom_apps/ecloud-drop-account-${EDA_TAG}" "${BASE_DIR}/custom_apps/ecloud_drop_account" && \ rm ecloud_drop_account.tar.gz; # Remove unzip when unzipping is done RUN apt-get -y remove unzip # Patches RUN patch -u ${BASE_DIR}/core/Controller/LoginController.php -i ${TMP_PATCH_DIR}/002-login-without-domain.patch RUN patch -u ${BASE_DIR}/core/templates/layout.user.php -i ${TMP_PATCH_DIR}/003-contact-search-removal.patch RUN patch -u ${BASE_DIR}/core/Controller/ContactsMenuController.php -i ${TMP_PATCH_DIR}/004-contact-search-controller-removal.patch RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/005-autocomplete-user-leak-core.patch RUN cd ${BASE_DIR}/custom_apps && patch -p0 < ${TMP_PATCH_DIR}/005-autocomplete-user-leak-custom-app.patch RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/006-recovery-email-changes.patch # RUN patch -u ${BASE_DIR}/apps/files_trashbin/lib/Storage.php -i ${TMP_PATCH_DIR}/007-files-trashbin-parent-wrapper.patch RUN patch -u ${BASE_DIR}/apps/settings/lib/Settings/Personal/ServerDevNotice.php -i ${TMP_PATCH_DIR}/008-remove-dev-notice.patch RUN rm -rf ${TMP_PATCH_DIR} # autocomplete leak tweak apps frontend with sed, disable group suggestion RUN cd ${BASE_DIR}/custom_apps/contacts && sed -i 's/"GROUP","INDIVIDUAL"/"INDIVIDUAL"/g' js/contacts-main.js RUN cd ${BASE_DIR}/custom_apps/calendar && sed -i 's/"GROUP","INDIVIDUAL"/"INDIVIDUAL"/g' js/calendar.js RUN cd ${BASE_DIR}/custom_apps/calendar && sed -i 's/anyof/allof/g' js/calendar.js # Custom theme RUN curl -fsSL -o eelo-theme.tar.gz \ "https://gitlab.e.foundation/e/infra/nextcloud-theme/-/archive/${THEME_VERSION}/nextcloud-theme-${THEME_VERSION}.tar.gz" && \ tar -xf eelo-theme.tar.gz -C /tmp/ && \ mv /tmp/nextcloud-theme-${THEME_VERSION}/eelo ${BASE_DIR}/themes/ && \ chown -R www-data:www-data ${BASE_DIR}/themes/eelo/ && \ rm -rf eelo-theme.tar.gz /tmp/nextcloud-theme-* ${BASE_DIR}/themes/example/ ENTRYPOINT ["/custom_entrypoint.sh"] CMD ["php-fpm"]