From e2e5997a768af944295dfae9a3e3c119fc1b715c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joda=20Sto=CC=88=C3=9Fer?= Date: Sat, 22 Nov 2025 00:09:26 +0100 Subject: [PATCH 1/7] feature(script): add nextcloud --- docs/public/install-scripts/nextcloud.json | 134 +++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 docs/public/install-scripts/nextcloud.json diff --git a/docs/public/install-scripts/nextcloud.json b/docs/public/install-scripts/nextcloud.json new file mode 100644 index 00000000..3fc21aea --- /dev/null +++ b/docs/public/install-scripts/nextcloud.json @@ -0,0 +1,134 @@ +{ + "version": 2, + "installation_questions": [ + { + "question": "Nextcloud admin user", + "description": "The admin user for Nextcloud.", + "type": "text", + "key": "admin_user" + }, + { + "question": "Nextcloud admin password", + "description": "The admin password for Nextcloud.", + "type": "text", + "key": "admin_password", + "default": "$RANDOM_STRING(10)" + }, + { + "question": "Enable Imaginary", + "description": "Imaginary can help improve performance for generating image previews.", + "type": "boolean", + "key": "imaginary_enabled", + "default": false, + "required": false + }, + { + "question": "Host", + "description": "Nextcloud host to create application URLs. Examples: cloud.domain.com:443, cloud.domain.com:30001, 192.168.1.100:9001 (replace ip and port with your own).", + "type": "text", + "key": "host", + "required": false + }, + { + "question": "Redis password", + "description": "The password for Redis.", + "type": "text", + "key": "redis_password", + "default": "$RANDOM_STRING(10)" + }, + { + "question": "Database password", + "description": "The password for the database.", + "type": "text", + "key": "db_password", + "default": "$RANDOM_STRING(10)" + }, + { + "question": "Cron", + "description": "Enable cron.", + "type": "boolean", + "key": "cron_enabled", + "default": false, + "required": false + }, + { + "question": "Cron Schedule", + "description": "The cron schedule, if enabled.", + "type": "text", + "key": "cron_schedule", + "default": "*/5 * * * *", + "required": false + } + ], + "ensure_directories_exists": [ + { + "path": "$LOCATION(ApplicationsPerformance)", + "network_share": true + }, + { + "path": "$LOCATION(ApplicationsPerformance)/nextcloud/postgres_data", + "posix": true + }, + "$LOCATION(ApplicationsPerformance)/nextcloud/html", + { + "path": "$LOCATION(ApplicationsCapacity)", + "network_share": true + }, + "$LOCATION(ApplicationsCapacity)/nextcloud/data" + ], + "ensure_permissions_exists": [ + { + "path": "$LOCATION(ApplicationsPerformance)/nextcloud/postgres_data", + "username": "netdata", + "access": "read", + "posix": { + "groupname": "docker" + } + } + ], + "app_values": { + "nextcloud": { + "admin_user": "$QUESTION(admin_user)", + "admin_password": "$QUESTION(admin_password)", + "apt_packages": [ + "ffmpeg", + "smbclient", + "ocrmypdf", + "libreoffice" + ], + "tesseract_languages": [ + "eng" + ], + "imaginary": { + "enabled": "$QUESTION(imaginary_enabled)" + }, + "host": "$QUESTION(host)", + "redis_password": "$QUESTION(redis_password)", + "db_password": "$QUESTION(db_password)", + "cron": { + "enabled": "$QUESTION(cron_enabled)", + "schedule": "$QUESTION(cron_schedule)" + } + }, + "network": { + "web_port": { + "bind_mode": "published", + "port_number": 30027 + } + }, + "storage": { + "html": "$HOST_PATH($LOCATION(ApplicationsPerformance)/nextcloud/html)", + "data": "$HOST_PATH($LOCATION(ApplicationsCapacity)/nextcloud/data)", + "postgres_data": "$HOST_PATH($LOCATION(ApplicationsPerformance)/nextcloud/postgres_data)" + }, + "resources": { + "limits": { + "cpus": 2, + "memory": "$MEMORY(10%, 4096)" + }, + "gpus": { + "use_all_gpus": false + } + } + } +} From 7021fa2ea5a8920eb92a5ae0128ce7cdf6d441f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joda=20Sto=CC=88=C3=9Fer?= Date: Sat, 22 Nov 2025 00:45:05 +0100 Subject: [PATCH 2/7] feature(script): remove nextcloud GPU config it doesn't provide any value out-of-the-box --- docs/public/install-scripts/nextcloud.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/public/install-scripts/nextcloud.json b/docs/public/install-scripts/nextcloud.json index 3fc21aea..a96d3284 100644 --- a/docs/public/install-scripts/nextcloud.json +++ b/docs/public/install-scripts/nextcloud.json @@ -125,9 +125,6 @@ "limits": { "cpus": 2, "memory": "$MEMORY(10%, 4096)" - }, - "gpus": { - "use_all_gpus": false } } } From db6aa7e841d8bbbaa8b8fcf63cb80e048d83cda0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joda=20Sto=CC=88=C3=9Fer?= Date: Sat, 22 Nov 2025 00:59:41 +0100 Subject: [PATCH 3/7] feature(script): make nextcloud web port configurable --- docs/public/install-scripts/nextcloud.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/public/install-scripts/nextcloud.json b/docs/public/install-scripts/nextcloud.json index a96d3284..2a279612 100644 --- a/docs/public/install-scripts/nextcloud.json +++ b/docs/public/install-scripts/nextcloud.json @@ -58,6 +58,13 @@ "key": "cron_schedule", "default": "*/5 * * * *", "required": false + }, + { + "question": "Web Port", + "type": "number", + "key": "web_port", + "default": 30027, + "required": true } ], "ensure_directories_exists": [ @@ -113,7 +120,7 @@ "network": { "web_port": { "bind_mode": "published", - "port_number": 30027 + "port_number": "$QUESTION(web_port)" } }, "storage": { From 25de0a97db99509fb6d4fae8d5dc7959b8ad15ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joda=20Sto=CC=88=C3=9Fer?= Date: Sun, 23 Nov 2025 02:44:51 +0100 Subject: [PATCH 4/7] fix(script): disable network share from some storages nextcloud --- docs/public/install-scripts/nextcloud.json | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/docs/public/install-scripts/nextcloud.json b/docs/public/install-scripts/nextcloud.json index 2a279612..08df1df7 100644 --- a/docs/public/install-scripts/nextcloud.json +++ b/docs/public/install-scripts/nextcloud.json @@ -68,19 +68,13 @@ } ], "ensure_directories_exists": [ - { - "path": "$LOCATION(ApplicationsPerformance)", - "network_share": true - }, + "$LOCATION(ApplicationsPerformance)", { "path": "$LOCATION(ApplicationsPerformance)/nextcloud/postgres_data", "posix": true }, "$LOCATION(ApplicationsPerformance)/nextcloud/html", - { - "path": "$LOCATION(ApplicationsCapacity)", - "network_share": true - }, + "$LOCATION(ApplicationsCapacity)", "$LOCATION(ApplicationsCapacity)/nextcloud/data" ], "ensure_permissions_exists": [ From 2e52b0fb17482701401dce2f8cc432f7838947e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joda=20Sto=CC=88=C3=9Fer?= Date: Sun, 23 Nov 2025 02:47:39 +0100 Subject: [PATCH 5/7] feature(script): use posix for nextcloud storages --- docs/public/install-scripts/nextcloud.json | 26 ++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/docs/public/install-scripts/nextcloud.json b/docs/public/install-scripts/nextcloud.json index 08df1df7..9da2a9f5 100644 --- a/docs/public/install-scripts/nextcloud.json +++ b/docs/public/install-scripts/nextcloud.json @@ -73,11 +73,33 @@ "path": "$LOCATION(ApplicationsPerformance)/nextcloud/postgres_data", "posix": true }, - "$LOCATION(ApplicationsPerformance)/nextcloud/html", + { + "path": "$LOCATION(ApplicationsPerformance)/nextcloud/html", + "posix": true + }, "$LOCATION(ApplicationsCapacity)", - "$LOCATION(ApplicationsCapacity)/nextcloud/data" + { + "path": "$LOCATION(ApplicationsCapacity)/nextcloud/data", + "posix": true + } ], "ensure_permissions_exists": [ + { + "path": "$LOCATION(ApplicationsPerformance)/nextcloud/html", + "username": "www-data", + "access": "write", + "posix": { + "groupname": "www-data" + } + }, + { + "path": "$LOCATION(ApplicationsCapacity)/nextcloud/data", + "username": "www-data", + "access": "write", + "posix": { + "groupname": "www-data" + } + }, { "path": "$LOCATION(ApplicationsPerformance)/nextcloud/postgres_data", "username": "netdata", From 76db241322804f1b4b7628a087c6ed2ccba56bbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joda=20Sto=CC=88=C3=9Fer?= Date: Sun, 23 Nov 2025 04:01:44 +0100 Subject: [PATCH 6/7] feature(script): make admin_user required for nextcloud --- docs/public/install-scripts/nextcloud.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/public/install-scripts/nextcloud.json b/docs/public/install-scripts/nextcloud.json index 9da2a9f5..88a79483 100644 --- a/docs/public/install-scripts/nextcloud.json +++ b/docs/public/install-scripts/nextcloud.json @@ -5,7 +5,8 @@ "question": "Nextcloud admin user", "description": "The admin user for Nextcloud.", "type": "text", - "key": "admin_user" + "key": "admin_user", + "required": true }, { "question": "Nextcloud admin password", From 9a0304105435da8a5dfbab47e7e53f5511bc3adb Mon Sep 17 00:00:00 2001 From: Jerod Fritz Date: Sat, 27 Dec 2025 21:11:58 -0500 Subject: [PATCH 7/7] updates for v3 and common defaults consolidating contributions from @SimJoSt @acknologia and @Mkayyyyyy --- docs/public/install-scripts/nextcloud.json | 168 ++++++--------------- 1 file changed, 47 insertions(+), 121 deletions(-) diff --git a/docs/public/install-scripts/nextcloud.json b/docs/public/install-scripts/nextcloud.json index 88a79483..1dc31156 100644 --- a/docs/public/install-scripts/nextcloud.json +++ b/docs/public/install-scripts/nextcloud.json @@ -1,108 +1,43 @@ { - "version": 2, - "installation_questions": [ - { - "question": "Nextcloud admin user", - "description": "The admin user for Nextcloud.", - "type": "text", - "key": "admin_user", - "required": true - }, - { - "question": "Nextcloud admin password", - "description": "The admin password for Nextcloud.", - "type": "text", - "key": "admin_password", - "default": "$RANDOM_STRING(10)" - }, - { - "question": "Enable Imaginary", - "description": "Imaginary can help improve performance for generating image previews.", - "type": "boolean", - "key": "imaginary_enabled", - "default": false, - "required": false - }, - { - "question": "Host", - "description": "Nextcloud host to create application URLs. Examples: cloud.domain.com:443, cloud.domain.com:30001, 192.168.1.100:9001 (replace ip and port with your own).", - "type": "text", - "key": "host", - "required": false - }, - { - "question": "Redis password", - "description": "The password for Redis.", - "type": "text", - "key": "redis_password", - "default": "$RANDOM_STRING(10)" - }, - { - "question": "Database password", - "description": "The password for the database.", - "type": "text", - "key": "db_password", - "default": "$RANDOM_STRING(10)" - }, - { - "question": "Cron", - "description": "Enable cron.", - "type": "boolean", - "key": "cron_enabled", - "default": false, - "required": false - }, - { - "question": "Cron Schedule", - "description": "The cron schedule, if enabled.", - "type": "text", - "key": "cron_schedule", - "default": "*/5 * * * *", - "required": false - }, - { - "question": "Web Port", - "type": "number", - "key": "web_port", - "default": 30027, - "required": true - } - ], + "version": 3, + "script": { + "version": "1.0.0", + "changeLog": "Upgraded Immich install script to be compatible with latest HexOS script changes" + }, + "requirements": { + "locations": [ + "ApplicationsPerformance", + "Photos" + ], + "specifications": [ + "2CORE", + "200MB" + ], + "permissions": [ + "READ_WRITE_LOCATIONS" + ], + "ports": [ + 2283 + ] + }, "ensure_directories_exists": [ - "$LOCATION(ApplicationsPerformance)", { - "path": "$LOCATION(ApplicationsPerformance)/nextcloud/postgres_data", - "posix": true + "path": "$LOCATION(ApplicationsPerformance)", + "network_share": true }, { - "path": "$LOCATION(ApplicationsPerformance)/nextcloud/html", - "posix": true + "path": "$LOCATION(Photos)", + "network_share": true }, - "$LOCATION(ApplicationsCapacity)", + "$LOCATION(Photos)/immich", { - "path": "$LOCATION(ApplicationsCapacity)/nextcloud/data", + "path": "$LOCATION(ApplicationsPerformance)/immich/postgres_data", "posix": true } ], "ensure_permissions_exists": [ { - "path": "$LOCATION(ApplicationsPerformance)/nextcloud/html", - "username": "www-data", - "access": "write", - "posix": { - "groupname": "www-data" - } - }, - { - "path": "$LOCATION(ApplicationsCapacity)/nextcloud/data", - "username": "www-data", - "access": "write", - "posix": { - "groupname": "www-data" - } - }, - { - "path": "$LOCATION(ApplicationsPerformance)/nextcloud/postgres_data", + "path": "$LOCATION(ApplicationsPerformance)/immich/postgres_data", "username": "netdata", "access": "read", "posix": { @@ -111,45 +46,36 @@ } ], "app_values": { - "nextcloud": { - "admin_user": "$QUESTION(admin_user)", - "admin_password": "$QUESTION(admin_password)", - "apt_packages": [ - "ffmpeg", - "smbclient", - "ocrmypdf", - "libreoffice" - ], - "tesseract_languages": [ - "eng" - ], - "imaginary": { - "enabled": "$QUESTION(imaginary_enabled)" - }, - "host": "$QUESTION(host)", - "redis_password": "$QUESTION(redis_password)", - "db_password": "$QUESTION(db_password)", - "cron": { - "enabled": "$QUESTION(cron_enabled)", - "schedule": "$QUESTION(cron_schedule)" - } + "release_name": "immich", + "immich": { + "enable_ml": true, + "ml_image_selector": "ml_image", + "db_password": "$RANDOM_STRING(7)", + "redis_password": "$RANDOM_STRING(7)", + "log_level": "log", + "hugging_face_endpoint": "", + "db_storage_type": "SSD", + "additional_envs": [] }, "network": { "web_port": { "bind_mode": "published", - "port_number": "$QUESTION(web_port)" + "port_number": 2283 } }, "storage": { - "html": "$HOST_PATH($LOCATION(ApplicationsPerformance)/nextcloud/html)", - "data": "$HOST_PATH($LOCATION(ApplicationsCapacity)/nextcloud/data)", - "postgres_data": "$HOST_PATH($LOCATION(ApplicationsPerformance)/nextcloud/postgres_data)" + "data": "$HOST_PATH($LOCATION(Photos)/immich)", + "ml_cache": { + "type": "temporary" + }, + "postgres_data": "$HOST_PATH($LOCATION(ApplicationsPerformance)/immich/postgres_data)" }, "resources": { "limits": { "cpus": 2, "memory": "$MEMORY(10%, 4096)" - } + }, + "gpus": "$GPU_CONFIG()" } } -} +} \ No newline at end of file