diff --git a/scripts/json/configarr.json b/scripts/json/configarr.json index 7fb71ab..ac8c4dd 100644 --- a/scripts/json/configarr.json +++ b/scripts/json/configarr.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 4, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/docmost.json b/scripts/json/docmost.json index b002abc..3ceaede 100644 --- a/scripts/json/docmost.json +++ b/scripts/json/docmost.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/guardian.json b/scripts/json/guardian.json new file mode 100644 index 0000000..3cffd31 --- /dev/null +++ b/scripts/json/guardian.json @@ -0,0 +1,35 @@ +{ + "name": "Guardian", + "slug": "guardian", + "categories": [ + 13 + ], + "date_created": "2025-10-15", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": "https://github.com/HydroshieldMKII/Guardian/blob/main/README.md", + "config_path": "/opt/guardian/.env", + "website": "https://github.com/HydroshieldMKII/Guardian", + "logo": null, + "description": "Guardian is a lightweight companion app for Plex that lets you monitor, approve or block devices in real time. It helps you enforce per-user or global policies, stop unwanted sessions automatically and grant temporary access - all through a simple web interface.", + "install_methods": [ + { + "type": "default", + "script": "ct/guardian.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 6, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} \ No newline at end of file diff --git a/scripts/json/komga.json b/scripts/json/komga.json index 2c8bddf..0f2893f 100644 --- a/scripts/json/komga.json +++ b/scripts/json/komga.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/lazylibrarian.json b/scripts/json/lazylibrarian.json index f4c5376..02ba554 100644 --- a/scripts/json/lazylibrarian.json +++ b/scripts/json/lazylibrarian.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/leantime.json b/scripts/json/leantime.json index 5307665..b605eed 100644 --- a/scripts/json/leantime.json +++ b/scripts/json/leantime.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 20, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/librespeed-rust.json b/scripts/json/librespeed-rust.json index 09167f1..3c27ae1 100644 --- a/scripts/json/librespeed-rust.json +++ b/scripts/json/librespeed-rust.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 4, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/libretranslate.json b/scripts/json/libretranslate.json index 63257d8..33fac3d 100644 --- a/scripts/json/libretranslate.json +++ b/scripts/json/libretranslate.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 20, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/lidarr.json b/scripts/json/lidarr.json index d9a89cc..4b622fb 100644 --- a/scripts/json/lidarr.json +++ b/scripts/json/lidarr.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/limesurvey.json b/scripts/json/limesurvey.json new file mode 100644 index 0000000..cbc9b31 --- /dev/null +++ b/scripts/json/limesurvey.json @@ -0,0 +1,40 @@ +{ + "name": "LimeSurvey", + "slug": "limesurvey", + "categories": [ + 25 + ], + "date_created": "2025-10-15", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://www.limesurvey.org/manual/LimeSurvey_Manual", + "config_path": "", + "website": "https://community.limesurvey.org/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/limesurvey.webp", + "description": "LimeSurvey is the simple, quick and anonymous online survey tool that's bursting with juicy insights. Calling students, professionals and enterprises: design a survey and get the best insights, it’s free and as easy as squeezing a lime. Make a free online survey now!", + "install_methods": [ + { + "type": "default", + "script": "ct/limesurvey.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 2, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "You will need to input database credentials into LimeSurvey installer. Use `cat ~/limesurvey.creds` inside LXC.", + "type": "info" + } + ] +} \ No newline at end of file diff --git a/scripts/json/linkstack.json b/scripts/json/linkstack.json index 4a1748e..f46c604 100644 --- a/scripts/json/linkstack.json +++ b/scripts/json/linkstack.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 5, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/listmonk.json b/scripts/json/listmonk.json index 8ed2cb8..04040d8 100644 --- a/scripts/json/listmonk.json +++ b/scripts/json/listmonk.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/lldap.json b/scripts/json/lldap.json index 0c89edb..ae7c037 100644 --- a/scripts/json/lldap.json +++ b/scripts/json/lldap.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/lubelogger.json b/scripts/json/lubelogger.json index 421e2d4..cf2ce60 100644 --- a/scripts/json/lubelogger.json +++ b/scripts/json/lubelogger.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/lyrionmusicserver.json b/scripts/json/lyrionmusicserver.json index 5f29933..2d36055 100644 --- a/scripts/json/lyrionmusicserver.json +++ b/scripts/json/lyrionmusicserver.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 3, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/mafl.json b/scripts/json/mafl.json index 57e534a..6009c1c 100644 --- a/scripts/json/mafl.json +++ b/scripts/json/mafl.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 6, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/magicmirror.json b/scripts/json/magicmirror.json index dbb0383..c642f0c 100644 --- a/scripts/json/magicmirror.json +++ b/scripts/json/magicmirror.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 3, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/managemydamnlife.json b/scripts/json/managemydamnlife.json index 63d1008..85bf4ce 100644 --- a/scripts/json/managemydamnlife.json +++ b/scripts/json/managemydamnlife.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 6, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/mariadb.json b/scripts/json/mariadb.json index 3cb53bc..0c8618e 100644 --- a/scripts/json/mariadb.json +++ b/scripts/json/mariadb.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } }, { diff --git a/scripts/json/matterbridge.json b/scripts/json/matterbridge.json index b47cd06..de5dd37 100644 --- a/scripts/json/matterbridge.json +++ b/scripts/json/matterbridge.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/mealie.json b/scripts/json/mealie.json index b5a9dab..b12afa0 100644 --- a/scripts/json/mealie.json +++ b/scripts/json/mealie.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 10, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/mediamanager.json b/scripts/json/mediamanager.json index d7e77ab..f95006d 100644 --- a/scripts/json/mediamanager.json +++ b/scripts/json/mediamanager.json @@ -24,7 +24,7 @@ "ram": 3072, "hdd": 4, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/mediamtx.json b/scripts/json/mediamtx.json index badae4a..9c11392 100644 --- a/scripts/json/mediamtx.json +++ b/scripts/json/mediamtx.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/medusa.json b/scripts/json/medusa.json index 2881e98..b637bd2 100644 --- a/scripts/json/medusa.json +++ b/scripts/json/medusa.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 6, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/meilisearch.json b/scripts/json/meilisearch.json index 37a1064..7bb1f75 100644 --- a/scripts/json/meilisearch.json +++ b/scripts/json/meilisearch.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 7, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/memos.json b/scripts/json/memos.json index c7201df..c00e2b3 100644 --- a/scripts/json/memos.json +++ b/scripts/json/memos.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 3, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/meshcentral.json b/scripts/json/meshcentral.json index 18785a9..b876ae4 100644 --- a/scripts/json/meshcentral.json +++ b/scripts/json/meshcentral.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/metube.json b/scripts/json/metube.json index 79641fe..fa177df 100644 --- a/scripts/json/metube.json +++ b/scripts/json/metube.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 10, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/minarca.json b/scripts/json/minarca.json index d8aae6a..3e9cfad 100644 --- a/scripts/json/minarca.json +++ b/scripts/json/minarca.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 10, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/minio.json b/scripts/json/minio.json index 6a82859..dee096d 100644 --- a/scripts/json/minio.json +++ b/scripts/json/minio.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 5, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/mongodb.json b/scripts/json/mongodb.json index 325119a..5304dff 100644 --- a/scripts/json/mongodb.json +++ b/scripts/json/mongodb.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/monica.json b/scripts/json/monica.json index 9a78405..8e115ba 100644 --- a/scripts/json/monica.json +++ b/scripts/json/monica.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/motioneye.json b/scripts/json/motioneye.json index f8afe39..dc52328 100644 --- a/scripts/json/motioneye.json +++ b/scripts/json/motioneye.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/mqtt.json b/scripts/json/mqtt.json index 6e0bf07..41084eb 100644 --- a/scripts/json/mqtt.json +++ b/scripts/json/mqtt.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/myip.json b/scripts/json/myip.json index 336cbe5..4103dfa 100644 --- a/scripts/json/myip.json +++ b/scripts/json/myip.json @@ -19,8 +19,8 @@ "type": "default", "script": "ct/myip.sh", "resources": { - "cpu": 1, - "ram": 512, + "cpu": 2, + "ram": 1024, "hdd": 2, "os": "Debian", "version": "13" diff --git a/scripts/json/mylar3.json b/scripts/json/mylar3.json index 6baa9af..2f764bc 100644 --- a/scripts/json/mylar3.json +++ b/scripts/json/mylar3.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/myspeed.json b/scripts/json/myspeed.json index 485392b..caf7a11 100644 --- a/scripts/json/myspeed.json +++ b/scripts/json/myspeed.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/mysql.json b/scripts/json/mysql.json index 9f15bab..0c0811c 100644 --- a/scripts/json/mysql.json +++ b/scripts/json/mysql.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/n8n.json b/scripts/json/n8n.json index d80f0b4..ac7c396 100644 --- a/scripts/json/n8n.json +++ b/scripts/json/n8n.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 10, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/neo4j.json b/scripts/json/neo4j.json index 3988cc0..36b3d63 100644 --- a/scripts/json/neo4j.json +++ b/scripts/json/neo4j.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/netbox.json b/scripts/json/netbox.json index 3dbddfd..2d9a114 100644 --- a/scripts/json/netbox.json +++ b/scripts/json/netbox.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/nextcloud-vm.json b/scripts/json/nextcloud-vm.json index c488109..7ab7620 100644 --- a/scripts/json/nextcloud-vm.json +++ b/scripts/json/nextcloud-vm.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 12, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/nextcloudpi.json b/scripts/json/nextcloudpi.json index cb55487..435a71f 100644 --- a/scripts/json/nextcloudpi.json +++ b/scripts/json/nextcloudpi.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } }, { diff --git a/scripts/json/nextpvr.json b/scripts/json/nextpvr.json index 3c70e70..e4dd9bc 100644 --- a/scripts/json/nextpvr.json +++ b/scripts/json/nextpvr.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 5, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/nginxproxymanager.json b/scripts/json/nginxproxymanager.json index 8a46c1c..f036b05 100644 --- a/scripts/json/nginxproxymanager.json +++ b/scripts/json/nginxproxymanager.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/notifiarr.json b/scripts/json/notifiarr.json index a3cece6..14738e2 100644 --- a/scripts/json/notifiarr.json +++ b/scripts/json/notifiarr.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/nzbget.json b/scripts/json/nzbget.json index 4cac83d..e6281ce 100644 --- a/scripts/json/nzbget.json +++ b/scripts/json/nzbget.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/oauth2-proxy.json b/scripts/json/oauth2-proxy.json index 651b9b5..3d5da34 100644 --- a/scripts/json/oauth2-proxy.json +++ b/scripts/json/oauth2-proxy.json @@ -24,7 +24,7 @@ "ram": 512, "hdd": 3, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/octoprint.json b/scripts/json/octoprint.json index 7c0cba2..8c6d115 100644 --- a/scripts/json/octoprint.json +++ b/scripts/json/octoprint.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/odoo.json b/scripts/json/odoo.json index f3ce5eb..4f9116c 100644 --- a/scripts/json/odoo.json +++ b/scripts/json/odoo.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 6, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/omada.json b/scripts/json/omada.json index b5bfee4..107710a 100644 --- a/scripts/json/omada.json +++ b/scripts/json/omada.json @@ -23,7 +23,7 @@ "ram": 3072, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/ombi.json b/scripts/json/ombi.json index abbcd50..ca620b5 100644 --- a/scripts/json/ombi.json +++ b/scripts/json/ombi.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/omv.json b/scripts/json/omv.json index 5262bae..750ec98 100644 --- a/scripts/json/omv.json +++ b/scripts/json/omv.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/onedev.json b/scripts/json/onedev.json index 018462c..83bf6ca 100644 --- a/scripts/json/onedev.json +++ b/scripts/json/onedev.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/onlyoffice.json b/scripts/json/onlyoffice.json index ba6e1de..073fe2f 100644 --- a/scripts/json/onlyoffice.json +++ b/scripts/json/onlyoffice.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 10, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/opengist.json b/scripts/json/opengist.json index b62bfbe..13bada4 100644 --- a/scripts/json/opengist.json +++ b/scripts/json/opengist.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/openhab.json b/scripts/json/openhab.json index 55e026f..bc8b75a 100644 --- a/scripts/json/openhab.json +++ b/scripts/json/openhab.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/openobserve.json b/scripts/json/openobserve.json index e8f0d92..95545e9 100644 --- a/scripts/json/openobserve.json +++ b/scripts/json/openobserve.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 3, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/openproject.json b/scripts/json/openproject.json index 1c4dd77..e037f75 100644 --- a/scripts/json/openproject.json +++ b/scripts/json/openproject.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 8, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/openwebui.json b/scripts/json/openwebui.json index 8035801..5c0b76d 100644 --- a/scripts/json/openwebui.json +++ b/scripts/json/openwebui.json @@ -23,7 +23,7 @@ "ram": 8192, "hdd": 25, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/openziti-controller.json b/scripts/json/openziti-controller.json index ba7158d..2083dc8 100644 --- a/scripts/json/openziti-controller.json +++ b/scripts/json/openziti-controller.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/ots.json b/scripts/json/ots.json index f608137..abb00a3 100644 --- a/scripts/json/ots.json +++ b/scripts/json/ots.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 3, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/outline.json b/scripts/json/outline.json index 5c1debf..09336d2 100644 --- a/scripts/json/outline.json +++ b/scripts/json/outline.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/overseerr.json b/scripts/json/overseerr.json index 66ad3ba..135a481 100644 --- a/scripts/json/overseerr.json +++ b/scripts/json/overseerr.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/owncast.json b/scripts/json/owncast.json index 73e8cb3..a1234d8 100644 --- a/scripts/json/owncast.json +++ b/scripts/json/owncast.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/owncloud-vm.json b/scripts/json/owncloud-vm.json index 5545b2e..6622288 100644 --- a/scripts/json/owncloud-vm.json +++ b/scripts/json/owncloud-vm.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 12, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/pairdrop.json b/scripts/json/pairdrop.json index d0f4a52..c4cde03 100644 --- a/scripts/json/pairdrop.json +++ b/scripts/json/pairdrop.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/palmr.json b/scripts/json/palmr.json index 91c6531..14149b1 100644 --- a/scripts/json/palmr.json +++ b/scripts/json/palmr.json @@ -23,7 +23,7 @@ "ram": 6144, "hdd": 6, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/paperless-ai.json b/scripts/json/paperless-ai.json index d31f605..53d7c01 100644 --- a/scripts/json/paperless-ai.json +++ b/scripts/json/paperless-ai.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 20, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/paperless-gpt.json b/scripts/json/paperless-gpt.json index aaec7f1..e41132d 100644 --- a/scripts/json/paperless-gpt.json +++ b/scripts/json/paperless-gpt.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 7, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/paperless-ngx.json b/scripts/json/paperless-ngx.json index 6a5806e..1206407 100644 --- a/scripts/json/paperless-ngx.json +++ b/scripts/json/paperless-ngx.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 12, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/part-db.json b/scripts/json/part-db.json index 24e476d..278f776 100644 --- a/scripts/json/part-db.json +++ b/scripts/json/part-db.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/paymenter.json b/scripts/json/paymenter.json index b7baa81..441e192 100644 --- a/scripts/json/paymenter.json +++ b/scripts/json/paymenter.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 5, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/peanut.json b/scripts/json/peanut.json index 991fbef..9b1985a 100644 --- a/scripts/json/peanut.json +++ b/scripts/json/peanut.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 7, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/pelican-panel.json b/scripts/json/pelican-panel.json index d59cb41..2d8392e 100644 --- a/scripts/json/pelican-panel.json +++ b/scripts/json/pelican-panel.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/pelican-wings.json b/scripts/json/pelican-wings.json index a596fa5..1cc5d67 100644 --- a/scripts/json/pelican-wings.json +++ b/scripts/json/pelican-wings.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/pf2etools.json b/scripts/json/pf2etools.json index 2f4c98b..c9bb254 100644 --- a/scripts/json/pf2etools.json +++ b/scripts/json/pf2etools.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 6, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/photoprism.json b/scripts/json/photoprism.json index 6401ee3..6023ef0 100644 --- a/scripts/json/photoprism.json +++ b/scripts/json/photoprism.json @@ -23,7 +23,7 @@ "ram": 3072, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/phpipam.json b/scripts/json/phpipam.json index d1fa5ea..fef1379 100644 --- a/scripts/json/phpipam.json +++ b/scripts/json/phpipam.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/pialert.json b/scripts/json/pialert.json index e12c2e9..7603721 100644 --- a/scripts/json/pialert.json +++ b/scripts/json/pialert.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 3, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/pihole.json b/scripts/json/pihole.json index 0618c02..4f43ab3 100644 --- a/scripts/json/pihole.json +++ b/scripts/json/pihole.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/planka.json b/scripts/json/planka.json index 8089ec3..09d33f3 100644 --- a/scripts/json/planka.json +++ b/scripts/json/planka.json @@ -12,7 +12,7 @@ "documentation": "https://docs.planka.cloud/", "website": "https://planka.app/", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/planka.webp", - "config_path": "/opt/planka/planka/.env", + "config_path": "/opt/planka/.env", "description": "Planka is a powerful, project management platform that transforms how teams collaborate. Create projects with multiple boards, organize tasks with intuitive drag-and-drop cards, attach files, write rich markdown descriptions, set due dates, assign team members, and keep conversations flowing with comments and labels—all with seamless real-time updates and smart notifications.", "install_methods": [ { @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/plant-it.json b/scripts/json/plant-it.json index 4818bd5..e2dad0d 100644 --- a/scripts/json/plant-it.json +++ b/scripts/json/plant-it.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 5, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/pocketbase.json b/scripts/json/pocketbase.json index 59d6af5..6d8a626 100644 --- a/scripts/json/pocketbase.json +++ b/scripts/json/pocketbase.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/pocketid.json b/scripts/json/pocketid.json index cfaea71..7ee46b3 100644 --- a/scripts/json/pocketid.json +++ b/scripts/json/pocketid.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/podman-homeassistant.json b/scripts/json/podman-homeassistant.json index c0d9ea1..730a7cf 100644 --- a/scripts/json/podman-homeassistant.json +++ b/scripts/json/podman-homeassistant.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 16, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/podman.json b/scripts/json/podman.json index 49f33f4..b44ce16 100644 --- a/scripts/json/podman.json +++ b/scripts/json/podman.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/postgresql.json b/scripts/json/postgresql.json index 641a0c4..2871d54 100644 --- a/scripts/json/postgresql.json +++ b/scripts/json/postgresql.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } }, { diff --git a/scripts/json/privatebin.json b/scripts/json/privatebin.json index 274e9c2..aee0ef9 100644 --- a/scripts/json/privatebin.json +++ b/scripts/json/privatebin.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/projectsend.json b/scripts/json/projectsend.json index a1bdec8..0656a98 100644 --- a/scripts/json/projectsend.json +++ b/scripts/json/projectsend.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/prometheus-alertmanager.json b/scripts/json/prometheus-alertmanager.json index ff1a88b..5e201f1 100644 --- a/scripts/json/prometheus-alertmanager.json +++ b/scripts/json/prometheus-alertmanager.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/prometheus-blackbox-exporter.json b/scripts/json/prometheus-blackbox-exporter.json new file mode 100644 index 0000000..ea63758 --- /dev/null +++ b/scripts/json/prometheus-blackbox-exporter.json @@ -0,0 +1,41 @@ +{ + "name": "Prometheus Blackbox Exporter", + "slug": "prometheus-blackbox-exporter", + "categories": [ + 1, + 9 + ], + "date_created": "2025-10-10", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 9115, + "documentation": "https://github.com/prometheus/blackbox_exporter", + "website": "https://github.com/prometheus/blackbox_exporter", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/prometheus.webp", + "config_path": "/opt/blackbox-exporter/blackbox.yml", + "description": "An exporter allows blackbox probing of endpoints over HTTP, HTTPS, DNS, TCP, ICMP and gRPC for use by the Prometheus monitoring system.", + "install_methods": [ + { + "type": "default", + "script": "ct/prometheus-blackbox-exporter.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 4, + "os": "debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Please adjust the Proxmox credentials in the configuration file!", + "type": "info" + } + ] +} \ No newline at end of file diff --git a/scripts/json/prometheus-paperless-ngx-exporter.json b/scripts/json/prometheus-paperless-ngx-exporter.json index 30a296a..a42f3cb 100644 --- a/scripts/json/prometheus-paperless-ngx-exporter.json +++ b/scripts/json/prometheus-paperless-ngx-exporter.json @@ -23,7 +23,7 @@ "ram": 256, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/prometheus-pve-exporter.json b/scripts/json/prometheus-pve-exporter.json index 68836cc..2175b27 100644 --- a/scripts/json/prometheus-pve-exporter.json +++ b/scripts/json/prometheus-pve-exporter.json @@ -24,7 +24,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/prometheus.json b/scripts/json/prometheus.json index 7cbbd11..49828fe 100644 --- a/scripts/json/prometheus.json +++ b/scripts/json/prometheus.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } }, { diff --git a/scripts/json/prowlarr.json b/scripts/json/prowlarr.json index d6f0a5f..ea86161 100644 --- a/scripts/json/prowlarr.json +++ b/scripts/json/prowlarr.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/proxmox-backup-server.json b/scripts/json/proxmox-backup-server.json index 7d03338..90f0d0d 100644 --- a/scripts/json/proxmox-backup-server.json +++ b/scripts/json/proxmox-backup-server.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 10, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/proxmox-datacenter-manager.json b/scripts/json/proxmox-datacenter-manager.json index f285eb0..2657f94 100644 --- a/scripts/json/proxmox-datacenter-manager.json +++ b/scripts/json/proxmox-datacenter-manager.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 10, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/proxmox-mail-gateway.json b/scripts/json/proxmox-mail-gateway.json index 4183c28..e45259e 100644 --- a/scripts/json/proxmox-mail-gateway.json +++ b/scripts/json/proxmox-mail-gateway.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 10, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/ps5-mqtt.json b/scripts/json/ps5-mqtt.json index 635faba..c2f8e61 100644 --- a/scripts/json/ps5-mqtt.json +++ b/scripts/json/ps5-mqtt.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 3, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/pterodactyl-panel.json b/scripts/json/pterodactyl-panel.json index b1980a6..c2c6393 100644 --- a/scripts/json/pterodactyl-panel.json +++ b/scripts/json/pterodactyl-panel.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/pterodactyl-wings.json b/scripts/json/pterodactyl-wings.json index 9f2a323..370a561 100644 --- a/scripts/json/pterodactyl-wings.json +++ b/scripts/json/pterodactyl-wings.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/pulse.json b/scripts/json/pulse.json index 0ff1311..317fc5c 100644 --- a/scripts/json/pulse.json +++ b/scripts/json/pulse.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/qbittorrent.json b/scripts/json/qbittorrent.json index 94833c0..e9a96d3 100644 --- a/scripts/json/qbittorrent.json +++ b/scripts/json/qbittorrent.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/rabbitmq.json b/scripts/json/rabbitmq.json index fe2f7e3..fe15757 100644 --- a/scripts/json/rabbitmq.json +++ b/scripts/json/rabbitmq.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/radarr.json b/scripts/json/radarr.json index 39ee744..3886a8a 100644 --- a/scripts/json/radarr.json +++ b/scripts/json/radarr.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/radicale.json b/scripts/json/radicale.json index 7eda989..d72b623 100644 --- a/scripts/json/radicale.json +++ b/scripts/json/radicale.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/rclone.json b/scripts/json/rclone.json index 7d0697d..165c97b 100644 --- a/scripts/json/rclone.json +++ b/scripts/json/rclone.json @@ -20,10 +20,10 @@ "script": "ct/rclone.sh", "resources": { "cpu": 1, - "ram": 256, - "hdd": 1, + "ram": 512, + "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } }, { diff --git a/scripts/json/rdtclient.json b/scripts/json/rdtclient.json index 25f7892..189ca2a 100644 --- a/scripts/json/rdtclient.json +++ b/scripts/json/rdtclient.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/reactive-resume.json b/scripts/json/reactive-resume.json index 499a5b4..9d2b30a 100644 --- a/scripts/json/reactive-resume.json +++ b/scripts/json/reactive-resume.json @@ -22,8 +22,8 @@ "cpu": 2, "ram": 4096, "hdd": 8, - "os": "Debian", - "version": "12" + "os": "debian", + "version": "13" } } ], diff --git a/scripts/json/readeck.json b/scripts/json/readeck.json index d28b87f..13f9a98 100644 --- a/scripts/json/readeck.json +++ b/scripts/json/readeck.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/recyclarr.json b/scripts/json/recyclarr.json index 050deb6..b5616f2 100644 --- a/scripts/json/recyclarr.json +++ b/scripts/json/recyclarr.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/redis.json b/scripts/json/redis.json index 8791b74..6b865e0 100644 --- a/scripts/json/redis.json +++ b/scripts/json/redis.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } }, { diff --git a/scripts/json/resiliosync.json b/scripts/json/resiliosync.json index 246bc5c..656a785 100644 --- a/scripts/json/resiliosync.json +++ b/scripts/json/resiliosync.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/revealjs.json b/scripts/json/revealjs.json index bb7e4a7..c5dc4a8 100644 --- a/scripts/json/revealjs.json +++ b/scripts/json/revealjs.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/runtipi.json b/scripts/json/runtipi.json index 614d2ff..ff2214f 100644 --- a/scripts/json/runtipi.json +++ b/scripts/json/runtipi.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/rustdeskserver.json b/scripts/json/rustdeskserver.json index cd11d09..0a24247 100644 --- a/scripts/json/rustdeskserver.json +++ b/scripts/json/rustdeskserver.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } }, { diff --git a/scripts/json/rwmarkable.json b/scripts/json/rwmarkable.json new file mode 100644 index 0000000..c016e43 --- /dev/null +++ b/scripts/json/rwmarkable.json @@ -0,0 +1,35 @@ +{ + "name": "rwMarkable", + "slug": "rwmarkable", + "categories": [ + 12 + ], + "date_created": "2025-10-09", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": "https://github.com/fccview/rwMarkable/blob/main/README.md", + "website": "https://github.com/fccview/rwMarkable", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/rwmarkable.webp", + "config_path": "/opt/rwmarkable/.env", + "description": "A simple, self-hosted app for your checklists and notes. Tired of bloated, cloud-based to-do apps? rwMarkable is a lightweight alternative for managing your personal checklists and notes. It's built with Next.js 14, is easy to deploy, and keeps all your data on your own server.", + "install_methods": [ + { + "type": "default", + "script": "ct/rwmarkable.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 6, + "os": "debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} \ No newline at end of file diff --git a/scripts/json/sabnzbd.json b/scripts/json/sabnzbd.json index 67047eb..da9b2f4 100644 --- a/scripts/json/sabnzbd.json +++ b/scripts/json/sabnzbd.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 5, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/salt.json b/scripts/json/salt.json index f82aff4..aa0c581 100644 --- a/scripts/json/salt.json +++ b/scripts/json/salt.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 3, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/scraparr.json b/scripts/json/scraparr.json index 1ab5426..f25dfa3 100644 --- a/scripts/json/scraparr.json +++ b/scripts/json/scraparr.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/searxng.json b/scripts/json/searxng.json index 972cab0..3f5819b 100644 --- a/scripts/json/searxng.json +++ b/scripts/json/searxng.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 7, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/seelf.json b/scripts/json/seelf.json index dba576c..ca0b94c 100644 --- a/scripts/json/seelf.json +++ b/scripts/json/seelf.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 10, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/semaphore.json b/scripts/json/semaphore.json index fda5918..f3dd529 100644 --- a/scripts/json/semaphore.json +++ b/scripts/json/semaphore.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/sftpgo.json b/scripts/json/sftpgo.json index aa6945e..2991e4d 100644 --- a/scripts/json/sftpgo.json +++ b/scripts/json/sftpgo.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/signoz.json b/scripts/json/signoz.json index 2078fbd..ab3ee07 100644 --- a/scripts/json/signoz.json +++ b/scripts/json/signoz.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 20, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/silverbullet.json b/scripts/json/silverbullet.json index f1b2075..3cecbc6 100644 --- a/scripts/json/silverbullet.json +++ b/scripts/json/silverbullet.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/slskd.json b/scripts/json/slskd.json index 4ba02cf..61bd913 100644 --- a/scripts/json/slskd.json +++ b/scripts/json/slskd.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 4, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/smokeping.json b/scripts/json/smokeping.json index accdb2c..dc09def 100644 --- a/scripts/json/smokeping.json +++ b/scripts/json/smokeping.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/snipeit.json b/scripts/json/snipeit.json index 697166e..ef06fb0 100644 --- a/scripts/json/snipeit.json +++ b/scripts/json/snipeit.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/sonarqube.json b/scripts/json/sonarqube.json new file mode 100644 index 0000000..56b9264 --- /dev/null +++ b/scripts/json/sonarqube.json @@ -0,0 +1,36 @@ +{ + "name": "sonarqube", + "slug": "sonarqube", + "categories": [ + 20, + 19 + ], + "date_created": "2025-10-10", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 9000, + "documentation": "https://docs.sonarsource.com/sonarqube-server", + "config_path": "/opt/sonarqube/conf/sonar.properties", + "website": "https://www.sonarsource.com/products/sonarqube/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/sonarqube.webp", + "description": "SonarQube Server automates code quality and security reviews and provides actionable code intelligence so developers can focus on building better, faster.", + "install_methods": [ + { + "type": "default", + "script": "ct/sonarqube.sh", + "resources": { + "cpu": 4, + "ram": 6144, + "hdd": 25, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": "admin", + "password": "admin" + }, + "notes": [] +} \ No newline at end of file diff --git a/scripts/json/sonarr.json b/scripts/json/sonarr.json index deb6b32..9d26a54 100644 --- a/scripts/json/sonarr.json +++ b/scripts/json/sonarr.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/spoolman.json b/scripts/json/spoolman.json index c5e8392..0a5f990 100644 --- a/scripts/json/spoolman.json +++ b/scripts/json/spoolman.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/stirling-pdf.json b/scripts/json/stirling-pdf.json index 6aec585..5de8dbf 100644 --- a/scripts/json/stirling-pdf.json +++ b/scripts/json/stirling-pdf.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/streamlink-webui.json b/scripts/json/streamlink-webui.json index 8ac4da1..7785189 100644 --- a/scripts/json/streamlink-webui.json +++ b/scripts/json/streamlink-webui.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 5, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/stylus.json b/scripts/json/stylus.json index f7713f0..c63df4e 100644 --- a/scripts/json/stylus.json +++ b/scripts/json/stylus.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/suwayomi-server.json b/scripts/json/suwayomi-server.json index 3c80685..7a216fe 100644 --- a/scripts/json/suwayomi-server.json +++ b/scripts/json/suwayomi-server.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/swizzin.json b/scripts/json/swizzin.json index aaca2d3..d59e118 100644 --- a/scripts/json/swizzin.json +++ b/scripts/json/swizzin.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 20, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/syncthing.json b/scripts/json/syncthing.json index 9a118c6..681f3b6 100644 --- a/scripts/json/syncthing.json +++ b/scripts/json/syncthing.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } }, { diff --git a/scripts/json/tandoor.json b/scripts/json/tandoor.json index 30dea2f..a73fda7 100644 --- a/scripts/json/tandoor.json +++ b/scripts/json/tandoor.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 10, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/tasmoadmin.json b/scripts/json/tasmoadmin.json index 70af9b1..c398380 100644 --- a/scripts/json/tasmoadmin.json +++ b/scripts/json/tasmoadmin.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/tasmocompiler.json b/scripts/json/tasmocompiler.json index 6a7b4b9..451e746 100644 --- a/scripts/json/tasmocompiler.json +++ b/scripts/json/tasmocompiler.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 10, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/tautulli.json b/scripts/json/tautulli.json index 4759af7..23c0136 100644 --- a/scripts/json/tautulli.json +++ b/scripts/json/tautulli.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/tdarr.json b/scripts/json/tdarr.json index 99b3a93..af0f1f0 100644 --- a/scripts/json/tdarr.json +++ b/scripts/json/tdarr.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/teamspeak-server.json b/scripts/json/teamspeak-server.json index ba9a21b..cc63e45 100644 --- a/scripts/json/teamspeak-server.json +++ b/scripts/json/teamspeak-server.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } }, { diff --git a/scripts/json/technitiumdns.json b/scripts/json/technitiumdns.json index 9d481b7..4d890a6 100644 --- a/scripts/json/technitiumdns.json +++ b/scripts/json/technitiumdns.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/teddycloud.json b/scripts/json/teddycloud.json index c7a077c..5fe1b85 100644 --- a/scripts/json/teddycloud.json +++ b/scripts/json/teddycloud.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/telegraf.json b/scripts/json/telegraf.json index 77434dd..b1e842f 100644 --- a/scripts/json/telegraf.json +++ b/scripts/json/telegraf.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/threadfin.json b/scripts/json/threadfin.json index dc2d0c6..ef6e533 100644 --- a/scripts/json/threadfin.json +++ b/scripts/json/threadfin.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/tianji.json b/scripts/json/tianji.json index 236c7e6..0f36cc9 100644 --- a/scripts/json/tianji.json +++ b/scripts/json/tianji.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 12, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/traccar.json b/scripts/json/traccar.json index d4ca67c..470a85c 100644 --- a/scripts/json/traccar.json +++ b/scripts/json/traccar.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/traefik.json b/scripts/json/traefik.json index 12133f8..208f29a 100644 --- a/scripts/json/traefik.json +++ b/scripts/json/traefik.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } }, { diff --git a/scripts/json/transmission.json b/scripts/json/transmission.json index 4cc6cd8..a670109 100644 --- a/scripts/json/transmission.json +++ b/scripts/json/transmission.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } }, { diff --git a/scripts/json/trilium.json b/scripts/json/trilium.json index 392c01d..a4e728a 100644 --- a/scripts/json/trilium.json +++ b/scripts/json/trilium.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/tududi.json b/scripts/json/tududi.json index d7a8459..7d66167 100644 --- a/scripts/json/tududi.json +++ b/scripts/json/tududi.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 4, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/typesense.json b/scripts/json/typesense.json index ab2440c..4350fbd 100644 --- a/scripts/json/typesense.json +++ b/scripts/json/typesense.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/uhf.json b/scripts/json/uhf.json index 9002885..a14b1a4 100644 --- a/scripts/json/uhf.json +++ b/scripts/json/uhf.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 8, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/umami.json b/scripts/json/umami.json index c21ac83..6f82cc1 100644 --- a/scripts/json/umami.json +++ b/scripts/json/umami.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 12, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/umlautadaptarr.json b/scripts/json/umlautadaptarr.json index b51aab8..583b159 100644 --- a/scripts/json/umlautadaptarr.json +++ b/scripts/json/umlautadaptarr.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/unbound.json b/scripts/json/unbound.json index 71399e3..7ee76bc 100644 --- a/scripts/json/unbound.json +++ b/scripts/json/unbound.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/undefined.json b/scripts/json/undefined.json index b2c068a..e282cb7 100644 --- a/scripts/json/undefined.json +++ b/scripts/json/undefined.json @@ -1,13 +1,168 @@ [ { - "name": "sassanix/Warracker", - "version": "0.10.1.14", - "date": "2025-10-06T23:35:16Z" + "name": "wazuh/wazuh", + "version": "coverity-w42-4.14.0", + "date": "2025-10-16T12:13:42Z" + }, + { + "name": "prometheus/prometheus", + "version": "v0.307.1", + "date": "2025-10-17T08:41:04Z" + }, + { + "name": "nzbgetcom/nzbget", + "version": "v25.4", + "date": "2025-10-09T10:27:01Z" + }, + { + "name": "zwave-js/zwave-js-ui", + "version": "v11.5.2", + "date": "2025-10-17T08:20:13Z" + }, + { + "name": "pocketbase/pocketbase", + "version": "v0.30.4", + "date": "2025-10-17T08:03:10Z" + }, + { + "name": "juanfont/headscale", + "version": "v0.26.1", + "date": "2025-06-06T11:22:02Z" + }, + { + "name": "Jackett/Jackett", + "version": "v0.24.145", + "date": "2025-10-17T05:55:22Z" + }, + { + "name": "booklore-app/booklore", + "version": "v1.7.0", + "date": "2025-10-17T05:51:41Z" + }, + { + "name": "diced/zipline", + "version": "v4.3.2", + "date": "2025-10-17T04:13:23Z" + }, + { + "name": "jeedom/core", + "version": "4.4.20", + "date": "2025-10-17T00:27:08Z" + }, + { + "name": "steveiliop56/tinyauth", + "version": "v4.0.1", + "date": "2025-10-15T16:53:55Z" + }, + { + "name": "chrisbenincasa/tunarr", + "version": "v0.22.8", + "date": "2025-10-16T23:57:39Z" + }, + { + "name": "Stirling-Tools/Stirling-PDF", + "version": "v1.5.0", + "date": "2025-10-16T23:14:45Z" + }, + { + "name": "openhab/openhab-core", + "version": "5.0.2", + "date": "2025-10-16T21:27:35Z" + }, + { + "name": "ollama/ollama", + "version": "v0.12.6-rc1", + "date": "2025-10-16T16:36:25Z" + }, + { + "name": "runtipi/runtipi", + "version": "v4.5.0", + "date": "2025-10-16T19:43:25Z" + }, + { + "name": "minio/minio", + "version": "RELEASE.2025-10-15T17-29-55Z", + "date": "2025-10-16T19:33:51Z" + }, + { + "name": "keycloak/keycloak", + "version": "26.4.1", + "date": "2025-10-16T07:21:53Z" + }, + { + "name": "SigNoz/signoz", + "version": "v0.98.0-rc.1", + "date": "2025-10-16T17:49:50Z" + }, + { + "name": "open-webui/open-webui", + "version": "v0.6.34", + "date": "2025-10-16T16:55:58Z" + }, + { + "name": "dgtlmoon/changedetection.io", + "version": "0.50.25", + "date": "2025-10-16T15:00:16Z" + }, + { + "name": "tobychui/zoraxy", + "version": "v3.2.8", + "date": "2025-10-16T14:21:48Z" + }, + { + "name": "forgejo/forgejo", + "version": "v13.0.0", + "date": "2025-10-16T13:48:56Z" + }, + { + "name": "esphome/esphome", + "version": "2025.10.1", + "date": "2025-10-16T10:00:10Z" + }, + { + "name": "mattermost/mattermost", + "version": "server/public/v0.1.21", + "date": "2025-10-16T09:46:16Z" + }, + { + "name": "rcourtman/Pulse", + "version": "v4.24.0", + "date": "2025-10-16T09:08:47Z" + }, + { + "name": "zitadel/zitadel", + "version": "v4.4.0", + "date": "2025-10-16T07:20:34Z" + }, + { + "name": "morpheus65535/bazarr", + "version": "v1.5.3", + "date": "2025-09-20T12:12:33Z" + }, + { + "name": "cloudreve/cloudreve", + "version": "4.9.2", + "date": "2025-10-16T03:24:44Z" + }, + { + "name": "BerriAI/litellm", + "version": "v1.78.2-nightly", + "date": "2025-10-16T01:47:06Z" }, { "name": "outline/outline", - "version": "v1.0.0-1", - "date": "2025-10-06T23:16:32Z" + "version": "v1.0.0-test8", + "date": "2025-10-16T01:32:14Z" + }, + { + "name": "coder/code-server", + "version": "v4.104.3", + "date": "2025-10-07T17:42:11Z" + }, + { + "name": "inventree/InvenTree", + "version": "1.0.6", + "date": "2025-10-15T22:10:17Z" }, { "name": "Ombi-app/Ombi", @@ -15,104 +170,184 @@ "date": "2025-01-05T21:14:23Z" }, { - "name": "Kometa-Team/Kometa", - "version": "v2.2.2", - "date": "2025-10-06T21:31:07Z" + "name": "netbox-community/netbox", + "version": "v4.4.4", + "date": "2025-10-15T19:27:01Z" }, { - "name": "booklore-app/booklore", - "version": "v1.5.0", - "date": "2025-10-06T20:56:57Z" + "name": "immich-app/immich", + "version": "v2.1.0", + "date": "2025-10-15T19:24:14Z" }, { - "name": "grokability/snipe-it", - "version": "v8.3.3", - "date": "2025-10-06T19:57:17Z" + "name": "laurent22/joplin", + "version": "server-v3.4.4", + "date": "2025-09-25T13:19:26Z" + }, + { + "name": "karlomikus/bar-assistant", + "version": "v5.9.0", + "date": "2025-10-15T18:27:56Z" + }, + { + "name": "msgbyte/tianji", + "version": "v1.28.0", + "date": "2025-10-15T16:18:36Z" + }, + { + "name": "linkwarden/linkwarden", + "version": "v2.13.1", + "date": "2025-10-15T13:29:37Z" }, { "name": "meilisearch/meilisearch", - "version": "prototype-shorten-snapshot-creation-2", - "date": "2025-10-06T19:36:54Z" + "version": "prototype-docker-alpine-3-22-v8", + "date": "2025-10-15T13:20:20Z" }, { - "name": "TwiN/gatus", - "version": "v5.26.0", - "date": "2025-10-06T17:57:27Z" + "name": "TandoorRecipes/recipes", + "version": "2.3.3", + "date": "2025-10-15T13:18:27Z" + }, + { + "name": "jenkinsci/jenkins", + "version": "jenkins-2.528.1", + "date": "2025-10-15T12:51:20Z" + }, + { + "name": "Graylog2/graylog2-server", + "version": "7.0.0-beta.5", + "date": "2025-10-15T11:43:16Z" + }, + { + "name": "cockpit-project/cockpit", + "version": "349", + "date": "2025-10-15T11:43:12Z" + }, + { + "name": "blakeblackshear/frigate", + "version": "v0.14.1", + "date": "2024-08-29T22:32:51Z" + }, + { + "name": "crowdsecurity/crowdsec", + "version": "v1.7.1", + "date": "2025-10-15T10:44:03Z" + }, + { + "name": "openobserve/openobserve", + "version": "v0.15.2", + "date": "2025-10-15T07:42:29Z" + }, + { + "name": "wavelog/wavelog", + "version": "2.1.2", + "date": "2025-10-15T06:51:32Z" + }, + { + "name": "MediaBrowser/Emby.Releases", + "version": "4.9.1.80", + "date": "2025-09-30T20:25:16Z" }, { "name": "seerr-team/seerr", "version": "preview-seerr", - "date": "2025-10-06T16:50:29Z" + "date": "2025-10-14T22:21:33Z" }, { - "name": "zwave-js/zwave-js-ui", - "version": "v11.4.0", - "date": "2025-10-06T16:08:51Z" + "name": "apache/cassandra", + "version": "5.0.6-tentative", + "date": "2025-10-14T20:36:34Z" }, { - "name": "fuma-nama/fumadocs", - "version": "fumadocs-ui@15.8.4", - "date": "2025-10-06T15:41:49Z" + "name": "cloudflare/cloudflared", + "version": "2025.10.0", + "date": "2025-10-14T19:07:37Z" }, { - "name": "bunkerity/bunkerweb", - "version": "v1.6.5", - "date": "2025-10-06T15:25:17Z" + "name": "evcc-io/evcc", + "version": "0.209.2", + "date": "2025-10-14T18:55:44Z" }, { - "name": "bastienwirtz/homer", - "version": "v25.10.1", - "date": "2025-10-06T14:23:20Z" + "name": "crafty-controller/crafty-4", + "version": "v4.5.5", + "date": "2025-10-14T18:48:36Z" }, { - "name": "chrisvel/tududi", - "version": "v0.83", - "date": "2025-10-06T13:49:52Z" + "name": "tailscale/tailscale", + "version": "v1.88.4", + "date": "2025-10-14T17:57:52Z" }, { - "name": "dgtlmoon/changedetection.io", - "version": "0.50.16", - "date": "2025-10-06T13:40:13Z" + "name": "plankanban/planka", + "version": "planka-1.1.0", + "date": "2025-10-14T16:51:22Z" + }, + { + "name": "home-assistant/operating-system", + "version": "16.2", + "date": "2025-09-08T14:03:25Z" + }, + { + "name": "project-zot/zot", + "version": "v2.1.9", + "date": "2025-10-14T16:18:49Z" + }, + { + "name": "element-hq/synapse", + "version": "v1.140.0", + "date": "2025-10-14T15:57:12Z" }, { "name": "n8n-io/n8n", - "version": "n8n@1.114.3", - "date": "2025-10-06T12:22:22Z" + "version": "n8n@1.115.3", + "date": "2025-10-14T14:40:17Z" }, { - "name": "Graylog2/graylog2-server", - "version": "7.0.0-beta.3", - "date": "2025-10-06T11:25:12Z" + "name": "Prowlarr/Prowlarr", + "version": "v2.0.5.5160", + "date": "2025-08-23T21:23:11Z" }, { - "name": "inventree/InvenTree", - "version": "1.0.4", - "date": "2025-10-06T11:12:04Z" + "name": "rogerfar/rdt-client", + "version": "v2.0.119", + "date": "2025-10-13T23:15:11Z" }, { - "name": "wizarrrr/wizarr", - "version": "v2025.10.2", - "date": "2025-10-06T11:10:37Z" + "name": "jellyfin/jellyfin", + "version": "v10.10.7", + "date": "2025-04-05T19:14:59Z" }, { - "name": "mattermost/mattermost", - "version": "mattermost-redux@10.12.0", - "date": "2025-09-18T20:15:19Z" + "name": "hargata/lubelog", + "version": "v1.5.3", + "date": "2025-10-13T19:59:30Z" }, { - "name": "jordan-dalby/ByteStash", - "version": "v1.5.9", - "date": "2025-10-06T08:34:01Z" + "name": "bluenviron/mediamtx", + "version": "v1.15.2", + "date": "2025-10-13T17:03:15Z" }, { - "name": "Jackett/Jackett", - "version": "v0.24.82", - "date": "2025-10-06T07:56:13Z" + "name": "jhuckaby/Cronicle", + "version": "v0.9.97", + "date": "2025-10-13T16:13:50Z" }, { - "name": "firefly-iii/firefly-iii", - "version": "v6.4.0", - "date": "2025-09-13T16:38:21Z" + "name": "sabnzbd/sabnzbd", + "version": "4.5.3", + "date": "2025-08-25T13:59:56Z" + }, + { + "name": "node-red/node-red", + "version": "4.1.1", + "date": "2025-10-13T14:23:53Z" + }, + { + "name": "prometheus/alertmanager", + "version": "v0.29.0-rc.0", + "date": "2025-10-10T01:13:27Z" }, { "name": "moghtech/komodo", @@ -120,250 +355,330 @@ "date": "2025-09-27T20:59:46Z" }, { - "name": "henrygd/beszel", - "version": "v0.13.1", - "date": "2025-10-06T01:27:46Z" + "name": "firefly-iii/firefly-iii", + "version": "v6.4.2", + "date": "2025-10-07T08:11:58Z" }, { - "name": "hyperion-project/hyperion.ng", - "version": "2.1.1", - "date": "2025-06-14T17:45:06Z" + "name": "Luligu/matterbridge", + "version": "3.3.2", + "date": "2025-10-12T21:30:43Z" }, { - "name": "jeedom/core", - "version": "4.4.20", - "date": "2025-10-06T00:27:06Z" + "name": "globaleaks/globaleaks-whistleblowing-software", + "version": "v5.0.85", + "date": "2025-10-12T19:55:18Z" }, { - "name": "steveiliop56/tinyauth", - "version": "v3.6.2", - "date": "2025-07-17T12:08:03Z" + "name": "ellite/Wallos", + "version": "v4.4.1", + "date": "2025-10-12T15:38:24Z" }, { - "name": "9001/copyparty", - "version": "v1.19.16", - "date": "2025-10-05T23:28:59Z" + "name": "YunoHost/yunohost", + "version": "debian/12.1.28", + "date": "2025-10-12T14:55:27Z" }, { - "name": "sabnzbd/sabnzbd", - "version": "4.5.3", - "date": "2025-08-25T13:59:56Z" + "name": "PrivateBin/PrivateBin", + "version": "2.0.1", + "date": "2025-10-12T10:00:52Z" }, { - "name": "plankanban/planka", - "version": "planka-1.0.5", - "date": "2025-10-05T18:54:25Z" + "name": "authelia/authelia", + "version": "v4.39.13", + "date": "2025-10-12T05:45:48Z" }, { - "name": "msgbyte/tianji", - "version": "v1.27.6", - "date": "2025-10-05T17:27:46Z" + "name": "gelbphoenix/autocaliweb", + "version": "v0.10.4", + "date": "2025-10-11T19:53:39Z" }, { - "name": "pocket-id/pocket-id", - "version": "v1.13.0", - "date": "2025-10-05T15:41:31Z" + "name": "duplicati/duplicati", + "version": "v2.1.2.3-2.1.2.3_beta_2025-10-11", + "date": "2025-10-11T06:49:43Z" }, { - "name": "BookStackApp/BookStack", - "version": "v25.07.3", - "date": "2025-10-05T14:47:20Z" + "name": "home-assistant/core", + "version": "2025.10.2", + "date": "2025-10-10T21:20:11Z" }, { - "name": "runtipi/runtipi", - "version": "nightly", - "date": "2025-10-05T14:13:25Z" + "name": "0xERR0R/blocky", + "version": "v0.27.0", + "date": "2025-10-10T20:11:48Z" }, { - "name": "Prowlarr/Prowlarr", - "version": "v2.0.5.5160", - "date": "2025-08-23T21:23:11Z" + "name": "homarr-labs/homarr", + "version": "v1.41.0", + "date": "2025-10-10T19:15:38Z" }, { - "name": "TandoorRecipes/recipes", - "version": "2.3.0", - "date": "2025-10-05T11:13:58Z" + "name": "getumbrel/umbrel", + "version": "1.4.2", + "date": "2025-05-09T08:54:49Z" }, { - "name": "Radarr/Radarr", - "version": "v5.27.5.10198", - "date": "2025-09-03T12:08:43Z" + "name": "Brandawg93/PeaNUT", + "version": "v5.16.0", + "date": "2025-10-10T16:17:02Z" }, { - "name": "Lidarr/Lidarr", - "version": "v2.13.3.4711", - "date": "2025-08-28T20:06:24Z" + "name": "raydak-labs/configarr", + "version": "v1.17.1", + "date": "2025-10-10T16:12:41Z" }, { - "name": "seriousm4x/UpSnap", - "version": "5.2.2", - "date": "2025-10-05T09:12:17Z" + "name": "apache/tomcat", + "version": "10.1.48", + "date": "2025-10-10T14:46:53Z" }, { - "name": "evcc-io/evcc", - "version": "0.209.0", - "date": "2025-10-05T07:45:18Z" + "name": "semaphoreui/semaphore", + "version": "v2.16.34", + "date": "2025-10-10T11:57:38Z" }, { - "name": "pommee/goaway", - "version": "v0.62.11", - "date": "2025-10-05T07:31:57Z" + "name": "azukaar/Cosmos-Server", + "version": "v0.18.4", + "date": "2025-04-05T19:12:57Z" }, { - "name": "YunoHost/yunohost", - "version": "debian/12.1.27", - "date": "2025-10-05T02:16:42Z" + "name": "emqx/emqx", + "version": "e6.0.1-alpha.1", + "date": "2025-10-10T06:57:48Z" }, { - "name": "BerriAI/litellm", - "version": "v1.77.7-nightly", - "date": "2025-10-05T01:43:25Z" + "name": "mealie-recipes/mealie", + "version": "v3.3.2", + "date": "2025-10-10T03:45:06Z" }, { - "name": "webmin/webmin", - "version": "2.520", - "date": "2025-10-05T00:51:34Z" + "name": "projectsend/projectsend", + "version": "r1945", + "date": "2025-10-10T02:30:05Z" }, { - "name": "ollama/ollama", - "version": "v0.12.4-rc5", - "date": "2025-10-04T16:18:42Z" + "name": "FlareSolverr/FlareSolverr", + "version": "v3.4.2", + "date": "2025-10-09T19:05:48Z" }, { - "name": "SigNoz/signoz", - "version": "v0.97.0-rc.2", - "date": "2025-10-04T16:21:45Z" + "name": "henrygd/beszel", + "version": "v0.13.2", + "date": "2025-10-09T18:33:46Z" }, { - "name": "gtsteffaniak/filebrowser", - "version": "v0.8.8-beta", - "date": "2025-10-04T15:56:29Z" + "name": "ErsatzTV/ErsatzTV", + "version": "v25.7.1", + "date": "2025-10-09T15:42:11Z" }, { "name": "silverbulletmd/silverbullet", - "version": "2.1.7", - "date": "2025-10-04T13:41:43Z" + "version": "2.1.9", + "date": "2025-10-09T13:57:14Z" }, { - "name": "globaleaks/globaleaks-whistleblowing-software", - "version": "v5.0.84", - "date": "2025-10-04T08:06:12Z" + "name": "glpi-project/glpi", + "version": "11.0.1", + "date": "2025-10-09T12:34:15Z" }, { - "name": "ErsatzTV/ErsatzTV", - "version": "v25.7.0", - "date": "2025-10-04T00:36:45Z" + "name": "theonedev/onedev", + "version": "v13.0.8", + "date": "2025-10-09T07:13:00Z" }, { - "name": "rcourtman/Pulse", - "version": "v4.21.0", - "date": "2025-10-03T22:38:32Z" + "name": "documenso/documenso", + "version": "v1.12.10", + "date": "2025-10-09T04:32:35Z" }, { - "name": "Luligu/matterbridge", - "version": "3.3.0", - "date": "2025-10-03T21:22:14Z" + "name": "rabbitmq/rabbitmq-server", + "version": "v4.1.4", + "date": "2025-09-02T14:26:24Z" }, { - "name": "keycloak/keycloak", - "version": "26.4.0", - "date": "2025-09-30T11:49:13Z" + "name": "ipfs/kubo", + "version": "v0.38.1", + "date": "2025-10-08T21:34:07Z" }, { - "name": "homarr-labs/homarr", - "version": "v1.40.0", - "date": "2025-10-03T19:14:46Z" + "name": "pelican-dev/panel", + "version": "v1.0.0-beta26", + "date": "2025-10-08T20:12:11Z" }, { - "name": "wazuh/wazuh", - "version": "coverity-w41-4.14.0", - "date": "2025-10-03T18:56:57Z" + "name": "autobrr/autobrr", + "version": "v1.68.0", + "date": "2025-10-08T18:33:12Z" }, { - "name": "home-assistant/core", - "version": "2025.10.1", - "date": "2025-10-03T18:10:59Z" + "name": "AdguardTeam/AdGuardHome", + "version": "v0.107.67", + "date": "2025-09-29T14:45:57Z" + }, + { + "name": "advplyr/audiobookshelf", + "version": "v2.30.0", + "date": "2025-10-08T16:03:49Z" + }, + { + "name": "nicolargo/glances", + "version": "v4.3.3", + "date": "2025-10-08T15:45:21Z" + }, + { + "name": "Lidarr/Lidarr", + "version": "v2.14.5.4836", + "date": "2025-10-08T15:30:50Z" + }, + { + "name": "wizarrrr/wizarr", + "version": "v2025.10.3", + "date": "2025-10-08T15:29:15Z" + }, + { + "name": "FlowiseAI/Flowise", + "version": "flowise@3.0.8", + "date": "2025-10-08T12:19:18Z" + }, + { + "name": "gotson/komga", + "version": "1.23.5", + "date": "2025-10-08T07:31:37Z" + }, + { + "name": "pelican-dev/wings", + "version": "v1.0.0-beta18", + "date": "2025-10-07T21:05:57Z" + }, + { + "name": "C4illin/ConvertX", + "version": "v0.15.1", + "date": "2025-10-07T20:30:56Z" + }, + { + "name": "VictoriaMetrics/VictoriaMetrics", + "version": "pmm-6401-v1.127.0", + "date": "2025-10-07T14:31:32Z" + }, + { + "name": "chrisvel/tududi", + "version": "v0.83.2", + "date": "2025-10-07T14:30:15Z" + }, + { + "name": "thecfu/scraparr", + "version": "v2.2.5", + "date": "2025-10-07T12:34:31Z" + }, + { + "name": "pocket-id/pocket-id", + "version": "v1.13.1", + "date": "2025-10-07T06:32:50Z" + }, + { + "name": "sassanix/Warracker", + "version": "0.10.1.14", + "date": "2025-10-06T23:35:16Z" + }, + { + "name": "Radarr/Radarr", + "version": "v5.28.0.10274", + "date": "2025-10-06T21:31:07Z" + }, + { + "name": "Kometa-Team/Kometa", + "version": "v2.2.2", + "date": "2025-10-06T21:31:07Z" + }, + { + "name": "grokability/snipe-it", + "version": "v8.3.3", + "date": "2025-10-06T19:57:17Z" + }, + { + "name": "TwiN/gatus", + "version": "v5.26.0", + "date": "2025-10-06T17:57:27Z" + }, + { + "name": "fuma-nama/fumadocs", + "version": "fumadocs-ui@15.8.4", + "date": "2025-10-06T15:41:49Z" + }, + { + "name": "bunkerity/bunkerweb", + "version": "v1.6.5", + "date": "2025-10-06T15:25:17Z" + }, + { + "name": "bastienwirtz/homer", + "version": "v25.10.1", + "date": "2025-10-06T14:23:20Z" + }, + { + "name": "jordan-dalby/ByteStash", + "version": "v1.5.9", + "date": "2025-10-06T08:34:01Z" + }, + { + "name": "hyperion-project/hyperion.ng", + "version": "2.1.1", + "date": "2025-06-14T17:45:06Z" + }, + { + "name": "9001/copyparty", + "version": "v1.19.16", + "date": "2025-10-05T23:28:59Z" + }, + { + "name": "BookStackApp/BookStack", + "version": "v25.07.3", + "date": "2025-10-05T14:47:20Z" + }, + { + "name": "seriousm4x/UpSnap", + "version": "5.2.2", + "date": "2025-10-05T09:12:17Z" + }, + { + "name": "pommee/goaway", + "version": "v0.62.11", + "date": "2025-10-05T07:31:57Z" }, { - "name": "immich-app/immich", - "version": "v2.0.1", - "date": "2025-10-03T16:32:01Z" + "name": "webmin/webmin", + "version": "2.520", + "date": "2025-10-05T00:51:34Z" }, { - "name": "duplicati/duplicati", - "version": "v2.1.1.104-2.1.1.104_canary_2025-10-03", - "date": "2025-10-03T13:14:48Z" + "name": "gtsteffaniak/filebrowser", + "version": "v0.8.8-beta", + "date": "2025-10-04T15:56:29Z" }, { "name": "docker/compose", "version": "v2.40.0", "date": "2025-10-03T12:56:38Z" }, - { - "name": "nzbgetcom/nzbget", - "version": "v25.3", - "date": "2025-09-01T09:47:06Z" - }, - { - "name": "pocketbase/pocketbase", - "version": "v0.30.1", - "date": "2025-10-03T06:55:25Z" - }, { "name": "redis/redis", "version": "8.2.2", "date": "2025-10-03T06:22:38Z" }, - { - "name": "mealie-recipes/mealie", - "version": "v3.3.1", - "date": "2025-10-02T17:10:34Z" - }, - { - "name": "jhuckaby/Cronicle", - "version": "v0.9.95", - "date": "2025-10-02T16:07:18Z" - }, - { - "name": "theonedev/onedev", - "version": "v13.0.7", - "date": "2025-10-02T14:33:22Z" - }, - { - "name": "cockpit-project/cockpit", - "version": "348", - "date": "2025-10-02T13:51:28Z" - }, { "name": "kyantech/Palmr", "version": "v3.2.3-beta", "date": "2025-10-02T13:48:14Z" }, - { - "name": "apache/tomcat", - "version": "10.1.47", - "date": "2025-10-02T12:12:04Z" - }, { "name": "actualbudget/actual", "version": "v25.10.0", "date": "2025-10-02T11:34:39Z" }, - { - "name": "jenkinsci/jenkins", - "version": "jenkins-2.530", - "date": "2025-09-30T15:42:52Z" - }, - { - "name": "laurent22/joplin", - "version": "server-v3.4.4", - "date": "2025-09-25T13:19:26Z" - }, - { - "name": "ipfs/kubo", - "version": "v0.38.0", - "date": "2025-10-02T01:46:06Z" - }, { "name": "NodeBB/NodeBB", "version": "v4.6.0", @@ -374,26 +689,6 @@ "version": "2.6.2", "date": "2025-10-01T17:51:09Z" }, - { - "name": "glpi-project/glpi", - "version": "11.0.0", - "date": "2025-10-01T12:00:01Z" - }, - { - "name": "authelia/authelia", - "version": "v4.39.11", - "date": "2025-10-01T11:42:23Z" - }, - { - "name": "esphome/esphome", - "version": "2025.9.3", - "date": "2025-10-01T11:30:07Z" - }, - { - "name": "element-hq/synapse", - "version": "v1.139.0", - "date": "2025-10-01T08:24:16Z" - }, { "name": "Kozea/Radicale", "version": "v3.5.7.pypi", @@ -414,16 +709,6 @@ "version": "r8.2.1", "date": "2025-09-30T21:46:28Z" }, - { - "name": "MediaBrowser/Emby.Releases", - "version": "4.9.1.80", - "date": "2025-09-30T20:25:16Z" - }, - { - "name": "netbox-community/netbox", - "version": "v4.4.2", - "date": "2025-09-30T20:16:13Z" - }, { "name": "WordPress/WordPress", "version": "4.7.31", @@ -444,16 +729,6 @@ "version": "4.4.46", "date": "2025-09-30T13:21:24Z" }, - { - "name": "emqx/emqx", - "version": "e6.0.0", - "date": "2025-09-30T12:04:20Z" - }, - { - "name": "zitadel/zitadel", - "version": "v4.3.0", - "date": "2025-09-30T06:54:15Z" - }, { "name": "thomiceli/opengist", "version": "v1.11.1", @@ -484,66 +759,26 @@ "version": "v2.7.12", "date": "2025-05-29T17:08:26Z" }, - { - "name": "AdguardTeam/AdGuardHome", - "version": "v0.107.67", - "date": "2025-09-29T14:45:57Z" - }, { "name": "MDeLuise/plant-it", "version": "1.0.0", "date": "2025-09-29T13:53:50Z" }, - { - "name": "documenso/documenso", - "version": "v1.12.8", - "date": "2025-09-29T13:22:59Z" - }, { "name": "jupyter/notebook", "version": "@jupyter-notebook/ui-components@7.5.0-beta.0", "date": "2025-09-29T09:16:42Z" }, - { - "name": "open-webui/open-webui", - "version": "v0.6.32", - "date": "2025-09-29T06:13:12Z" - }, - { - "name": "autobrr/autobrr", - "version": "v1.67.0", - "date": "2025-09-28T20:49:34Z" - }, { "name": "lazy-media/Reactive-Resume", "version": "v1.2.6", "date": "2025-09-28T18:09:21Z" }, - { - "name": "jellyfin/jellyfin", - "version": "v10.10.7", - "date": "2025-04-05T19:14:59Z" - }, - { - "name": "karlomikus/bar-assistant", - "version": "v5.8.1", - "date": "2025-09-28T14:47:06Z" - }, { "name": "Pf2eToolsOrg/Pf2eTools", "version": "v0.10.1", "date": "2025-09-28T08:55:44Z" }, - { - "name": "morpheus65535/bazarr", - "version": "v1.5.3", - "date": "2025-09-20T12:12:33Z" - }, - { - "name": "raydak-labs/configarr", - "version": "v1.16.0", - "date": "2025-09-27T16:19:27Z" - }, { "name": "kimai/kimai", "version": "2.40.0", @@ -569,11 +804,6 @@ "version": "v6.13.5", "date": "2025-09-27T01:10:59Z" }, - { - "name": "coder/code-server", - "version": "v4.104.2", - "date": "2025-09-26T22:34:32Z" - }, { "name": "traefik/traefik", "version": "v3.5.3", @@ -584,46 +814,11 @@ "version": "v1.26.0-dev", "date": "2025-09-24T16:45:38Z" }, - { - "name": "crowdsecurity/crowdsec", - "version": "v1.7.0", - "date": "2025-09-01T10:10:34Z" - }, { "name": "Threadfin/Threadfin", "version": "1.2.39", "date": "2025-09-25T15:57:02Z" }, - { - "name": "tailscale/tailscale", - "version": "v1.88.3", - "date": "2025-09-25T15:49:37Z" - }, - { - "name": "linkwarden/linkwarden", - "version": "v2.13.0", - "date": "2025-09-25T15:19:02Z" - }, - { - "name": "bluenviron/mediamtx", - "version": "v1.15.1", - "date": "2025-09-25T13:35:14Z" - }, - { - "name": "forgejo/forgejo", - "version": "v14.0.0-dev", - "date": "2025-09-25T13:19:45Z" - }, - { - "name": "rabbitmq/rabbitmq-server", - "version": "v4.1.4", - "date": "2025-09-02T14:26:24Z" - }, - { - "name": "gelbphoenix/autocaliweb", - "version": "v0.10.2", - "date": "2025-09-24T18:23:36Z" - }, { "name": "rclone/rclone", "version": "v1.71.1", @@ -644,11 +839,6 @@ "version": "v2.0.10", "date": "2025-09-24T08:33:37Z" }, - { - "name": "chrisbenincasa/tunarr", - "version": "v0.22.5", - "date": "2025-09-24T00:01:40Z" - }, { "name": "grafana/grafana", "version": "v12.2.0", @@ -659,11 +849,6 @@ "version": "v2.2.0", "date": "2025-09-23T21:46:21Z" }, - { - "name": "getumbrel/umbrel", - "version": "1.4.2", - "date": "2025-05-09T08:54:49Z" - }, { "name": "postgres/postgres", "version": "REL_18_0", @@ -674,31 +859,16 @@ "version": "v1.5.0", "date": "2025-09-22T15:28:49Z" }, - { - "name": "cloudflare/cloudflared", - "version": "2025.9.1", - "date": "2025-09-22T13:32:14Z" - }, { "name": "itsmng/itsm-ng", "version": "v2.1.0", "date": "2025-09-22T09:23:37Z" }, - { - "name": "prometheus/prometheus", - "version": "v3.6.0", - "date": "2025-09-22T08:24:59Z" - }, { "name": "Athou/commafeed", "version": "5.11.1", "date": "2025-09-22T02:21:27Z" }, - { - "name": "openhab/openhab-core", - "version": "5.1.0.M1", - "date": "2025-09-21T13:17:32Z" - }, { "name": "gotify/server", "version": "v2.7.3", @@ -714,11 +884,6 @@ "version": "v0.17.0", "date": "2025-09-19T22:23:28Z" }, - { - "name": "hargata/lubelog", - "version": "v1.5.2", - "date": "2025-09-19T14:18:53Z" - }, { "name": "saltstack/salt", "version": "v3007.8", @@ -754,21 +919,11 @@ "version": "v0.23.0", "date": "2025-09-17T10:15:51Z" }, - { - "name": "semaphoreui/semaphore", - "version": "v2.16.31", - "date": "2025-09-17T09:57:55Z" - }, { "name": "WGDashboard/WGDashboard", "version": "v4.3.0.1", "date": "2025-09-17T08:50:39Z" }, - { - "name": "tobychui/zoraxy", - "version": "v3.2.5r2", - "date": "2025-07-21T12:52:26Z" - }, { "name": "Checkmk/checkmk", "version": "v2.4.0p12", @@ -779,11 +934,6 @@ "version": "0.20.3", "date": "2025-09-16T07:29:49Z" }, - { - "name": "wavelog/wavelog", - "version": "2.1.1", - "date": "2025-09-16T06:21:32Z" - }, { "name": "Paymenter/Paymenter", "version": "v1.3.4", @@ -794,26 +944,6 @@ "version": "3.2.0", "date": "2025-09-15T18:03:08Z" }, - { - "name": "FlareSolverr/FlareSolverr", - "version": "v3.4.1", - "date": "2025-09-15T18:01:24Z" - }, - { - "name": "ellite/Wallos", - "version": "v4.3.0", - "date": "2025-09-15T17:34:48Z" - }, - { - "name": "Brandawg93/PeaNUT", - "version": "v5.15.0", - "date": "2025-09-15T17:25:58Z" - }, - { - "name": "FlowiseAI/Flowise", - "version": "flowise@3.0.7", - "date": "2025-09-15T16:08:09Z" - }, { "name": "linuxserver/Heimdall", "version": "v2.7.6", @@ -824,16 +954,6 @@ "version": "v0.25.1", "date": "2025-09-15T14:57:30Z" }, - { - "name": "VictoriaMetrics/VictoriaMetrics", - "version": "pmm-6401-v1.126.0", - "date": "2025-09-15T11:32:31Z" - }, - { - "name": "crafty-controller/crafty-4", - "version": "v4.5.4", - "date": "2025-09-15T00:49:53Z" - }, { "name": "karakeep-app/karakeep", "version": "cli/v0.27.1", @@ -844,11 +964,6 @@ "version": "v0.8.1", "date": "2025-09-14T06:45:23Z" }, - { - "name": "cloudreve/cloudreve", - "version": "4.8.0", - "date": "2025-09-12T09:48:11Z" - }, { "name": "go-vikunja/vikunja", "version": "v1.0.0-rc0", @@ -869,41 +984,16 @@ "version": "1.11.3", "date": "2025-09-09T08:03:31Z" }, - { - "name": "gotson/komga", - "version": "1.23.4", - "date": "2025-09-09T02:47:05Z" - }, { "name": "Tautulli/Tautulli", "version": "v2.16.0", "date": "2025-09-09T01:05:45Z" }, - { - "name": "diced/zipline", - "version": "v4.3.1", - "date": "2025-09-08T22:26:23Z" - }, - { - "name": "home-assistant/operating-system", - "version": "16.2", - "date": "2025-09-08T14:03:25Z" - }, { "name": "paperless-ngx/paperless-ngx", "version": "v2.18.4", "date": "2025-09-07T23:57:32Z" }, - { - "name": "minio/minio", - "version": "RELEASE.2025-09-07T16-13-09Z", - "date": "2025-09-07T18:53:04Z" - }, - { - "name": "Stirling-Tools/Stirling-PDF", - "version": "v1.3.2", - "date": "2025-09-05T18:44:15Z" - }, { "name": "CrazyWolf13/streamlink-webui", "version": "0.6", @@ -914,41 +1004,11 @@ "version": "2.0.0-beta.2-temp", "date": "2025-03-28T08:45:58Z" }, - { - "name": "pelican-dev/panel", - "version": "v1.0.0-beta25", - "date": "2025-09-04T21:42:46Z" - }, - { - "name": "pelican-dev/wings", - "version": "v1.0.0-beta17", - "date": "2025-09-04T21:30:14Z" - }, - { - "name": "blakeblackshear/frigate", - "version": "v0.14.1", - "date": "2024-08-29T22:32:51Z" - }, - { - "name": "openobserve/openobserve", - "version": "v0.15.1", - "date": "2025-09-04T10:37:23Z" - }, - { - "name": "apache/cassandra", - "version": "cassandra-4.1.10", - "date": "2025-09-03T08:46:02Z" - }, { "name": "healthchecks/healthchecks", "version": "v3.11.2", "date": "2025-09-02T08:36:57Z" }, - { - "name": "project-zot/zot", - "version": "v2.1.8", - "date": "2025-09-01T19:20:42Z" - }, { "name": "seanmorley15/AdventureLog", "version": "v0.11.0", @@ -974,11 +1034,6 @@ "version": "v1.9.2", "date": "2025-08-28T07:06:14Z" }, - { - "name": "advplyr/audiobookshelf", - "version": "v2.29.0", - "date": "2025-08-25T22:43:20Z" - }, { "name": "plexguide/Huntarr.io", "version": "8.2.10", @@ -1029,11 +1084,6 @@ "version": "3.3.0", "date": "2025-08-17T19:57:11Z" }, - { - "name": "thecfu/scraparr", - "version": "v2.2.4", - "date": "2025-08-17T10:12:21Z" - }, { "name": "mylar3/mylar3", "version": "v0.8.3", @@ -1079,11 +1129,6 @@ "version": "v2.14.0", "date": "2025-08-05T08:31:35Z" }, - { - "name": "rogerfar/rdt-client", - "version": "v2.0.116", - "date": "2025-08-05T04:45:21Z" - }, { "name": "inspircd/inspircd", "version": "v4.8.0", @@ -1119,21 +1164,11 @@ "version": "v0.4.5", "date": "2025-07-29T16:39:18Z" }, - { - "name": "node-red/node-red", - "version": "4.1.0", - "date": "2025-07-29T15:15:26Z" - }, { "name": "navidrome/navidrome", "version": "v0.58.0", "date": "2025-07-28T18:59:50Z" }, - { - "name": "PrivateBin/PrivateBin", - "version": "2.0.0", - "date": "2025-07-28T07:48:40Z" - }, { "name": "umami-software/umami", "version": "v2.19.0", @@ -1169,11 +1204,6 @@ "version": "v2.12.6", "date": "2025-07-09T21:52:15Z" }, - { - "name": "nicolargo/glances", - "version": "v4.3.3", - "date": "2025-07-09T15:35:44Z" - }, { "name": "mysql/mysql-server", "version": "mysql-cluster-9.4.0", @@ -1259,16 +1289,6 @@ "version": "v0.8.4", "date": "2025-06-10T07:57:14Z" }, - { - "name": "juanfont/headscale", - "version": "v0.26.1", - "date": "2025-06-06T11:22:02Z" - }, - { - "name": "C4illin/ConvertX", - "version": "v0.14.1", - "date": "2025-06-04T08:57:15Z" - }, { "name": "release-argus/Argus", "version": "0.26.3", @@ -1279,11 +1299,6 @@ "version": "v1.13.0", "date": "2025-05-25T20:21:13Z" }, - { - "name": "0xERR0R/blocky", - "version": "v0.26.2", - "date": "2025-05-22T05:24:42Z" - }, { "name": "hansmi/prometheus-paperless-exporter", "version": "v0.0.8", @@ -1344,11 +1359,6 @@ "version": "v0.2.11", "date": "2025-04-12T21:13:08Z" }, - { - "name": "azukaar/Cosmos-Server", - "version": "v0.18.4", - "date": "2025-04-05T19:12:57Z" - }, { "name": "wger-project/wger", "version": "2.3", @@ -1409,11 +1419,6 @@ "version": "v2.4.2", "date": "2025-03-08T10:49:04Z" }, - { - "name": "prometheus/alertmanager", - "version": "v0.28.1", - "date": "2025-03-07T15:41:35Z" - }, { "name": "toniebox-reverse-engineering/teddycloud", "version": "tc_v0.6.4", @@ -1504,11 +1509,6 @@ "version": "v1.4.0", "date": "2024-08-06T19:57:33Z" }, - { - "name": "projectsend/projectsend", - "version": "r1720", - "date": "2024-08-03T04:07:20Z" - }, { "name": "hywax/mafl", "version": "v0.15.4", diff --git a/scripts/json/unifi.json b/scripts/json/unifi.json index a5bb9ff..f4d272c 100644 --- a/scripts/json/unifi.json +++ b/scripts/json/unifi.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/unmanic.json b/scripts/json/unmanic.json index f84aad1..092d7a5 100644 --- a/scripts/json/unmanic.json +++ b/scripts/json/unmanic.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/uptimekuma.json b/scripts/json/uptimekuma.json index aa69d2d..ba21c80 100644 --- a/scripts/json/uptimekuma.json +++ b/scripts/json/uptimekuma.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/urbackupserver.json b/scripts/json/urbackupserver.json index f8e5fa6..85eb70d 100644 --- a/scripts/json/urbackupserver.json +++ b/scripts/json/urbackupserver.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 16, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/vaultwarden.json b/scripts/json/vaultwarden.json index a8e98eb..5c01639 100644 --- a/scripts/json/vaultwarden.json +++ b/scripts/json/vaultwarden.json @@ -23,7 +23,7 @@ "ram": 6144, "hdd": 20, "os": "debian", - "version": "12" + "version": "13" } }, { diff --git a/scripts/json/victoriametrics.json b/scripts/json/victoriametrics.json index fcfca7e..fec4fb7 100644 --- a/scripts/json/victoriametrics.json +++ b/scripts/json/victoriametrics.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 16, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/vikunja.json b/scripts/json/vikunja.json index 49ccf10..4e9c4c6 100644 --- a/scripts/json/vikunja.json +++ b/scripts/json/vikunja.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/wallos.json b/scripts/json/wallos.json index dca0f0f..2be01b3 100644 --- a/scripts/json/wallos.json +++ b/scripts/json/wallos.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 5, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/wastebin.json b/scripts/json/wastebin.json index 2f7a1d5..39dd3ed 100644 --- a/scripts/json/wastebin.json +++ b/scripts/json/wastebin.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/watcharr.json b/scripts/json/watcharr.json index e71c3b8..195397c 100644 --- a/scripts/json/watcharr.json +++ b/scripts/json/watcharr.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/watchyourlan.json b/scripts/json/watchyourlan.json index e0598ce..2361e64 100644 --- a/scripts/json/watchyourlan.json +++ b/scripts/json/watchyourlan.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/wavelog.json b/scripts/json/wavelog.json index 68333c7..68cf932 100644 --- a/scripts/json/wavelog.json +++ b/scripts/json/wavelog.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 2, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/web-check.json b/scripts/json/web-check.json index 3dbe0a1..d94280d 100644 --- a/scripts/json/web-check.json +++ b/scripts/json/web-check.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 12, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/wger.json b/scripts/json/wger.json index 75cb0dc..4ded1cd 100644 --- a/scripts/json/wger.json +++ b/scripts/json/wger.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 6, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/whisparr.json b/scripts/json/whisparr.json index 2d83b66..af16b1c 100644 --- a/scripts/json/whisparr.json +++ b/scripts/json/whisparr.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/wikijs.json b/scripts/json/wikijs.json index 6370f56..8929972 100644 --- a/scripts/json/wikijs.json +++ b/scripts/json/wikijs.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 7, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/wireguard.json b/scripts/json/wireguard.json index 944fa0c..ac8e83e 100644 --- a/scripts/json/wireguard.json +++ b/scripts/json/wireguard.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } }, { diff --git a/scripts/json/wizarr.json b/scripts/json/wizarr.json index 933b760..35a676e 100644 --- a/scripts/json/wizarr.json +++ b/scripts/json/wizarr.json @@ -24,7 +24,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/wordpress.json b/scripts/json/wordpress.json index c78f5c6..3e2bd39 100644 --- a/scripts/json/wordpress.json +++ b/scripts/json/wordpress.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 5, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/yt-dlp-webui.json b/scripts/json/yt-dlp-webui.json index 24da577..a124cf9 100644 --- a/scripts/json/yt-dlp-webui.json +++ b/scripts/json/yt-dlp-webui.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/zammad.json b/scripts/json/zammad.json index aa00739..ef008e0 100644 --- a/scripts/json/zammad.json +++ b/scripts/json/zammad.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/zerotier-one.json b/scripts/json/zerotier-one.json index 63d9dec..964fdaf 100644 --- a/scripts/json/zerotier-one.json +++ b/scripts/json/zerotier-one.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/zigbee2mqtt.json b/scripts/json/zigbee2mqtt.json index d8ac5fc..373e035 100644 --- a/scripts/json/zigbee2mqtt.json +++ b/scripts/json/zigbee2mqtt.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 5, "os": "debian", - "version": "12" + "version": "13" } }, { diff --git a/scripts/json/zipline.json b/scripts/json/zipline.json index 9bb5506..3543440 100644 --- a/scripts/json/zipline.json +++ b/scripts/json/zipline.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 5, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/zitadel.json b/scripts/json/zitadel.json index 38f4e10..be05e80 100644 --- a/scripts/json/zitadel.json +++ b/scripts/json/zitadel.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 8, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/zoraxy.json b/scripts/json/zoraxy.json index 2d1cc1f..7d34349 100644 --- a/scripts/json/zoraxy.json +++ b/scripts/json/zoraxy.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 6, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/zot.json b/scripts/json/zot.json index d731f05..c06c63d 100644 --- a/scripts/json/zot.json +++ b/scripts/json/zot.json @@ -23,7 +23,7 @@ "ram": 2048, "hdd": 5, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/scripts/json/zwave-js-ui.json b/scripts/json/zwave-js-ui.json index 4e03843..67efedd 100644 --- a/scripts/json/zwave-js-ui.json +++ b/scripts/json/zwave-js-ui.json @@ -23,7 +23,7 @@ "ram": 1024, "hdd": 4, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/src/app/_components/AuthGuard.tsx b/src/app/_components/AuthGuard.tsx index 2b5fe08..4a0aacf 100644 --- a/src/app/_components/AuthGuard.tsx +++ b/src/app/_components/AuthGuard.tsx @@ -51,7 +51,7 @@ export function AuthGuard({ children }: AuthGuardProps) { return (
-
+

Loading...

diff --git a/src/app/_components/AuthModal.tsx b/src/app/_components/AuthModal.tsx index e26cb59..cb56602 100644 --- a/src/app/_components/AuthModal.tsx +++ b/src/app/_components/AuthModal.tsx @@ -39,7 +39,7 @@ export function AuthModal({ isOpen }: AuthModalProps) { {/* Header */}
- +

Authentication Required

@@ -90,7 +90,7 @@ export function AuthModal({ isOpen }: AuthModalProps) { {error && ( -
+
{error}
diff --git a/src/app/_components/Badge.tsx b/src/app/_components/Badge.tsx index 8fcd68e..cbf2ff5 100644 --- a/src/app/_components/Badge.tsx +++ b/src/app/_components/Badge.tsx @@ -18,11 +18,11 @@ export function Badge({ variant, type, noteType, status, executionMode, children case 'ct': return 'bg-primary/10 text-primary border-primary/20'; case 'addon': - return 'bg-purple-500/10 text-purple-400 border-purple-500/20'; + return 'bg-primary/10 text-primary border-primary/20'; case 'vm': - return 'bg-green-500/10 text-green-400 border-green-500/20'; + return 'bg-success/10 text-success border-success/20'; case 'pve': - return 'bg-orange-500/10 text-orange-400 border-orange-500/20'; + return 'bg-warning/10 text-warning border-warning/20'; default: return 'bg-muted text-muted-foreground border-border'; } @@ -34,7 +34,7 @@ export function Badge({ variant, type, noteType, status, executionMode, children return `inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium border ${type ? getTypeStyles(type) : getTypeStyles('unknown')}`; case 'updateable': - return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-500/10 text-green-400 border border-green-500/20'; + return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-success/10 text-success border border-success/20'; case 'privileged': return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-destructive/10 text-destructive border border-destructive/20'; @@ -42,11 +42,11 @@ export function Badge({ variant, type, noteType, status, executionMode, children case 'status': switch (status) { case 'success': - return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-500/10 text-green-400 border border-green-500/20'; + return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-success/10 text-success border border-success/20'; case 'failed': - return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-destructive/10 text-destructive border border-destructive/20'; + return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-error/10 text-error border border-error/20'; case 'in_progress': - return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-yellow-500/10 text-yellow-400 border border-yellow-500/20'; + return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-warning/10 text-warning border border-warning/20'; default: return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-muted text-muted-foreground border border-border'; } @@ -56,7 +56,7 @@ export function Badge({ variant, type, noteType, status, executionMode, children case 'local': return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-primary/10 text-primary border border-primary/20'; case 'ssh': - return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-purple-500/10 text-purple-400 border border-purple-500/20'; + return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-primary/10 text-primary border border-primary/20'; default: return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-muted text-muted-foreground border border-border'; } @@ -64,7 +64,7 @@ export function Badge({ variant, type, noteType, status, executionMode, children case 'note': switch (noteType) { case 'warning': - return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-yellow-500/10 text-yellow-400 border border-yellow-500/20'; + return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-warning/10 text-warning border border-warning/20'; case 'error': return 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-destructive/10 text-destructive border border-destructive/20'; default: diff --git a/src/app/_components/CategorySidebar.tsx b/src/app/_components/CategorySidebar.tsx index ed3883c..6786f98 100644 --- a/src/app/_components/CategorySidebar.tsx +++ b/src/app/_components/CategorySidebar.tsx @@ -212,7 +212,7 @@ export function CategorySidebar({ )} {/* Tooltip */} -
+
{category} ({count})
diff --git a/src/app/_components/ConfirmationModal.tsx b/src/app/_components/ConfirmationModal.tsx index 5314ced..739a289 100644 --- a/src/app/_components/ConfirmationModal.tsx +++ b/src/app/_components/ConfirmationModal.tsx @@ -53,9 +53,9 @@ export function ConfirmationModal({
{isDanger ? ( - + ) : ( - + )}

{title}

diff --git a/src/app/_components/DiffViewer.tsx b/src/app/_components/DiffViewer.tsx index 9123ac4..48a5b61 100644 --- a/src/app/_components/DiffViewer.tsx +++ b/src/app/_components/DiffViewer.tsx @@ -45,7 +45,7 @@ export function DiffViewer({ scriptSlug, filePath, isOpen, onClose }: DiffViewer key={index} className={`flex font-mono text-sm ${ isAdded - ? 'bg-green-500/10 text-green-400 border-l-4 border-green-500' + ? 'bg-success/10 text-success border-l-4 border-success' : isRemoved ? 'bg-destructive/10 text-destructive border-l-4 border-destructive' : 'bg-muted text-muted-foreground' @@ -55,7 +55,7 @@ export function DiffViewer({ scriptSlug, filePath, isOpen, onClose }: DiffViewer {lineNumber}
- + {isAdded ? '+' : isRemoved ? '-' : ' '} {content} @@ -99,8 +99,8 @@ export function DiffViewer({ scriptSlug, filePath, isOpen, onClose }: DiffViewer
-
- Added (Remote) +
+ Added (Remote)
diff --git a/src/app/_components/DownloadedScriptsTab.tsx b/src/app/_components/DownloadedScriptsTab.tsx index a0d263a..fcaca50 100644 --- a/src/app/_components/DownloadedScriptsTab.tsx +++ b/src/app/_components/DownloadedScriptsTab.tsx @@ -355,7 +355,7 @@ export function DownloadedScriptsTab({ onInstallScript }: DownloadedScriptsTabPr if (githubLoading || localLoading) { return (
-
+
Loading downloaded scripts...
); @@ -364,7 +364,7 @@ export function DownloadedScriptsTab({ onInstallScript }: DownloadedScriptsTabPr if (githubError || localError) { return (
-
+
diff --git a/src/app/_components/ErrorModal.tsx b/src/app/_components/ErrorModal.tsx index f0a82d4..db79384 100644 --- a/src/app/_components/ErrorModal.tsx +++ b/src/app/_components/ErrorModal.tsx @@ -40,9 +40,9 @@ export function ErrorModal({
{type === 'success' ? ( - + ) : ( - + )}

{title}

@@ -54,20 +54,20 @@ export function ErrorModal({ {details && (

{type === 'success' ? 'Details:' : 'Error Details:'}

                 {details}
               
diff --git a/src/app/_components/ExecutionModeModal.tsx b/src/app/_components/ExecutionModeModal.tsx index cd806cb..0e94ebb 100644 --- a/src/app/_components/ExecutionModeModal.tsx +++ b/src/app/_components/ExecutionModeModal.tsx @@ -149,7 +149,7 @@ export function ExecutionModeModal({ isOpen, onClose, onExecute, scriptName }: E
-
+

@@ -216,7 +216,7 @@ export function ExecutionModeModal({ isOpen, onClose, onExecute, scriptName }: E disabled={!selectedServer} variant="default" size="default" - className={!selectedServer ? 'bg-gray-400 cursor-not-allowed' : ''} + className={!selectedServer ? 'bg-muted-foreground cursor-not-allowed' : ''} > Run on Server diff --git a/src/app/_components/FilterBar.tsx b/src/app/_components/FilterBar.tsx index a48696d..6b10f07 100644 --- a/src/app/_components/FilterBar.tsx +++ b/src/app/_components/FilterBar.tsx @@ -171,7 +171,7 @@ export function FilterBar({ filters.showUpdatable === null ? "bg-muted text-muted-foreground hover:bg-accent hover:text-accent-foreground" : filters.showUpdatable === true - ? "border border-green-500/20 bg-green-500/10 text-green-400" + ? "border border-success/20 bg-success/10 text-success" : "border border-destructive/20 bg-destructive/10 text-destructive" }`} > @@ -388,7 +388,7 @@ export function FilterBar({ {filteredCount} of {totalScripts} scripts{" "} {hasActiveFilters && ( - + (filtered) )} @@ -398,7 +398,7 @@ export function FilterBar({ {/* Filter Persistence Status */} {!isLoadingFilters && saveFiltersEnabled && ( -

+
@@ -412,7 +412,7 @@ export function FilterBar({ onClick={clearAllFilters} variant="ghost" size="sm" - className="flex items-center space-x-1 text-red-600 hover:bg-red-50 hover:text-red-800 w-full sm:w-auto justify-center sm:justify-start" + className="flex items-center space-x-1 text-error hover:bg-error/10 hover:text-error-foreground w-full sm:w-auto justify-center sm:justify-start" > ('general'); const [githubToken, setGithubToken] = useState(''); const [saveFilter, setSaveFilter] = useState(false); @@ -298,7 +300,7 @@ export function GeneralSettingsModal({ isOpen, onClose }: GeneralSettingsModalPr
{/* Tabs */} -
+
+
+
+

Save Filters

Save your configured script filters.

@@ -379,7 +410,7 @@ export function GeneralSettingsModal({ isOpen, onClose }: GeneralSettingsModalPr onClick={clearSavedFilters} variant="outline" size="sm" - className="text-red-600 hover:text-red-800" + className="text-error hover:text-error/80" > Clear @@ -433,8 +464,8 @@ export function GeneralSettingsModal({ isOpen, onClose }: GeneralSettingsModalPr {message && (
{message.text}
@@ -561,8 +592,8 @@ export function GeneralSettingsModal({ isOpen, onClose }: GeneralSettingsModalPr {message && (
{message.text}
diff --git a/src/app/_components/HelpModal.tsx b/src/app/_components/HelpModal.tsx index 6c096e9..e234f5d 100644 --- a/src/app/_components/HelpModal.tsx +++ b/src/app/_components/HelpModal.tsx @@ -57,9 +57,9 @@ export function HelpModal({ isOpen, onClose, initialSection = 'server-settings'
  • Password: Use username and password authentication
  • SSH Key: Use SSH key pair for secure authentication
  • -
    -
    SSH Key Features:
    -
      +
      +
      SSH Key Features:
      +
      • Generate Key Pair: Create new SSH keys automatically
      • View Public Key: Copy public key for server setup
      • Persistent Storage: Keys are stored securely on disk
      • @@ -344,7 +344,7 @@ export function HelpModal({ isOpen, onClose, initialSection = 'server-settings'
      -
      +

      Web UI Access

      Automatically detect and access Web UI interfaces for your installed scripts. @@ -357,8 +357,8 @@ export function HelpModal({ isOpen, onClose, initialSection = 'server-settings'

    • Port Detection: Uses script metadata to get correct port (e.g., actualbudget:5006)
    • Editable Fields: Manually edit IP and port values as needed
    -
    -

    💡 How it works:

    +
    +

    💡 How it works:

    • • Scripts automatically detect URLs like http://10.10.10.1:3000 during installation
    • • Re-detect button runs hostname -I inside the container via SSH
    • @@ -586,9 +586,9 @@ export function HelpModal({ isOpen, onClose, initialSection = 'server-settings'

      To save configuration changes, you must type the container ID exactly as shown to confirm your changes.

      -
      -
      ⚠️ Important Warnings
      -
        +
        +
        ⚠️ Important Warnings
        +
        • • Modifying LXC configuration can break your container
        • • Some changes may require container restart to take effect
        • • Always backup your configuration before making changes
        • diff --git a/src/app/_components/InstalledScriptsTab.tsx b/src/app/_components/InstalledScriptsTab.tsx index cb1cd5e..0e73dac 100644 --- a/src/app/_components/InstalledScriptsTab.tsx +++ b/src/app/_components/InstalledScriptsTab.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useState, useEffect, useRef, useCallback, useMemo } from 'react'; +import { useState, useEffect, useRef, useMemo } from 'react'; import { api } from '~/trpc/react'; import { Terminal } from './Terminal'; import { StatusBadge } from './Badge'; @@ -204,6 +204,9 @@ export function InstalledScriptsTab() { } }); + // Ref for container status mutation to avoid dependency loops + const containerStatusMutationRef = useRef(containerStatusMutation); + // Cleanup orphaned scripts mutation const cleanupMutation = api.installedScripts.cleanupOrphanedScripts.useMutation({ onSuccess: (data) => { @@ -289,7 +292,8 @@ export function InstalledScriptsTab() { }); // Re-fetch status for all containers using bulk method (in background) - fetchContainerStatuses(); + // Trigger status check by updating scripts length dependency + // This will be handled by the useEffect that watches scripts.length } else { // Show error message from backend const errorMessage = data.error ?? 'Unknown error occurred'; @@ -362,41 +366,15 @@ export function InstalledScriptsTab() { const scripts: InstalledScript[] = useMemo(() => (scriptsData?.scripts as InstalledScript[]) ?? [], [scriptsData?.scripts]); const stats = statsData?.stats; - // Update ref when scripts change + // Update refs when data changes useEffect(() => { scriptsRef.current = scripts; }, [scripts]); + + useEffect(() => { + containerStatusMutationRef.current = containerStatusMutation; + }, [containerStatusMutation]); - // Function to fetch container statuses - simplified to just check all servers - const fetchContainerStatuses = useCallback(() => { - console.log('fetchContainerStatuses called, isPending:', containerStatusMutation.isPending); - - // Prevent multiple simultaneous status checks - if (containerStatusMutation.isPending) { - console.log('Status check already pending, skipping'); - return; - } - - // Clear any existing timeout - if (statusCheckTimeoutRef.current) { - clearTimeout(statusCheckTimeoutRef.current); - } - - // Debounce status checks by 500ms - statusCheckTimeoutRef.current = setTimeout(() => { - const currentScripts = scriptsRef.current; - - // Get unique server IDs from scripts - const serverIds = [...new Set(currentScripts - .filter(script => script.server_id) - .map(script => script.server_id!))]; - - console.log('Executing status check for server IDs:', serverIds); - if (serverIds.length > 0) { - containerStatusMutation.mutate({ serverIds }); - } - }, 500); - }, []); // Run cleanup when component mounts and scripts are loaded (only once) useEffect(() => { @@ -410,7 +388,32 @@ export function InstalledScriptsTab() { useEffect(() => { if (scripts.length > 0) { console.log('Status check triggered - scripts length:', scripts.length); - fetchContainerStatuses(); + + // Clear any existing timeout + if (statusCheckTimeoutRef.current) { + clearTimeout(statusCheckTimeoutRef.current); + } + + // Debounce status checks by 500ms + statusCheckTimeoutRef.current = setTimeout(() => { + // Prevent multiple simultaneous status checks + if (containerStatusMutationRef.current.isPending) { + console.log('Status check already pending, skipping'); + return; + } + + const currentScripts = scriptsRef.current; + + // Get unique server IDs from scripts + const serverIds = [...new Set(currentScripts + .filter(script => script.server_id) + .map(script => script.server_id!))]; + + console.log('Executing status check for server IDs:', serverIds); + if (serverIds.length > 0) { + containerStatusMutationRef.current.mutate({ serverIds }); + } + }, 500); } }, [scripts.length]); @@ -896,22 +899,22 @@ export function InstalledScriptsTab() {

          Installed Scripts

          {stats && ( -
          -
          -
          {stats.total}
          -
          Total Installations
          +
          +
          +
          {stats.total}
          +
          Total Installations
          -
          -
          {stats.byStatus.success}
          -
          Successful
          -
          -
          -
          {stats.byStatus.failed}
          -
          Failed
          +
          +
          + {scriptsWithStatus.filter(script => script.container_status === 'running').length} +
          +
          Running LXC
          -
          -
          {stats.byStatus.in_progress}
          -
          In Progress
          +
          +
          + {scriptsWithStatus.filter(script => script.container_status === 'stopped').length} +
          +
          Stopped LXC
          )} @@ -933,7 +936,15 @@ export function InstalledScriptsTab() { {showAutoDetectForm ? 'Cancel Auto-Detect' : '🔍 Auto-Detect LXC Containers (Must contain a tag with "community-script")'} - + {script.container_id && ( handleUpdateScript(script)} disabled={containerStatuses.get(script.id) === 'stopped'} - className="text-cyan-300 hover:text-cyan-200 hover:bg-cyan-900/20 focus:bg-cyan-900/20" + className="text-muted-foreground hover:text-foreground hover:bg-muted/20 focus:bg-muted/20" > Update @@ -1494,7 +1505,7 @@ export function InstalledScriptsTab() { handleOpenShell(script)} disabled={containerStatuses.get(script.id) === 'stopped'} - className="text-gray-300 hover:text-gray-200 hover:bg-gray-800/20 focus:bg-gray-800/20" + className="text-muted-foreground hover:text-foreground hover:bg-muted/20 focus:bg-muted/20" > Shell @@ -1503,7 +1514,7 @@ export function InstalledScriptsTab() { handleOpenWebUI(script)} disabled={containerStatuses.get(script.id) === 'stopped'} - className="text-blue-300 hover:text-blue-200 hover:bg-blue-900/20 focus:bg-blue-900/20" + className="text-muted-foreground hover:text-foreground hover:bg-muted/20 focus:bg-muted/20" > Open UI @@ -1512,28 +1523,28 @@ export function InstalledScriptsTab() { handleAutoDetectWebUI(script)} disabled={autoDetectWebUIMutation.isPending ?? containerStatuses.get(script.id) === 'stopped'} - className="text-blue-300 hover:text-blue-200 hover:bg-blue-900/20 focus:bg-blue-900/20" + className="text-muted-foreground hover:text-foreground hover:bg-muted/20 focus:bg-muted/20" > {autoDetectWebUIMutation.isPending ? 'Re-detect...' : 'Re-detect IP/Port'} )} {script.container_id && script.execution_mode === 'ssh' && ( <> - + handleLXCSettings(script)} - className="text-purple-300 hover:text-purple-200 hover:bg-purple-900/20 focus:bg-purple-900/20" + className="text-muted-foreground hover:text-foreground hover:bg-muted/20 focus:bg-muted/20" > LXC Settings - + handleStartStop(script, (containerStatuses.get(script.id) ?? 'unknown') === 'running' ? 'stop' : 'start')} disabled={controllingScriptId === script.id || (containerStatuses.get(script.id) ?? 'unknown') === 'unknown'} className={(containerStatuses.get(script.id) ?? 'unknown') === 'running' - ? "text-red-300 hover:text-red-200 hover:bg-red-900/20 focus:bg-red-900/20" - : "text-green-300 hover:text-green-200 hover:bg-green-900/20 focus:bg-green-900/20" + ? "text-error hover:text-error-foreground hover:bg-error/20 focus:bg-error/20" + : "text-success hover:text-success-foreground hover:bg-success/20 focus:bg-success/20" } > {controllingScriptId === script.id ? 'Working...' : (containerStatuses.get(script.id) ?? 'unknown') === 'running' ? 'Stop' : 'Start'} @@ -1541,7 +1552,7 @@ export function InstalledScriptsTab() { handleDestroy(script)} disabled={controllingScriptId === script.id} - className="text-red-300 hover:text-red-200 hover:bg-red-900/20 focus:bg-red-900/20" + className="text-error hover:text-error-foreground hover:bg-error/20 focus:bg-error/20" > {controllingScriptId === script.id ? 'Working...' : 'Destroy'} @@ -1549,11 +1560,11 @@ export function InstalledScriptsTab() { )} {(!script.container_id || script.execution_mode !== 'ssh') && ( <> - + handleDeleteScript(Number(script.id))} disabled={deleteScriptMutation.isPending} - className="text-red-300 hover:text-red-200 hover:bg-red-900/20 focus:bg-red-900/20" + className="text-muted-foreground hover:text-foreground hover:bg-muted/20 focus:bg-muted/20" > {deleteScriptMutation.isPending ? 'Deleting...' : 'Delete'} diff --git a/src/app/_components/LXCSettingsModal.tsx b/src/app/_components/LXCSettingsModal.tsx index 5d1b6f4..39b5ecb 100644 --- a/src/app/_components/LXCSettingsModal.tsx +++ b/src/app/_components/LXCSettingsModal.tsx @@ -40,7 +40,7 @@ interface LXCSettingsModalProps { onSave: () => void; } -export function LXCSettingsModal({ isOpen, script, onClose, onSave }: LXCSettingsModalProps) { +export function LXCSettingsModal({ isOpen, script, onClose, onSave: _onSave }: LXCSettingsModalProps) { const [activeTab, setActiveTab] = useState('common'); const [showConfirmation, setShowConfirmation] = useState(false); const [showResultModal, setShowResultModal] = useState(false); @@ -287,14 +287,14 @@ export function LXCSettingsModal({ isOpen, script, onClose, onSave }: LXCSetting {/* Warning Banner */} {configData?.has_changes && ( -
          +
          - +
          -

          +

          Configuration Mismatch Detected

          -

          +

          The cached configuration differs from the server. Click "Sync from Server" to get the latest version.

          @@ -305,16 +305,16 @@ export function LXCSettingsModal({ isOpen, script, onClose, onSave }: LXCSetting {/* Error Message */} {error && ( -
          +
          - +
          -

          Error

          -

          {error}

          +

          Error

          +

          {error}

          @@ -331,8 +331,8 @@ export function LXCSettingsModal({ isOpen, script, onClose, onSave }: LXCSetting onClick={() => setActiveTab('common')} className={`py-2 px-1 border-b-2 font-medium text-sm ${ activeTab === 'common' - ? 'border-blue-500 text-blue-600' - : 'border-transparent text-muted-foreground hover:text-foreground hover:border-gray-300' + ? 'border-primary text-primary' + : 'border-transparent text-muted-foreground hover:text-foreground hover:border-border' }`} > Common Settings @@ -341,8 +341,8 @@ export function LXCSettingsModal({ isOpen, script, onClose, onSave }: LXCSetting onClick={() => setActiveTab('advanced')} className={`py-2 px-1 border-b-2 font-medium text-sm ${ activeTab === 'advanced' - ? 'border-blue-500 text-blue-600' - : 'border-transparent text-muted-foreground hover:text-foreground hover:border-gray-300' + ? 'border-primary text-primary' + : 'border-transparent text-muted-foreground hover:text-foreground hover:border-border' }`} > Advanced Settings @@ -423,7 +423,7 @@ export function LXCSettingsModal({ isOpen, script, onClose, onSave }: LXCSetting id="onboot" checked={formData.onboot} onChange={(e) => handleInputChange('onboot', e.target.checked)} - className="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded" + className="h-4 w-4 text-primary focus:ring-primary border-border rounded" />
          @@ -433,7 +433,7 @@ export function LXCSettingsModal({ isOpen, script, onClose, onSave }: LXCSetting id="unprivileged" checked={formData.unprivileged} onChange={(e) => handleInputChange('unprivileged', e.target.checked)} - className="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded" + className="h-4 w-4 text-primary focus:ring-primary border-border rounded" />
          @@ -568,7 +568,7 @@ export function LXCSettingsModal({ isOpen, script, onClose, onSave }: LXCSetting id="feature_keyctl" checked={formData.feature_keyctl} onChange={(e) => handleInputChange('feature_keyctl', e.target.checked)} - className="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded" + className="h-4 w-4 text-primary focus:ring-primary border-border rounded" />
          @@ -578,7 +578,7 @@ export function LXCSettingsModal({ isOpen, script, onClose, onSave }: LXCSetting id="feature_nesting" checked={formData.feature_nesting} onChange={(e) => handleInputChange('feature_nesting', e.target.checked)} - className="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded" + className="h-4 w-4 text-primary focus:ring-primary border-border rounded" />
          @@ -588,7 +588,7 @@ export function LXCSettingsModal({ isOpen, script, onClose, onSave }: LXCSetting id="feature_fuse" checked={formData.feature_fuse} onChange={(e) => handleInputChange('feature_fuse', e.target.checked)} - className="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded" + className="h-4 w-4 text-primary focus:ring-primary border-border rounded" />
          @@ -696,9 +696,9 @@ export function LXCSettingsModal({ isOpen, script, onClose, onSave }: LXCSetting
          {resultType === 'success' ? ( - + ) : ( - + )}

          {resultType === 'success' ? 'Success' : 'Error'} diff --git a/src/app/_components/PublicKeyModal.tsx b/src/app/_components/PublicKeyModal.tsx index 2afc80d..980100b 100644 --- a/src/app/_components/PublicKeyModal.tsx +++ b/src/app/_components/PublicKeyModal.tsx @@ -97,8 +97,8 @@ export function PublicKeyModal({ isOpen, onClose, publicKey, serverName, serverI {/* Header */}
          -
          - +
          +

          SSH Public Key

          diff --git a/src/app/_components/ReleaseNotesModal.tsx b/src/app/_components/ReleaseNotesModal.tsx index c684dbb..3170967 100644 --- a/src/app/_components/ReleaseNotesModal.tsx +++ b/src/app/_components/ReleaseNotesModal.tsx @@ -67,7 +67,7 @@ export function ReleaseNotesModal({ isOpen, onClose, highlightVersion }: Release {/* Header */}
          - +

          Release Notes

          - + {script.container_id && ( Update @@ -311,7 +311,7 @@ export function ScriptInstallationCard({ Shell @@ -320,20 +320,20 @@ export function ScriptInstallationCard({ Open UI )} {script.container_id && script.execution_mode === 'ssh' && ( <> - + onStartStop(containerStatus === 'running' ? 'stop' : 'start')} disabled={isControlling || containerStatus === 'unknown'} className={containerStatus === 'running' - ? "text-red-300 hover:text-red-200 hover:bg-red-900/20 focus:bg-red-900/20" - : "text-green-300 hover:text-green-200 hover:bg-green-900/20 focus:bg-green-900/20" + ? "text-error hover:text-error-foreground hover:bg-error/20 focus:bg-error/20" + : "text-success hover:text-success-foreground hover:bg-success/20 focus:bg-success/20" } > {isControlling ? 'Working...' : containerStatus === 'running' ? 'Stop' : 'Start'} @@ -341,7 +341,7 @@ export function ScriptInstallationCard({ {isControlling ? 'Working...' : 'Destroy'} @@ -349,11 +349,11 @@ export function ScriptInstallationCard({ )} {(!script.container_id || script.execution_mode !== 'ssh') && ( <> - + {isDeleting ? 'Deleting...' : 'Delete'} diff --git a/src/app/_components/ScriptsGrid.tsx b/src/app/_components/ScriptsGrid.tsx index 8182b55..6ff8142 100644 --- a/src/app/_components/ScriptsGrid.tsx +++ b/src/app/_components/ScriptsGrid.tsx @@ -573,7 +573,7 @@ export function ScriptsGrid({ onInstallScript }: ScriptsGridProps) { if (githubLoading || localLoading) { return (
          -
          +
          Loading scripts...
          ); @@ -582,7 +582,7 @@ export function ScriptsGrid({ onInstallScript }: ScriptsGridProps) { if (githubError || localError) { return (
          -
          +
          @@ -684,7 +684,7 @@ export function ScriptsGrid({ onInstallScript }: ScriptsGridProps) { onToggleSelect={toggleScriptSelection} /> {/* NEW badge */} -
          +
          NEW
          @@ -705,7 +705,7 @@ export function ScriptsGrid({ onInstallScript }: ScriptsGridProps) { disabled={loadSingleScriptMutation.isPending} variant="outline" size="sm" - className="bg-blue-500/10 hover:bg-blue-500/20 border-blue-500/30 text-blue-300 hover:text-blue-200 hover:border-blue-400/50" + className="bg-info/10 hover:bg-info/20 border-info/30 text-info hover:text-info-foreground hover:border-info/50" > {loadSingleScriptMutation.isPending ? ( <> @@ -791,7 +791,7 @@ export function ScriptsGrid({ onInstallScript }: ScriptsGridProps) {
          0 ? 'bg-yellow-500' : 'bg-primary' + downloadProgress.failed.length > 0 ? 'bg-warning' : 'bg-primary' }`} style={{ width: `${(downloadProgress.current / downloadProgress.total) * 100}%` }} /> @@ -811,9 +811,9 @@ export function ScriptsGrid({ onInstallScript }: ScriptsGridProps) { key={i} className={`px-1 py-0.5 rounded text-xs ${ isCompleted - ? isFailed ? 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300' : 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-300' + ? isFailed ? 'bg-error/10 text-error' : 'bg-success/10 text-success' : isCurrent - ? 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300 animate-pulse' + ? 'bg-info/10 text-info animate-pulse' : 'bg-muted text-muted-foreground' }`} > @@ -826,18 +826,18 @@ export function ScriptsGrid({ onInstallScript }: ScriptsGridProps) { {/* Failed Scripts Details */} {downloadProgress.failed.length > 0 && ( -
          +
          - + - + Failed Downloads ({downloadProgress.failed.length})
          {downloadProgress.failed.map((failed, index) => ( -
          +
          {failed.slug}: {failed.error}
          ))} diff --git a/src/app/_components/ServerForm.tsx b/src/app/_components/ServerForm.tsx index 786b10f..33a80ec 100644 --- a/src/app/_components/ServerForm.tsx +++ b/src/app/_components/ServerForm.tsx @@ -350,13 +350,13 @@ export function ServerForm({ onSubmit, initialData, isEditing = false, onCancel {/* Show generated key status */} {formData.key_generated && ( -
          +
          - + - + SSH key pair generated successfully
          @@ -365,13 +365,13 @@ export function ServerForm({ onSubmit, initialData, isEditing = false, onCancel variant="outline" size="sm" onClick={() => setShowPublicKeyModal(true)} - className="gap-2 border-blue-500/20 text-blue-400 bg-blue-500/10 hover:bg-blue-500/20" + className="gap-2 border-info/20 text-info bg-info/10 hover:bg-info/20" > View Public Key
          -

          +

          The private key has been generated and will be saved with the server.

          diff --git a/src/app/_components/ServerList.tsx b/src/app/_components/ServerList.tsx index 4697501..7a1d6f3 100644 --- a/src/app/_components/ServerList.tsx +++ b/src/app/_components/ServerList.tsx @@ -169,8 +169,8 @@ export function ServerList({ servers, onUpdate, onDelete }: ServerListProps) {
          -
          - +
          +
          @@ -202,8 +202,8 @@ export function ServerList({ servers, onUpdate, onDelete }: ServerListProps) { {connectionResults.has(server.id) && (
          {connectionResults.get(server.id)?.success ? ( @@ -231,7 +231,7 @@ export function ServerList({ servers, onUpdate, onDelete }: ServerListProps) { disabled={testingConnections.has(server.id)} variant="outline" size="sm" - className="w-full sm:w-auto border-green-500/20 text-green-400 bg-green-500/10 hover:bg-green-500/20" + className="w-full sm:w-auto border-success/20 text-success bg-success/10 hover:bg-success/20" > {testingConnections.has(server.id) ? ( <> @@ -258,7 +258,7 @@ export function ServerList({ servers, onUpdate, onDelete }: ServerListProps) { onClick={() => handleViewPublicKey(server)} variant="outline" size="sm" - className="flex-1 sm:flex-none border-blue-500/20 text-blue-400 bg-blue-500/10 hover:bg-blue-500/20" + className="flex-1 sm:flex-none border-info/20 text-info bg-info/10 hover:bg-info/20" > View Public Key diff --git a/src/app/_components/SettingsModal.tsx b/src/app/_components/SettingsModal.tsx index 5457e9f..3aba9f4 100644 --- a/src/app/_components/SettingsModal.tsx +++ b/src/app/_components/SettingsModal.tsx @@ -130,13 +130,13 @@ export function SettingsModal({ isOpen, onClose }: SettingsModalProps) {
          - +
          -

          Error

          -
          {error}
          +

          Error

          +
          {error}
          @@ -152,8 +152,8 @@ export function SettingsModal({ isOpen, onClose }: SettingsModalProps) {

          Saved Servers

          {loading ? (
          -
          -

          Loading servers...

          +
          +

          Loading servers...

          ) : (
          - +

          Setup Authentication

          @@ -180,7 +180,7 @@ export function SetupModal({ isOpen, onComplete }: SetupModalProps) {
          {error && ( -
          +
          {error}
          diff --git a/src/app/_components/TextViewer.tsx b/src/app/_components/TextViewer.tsx index 2ea10f3..9635f8d 100644 --- a/src/app/_components/TextViewer.tsx +++ b/src/app/_components/TextViewer.tsx @@ -185,7 +185,7 @@ export function TextViewer({ scriptName, isOpen, onClose }: TextViewerProps) { ) : (
          -
          +
          {activeTab === 'ct' ? 'CT script not found' : 'Install script not found'}
          diff --git a/src/app/_components/ThemeProvider.tsx b/src/app/_components/ThemeProvider.tsx new file mode 100644 index 0000000..43ffadc --- /dev/null +++ b/src/app/_components/ThemeProvider.tsx @@ -0,0 +1,63 @@ +'use client'; + +import { createContext, useContext, useEffect, useState } from 'react'; + +type Theme = 'light' | 'dark'; + +interface ThemeContextType { + theme: Theme; + setTheme: (theme: Theme) => void; +} + +const ThemeContext = createContext(undefined); + +export function useTheme() { + const context = useContext(ThemeContext); + if (context === undefined) { + throw new Error('useTheme must be used within a ThemeProvider'); + } + return context; +} + +interface ThemeProviderProps { + children: React.ReactNode; +} + +export function ThemeProvider({ children }: ThemeProviderProps) { + const [theme, setThemeState] = useState('dark'); // Default to dark mode + const [mounted, setMounted] = useState(false); + + // Load theme from localStorage on mount + useEffect(() => { + const savedTheme = localStorage.getItem('theme') as Theme; + if (savedTheme && (savedTheme === 'light' || savedTheme === 'dark')) { + setThemeState(savedTheme); + } + setMounted(true); + }, []); + + // Apply theme to document element + useEffect(() => { + if (mounted) { + const root = document.documentElement; + root.classList.remove('light', 'dark'); + root.classList.add(theme); + } + }, [theme, mounted]); + + const setTheme = (newTheme: Theme) => { + setThemeState(newTheme); + localStorage.setItem('theme', newTheme); + }; + + // Prevent hydration mismatch by not rendering until mounted + if (!mounted) { + return
          {children}
          ; + } + + return ( + + {children} + + ); +} diff --git a/src/app/_components/ThemeToggle.tsx b/src/app/_components/ThemeToggle.tsx new file mode 100644 index 0000000..1c04fbd --- /dev/null +++ b/src/app/_components/ThemeToggle.tsx @@ -0,0 +1,39 @@ +'use client'; + +import { Sun, Moon } from 'lucide-react'; +import { useTheme } from './ThemeProvider'; +import { Button } from './ui/button'; + +interface ThemeToggleProps { + className?: string; + showLabel?: boolean; +} + +export function ThemeToggle({ className = '', showLabel = false }: ThemeToggleProps) { + const { theme, setTheme } = useTheme(); + + const toggleTheme = () => { + setTheme(theme === 'light' ? 'dark' : 'light'); + }; + + return ( + + ); +} diff --git a/src/app/_components/ui/button.tsx b/src/app/_components/ui/button.tsx index 78b54f4..1a5971e 100644 --- a/src/app/_components/ui/button.tsx +++ b/src/app/_components/ui/button.tsx @@ -34,16 +34,16 @@ const buttonVariants = cva( "relative after:absolute after:bg-primary after:bottom-2 after:h-[1px] after:w-2/3 after:origin-bottom-left after:scale-x-100 hover:after:origin-bottom-right hover:after:scale-x-0 after:transition-transform after:ease-in-out after:duration-300", linkHover2: "relative after:absolute after:bg-primary after:bottom-2 after:h-[1px] after:w-2/3 after:origin-bottom-right after:scale-x-0 hover:after:origin-bottom-left hover:after:scale-x-100 after:transition-transform after:ease-in-out after:duration-300", - // Dark theme action button variants - edit: "bg-blue-900/20 hover:bg-blue-900/30 border border-blue-700/50 text-blue-300 hover:text-blue-200 hover:border-blue-600/60 transition-all duration-200 hover:scale-105 hover:shadow-md", - update: "bg-cyan-900/20 hover:bg-cyan-900/30 border border-cyan-700/50 text-cyan-300 hover:text-cyan-200 hover:border-cyan-600/60 transition-all duration-200 hover:scale-105 hover:shadow-md", - shell: "bg-gray-800/20 hover:bg-gray-800/30 border border-gray-600/50 text-gray-300 hover:text-gray-200 hover:border-gray-500/60 transition-all duration-200 hover:scale-105 hover:shadow-md", - openui: "bg-blue-900/20 hover:bg-blue-900/30 border border-blue-700/50 text-blue-300 hover:text-blue-200 hover:border-blue-600/60 transition-all duration-200 hover:scale-105 hover:shadow-md", - start: "bg-green-900/20 hover:bg-green-900/30 border border-green-700/50 text-green-300 hover:text-green-200 hover:border-green-600/60 transition-all duration-200 hover:scale-105 hover:shadow-md", - stop: "bg-red-900/20 hover:bg-red-900/30 border border-red-700/50 text-red-300 hover:text-red-200 hover:border-red-600/60 transition-all duration-200 hover:scale-105 hover:shadow-md", - delete: "bg-red-900/20 hover:bg-red-900/30 border border-red-700/50 text-red-300 hover:text-red-200 hover:border-red-600/60 transition-all duration-200 hover:scale-105 hover:shadow-md disabled:hover:scale-100", - save: "bg-green-900/20 hover:bg-green-900/30 border border-green-700/50 text-green-300 hover:text-green-200 hover:border-green-600/60 transition-all duration-200 hover:scale-105 hover:shadow-md disabled:hover:scale-100", - cancel: "bg-gray-800/20 hover:bg-gray-800/30 border border-gray-600/50 text-gray-300 hover:text-gray-200 hover:border-gray-500/60 transition-all duration-200 hover:scale-105 hover:shadow-md", + // Action button variants + edit: "bg-info/20 hover:bg-info/30 border border-info/50 text-info hover:text-info-foreground hover:border-info/60 transition-all duration-200 hover:scale-105 hover:shadow-md", + update: "bg-info/20 hover:bg-info/30 border border-info/50 text-info hover:text-info-foreground hover:border-info/60 transition-all duration-200 hover:scale-105 hover:shadow-md", + shell: "bg-muted/20 hover:bg-muted/30 border border-muted text-muted-foreground hover:text-foreground hover:border-muted-foreground transition-all duration-200 hover:scale-105 hover:shadow-md", + openui: "bg-info/20 hover:bg-info/30 border border-info/50 text-info hover:text-info-foreground hover:border-info/60 transition-all duration-200 hover:scale-105 hover:shadow-md", + start: "bg-success/20 hover:bg-success/30 border border-success/50 text-success hover:text-success-foreground hover:border-success/60 transition-all duration-200 hover:scale-105 hover:shadow-md", + stop: "bg-error/20 hover:bg-error/30 border border-error/50 text-error hover:text-error-foreground hover:border-error/60 transition-all duration-200 hover:scale-105 hover:shadow-md", + delete: "bg-error/20 hover:bg-error/30 border border-error/50 text-error hover:text-error-foreground hover:border-error/60 transition-all duration-200 hover:scale-105 hover:shadow-md disabled:hover:scale-100", + save: "bg-success/20 hover:bg-success/30 border border-success/50 text-success hover:text-success-foreground hover:border-success/60 transition-all duration-200 hover:scale-105 hover:shadow-md disabled:hover:scale-100", + cancel: "bg-muted/20 hover:bg-muted/30 border border-muted text-muted-foreground hover:text-foreground hover:border-muted-foreground transition-all duration-200 hover:scale-105 hover:shadow-md", }, size: { default: "h-10 px-4 py-2", diff --git a/src/app/_components/ui/toggle.tsx b/src/app/_components/ui/toggle.tsx index bd8d3f2..ab337d8 100644 --- a/src/app/_components/ui/toggle.tsx +++ b/src/app/_components/ui/toggle.tsx @@ -22,8 +22,10 @@ const Toggle = React.forwardRef( {...props} />
          diff --git a/src/app/layout.tsx b/src/app/layout.tsx index b52fa38..9d61099 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -6,6 +6,7 @@ import { Geist } from "next/font/google"; import { TRPCReactProvider } from "~/trpc/react"; import { AuthProvider } from "./_components/AuthProvider"; import { AuthGuard } from "./_components/AuthGuard"; +import { ThemeProvider } from "./_components/ThemeProvider"; export const metadata: Metadata = { title: "PVE Scripts local", @@ -32,28 +33,20 @@ export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode }>) { return ( - - -