From 2f249505de05b06634425dca0c21abbce685ac3a Mon Sep 17 00:00:00 2001 From: Sina Sebastian Eetezadi Date: Thu, 5 Mar 2026 08:24:56 +0100 Subject: [PATCH] feat: Enhanced Nextcloud template with Redis, automated config, and improved setup (#672) * Update docker-compose.yml * fix: stable nextcloud, add redis, auto config, fixed mariadb * fix: meta nextcloud * fix: vars * fix: non capital * fix: template.toml * fix: env vars * fix: var naming * fix: command * fix: command * another try * keep it simple * fix toml * retry classic * add: admin user * no aito install * feat: automated fixes * fix file pasth * fix: manual script * fix: script * fix: png logo * fix: meta logo data --------- Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> --- blueprints/nextcloud-aio/docker-compose.yml | 26 +-- blueprints/nextcloud-aio/nextcloud-aio.svg | 1 - blueprints/nextcloud-aio/nextcloud.png | Bin 0 -> 11617 bytes blueprints/nextcloud-aio/template.toml | 178 ++++++++++++++++++-- meta.json | 8 +- 5 files changed, 184 insertions(+), 29 deletions(-) delete mode 100644 blueprints/nextcloud-aio/nextcloud-aio.svg create mode 100644 blueprints/nextcloud-aio/nextcloud.png diff --git a/blueprints/nextcloud-aio/docker-compose.yml b/blueprints/nextcloud-aio/docker-compose.yml index f262b157..9cec8542 100644 --- a/blueprints/nextcloud-aio/docker-compose.yml +++ b/blueprints/nextcloud-aio/docker-compose.yml @@ -1,32 +1,34 @@ services: nextcloud: - image: nextcloud:32.0.5 + image: nextcloud:stable restart: always - - ports: - - 80 volumes: - nextcloud_data:/var/www/html + - ../files/fix-nextcloud.sh:/usr/local/bin/fix-nextcloud.sh:ro environment: - - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_DOMAIN} - MYSQL_HOST=nextcloud_db - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - - MYSQL_PASSWORD=${MYSQL_SECRET_PASSWORD} - - OVERWRITEPROTOCOL=https + - MYSQL_PASSWORD=${MYSQL_PASSWORD} + depends_on: + - nextcloud_db + - nextcloud_redis nextcloud_db: - image: mariadb + 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} + - MYSQL_PASSWORD=${MYSQL_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/nextcloud-aio.svg b/blueprints/nextcloud-aio/nextcloud-aio.svg deleted file mode 100644 index 54e6056f..00000000 --- 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 diff --git a/blueprints/nextcloud-aio/template.toml b/blueprints/nextcloud-aio/template.toml index 30be77a1..d45c89be 100644 --- a/blueprints/nextcloud-aio/template.toml +++ b/blueprints/nextcloud-aio/template.toml @@ -1,17 +1,171 @@ [variables] -main_domain = "${domain}" -db_password = "${password}" -db_root_password = "${password}" + domain_name = "${domain}" + db_password = "${password:32}" + db_root_password = "${password:32}" + region = "DE" [config] -mounts = [] + 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" -port = 80 -host = "${main_domain}" + [[config.domains]] + serviceName = "nextcloud" + port = 80 + host = "${domain_name}" -[config.env] -NEXTCLOUD_DOMAIN = "${main_domain}" -MYSQL_SECRET_PASSWORD = "${db_password}" -MYSQL_SECRET_PASSWORD_ROOT = "${db_root_password}" + [[config.mounts]] + filePath = "fix-nextcloud.sh" + content = """#!/bin/sh +# +# Nextcloud Optimization Script +# ============================== +# This script applies production-ready optimizations to Nextcloud. +# +# MANUAL EXECUTION REQUIRED +# ------------------------- +# After Nextcloud completes its initial setup (create admin account, etc.), +# run this script manually: +# +# 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" +# +# 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 +# - 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 "" + +# 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 with error handling +run_occ() { + description="$1" + shift + 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 + # 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 "[1/5] Testing database connectivity..." +if [ -z "$RUN_AS_WWWDATA" ]; then + if $OCC status >/dev/null 2>&1; then + echo " ✓ Database is accessible" + 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 +fi + +# Configure 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 "[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 "[4/5] Running performance optimizations..." +echo " - Running maintenance repair (this may take a while)..." +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 + 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 "[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' +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 diff --git a/meta.json b/meta.json index f414b6fa..edf9a15f 100644 --- a/meta.json +++ b/meta.json @@ -4292,10 +4292,10 @@ }, { "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.", - "logo": "nextcloud-aio.svg", + "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.png", "links": { "github": "https://github.com/nextcloud/docker", "website": "https://nextcloud.com/",