Newer
Older
ARG BASE_DIR="/usr/src/nextcloud"
ARG THEME_VERSION="20.1.3"
ARG THEME_HELPER_VERSION="1.0.1"
ARG NEWS_VERSION="16.0.1"
ARG QUOTA_WARN_VERSION="1.9.1"
ARG NOTES_VERSION="4.1.1"
ARG CONTACTS_VERSION="4.0.1"
ARG CALENDAR_VERSION="2.3.3"
ARG USER_BACKEND_RAW_SQL_VERSION="1.1.0"
ARG ECLOUD_LAUNCHER_JOB_ID="222001"
ARG GOOGLE_INTEGRATION_VERSION="1.0.6"
RUN mkdir -p /var/www/skeleton/Documents && mkdir -p /var/www/skeleton/Images
COPY custom_entrypoint.sh /
RUN chmod +x /custom_entrypoint.sh
RUN sed -i 's/20,0,12,1/20,0,12,17/' ${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-releases/quota_warning/releases/download/v${QUOTA_WARN_VERSION}/quota_warning-v${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-releases/contacts/releases/download/v${CONTACTS_VERSION}/contacts-v${CONTACTS_VERSION}.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-v${CALENDAR_VERSION}.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/ && \
Florent VINCENT
committed
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-theme-helper.tar.gz \
"https://gitlab.e.foundation/e/infra/selfhost/nextcloud-apps/ecloud-theme-helper/-/archive/${THEME_HELPER_VERSION}/ecloud-theme-helper-${THEME_HELPER_VERSION}.tar.gz" && \
tar -xf ecloud-theme-helper.tar.gz -C ${BASE_DIR}/custom_apps/ && \
mv "${BASE_DIR}/custom_apps/ecloud-theme-helper-${THEME_HELPER_VERSION}" "${BASE_DIR}/custom_apps/ecloud-theme-helper" && \
rm ecloud-theme-helper.tar.gz;
RUN curl -fsSL -o ecloud-launcher.zip \
"https://gitlab.e.foundation/e/infra/selfhost/nextcloud-apps/launcher/-/jobs/${ECLOUD_LAUNCHER_JOB_ID}/artifacts/download" && \
unzip ecloud-launcher.zip && \
mv dist/ecloud-launcher ${BASE_DIR}/custom_apps/ && \
rm ecloud-launcher.zip;
RUN curl -fsSL -o integration_google.tar.gz \
"https://github.com/nextcloud/integration_google/releases/download/v${GOOGLE_INTEGRATION_VERSION}/integration_google-${GOOGLE_INTEGRATION_VERSION}.tar.gz" && \
tar -xf integration_google.tar.gz -C ${BASE_DIR}/custom_apps/ && \
chown -R www-data:www-data ${BASE_DIR}/custom_apps/integration_google && \
rm integration_google.tar.gz;
RUN curl -fsSL -o ecloud-accounts.tar.gz \
"https://gitlab.e.foundation/e/infra/selfhost/nextcloud-apps/ecloud-drop-account/-/archive/${EA_TAG}/ecloud-drop-account-${EA_TAG}.tar.gz" && \
tar -xf ecloud-accounts.tar.gz -C ${BASE_DIR}/custom_apps/ && \
mv "${BASE_DIR}/custom_apps/ecloud-drop-account-${EA_TAG}" "${BASE_DIR}/custom_apps/ecloud-accounts" && \
rm ecloud-accounts.tar.gz;
# Remove unzip when unzipping is done
RUN apt-get -y remove unzip
# force eCloud theme not to be disabled even when there is an upgrade process launched
RUN sed -i "s/\$systemConfig->setValue('theme', '');/\$systemConfig->setValue('theme', 'eCloud');/g" ${BASE_DIR}/lib/base.php
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# fix min version of google data migration app
RUN sed -i "s/min-version=\"22\"/min-version=\"20\"/" ${BASE_DIR}/custom_apps/integration_google/appinfo/info.xml
# Remove colored background from email template logo
RUN sed -i 's/$this->header, \[$this->themingDefaults->getColorPrimary()/$this->header, \["none"/' ${BASE_DIR}/lib/private/Mail/EMailTemplate.php
# Ignore OS dark mode for all users
# Don't use user-specific dark theme css for non-logged in users
RUN sed -i 's/OCA.Accessibility.theme="dark"/OCA.Accessibility.theme="light"/' ${BASE_DIR}/apps/accessibility/js/accessibilityoca.js
RUN sed -i "s/$userValues = \['dark'\]/$userValues = \[\]/" ${BASE_DIR}/apps/accessibility/lib/Controller/AccessibilityController.php
# Custom theme
RUN curl -fsSL -o eCloud-theme.tar.gz \
"https://gitlab.e.foundation/e/infra/nextcloud-theme/-/archive/${THEME_VERSION}/nextcloud-theme-${THEME_VERSION}.tar.gz" && \
tar -xf eCloud-theme.tar.gz -C /tmp/ && \
mv /tmp/nextcloud-theme-${THEME_VERSION}/ ${BASE_DIR}/themes/eCloud && \
chown -R www-data:www-data ${BASE_DIR}/themes/eCloud/ && \
rm -rf eCloud-theme.tar.gz ${BASE_DIR}/themes/example/
# Replace "Get your own free account" NC link with /e/ Account link in public pages
RUN sed -i 's/https:\/\/nextcloud.com\/signup\//https:\/\/e\.foundation\/<?php p(\$_\[\x27language\x27\]); ?>\/e-email-invite\//' ${BASE_DIR}/core/templates/layout.public.php
ENTRYPOINT ["/custom_entrypoint.sh"]
CMD ["php-fpm"]
FROM base as selfhost
ARG BASE_DIR="/usr/src/nextcloud"
ARG TMP_PATCH_DIR="/tmp/build_patches"
COPY patches/ ${TMP_PATCH_DIR}/
RUN patch -u ${BASE_DIR}/core/Controller/LoginController.php -i ${TMP_PATCH_DIR}/002-login-without-domain.patch
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/006-recovery-email-changes.patch
RUN patch -u ${BASE_DIR}/apps/settings/lib/Settings/Personal/ServerDevNotice.php -i ${TMP_PATCH_DIR}/007-remove-dev-notice.patch
RUN patch -u ${BASE_DIR}/lib/private/Template/IconsCacher.php -i ${TMP_PATCH_DIR}/008-icons-cacher-theme-svgs.patch
RUN patch -u ${BASE_DIR}/core/Controller/SvgController.php -i ${TMP_PATCH_DIR}/008-svg-controller-theme-svgs.patch
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/009-help-links.patch
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/011-privacy-settings.patch
FROM selfhost as ecloud
ARG BASE_DIR="/usr/src/nextcloud"
ARG TMP_PATCH_DIR="/tmp/build_patches"
COPY patches/ ${TMP_PATCH_DIR}/
# Privacy specific patches
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 patch -u ${BASE_DIR}/lib/private/Updater.php -i ${TMP_PATCH_DIR}/010-disable-app-store-upgrade.patch
RUN cd ${BASE_DIR} && patch -u ${BASE_DIR}/apps/dashboard/lib/Controller/DashboardController.php -i ${TMP_PATCH_DIR}/012-remove-user-status-widget.patch
# 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/contacts && sed -i 's/emit("new-contact")/emit("newContact")/g' js/contacts-main.js
RUN cd ${BASE_DIR}/custom_apps/calendar && sed -i 's/"GROUP","INDIVIDUAL"/"INDIVIDUAL"/g' js/calendar-main.js
RUN cd ${BASE_DIR}/custom_apps/calendar && sed -i 's/{name:\[a,"displayname"\]},//' js/calendar-main.js
# Set default widgets to calendar, tasks and notes
RUN sed -i 's/recommendations,spreed,mail,calendar/calendar,tasks,notes/' ${BASE_DIR}/apps/dashboard/lib/Controller/DashboardController.php