From 741fe2dae6f29b06fc25e8034cbe7c415b85c0bd Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Mon, 19 Jan 2026 23:34:09 +0100 Subject: [PATCH 01/22] Update docker-compose.yml --- blueprints/nextcloud-aio/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blueprints/nextcloud-aio/docker-compose.yml b/blueprints/nextcloud-aio/docker-compose.yml index 1f4e43e6a..7d5d02053 100644 --- a/blueprints/nextcloud-aio/docker-compose.yml +++ b/blueprints/nextcloud-aio/docker-compose.yml @@ -1,6 +1,6 @@ services: nextcloud: - image: nextcloud:30.0.2 + image: nextcloud:stable restart: always ports: From ae9077bb8577998216a72993a00fea9dccaf003d Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 06:57:59 +0000 Subject: [PATCH 02/22] fix: stable nextcloud, add redis, auto config, fixed mariadb --- blueprints/nextcloud-aio/docker-compose.yml | 31 +++++++++++++----- blueprints/nextcloud-aio/template.toml | 36 ++++++++++++++------- 2 files changed, 47 insertions(+), 20 deletions(-) diff --git a/blueprints/nextcloud-aio/docker-compose.yml b/blueprints/nextcloud-aio/docker-compose.yml index 7d5d02053..db13e57b1 100644 --- a/blueprints/nextcloud-aio/docker-compose.yml +++ b/blueprints/nextcloud-aio/docker-compose.yml @@ -2,23 +2,34 @@ services: nextcloud: image: nextcloud:stable restart: always - - ports: - - 80 volumes: - nextcloud_data:/var/www/html environment: - - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_DOMAIN} - MYSQL_HOST=nextcloud_db - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_PASSWORD=${MYSQL_SECRET_PASSWORD} - - OVERWRITEPROTOCOL=https + # This block is an automated post-deployment script for common warnings and optimizations + command: + - /bin/sh + - -c + - | + echo "Waiting for database..." + sleep 10 + echo "Applying Nextcloud configurations..." + php occ config:system:set default_phone_region --value="${DEFAULT_PHONE_REGION}" + php occ config:system:set maintenance_window_start --type=integer --value=1 + php occ db:add-missing-indices --no-interaction + php occ maintenance:repair --include-expensive --no-interaction + echo "All checks passed. Starting Nextcloud..." + apache2-foreground + depends_on: + - nextcloud_db + - nextcloud_redis nextcloud_db: - image: mariadb + image: mariadb:10.11 restart: always - volumes: - nextcloud_db_data:/var/lib/mysql environment: @@ -27,6 +38,10 @@ services: - MYSQL_USER=nextcloud - MYSQL_PASSWORD=${MYSQL_SECRET_PASSWORD} + nextcloud_redis: + image: redis:alpine + restart: always + volumes: nextcloud_data: - nextcloud_db_data: + nextcloud_db_data: \ No newline at end of file diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index 30be77a1a..9332a0440 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -1,17 +1,29 @@ [variables] -main_domain = "${domain}" -db_password = "${password}" -db_root_password = "${password}" + NEXTCLOUD_DOMAIN = "${domain}" + MYSQL_SECRET_PASSWORD = "${password:32}" + MYSQL_SECRET_PASSWORD_ROOT = "${password:32}" + DEFAULT_PHONE_REGION = "DE" [config] -mounts = [] + [[config.domains]] + serviceName = "nextcloud" + port = 80 + host = "${NEXTCLOUD_DOMAIN}" -[[config.domains]] -serviceName = "nextcloud" -port = 80 -host = "${main_domain}" + [[config.env]] + serviceName = "nextcloud" + env = [ + "NEXTCLOUD_DOMAIN=${NEXTCLOUD_DOMAIN}", + "MYSQL_SECRET_PASSWORD=${MYSQL_SECRET_PASSWORD}", + "DEFAULT_PHONE_REGION=${DEFAULT_PHONE_REGION}", + "OVERWRITEPROTOCOL=https", + "TRUSTED_PROXIES=10.0.0.0/8 172.16.0.0/12", + "REDIS_HOST=nextcloud_redis" + ] -[config.env] -NEXTCLOUD_DOMAIN = "${main_domain}" -MYSQL_SECRET_PASSWORD = "${db_password}" -MYSQL_SECRET_PASSWORD_ROOT = "${db_root_password}" + [[config.env]] + serviceName = "nextcloud_db" + env = [ + "MYSQL_SECRET_PASSWORD=${MYSQL_SECRET_PASSWORD}", + "MYSQL_SECRET_PASSWORD_ROOT=${MYSQL_SECRET_PASSWORD_ROOT}" + ] \ No newline at end of file From 6102e80333c67a1bb125941922cf497879abe8a5 Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 07:05:17 +0000 Subject: [PATCH 03/22] fix: meta nextcloud --- meta.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/meta.json b/meta.json index e3b7201ee..61c917f36 100644 --- a/meta.json +++ b/meta.json @@ -4080,9 +4080,9 @@ }, { "id": "nextcloud-aio", - "name": "Nextcloud All in One", - "version": "30.0.2", - "description": "Nextcloud (AIO) is a self-hosted file storage and sync platform with powerful collaboration capabilities. It integrates Files, Talk, Groupware, Office, Assistant and more into a single platform for remote work and data protection.", + "name": "Nextcloud", + "version": "stable", + "description": "Nextcloud is a self-hosted file storage and sync platform with powerful collaboration capabilities. It integrates Files, Talk, Groupware, Office, Assistant and more into a single platform for remote work and data protection.", "logo": "nextcloud-aio.svg", "links": { "github": "https://github.com/nextcloud/docker", From ec8e19b3e7e59cf14efeca8ecb59051865b04082 Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 07:14:03 +0000 Subject: [PATCH 04/22] fix: vars --- blueprints/nextcloud-aio/template.toml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index 9332a0440..d411a52f2 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -1,8 +1,9 @@ [variables] + # These define the UI fields in Dokploy NEXTCLOUD_DOMAIN = "${domain}" - MYSQL_SECRET_PASSWORD = "${password:32}" - MYSQL_SECRET_PASSWORD_ROOT = "${password:32}" - DEFAULT_PHONE_REGION = "DE" + DB_PASSWORD = "${password:32}" + DB_ROOT_PASSWORD = "${password:32}" + PHONE_REGION = "DE" [config] [[config.domains]] @@ -14,8 +15,8 @@ serviceName = "nextcloud" env = [ "NEXTCLOUD_DOMAIN=${NEXTCLOUD_DOMAIN}", - "MYSQL_SECRET_PASSWORD=${MYSQL_SECRET_PASSWORD}", - "DEFAULT_PHONE_REGION=${DEFAULT_PHONE_REGION}", + "MYSQL_SECRET_PASSWORD=${DB_PASSWORD}", + "DEFAULT_PHONE_REGION=${PHONE_REGION}", "OVERWRITEPROTOCOL=https", "TRUSTED_PROXIES=10.0.0.0/8 172.16.0.0/12", "REDIS_HOST=nextcloud_redis" @@ -24,6 +25,6 @@ [[config.env]] serviceName = "nextcloud_db" env = [ - "MYSQL_SECRET_PASSWORD=${MYSQL_SECRET_PASSWORD}", - "MYSQL_SECRET_PASSWORD_ROOT=${MYSQL_SECRET_PASSWORD_ROOT}" + "MYSQL_PASSWORD=${DB_PASSWORD}", # Matches the app's password + "MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}" ] \ No newline at end of file From 24ad3826236bea6b9fec5eeca723f961590c43eb Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 07:18:30 +0000 Subject: [PATCH 05/22] fix: non capital --- blueprints/nextcloud-aio/template.toml | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index d411a52f2..f58dcc7e4 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -1,22 +1,21 @@ [variables] - # These define the UI fields in Dokploy - NEXTCLOUD_DOMAIN = "${domain}" - DB_PASSWORD = "${password:32}" - DB_ROOT_PASSWORD = "${password:32}" - PHONE_REGION = "DE" + domain_name = "${domain}" + db_password = "${password:32}" + db_root_password = "${password:32}" + region = "DE" [config] [[config.domains]] serviceName = "nextcloud" port = 80 - host = "${NEXTCLOUD_DOMAIN}" + host = "${domain_name}" [[config.env]] serviceName = "nextcloud" env = [ - "NEXTCLOUD_DOMAIN=${NEXTCLOUD_DOMAIN}", - "MYSQL_SECRET_PASSWORD=${DB_PASSWORD}", - "DEFAULT_PHONE_REGION=${PHONE_REGION}", + "NEXTCLOUD_DOMAIN=${domain_name}", + "MYSQL_SECRET_PASSWORD=${db_password}", + "DEFAULT_PHONE_REGION=${region}", "OVERWRITEPROTOCOL=https", "TRUSTED_PROXIES=10.0.0.0/8 172.16.0.0/12", "REDIS_HOST=nextcloud_redis" @@ -25,6 +24,8 @@ [[config.env]] serviceName = "nextcloud_db" env = [ - "MYSQL_PASSWORD=${DB_PASSWORD}", # Matches the app's password - "MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}" + "MYSQL_PASSWORD=${db_password}", + "MYSQL_ROOT_PASSWORD=${db_root_password}", + "MYSQL_DATABASE=nextcloud", + "MYSQL_USER=nextcloud" ] \ No newline at end of file From 9b08331648214c781473d2e55bf7b46881b060fc Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 21:31:36 +0000 Subject: [PATCH 06/22] fix: template.toml --- blueprints/nextcloud-aio/template.toml | 36 +++++++++++--------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index f58dcc7e4..b9251be51 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -5,27 +5,21 @@ region = "DE" [config] + env = [ + "MYSQL_SECRET_PASSWORD=${db_password}", + "MYSQL_SECRET_PASSWORD_ROOT=${db_root_password}", + "DEFAULT_PHONE_REGION=${region}", + "NEXTCLOUD_DOMAIN=${domain_name}", + "OVERWRITEPROTOCOL=https", + "TRUSTED_PROXIES=10.0.0.0/8 172.16.0.0/12", + "REDIS_HOST=nextcloud_redis", + "MYSQL_PASSWORD=${db_password}", + "MYSQL_ROOT_PASSWORD=${db_root_password}", + "MYSQL_DATABASE=nextcloud", + "MYSQL_USER=nextcloud" + ] + [[config.domains]] serviceName = "nextcloud" port = 80 - host = "${domain_name}" - - [[config.env]] - serviceName = "nextcloud" - env = [ - "NEXTCLOUD_DOMAIN=${domain_name}", - "MYSQL_SECRET_PASSWORD=${db_password}", - "DEFAULT_PHONE_REGION=${region}", - "OVERWRITEPROTOCOL=https", - "TRUSTED_PROXIES=10.0.0.0/8 172.16.0.0/12", - "REDIS_HOST=nextcloud_redis" - ] - - [[config.env]] - serviceName = "nextcloud_db" - env = [ - "MYSQL_PASSWORD=${db_password}", - "MYSQL_ROOT_PASSWORD=${db_root_password}", - "MYSQL_DATABASE=nextcloud", - "MYSQL_USER=nextcloud" - ] \ No newline at end of file + host = "${domain_name}" \ No newline at end of file From e501c3cab341258c16077ce7abd4eb9ae266ea46 Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 21:34:18 +0000 Subject: [PATCH 07/22] fix: env vars --- blueprints/nextcloud-aio/template.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index b9251be51..6daf53e54 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -13,8 +13,6 @@ "OVERWRITEPROTOCOL=https", "TRUSTED_PROXIES=10.0.0.0/8 172.16.0.0/12", "REDIS_HOST=nextcloud_redis", - "MYSQL_PASSWORD=${db_password}", - "MYSQL_ROOT_PASSWORD=${db_root_password}", "MYSQL_DATABASE=nextcloud", "MYSQL_USER=nextcloud" ] From 451ef3e26f0a9f25cd207071e3ade1247ecd5afc Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 21:36:02 +0000 Subject: [PATCH 08/22] fix: var naming --- blueprints/nextcloud-aio/docker-compose.yml | 6 +++--- blueprints/nextcloud-aio/template.toml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/blueprints/nextcloud-aio/docker-compose.yml b/blueprints/nextcloud-aio/docker-compose.yml index db13e57b1..fba4a8caf 100644 --- a/blueprints/nextcloud-aio/docker-compose.yml +++ b/blueprints/nextcloud-aio/docker-compose.yml @@ -8,7 +8,7 @@ services: - MYSQL_HOST=nextcloud_db - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - - MYSQL_PASSWORD=${MYSQL_SECRET_PASSWORD} + - MYSQL_PASSWORD=${MYSQL_PASSWORD} # This block is an automated post-deployment script for common warnings and optimizations command: - /bin/sh @@ -33,10 +33,10 @@ services: volumes: - nextcloud_db_data:/var/lib/mysql environment: - - MYSQL_ROOT_PASSWORD=${MYSQL_SECRET_PASSWORD_ROOT} + - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - - MYSQL_PASSWORD=${MYSQL_SECRET_PASSWORD} + - MYSQL_PASSWORD=${MYSQL_PASSWORD} nextcloud_redis: image: redis:alpine diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index 6daf53e54..3953676dd 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -6,8 +6,8 @@ [config] env = [ - "MYSQL_SECRET_PASSWORD=${db_password}", - "MYSQL_SECRET_PASSWORD_ROOT=${db_root_password}", + "MYSQL_PASSWORD=${db_password}", + "MYSQL_ROOT_PASSWORD=${db_root_password}", "DEFAULT_PHONE_REGION=${region}", "NEXTCLOUD_DOMAIN=${domain_name}", "OVERWRITEPROTOCOL=https", From 9557a515212f15cfeafd260536ba072d48b74df1 Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 21:44:29 +0000 Subject: [PATCH 09/22] fix: command --- blueprints/nextcloud-aio/docker-compose.yml | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/blueprints/nextcloud-aio/docker-compose.yml b/blueprints/nextcloud-aio/docker-compose.yml index fba4a8caf..026fbcc53 100644 --- a/blueprints/nextcloud-aio/docker-compose.yml +++ b/blueprints/nextcloud-aio/docker-compose.yml @@ -14,15 +14,25 @@ services: - /bin/sh - -c - | - echo "Waiting for database..." + # 1. Run the official entrypoint in the background to initialize files + # We check if index.php exists; if not, we wait for the image to copy it. + echo "Waiting for Nextcloud files to initialize..." + until [ -f /var/www/html/index.php ]; do + sleep 3 + done + + echo "Nextcloud files detected. Waiting for DB..." sleep 10 + echo "Applying Nextcloud configurations..." - php occ config:system:set default_phone_region --value="${DEFAULT_PHONE_REGION}" - php occ config:system:set maintenance_window_start --type=integer --value=1 + # We run the commands directly via php since we are root in the shell + php occ config:system:set default_phone_region --value="$${DEFAULT_PHONE_REGION}" --no-interaction + php occ config:system:set maintenance_window_start --type=integer --value=1 --no-interaction php occ db:add-missing-indices --no-interaction php occ maintenance:repair --include-expensive --no-interaction - echo "All checks passed. Starting Nextcloud..." - apache2-foreground + + echo "All checks passed. Starting Apache..." + exec apache2-foreground depends_on: - nextcloud_db - nextcloud_redis From 73c595a58a424f3292be5e66603d98740a1b2ab3 Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 21:50:21 +0000 Subject: [PATCH 10/22] fix: command --- blueprints/nextcloud-aio/docker-compose.yml | 41 +++++++++++---------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/blueprints/nextcloud-aio/docker-compose.yml b/blueprints/nextcloud-aio/docker-compose.yml index 026fbcc53..3448dcd46 100644 --- a/blueprints/nextcloud-aio/docker-compose.yml +++ b/blueprints/nextcloud-aio/docker-compose.yml @@ -10,29 +10,30 @@ services: - MYSQL_USER=nextcloud - MYSQL_PASSWORD=${MYSQL_PASSWORD} # This block is an automated post-deployment script for common warnings and optimizations - command: - - /bin/sh - - -c + entrypoint: /bin/sh -c + command: - | - # 1. Run the official entrypoint in the background to initialize files - # We check if index.php exists; if not, we wait for the image to copy it. - echo "Waiting for Nextcloud files to initialize..." - until [ -f /var/www/html/index.php ]; do - sleep 3 - done - - echo "Nextcloud files detected. Waiting for DB..." - sleep 10 - + # 1. Run the official entrypoint script to copy files and setup Apache + # This is the "Magic" that populates /var/www/html + /entrypoint.sh apache2-foreground & + + # 2. Wait for the background process to actually put files there + echo "Waiting for Nextcloud initialization..." + until [ -f /var/www/html/occ ]; do sleep 2; done + + # 3. Give the DB a moment to breathe + sleep 15 + + # 4. Run your fixes echo "Applying Nextcloud configurations..." - # We run the commands directly via php since we are root in the shell - php occ config:system:set default_phone_region --value="$${DEFAULT_PHONE_REGION}" --no-interaction - php occ config:system:set maintenance_window_start --type=integer --value=1 --no-interaction - php occ db:add-missing-indices --no-interaction - php occ maintenance:repair --include-expensive --no-interaction + php /var/www/html/occ config:system:set default_phone_region --value="$${DEFAULT_PHONE_REGION}" --no-interaction + php /var/www/html/occ config:system:set maintenance_window_start --type=integer --value=1 --no-interaction + php /var/www/html/occ db:add-missing-indices --no-interaction + php /var/www/html/occ maintenance:repair --include-expensive --no-interaction - echo "All checks passed. Starting Apache..." - exec apache2-foreground + echo "Post-deployment fixes complete." + # Keep the container alive by waiting on the background process + wait depends_on: - nextcloud_db - nextcloud_redis From 0db31072f82e797c0e7fa221493cd79ec23bed03 Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 21:57:06 +0000 Subject: [PATCH 11/22] another try --- blueprints/nextcloud-aio/docker-compose.yml | 20 ++++++++++++++------ blueprints/nextcloud-aio/template.toml | 5 +++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/blueprints/nextcloud-aio/docker-compose.yml b/blueprints/nextcloud-aio/docker-compose.yml index 3448dcd46..8d169db1f 100644 --- a/blueprints/nextcloud-aio/docker-compose.yml +++ b/blueprints/nextcloud-aio/docker-compose.yml @@ -13,18 +13,27 @@ services: entrypoint: /bin/sh -c command: - | - # 1. Run the official entrypoint script to copy files and setup Apache - # This is the "Magic" that populates /var/www/html + # 1. Start Apache/Nextcloud in the background /entrypoint.sh apache2-foreground & - # 2. Wait for the background process to actually put files there echo "Waiting for Nextcloud initialization..." until [ -f /var/www/html/occ ]; do sleep 2; done - # 3. Give the DB a moment to breathe + # 2. Wait for the DB to be ready sleep 15 - # 4. Run your fixes + # 3. AUTO-INSTALL if not already installed + # This makes the 'config:system' commands available + if ! php /var/www/html/occ status | grep -q "installed: true"; then + echo "First run detected: Installing Nextcloud..." + php /var/www/html/occ maintenance:install \ + --database "mysql" --database-name "nextcloud" \ + --database-host "nextcloud_db" --database-user "nextcloud" \ + --database-pass "$${MYSQL_PASSWORD}" \ + --admin-user "$${NEXTCLOUD_ADMIN_USER}" --admin-pass "$${NEXTCLOUD_ADMIN_PASSWORD}" \ + --no-interaction + fi + echo "Applying Nextcloud configurations..." php /var/www/html/occ config:system:set default_phone_region --value="$${DEFAULT_PHONE_REGION}" --no-interaction php /var/www/html/occ config:system:set maintenance_window_start --type=integer --value=1 --no-interaction @@ -32,7 +41,6 @@ services: php /var/www/html/occ maintenance:repair --include-expensive --no-interaction echo "Post-deployment fixes complete." - # Keep the container alive by waiting on the background process wait depends_on: - nextcloud_db diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index 3953676dd..55fa6fcc3 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -2,10 +2,15 @@ domain_name = "${domain}" db_password = "${password:32}" db_root_password = "${password:32}" + admin_user = "admin" + admin_password = "${password:32}" region = "DE" [config] env = [ + "NEXTCLOUD_ADMIN_USER=${admin_user}", + "NEXTCLOUD_ADMIN_PASSWORD=${admin_password}", + "APACHE_SERVERNAME=${domain_name}", "MYSQL_PASSWORD=${db_password}", "MYSQL_ROOT_PASSWORD=${db_root_password}", "DEFAULT_PHONE_REGION=${region}", From 5841e4f77fa18ecda7c27e8e53d65b9dc3bbf88a Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 22:05:45 +0000 Subject: [PATCH 12/22] keep it simple --- blueprints/nextcloud-aio/docker-compose.yml | 61 +++++---------------- blueprints/nextcloud-aio/template.toml | 30 +++++----- 2 files changed, 31 insertions(+), 60 deletions(-) diff --git a/blueprints/nextcloud-aio/docker-compose.yml b/blueprints/nextcloud-aio/docker-compose.yml index 8d169db1f..8c53f3991 100644 --- a/blueprints/nextcloud-aio/docker-compose.yml +++ b/blueprints/nextcloud-aio/docker-compose.yml @@ -1,65 +1,34 @@ services: nextcloud: - image: nextcloud:stable + image: nextcloud:31.0.13 restart: always - volumes: - - nextcloud_data:/var/www/html environment: + # Database Connection - MYSQL_HOST=nextcloud_db - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - - MYSQL_PASSWORD=${MYSQL_PASSWORD} - # This block is an automated post-deployment script for common warnings and optimizations - entrypoint: /bin/sh -c - command: - - | - # 1. Start Apache/Nextcloud in the background - /entrypoint.sh apache2-foreground & - - echo "Waiting for Nextcloud initialization..." - until [ -f /var/www/html/occ ]; do sleep 2; done - - # 2. Wait for the DB to be ready - sleep 15 - - # 3. AUTO-INSTALL if not already installed - # This makes the 'config:system' commands available - if ! php /var/www/html/occ status | grep -q "installed: true"; then - echo "First run detected: Installing Nextcloud..." - php /var/www/html/occ maintenance:install \ - --database "mysql" --database-name "nextcloud" \ - --database-host "nextcloud_db" --database-user "nextcloud" \ - --database-pass "$${MYSQL_PASSWORD}" \ - --admin-user "$${NEXTCLOUD_ADMIN_USER}" --admin-pass "$${NEXTCLOUD_ADMIN_PASSWORD}" \ - --no-interaction - fi - - echo "Applying Nextcloud configurations..." - php /var/www/html/occ config:system:set default_phone_region --value="$${DEFAULT_PHONE_REGION}" --no-interaction - php /var/www/html/occ config:system:set maintenance_window_start --type=integer --value=1 --no-interaction - php /var/www/html/occ db:add-missing-indices --no-interaction - php /var/www/html/occ maintenance:repair --include-expensive --no-interaction - - echo "Post-deployment fixes complete." - wait + - MYSQL_PASSWORD=${MYSQL_SECRET_PASSWORD} + # Admin Setup + - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER} + - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD} + # Proxy / HTTPS Settings + - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_DOMAIN} + - OVERWRITEPROTOCOL=https + volumes: + - nextcloud_data:/var/www/html depends_on: - nextcloud_db - - nextcloud_redis nextcloud_db: image: mariadb:10.11 restart: always - volumes: - - nextcloud_db_data:/var/lib/mysql environment: - - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} + - MYSQL_ROOT_PASSWORD=${MYSQL_SECRET_PASSWORD_ROOT} - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - - MYSQL_PASSWORD=${MYSQL_PASSWORD} - - nextcloud_redis: - image: redis:alpine - restart: always + - MYSQL_PASSWORD=${MYSQL_SECRET_PASSWORD} + volumes: + - nextcloud_db_data:/var/lib/mysql volumes: nextcloud_data: diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index 55fa6fcc3..6c99f4b5b 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -7,20 +7,22 @@ region = "DE" [config] - env = [ - "NEXTCLOUD_ADMIN_USER=${admin_user}", - "NEXTCLOUD_ADMIN_PASSWORD=${admin_password}", - "APACHE_SERVERNAME=${domain_name}", - "MYSQL_PASSWORD=${db_password}", - "MYSQL_ROOT_PASSWORD=${db_root_password}", - "DEFAULT_PHONE_REGION=${region}", - "NEXTCLOUD_DOMAIN=${domain_name}", - "OVERWRITEPROTOCOL=https", - "TRUSTED_PROXIES=10.0.0.0/8 172.16.0.0/12", - "REDIS_HOST=nextcloud_redis", - "MYSQL_DATABASE=nextcloud", - "MYSQL_USER=nextcloud" - ] + [[config.env]] + serviceName = "nextcloud" + env = [ + "NEXTCLOUD_ADMIN_USER=${admin_user}", + "NEXTCLOUD_ADMIN_PASSWORD=${admin_password}", + "APACHE_SERVERNAME=${domain_name}", + "MYSQL_PASSWORD=${db_password}", + "MYSQL_ROOT_PASSWORD=${db_root_password}", + "DEFAULT_PHONE_REGION=${region}", + "NEXTCLOUD_DOMAIN=${domain_name}", + "OVERWRITEPROTOCOL=https", + "TRUSTED_PROXIES=10.0.0.0/8 172.16.0.0/12", + "REDIS_HOST=nextcloud_redis", + "MYSQL_DATABASE=nextcloud", + "MYSQL_USER=nextcloud" + ] [[config.domains]] serviceName = "nextcloud" From 3dc335f8e3ae29ea22eb8d8ebea5b5085ef7db90 Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 22:07:21 +0000 Subject: [PATCH 13/22] fix toml --- blueprints/nextcloud-aio/template.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index 6c99f4b5b..7ad72d04b 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -8,7 +8,6 @@ [config] [[config.env]] - serviceName = "nextcloud" env = [ "NEXTCLOUD_ADMIN_USER=${admin_user}", "NEXTCLOUD_ADMIN_PASSWORD=${admin_password}", From f40c8f0e1eebd9a114e7e767542713f1ca1be88e Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 22:09:13 +0000 Subject: [PATCH 14/22] retry classic --- blueprints/nextcloud-aio/docker-compose.yml | 28 ++++++++++----------- blueprints/nextcloud-aio/template.toml | 28 ++++++++------------- 2 files changed, 24 insertions(+), 32 deletions(-) diff --git a/blueprints/nextcloud-aio/docker-compose.yml b/blueprints/nextcloud-aio/docker-compose.yml index 8c53f3991..778484f15 100644 --- a/blueprints/nextcloud-aio/docker-compose.yml +++ b/blueprints/nextcloud-aio/docker-compose.yml @@ -1,34 +1,32 @@ services: nextcloud: - image: nextcloud:31.0.13 + image: nextcloud:stable restart: always + volumes: + - nextcloud_data:/var/www/html environment: - # Database Connection - MYSQL_HOST=nextcloud_db - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - - MYSQL_PASSWORD=${MYSQL_SECRET_PASSWORD} - # Admin Setup - - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER} - - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD} - # Proxy / HTTPS Settings - - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_DOMAIN} - - OVERWRITEPROTOCOL=https - volumes: - - nextcloud_data:/var/www/html + - MYSQL_PASSWORD=${MYSQL_PASSWORD} depends_on: - nextcloud_db + - nextcloud_redis nextcloud_db: image: mariadb:10.11 restart: always + volumes: + - nextcloud_db_data:/var/lib/mysql environment: - - MYSQL_ROOT_PASSWORD=${MYSQL_SECRET_PASSWORD_ROOT} + - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - - MYSQL_PASSWORD=${MYSQL_SECRET_PASSWORD} - volumes: - - nextcloud_db_data:/var/lib/mysql + - MYSQL_PASSWORD=${MYSQL_PASSWORD} + + nextcloud_redis: + image: redis:alpine + restart: always volumes: nextcloud_data: diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index 7ad72d04b..3953676dd 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -2,26 +2,20 @@ domain_name = "${domain}" db_password = "${password:32}" db_root_password = "${password:32}" - admin_user = "admin" - admin_password = "${password:32}" region = "DE" [config] - [[config.env]] - env = [ - "NEXTCLOUD_ADMIN_USER=${admin_user}", - "NEXTCLOUD_ADMIN_PASSWORD=${admin_password}", - "APACHE_SERVERNAME=${domain_name}", - "MYSQL_PASSWORD=${db_password}", - "MYSQL_ROOT_PASSWORD=${db_root_password}", - "DEFAULT_PHONE_REGION=${region}", - "NEXTCLOUD_DOMAIN=${domain_name}", - "OVERWRITEPROTOCOL=https", - "TRUSTED_PROXIES=10.0.0.0/8 172.16.0.0/12", - "REDIS_HOST=nextcloud_redis", - "MYSQL_DATABASE=nextcloud", - "MYSQL_USER=nextcloud" - ] + env = [ + "MYSQL_PASSWORD=${db_password}", + "MYSQL_ROOT_PASSWORD=${db_root_password}", + "DEFAULT_PHONE_REGION=${region}", + "NEXTCLOUD_DOMAIN=${domain_name}", + "OVERWRITEPROTOCOL=https", + "TRUSTED_PROXIES=10.0.0.0/8 172.16.0.0/12", + "REDIS_HOST=nextcloud_redis", + "MYSQL_DATABASE=nextcloud", + "MYSQL_USER=nextcloud" + ] [[config.domains]] serviceName = "nextcloud" From fc87ccf2fa275beea17d89d5f31e58811ed4e471 Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 22:14:32 +0000 Subject: [PATCH 15/22] add: admin user --- blueprints/nextcloud-aio/template.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index 3953676dd..1b108a7e7 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -2,10 +2,14 @@ domain_name = "${domain}" db_password = "${password:32}" db_root_password = "${password:32}" + admin_user = "admin" + admin_password = "${password:32}" region = "DE" [config] env = [ + "NEXTCLOUD_ADMIN_USER=${admin_user}", + "NEXTCLOUD_ADMIN_PASSWORD=${admin_password}", "MYSQL_PASSWORD=${db_password}", "MYSQL_ROOT_PASSWORD=${db_root_password}", "DEFAULT_PHONE_REGION=${region}", From 8b369c84c1a11261a77470b177156073a862015b Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 22:20:37 +0000 Subject: [PATCH 16/22] no aito install --- blueprints/nextcloud-aio/template.toml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index 1b108a7e7..3953676dd 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -2,14 +2,10 @@ domain_name = "${domain}" db_password = "${password:32}" db_root_password = "${password:32}" - admin_user = "admin" - admin_password = "${password:32}" region = "DE" [config] env = [ - "NEXTCLOUD_ADMIN_USER=${admin_user}", - "NEXTCLOUD_ADMIN_PASSWORD=${admin_password}", "MYSQL_PASSWORD=${db_password}", "MYSQL_ROOT_PASSWORD=${db_root_password}", "DEFAULT_PHONE_REGION=${region}", From 780f31331bfed96a5cc3ef648321188134a65029 Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 22:49:30 +0000 Subject: [PATCH 17/22] feat: automated fixes --- blueprints/nextcloud-aio/docker-compose.yml | 1 + blueprints/nextcloud-aio/template.toml | 167 +++++++++++++++++++- 2 files changed, 167 insertions(+), 1 deletion(-) diff --git a/blueprints/nextcloud-aio/docker-compose.yml b/blueprints/nextcloud-aio/docker-compose.yml index 778484f15..d133de9ef 100644 --- a/blueprints/nextcloud-aio/docker-compose.yml +++ b/blueprints/nextcloud-aio/docker-compose.yml @@ -2,6 +2,7 @@ services: nextcloud: image: nextcloud:stable restart: always + entrypoint: /entrypoint-wrapper.sh volumes: - nextcloud_data:/var/www/html environment: diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index 3953676dd..318871b76 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -20,4 +20,169 @@ [[config.domains]] serviceName = "nextcloud" port = 80 - host = "${domain_name}" \ No newline at end of file + host = "${domain_name}" + + [[config.mounts]] + filePath = "/entrypoint-wrapper.sh" + content = """#!/bin/sh +set -e + +echo "=== Nextcloud Custom Entrypoint Wrapper ===" +echo "Starting Nextcloud with automated optimization support..." + +# Start original Nextcloud entrypoint in background +/entrypoint.sh apache2-foreground & +NEXTCLOUD_PID=$! + +echo "Waiting for Nextcloud to initialize..." +# Wait for Nextcloud to be ready (version.php and config.php must exist) +COUNTER=0 +MAX_WAIT=300 # 5 minutes maximum wait +while [ ! -f /var/www/html/version.php ] || [ ! -f /var/www/html/config/config.php ]; do + sleep 5 + COUNTER=$((COUNTER + 5)) + if [ $COUNTER -ge $MAX_WAIT ]; then + echo "ERROR: Nextcloud initialization timeout after ${MAX_WAIT}s" + kill $NEXTCLOUD_PID 2>/dev/null || true + exit 1 + fi + echo "Still waiting for Nextcloud... (${COUNTER}s)" +done + +echo "Nextcloud initialized successfully!" + +# Run optimizations if not already done +MARKER_FILE="/var/www/html/data/.nextcloud-optimized" +if [ ! -f "$MARKER_FILE" ]; then + echo "Running first-time optimizations..." + chmod +x /fix-nextcloud.sh + /bin/sh /fix-nextcloud.sh + + if [ $? -eq 0 ]; then + echo "Optimizations completed successfully!" + else + echo "WARNING: Some optimizations may have failed. Check logs above." + fi +else + echo "Optimizations already applied (marker file exists), skipping..." +fi + +echo "=== Nextcloud is ready and optimized ===" + +# Wait for Nextcloud process to complete +wait $NEXTCLOUD_PID +""" + + [[config.mounts]] + filePath = "/fix-nextcloud.sh" + content = """#!/bin/sh +# +# Nextcloud Optimization Script +# ============================== +# This script applies production-ready optimizations to Nextcloud. +# It runs automatically on first container start via the custom entrypoint. +# +# Optimizations include: +# - Trusted proxy configuration for reverse proxy support +# - HTTPS protocol override +# - Regional settings (phone region, maintenance window) +# - Performance optimizations (database repair, missing indices) +# - Redis caching configuration (APCu, distributed, locking) +# +# The script is idempotent - it creates a marker file to prevent re-running. +# To re-run manually: delete /var/www/html/data/.nextcloud-optimized and restart container +# + +MARKER_FILE="/var/www/html/data/.nextcloud-optimized" +OCC="php /var/www/html/occ" + +# Check if already run +if [ -f "$MARKER_FILE" ]; then + echo "Optimizations already applied (marker file exists)." + exit 0 +fi + +echo "==========================================" +echo " Nextcloud Optimization Script" +echo "==========================================" +echo "" + +# Wait a bit for services to stabilize +echo "[1/6] Waiting for services to stabilize..." +sleep 15 + +# Function to run occ command as www-data with error handling +run_occ() { + local description="$1" + shift + echo -n " - ${description}... " + if su -s /bin/sh www-data -c "$OCC $*" >/dev/null 2>&1; then + echo "✓" + return 0 + else + echo "✗ (failed, but continuing)" + return 1 + fi +} + +# Test database connectivity +echo "[2/6] Testing database connectivity..." +RETRY_COUNT=0 +MAX_RETRIES=30 +while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do + if su -s /bin/sh www-data -c "$OCC status" >/dev/null 2>&1; then + echo " ✓ Database is accessible" + break + fi + RETRY_COUNT=$((RETRY_COUNT + 1)) + echo " Waiting for database... (attempt $RETRY_COUNT/$MAX_RETRIES)" + sleep 5 +done + +if [ $RETRY_COUNT -eq $MAX_RETRIES ]; then + echo " ✗ Database not accessible after ${MAX_RETRIES} attempts" + echo " Skipping optimizations - please run manually later" + exit 1 +fi + +# Configure trusted proxies +echo "[3/6] Configuring trusted proxies..." +run_occ "Set trusted proxy 10.0.0.0/8" config:system:set trusted_proxies 0 --value='10.0.0.0/8' +run_occ "Set trusted proxy 172.16.0.0/12" config:system:set trusted_proxies 1 --value='172.16.0.0/12' +run_occ "Set trusted proxy 192.168.0.0/16" config:system:set trusted_proxies 2 --value='192.168.0.0/16' +run_occ "Set HTTPS protocol override" config:system:set overwriteprotocol --value='https' + +# Configure regional settings +echo "[4/6] Configuring regional settings..." +run_occ "Set phone region to DE" config:system:set default_phone_region --value='DE' +run_occ "Set maintenance window start" config:system:set maintenance_window_start --value=1 --type=integer + +# Run performance optimizations +echo "[5/6] Running performance optimizations..." +echo " - Running maintenance repair (this may take a while)..." +if su -s /bin/sh www-data -c "$OCC maintenance:repair --include-expensive" 2>&1 | grep -q "No repair steps available"; then + echo " ✓ No repairs needed" +else + echo " ✓ Repair completed" +fi +run_occ "Add missing database indices" db:add-missing-indices + +# Configure Redis caching +echo "[6/6] Configuring Redis caching..." +run_occ "Set APCu for local cache" config:system:set memcache.local --value='\\OC\\Memcache\\APCu' +run_occ "Set Redis for distributed cache" config:system:set memcache.distributed --value='\\OC\\Memcache\\Redis' +run_occ "Set Redis for locking" config:system:set memcache.locking --value='\\OC\\Memcache\\Redis' +run_occ "Set Redis host" config:system:set redis host --value='nextcloud_redis' +run_occ "Set Redis port" config:system:set redis port --value=6379 --type=integer + +# Create marker file +touch "$MARKER_FILE" + +echo "" +echo "==========================================" +echo " Optimization Complete!" +echo "==========================================" +echo "All optimizations have been applied." +echo "Marker file created at: $MARKER_FILE" +echo "" +""" \ No newline at end of file From 3a97b8923bf3597d1570f461b11952852036b38a Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 22:53:30 +0000 Subject: [PATCH 18/22] fix file pasth --- blueprints/nextcloud-aio/docker-compose.yml | 2 ++ blueprints/nextcloud-aio/template.toml | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/blueprints/nextcloud-aio/docker-compose.yml b/blueprints/nextcloud-aio/docker-compose.yml index d133de9ef..d4f9873e8 100644 --- a/blueprints/nextcloud-aio/docker-compose.yml +++ b/blueprints/nextcloud-aio/docker-compose.yml @@ -5,6 +5,8 @@ services: entrypoint: /entrypoint-wrapper.sh volumes: - nextcloud_data:/var/www/html + - ../files/entrypoint-wrapper.sh:/entrypoint-wrapper.sh:ro + - ../files/fix-nextcloud.sh:/fix-nextcloud.sh:ro environment: - MYSQL_HOST=nextcloud_db - MYSQL_DATABASE=nextcloud diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index 318871b76..25d6e04c8 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -23,7 +23,7 @@ host = "${domain_name}" [[config.mounts]] - filePath = "/entrypoint-wrapper.sh" + filePath = "entrypoint-wrapper.sh" content = """#!/bin/sh set -e @@ -74,7 +74,7 @@ wait $NEXTCLOUD_PID """ [[config.mounts]] - filePath = "/fix-nextcloud.sh" + filePath = "fix-nextcloud.sh" content = """#!/bin/sh # # Nextcloud Optimization Script From c02b93ce9d6cfd03ac86be97b498a7f4aa70e02c Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Tue, 20 Jan 2026 23:01:58 +0000 Subject: [PATCH 19/22] fix: manual script --- blueprints/nextcloud-aio/docker-compose.yml | 4 +- blueprints/nextcloud-aio/template.toml | 62 ++++----------------- 2 files changed, 11 insertions(+), 55 deletions(-) diff --git a/blueprints/nextcloud-aio/docker-compose.yml b/blueprints/nextcloud-aio/docker-compose.yml index d4f9873e8..e655078cd 100644 --- a/blueprints/nextcloud-aio/docker-compose.yml +++ b/blueprints/nextcloud-aio/docker-compose.yml @@ -2,11 +2,9 @@ services: nextcloud: image: nextcloud:stable restart: always - entrypoint: /entrypoint-wrapper.sh volumes: - nextcloud_data:/var/www/html - - ../files/entrypoint-wrapper.sh:/entrypoint-wrapper.sh:ro - - ../files/fix-nextcloud.sh:/fix-nextcloud.sh:ro + - ../files/fix-nextcloud.sh:/var/www/html/fix-nextcloud.sh:ro environment: - MYSQL_HOST=nextcloud_db - MYSQL_DATABASE=nextcloud diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index 25d6e04c8..23b812ffe 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -22,57 +22,6 @@ port = 80 host = "${domain_name}" - [[config.mounts]] - filePath = "entrypoint-wrapper.sh" - content = """#!/bin/sh -set -e - -echo "=== Nextcloud Custom Entrypoint Wrapper ===" -echo "Starting Nextcloud with automated optimization support..." - -# Start original Nextcloud entrypoint in background -/entrypoint.sh apache2-foreground & -NEXTCLOUD_PID=$! - -echo "Waiting for Nextcloud to initialize..." -# Wait for Nextcloud to be ready (version.php and config.php must exist) -COUNTER=0 -MAX_WAIT=300 # 5 minutes maximum wait -while [ ! -f /var/www/html/version.php ] || [ ! -f /var/www/html/config/config.php ]; do - sleep 5 - COUNTER=$((COUNTER + 5)) - if [ $COUNTER -ge $MAX_WAIT ]; then - echo "ERROR: Nextcloud initialization timeout after ${MAX_WAIT}s" - kill $NEXTCLOUD_PID 2>/dev/null || true - exit 1 - fi - echo "Still waiting for Nextcloud... (${COUNTER}s)" -done - -echo "Nextcloud initialized successfully!" - -# Run optimizations if not already done -MARKER_FILE="/var/www/html/data/.nextcloud-optimized" -if [ ! -f "$MARKER_FILE" ]; then - echo "Running first-time optimizations..." - chmod +x /fix-nextcloud.sh - /bin/sh /fix-nextcloud.sh - - if [ $? -eq 0 ]; then - echo "Optimizations completed successfully!" - else - echo "WARNING: Some optimizations may have failed. Check logs above." - fi -else - echo "Optimizations already applied (marker file exists), skipping..." -fi - -echo "=== Nextcloud is ready and optimized ===" - -# Wait for Nextcloud process to complete -wait $NEXTCLOUD_PID -""" - [[config.mounts]] filePath = "fix-nextcloud.sh" content = """#!/bin/sh @@ -80,7 +29,16 @@ wait $NEXTCLOUD_PID # Nextcloud Optimization Script # ============================== # This script applies production-ready optimizations to Nextcloud. -# It runs automatically on first container start via the custom entrypoint. +# +# MANUAL EXECUTION REQUIRED +# ------------------------- +# After Nextcloud completes its initial setup (create admin account, etc.), +# run this script manually with: +# +# docker exec -u www-data /bin/sh /var/www/html/fix-nextcloud.sh +# +# To find your container name, run: +# docker ps | grep nextcloud # # Optimizations include: # - Trusted proxy configuration for reverse proxy support From dffa44dca35c5d0a180a739423c21308f8b8dba2 Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Wed, 21 Jan 2026 08:56:16 +0000 Subject: [PATCH 20/22] fix: script --- blueprints/nextcloud-aio/docker-compose.yml | 2 +- blueprints/nextcloud-aio/template.toml | 99 +++++++++++++-------- 2 files changed, 63 insertions(+), 38 deletions(-) diff --git a/blueprints/nextcloud-aio/docker-compose.yml b/blueprints/nextcloud-aio/docker-compose.yml index e655078cd..9cec8542c 100644 --- a/blueprints/nextcloud-aio/docker-compose.yml +++ b/blueprints/nextcloud-aio/docker-compose.yml @@ -4,7 +4,7 @@ services: restart: always volumes: - nextcloud_data:/var/www/html - - ../files/fix-nextcloud.sh:/var/www/html/fix-nextcloud.sh:ro + - ../files/fix-nextcloud.sh:/usr/local/bin/fix-nextcloud.sh:ro environment: - MYSQL_HOST=nextcloud_db - MYSQL_DATABASE=nextcloud diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index 23b812ffe..d45c89bee 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -33,12 +33,15 @@ # MANUAL EXECUTION REQUIRED # ------------------------- # After Nextcloud completes its initial setup (create admin account, etc.), -# run this script manually with: +# run this script manually: # -# docker exec -u www-data /bin/sh /var/www/html/fix-nextcloud.sh +# Option 1 (From Dokploy UI): +# 1. Go to your Nextcloud service in Dokploy +# 2. Open the Terminal tab +# 3. Run: su -s /bin/sh www-data -c "/bin/sh /usr/local/bin/fix-nextcloud.sh" # -# To find your container name, run: -# docker ps | grep nextcloud +# Option 2 (From command line): +# docker exec -u www-data /bin/sh /usr/local/bin/fix-nextcloud.sh # # Optimizations include: # - Trusted proxy configuration for reverse proxy support @@ -65,68 +68,90 @@ echo " Nextcloud Optimization Script" echo "==========================================" echo "" -# Wait a bit for services to stabilize -echo "[1/6] Waiting for services to stabilize..." -sleep 15 +# Check if running as www-data +CURRENT_USER=$(whoami) +if [ "$CURRENT_USER" = "www-data" ]; then + RUN_AS_WWWDATA="" +else + RUN_AS_WWWDATA="su -s /bin/sh www-data -c" +fi -# Function to run occ command as www-data with error handling +# Function to run occ command with error handling run_occ() { - local description="$1" + description="$1" shift - echo -n " - ${description}... " - if su -s /bin/sh www-data -c "$OCC $*" >/dev/null 2>&1; then - echo "✓" - return 0 + printf " - %s... " "$description" + if [ -z "$RUN_AS_WWWDATA" ]; then + # Already running as www-data + if $OCC "$@" >/dev/null 2>&1; then + echo "✓" + return 0 + else + echo "✗ (failed, but continuing)" + return 1 + fi else - echo "✗ (failed, but continuing)" - return 1 + # Need to switch to www-data + if $RUN_AS_WWWDATA "$OCC $*" >/dev/null 2>&1; then + echo "✓" + return 0 + else + echo "✗ (failed, but continuing)" + return 1 + fi fi } # Test database connectivity -echo "[2/6] Testing database connectivity..." -RETRY_COUNT=0 -MAX_RETRIES=30 -while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do - if su -s /bin/sh www-data -c "$OCC status" >/dev/null 2>&1; then +echo "[1/5] Testing database connectivity..." +if [ -z "$RUN_AS_WWWDATA" ]; then + if $OCC status >/dev/null 2>&1; then echo " ✓ Database is accessible" - break + else + echo " ✗ Database not accessible" + exit 1 + fi +else + if $RUN_AS_WWWDATA "$OCC status" >/dev/null 2>&1; then + echo " ✓ Database is accessible" + else + echo " ✗ Database not accessible" + exit 1 fi - RETRY_COUNT=$((RETRY_COUNT + 1)) - echo " Waiting for database... (attempt $RETRY_COUNT/$MAX_RETRIES)" - sleep 5 -done - -if [ $RETRY_COUNT -eq $MAX_RETRIES ]; then - echo " ✗ Database not accessible after ${MAX_RETRIES} attempts" - echo " Skipping optimizations - please run manually later" - exit 1 fi # Configure trusted proxies -echo "[3/6] Configuring trusted proxies..." +echo "[2/5] Configuring trusted proxies..." run_occ "Set trusted proxy 10.0.0.0/8" config:system:set trusted_proxies 0 --value='10.0.0.0/8' run_occ "Set trusted proxy 172.16.0.0/12" config:system:set trusted_proxies 1 --value='172.16.0.0/12' run_occ "Set trusted proxy 192.168.0.0/16" config:system:set trusted_proxies 2 --value='192.168.0.0/16' run_occ "Set HTTPS protocol override" config:system:set overwriteprotocol --value='https' # Configure regional settings -echo "[4/6] Configuring regional settings..." +echo "[3/5] Configuring regional settings..." run_occ "Set phone region to DE" config:system:set default_phone_region --value='DE' run_occ "Set maintenance window start" config:system:set maintenance_window_start --value=1 --type=integer # Run performance optimizations -echo "[5/6] Running performance optimizations..." +echo "[4/5] Running performance optimizations..." echo " - Running maintenance repair (this may take a while)..." -if su -s /bin/sh www-data -c "$OCC maintenance:repair --include-expensive" 2>&1 | grep -q "No repair steps available"; then - echo " ✓ No repairs needed" +if [ -z "$RUN_AS_WWWDATA" ]; then + if $OCC maintenance:repair --include-expensive 2>&1 | grep -q "No repair steps available"; then + echo " ✓ No repairs needed" + else + echo " ✓ Repair completed" + fi else - echo " ✓ Repair completed" + if $RUN_AS_WWWDATA "$OCC maintenance:repair --include-expensive" 2>&1 | grep -q "No repair steps available"; then + echo " ✓ No repairs needed" + else + echo " ✓ Repair completed" + fi fi run_occ "Add missing database indices" db:add-missing-indices # Configure Redis caching -echo "[6/6] Configuring Redis caching..." +echo "[5/5] Configuring Redis caching..." run_occ "Set APCu for local cache" config:system:set memcache.local --value='\\OC\\Memcache\\APCu' run_occ "Set Redis for distributed cache" config:system:set memcache.distributed --value='\\OC\\Memcache\\Redis' run_occ "Set Redis for locking" config:system:set memcache.locking --value='\\OC\\Memcache\\Redis' From 79c74b1e1faebb63d3a9aebc74c74c78d72c1f09 Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Wed, 21 Jan 2026 22:46:53 +0000 Subject: [PATCH 21/22] fix: png logo --- blueprints/nextcloud-aio/nextcloud-aio.svg | 1 - blueprints/nextcloud-aio/nextcloud.png | Bin 0 -> 11617 bytes 2 files changed, 1 deletion(-) delete mode 100644 blueprints/nextcloud-aio/nextcloud-aio.svg create mode 100644 blueprints/nextcloud-aio/nextcloud.png diff --git a/blueprints/nextcloud-aio/nextcloud-aio.svg b/blueprints/nextcloud-aio/nextcloud-aio.svg deleted file mode 100644 index 54e6056fa..000000000 --- a/blueprints/nextcloud-aio/nextcloud-aio.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/blueprints/nextcloud-aio/nextcloud.png b/blueprints/nextcloud-aio/nextcloud.png new file mode 100644 index 0000000000000000000000000000000000000000..119d58b7e8d4792d0dfefb4c25e095a37a14b901 GIT binary patch literal 11617 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 LRk}{fEaZOxpAt}_ literal 0 HcmV?d00001 From 1a96f6a2cc8cbe28727124010d0528ea0147aab2 Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Wed, 21 Jan 2026 22:47:42 +0000 Subject: [PATCH 22/22] fix: meta logo data --- meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta.json b/meta.json index 61c917f36..b29044c86 100644 --- a/meta.json +++ b/meta.json @@ -4083,7 +4083,7 @@ "name": "Nextcloud", "version": "stable", "description": "Nextcloud is a self-hosted file storage and sync platform with powerful collaboration capabilities. It integrates Files, Talk, Groupware, Office, Assistant and more into a single platform for remote work and data protection.", - "logo": "nextcloud-aio.svg", + "logo": "nextcloud.png", "links": { "github": "https://github.com/nextcloud/docker", "website": "https://nextcloud.com/",