From e127a4763d5a1f56e776d37bbe2149471bedeb17 Mon Sep 17 00:00:00 2001 From: dogtoaster Date: Tue, 29 Sep 2026 21:56:54 +0200 Subject: [PATCH 1/4] Add Vaultwarden and Uptime Kuma install scripts --- uptime-kuma.json | 59 ++++++++++++++++++++++++ vaultwarden.json | 117 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 176 insertions(+) create mode 100644 uptime-kuma.json create mode 100644 vaultwarden.json diff --git a/uptime-kuma.json b/uptime-kuma.json new file mode 100644 index 0000000..15564b0 --- /dev/null +++ b/uptime-kuma.json @@ -0,0 +1,59 @@ +{ + "version": 4, + "script": { + "version": "1.0.0", + "changeLog": "initial" + }, + "requirements": { + "locations": ["ApplicationsPerformance"], + "specifications": ["2CORE", "1GB"], + "permissions": ["READ_WRITE_LOCATIONS"], + "ports": [31050] + }, + "installation_questions": [ + { + "question": "WebUI Port", + "description": "Port Uptime Kuma listens on.", + "type": "number", + "key": "web_port", + "required": true, + "default": 31050 + }, + { + "question": "Enable Docker Container Monitoring", + "description": "Mounts the Docker socket so Uptime Kuma can monitor container status directly. Grants the container visibility into your host's Docker daemon - only enable this if you actually plan to use that monitor type.", + "type": "boolean", + "key": "mount_docker_socket", + "required": false, + "default": true + } + ], + "ensure_directories_exists": [ + { "path": "$LOCATION(ApplicationsPerformance)" }, + { "path": "$LOCATION(ApplicationsPerformance)/uptime-kuma/data", "snapshot": { "id": "data" } } + ], + "app_values": { + "uptime_kuma": { + "mount_docker_socket": "$QUESTION(mount_docker_socket)", + "additional_envs": [] + }, + "network": { + "web_port": { + "bind_mode": "published", + "port_number": "$QUESTION(web_port)" + }, + "networks": [], + "host_network": false + }, + "storage": { + "data": "$HOST_PATH($LOCATION(ApplicationsPerformance)/uptime-kuma/data)" + }, + "labels": [], + "resources": { + "limits": { + "cpus": 2, + "memory": 1024 + } + } + } +} \ No newline at end of file diff --git a/vaultwarden.json b/vaultwarden.json new file mode 100644 index 0000000..f525722 --- /dev/null +++ b/vaultwarden.json @@ -0,0 +1,117 @@ +{ + "version": 4, + "script": { + "version": "1.0.0", + "changeLog": "initial" + }, + "requirements": { + "locations": ["ApplicationsPerformance"], + "specifications": ["2CORE", "1GB"], + "permissions": ["READ_WRITE_LOCATIONS"], + "ports": [30032] + }, + "installation_questions": [ + { + "question": "Timezone", + "description": "Used for logs and scheduled tasks (e.g. Europe/Brussels).", + "type": "text", + "key": "timezone", + "required": false, + "default": "Etc/UTC" + }, + { + "question": "WebUI Port", + "description": "Port Vaultwarden listens on.", + "type": "number", + "key": "web_port", + "required": true, + "default": 30032 + }, + { + "question": "Public Domain", + "description": "The full external URL clients will use, including the https:// scheme and no trailing slash - e.g. https://vault.yourdomain.tld (not just vault.yourdomain.tld).", + "type": "text", + "key": "domain", + "required": true, + "placeholder": "https://vault.yourdomain.tld" + }, + { + "question": "Admin Token", + "description": "Custom token to log into /admin. Should be at least 64 random characters - HexOS cannot enforce a minimum length here, so paste a long random value yourself if you want a specific one. Leave blank to auto-generate a secure 64-character token. You can blank this out later in TrueNAS to disable the admin portal entirely.", + "type": "text", + "key": "admin_token", + "required": false, + "default": "$RANDOM_STRING(64)" + } + ], + "ensure_directories_exists": [ + { "path": "$LOCATION(ApplicationsPerformance)" }, + { "path": "$LOCATION(ApplicationsPerformance)/vaultwarden/data", "snapshot": { "id": "data" } }, + { "path": "$LOCATION(ApplicationsPerformance)/vaultwarden/postgres", "snapshot": { "id": "postgres_data" } } + ], + "app_values": { + "TZ": "$QUESTION(timezone)", + "vaultwarden": { + "postgres_image_selector": "postgres_18_image", + "db_password": "$RANDOM_STRING(32)", + "admin_token": "$QUESTION(admin_token)", + "enable_websocket": true, + "additional_envs": [ + { + "name": "SIGNUPS_ALLOWED", + "value": "true" + } + ] + }, + "run_as": { + "user": 568, + "group": 568 + }, + "network": { + "web_port": { + "bind_mode": "published", + "port_number": "$QUESTION(web_port)" + }, + "certificate_id": null, + "domain": "$QUESTION(domain)", + "networks": [] + }, + "storage": { + "data": "$HOST_PATH($LOCATION(ApplicationsPerformance)/vaultwarden/data)", + "postgres_data": "$HOST_PATH($LOCATION(ApplicationsPerformance)/vaultwarden/postgres)" + }, + "labels": [ + { + "key": "homepage.group", + "value": "Infrastructure", + "containers": ["vaultwarden"] + }, + { + "key": "homepage.name", + "value": "Vaultwarden", + "containers": ["vaultwarden"] + }, + { + "key": "homepage.icon", + "value": "vaultwarden.png", + "containers": ["vaultwarden"] + }, + { + "key": "homepage.href", + "value": "$QUESTION(domain)", + "containers": ["vaultwarden"] + }, + { + "key": "homepage.description", + "value": "Password Manager", + "containers": ["vaultwarden"] + } + ], + "resources": { + "limits": { + "cpus": 2, + "memory": 1024 + } + } + } +} From 528398931b25243764939e47fbd6b0e9a625312d Mon Sep 17 00:00:00 2001 From: dogtoaster Date: Tue, 29 Sep 2026 22:07:36 +0200 Subject: [PATCH 2/4] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index c93e7c5..e7b3917 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,8 @@ Install scripts are JSON configurations that automate app deployment on HexOS | [Sure](sure.json) | Financial planning software | | [Swiparr](swiparr.json) | Collaborative content watching decision software | | [Syncthing](syncthing.json) | Continuous file synchronization | +| [Uptime Kuma](uptime-kuma.json) | Self-hosted uptime monitoring | +| [Vaultwarden](vaultwarden.json) | Bitwarden-compatible password manager | | [Warracker](warracker.json) | warranty tracker | | [Wiki.js](wiki-js.json) | Open source Wiki software | From 3bb0ac6765b36063bd69dc0cfd7bf43fe2d67cfb Mon Sep 17 00:00:00 2001 From: acknologia <64101826+acknologia@users.noreply.github.com> Date: Mon, 5 Oct 2026 00:13:03 -0400 Subject: [PATCH 3/4] Update vaultwarden.json --- vaultwarden.json | 66 +++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 35 deletions(-) diff --git a/vaultwarden.json b/vaultwarden.json index f525722..05efaac 100644 --- a/vaultwarden.json +++ b/vaultwarden.json @@ -1,78 +1,74 @@ { - "version": 4, + "version": 5, "script": { "version": "1.0.0", "changeLog": "initial" }, "requirements": { "locations": ["ApplicationsPerformance"], - "specifications": ["2CORE", "1GB"], + "specifications": ["2CORE", "1GBRAM"], "permissions": ["READ_WRITE_LOCATIONS"], "ports": [30032] }, "installation_questions": [ { - "question": "Timezone", - "description": "Used for logs and scheduled tasks (e.g. Europe/Brussels).", - "type": "text", - "key": "timezone", - "required": false, - "default": "Etc/UTC" - }, - { - "question": "WebUI Port", - "description": "Port Vaultwarden listens on.", - "type": "number", - "key": "web_port", - "required": true, - "default": 30032 - }, - { - "question": "Public Domain", - "description": "The full external URL clients will use, including the https:// scheme and no trailing slash - e.g. https://vault.yourdomain.tld (not just vault.yourdomain.tld).", + "question": "Input your external access address for VaultWarden", + "description": "Do not modify this unless you have setup VaultWarden for external use. Input the full external URL clients will use, including the https:// scheme and no trailing slash - e.g. https://vault.yourdomain.tld (not just vault.yourdomain.tld).", "type": "text", "key": "domain", "required": true, - "placeholder": "https://vault.yourdomain.tld" + "default": "https://$SERVER_LAN_IP:30032" }, { - "question": "Admin Token", - "description": "Custom token to log into /admin. Should be at least 64 random characters - HexOS cannot enforce a minimum length here, so paste a long random value yourself if you want a specific one. Leave blank to auto-generate a secure 64-character token. You can blank this out later in TrueNAS to disable the admin portal entirely.", - "type": "text", + "question": "Set a password for the admin panel", + "description": "Leaving this blank disables the admin panel", + "type": "password", "key": "admin_token", "required": false, "default": "$RANDOM_STRING(64)" + }, + { + "question": "Enable new user registration", + "description": "It is recommended to disable user registration after creating all the users needed.", + "type": "select", + "key": "SIGNUPS_ALLOWED", + "required": true, + "options": [ + { + "text": "Yes", + "value": "True" + }, + { + "text": "No", + "value": "False" + } + ], + "default": "True" } ], "ensure_directories_exists": [ { "path": "$LOCATION(ApplicationsPerformance)" }, - { "path": "$LOCATION(ApplicationsPerformance)/vaultwarden/data", "snapshot": { "id": "data" } }, - { "path": "$LOCATION(ApplicationsPerformance)/vaultwarden/postgres", "snapshot": { "id": "postgres_data" } } + { "path": "$LOCATION(ApplicationsPerformance)/vaultwarden/data", "owner": { "user": "apps" }, "snapshot": { "id": "data" } }, + { "path": "$LOCATION(ApplicationsPerformance)/vaultwarden/postgres", "owner": { "user": "netdata", "group": "docker" }, "snapshot": { "id": "db" } } ], "app_values": { - "TZ": "$QUESTION(timezone)", "vaultwarden": { - "postgres_image_selector": "postgres_18_image", "db_password": "$RANDOM_STRING(32)", "admin_token": "$QUESTION(admin_token)", "enable_websocket": true, "additional_envs": [ { "name": "SIGNUPS_ALLOWED", - "value": "true" + "value": "$QUESTION(SIGNUPS_ALLOWED)" } ] }, - "run_as": { - "user": 568, - "group": 568 - }, "network": { "web_port": { "bind_mode": "published", - "port_number": "$QUESTION(web_port)" + "port_number": "30032" }, - "certificate_id": null, + "certificate_id": 1, "domain": "$QUESTION(domain)", "networks": [] }, From 899a6d34df2ffab57a4b9b48fd85ac9c3843ee6e Mon Sep 17 00:00:00 2001 From: acknologia <64101826+acknologia@users.noreply.github.com> Date: Mon, 5 Oct 2026 00:17:50 -0400 Subject: [PATCH 4/4] Update vaultwarden.json --- vaultwarden.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vaultwarden.json b/vaultwarden.json index 05efaac..a61c1f3 100644 --- a/vaultwarden.json +++ b/vaultwarden.json @@ -21,7 +21,7 @@ }, { "question": "Set a password for the admin panel", - "description": "Leaving this blank disables the admin panel", + "description": "Leaving this blank disables the admin panel. We reccomend disabling the admin panel when it no longer needs modifications", "type": "password", "key": "admin_token", "required": false,