diff --git a/Dockerfile b/Dockerfile index 61a1bec..1f6d465 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,6 +12,15 @@ LABEL maintainer="aptalca" # environment settings ENV LD_PRELOAD="/usr/lib/preloadable_libiconv.so" +ENV DB_TYPE="sqlite" +ENV DB_HOST="localhost" +ENV DB_NAME="nextcloud" +ENV DB_USER="nextcloud" +ENV DB_PASS="" + +ENV ADMIN_USER="admin" +ENV ADMIN_PASS="" + RUN \ echo "**** install runtime packages ****" && \ apk add --no-cache \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 86acbad..d21bb6a 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -12,6 +12,15 @@ LABEL maintainer="aptalca" # environment settings ENV LD_PRELOAD="/usr/lib/preloadable_libiconv.so" +ENV DB_TYPE="sqlite" +ENV DB_HOST="localhost" +ENV DB_NAME="nextcloud" +ENV DB_USER="nextcloud" +ENV DB_PASS="" + +ENV ADMIN_USER="admin" +ENV ADMIN_PASS="" + RUN \ echo "**** install runtime packages ****" && \ apk add --no-cache \ diff --git a/root/etc/s6-overlay/s6-rc.d/init-nextcloud-config/run b/root/etc/s6-overlay/s6-rc.d/init-nextcloud-config/run index bba0b8d..a77d1e0 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-nextcloud-config/run +++ b/root/etc/s6-overlay/s6-rc.d/init-nextcloud-config/run @@ -33,6 +33,19 @@ for dir in apps config themes; do fi done +# set data directory +if [[ ! -s /config/www/nextcloud/config/config.php ]]; then + echo -e " '/data',\n);" >/config/www/nextcloud/config/config.php +elif [[ -f /config/www/nextcloud/config/config.php ]]; then + sed -i "s|/app/www/public/data|/data|g" /config/www/nextcloud/config/config.php +fi + +#modify javascript mime type and add .mjs support +if [[ -s /etc/nginx/mime.types ]]; then + sed -i 's|\bjs;|js mjs;|g' /etc/nginx/mime.types + sed -i 's|\bapplication/javascript|text/javascript|g' /etc/nginx/mime.types +fi + # get versions image_version=$(php -r "require '/app/www/src/version.php'; echo implode('.', \$OC_Version);" 2>/dev/null | xargs) installed_version=$(php -r "require '/config/www/nextcloud/config/config.php'; echo \$CONFIG['version'];" 2>/dev/null | xargs) @@ -97,10 +110,39 @@ if [[ -f /config/www/nextcloud/config/needs_migration ]] || [[ -f /tmp/needs_ins if [[ -f /config/www/nextcloud/config/needs_migration ]] || [[ -f /tmp/needs_upgrade ]]; then # Upgrade occ upgrade - else - if [[ "${installed_version}" = "0.0.0.0" ]]; then - # Install - echo "New nextcloud instance" + elif [[ -f /tmp/needs_install ]]; then + # Install + echo "New nextcloud instance" + + # Make sure all database settings are set + if [[ "${DB_HOST+x}" && "${DB_USER+x}" && "${DB_NAME+x}" && "${#DB_PASS}" -gt "3" ]] && \ + [[ "${DB_TYPE}" == "sqlite" || "${DB_TYPE}" == "pgsql" || "${DB_TYPE}" == "mysql" ]]; then + + # Generate admin password, if missing + if [[ ! "${ADMIN_PASS+x}" ]]; then + ADMIN_PASS="$(openssl rand -hex 64)" + echo "Nextcloud admin password: $ADMIN_PASS" + fi + + # Run installation process + echo "Running Nextcloud installation..." + occ maintenance:install \ + --database="${DB_TYPE}" \ + --database-host="${DB_HOST}" \ + --database-name="${DB_NAME}" \ + --database-user="${DB_USER}" \ + --database-pass="${DB_PASS}" \ + --admin-pass="${ADMIN_PASS}" \ + --data-dir=/data + + # Check return code + if [[ $? -eq 0 ]]; then + echo "Nextcloud installation successful!" + else + echo "Nextcloud installation failed!" + echo "Please run the web-based installer or check the logs." + fi + else echo "Please run the web-based installer on first connect!" fi fi @@ -161,16 +203,3 @@ for APP in richdocumentscode; do occ app:remove "${APP}" >/dev/null 2>&1 rm -rf "${APP_PATH}" done - -# set data directory -if [[ ! -s /config/www/nextcloud/config/config.php ]]; then - echo -e " '/data',\n);" >/config/www/nextcloud/config/config.php -elif [[ -f /config/www/nextcloud/config/config.php ]]; then - sed -i "s|/app/www/public/data|/data|g" /config/www/nextcloud/config/config.php -fi - -#modify javascript mime type and add .mjs support -if [[ -s /etc/nginx/mime.types ]]; then - sed -i 's|\bjs;|js mjs;|g' /etc/nginx/mime.types - sed -i 's|\bapplication/javascript|text/javascript|g' /etc/nginx/mime.types -fi