diff --git a/.github/repo-growth/history.json b/.github/repo-growth/history.json index 75e37056..e28b1ec8 100644 --- a/.github/repo-growth/history.json +++ b/.github/repo-growth/history.json @@ -1,11 +1,11 @@ { "version": 1, "repository": "MacRimi/ProxMenux", - "updatedAt": "2026-09-02T08:48:44.825Z", + "updatedAt": "2026-10-26T04:36:49.492Z", "backfilledAt": "2026-07-22T18:09:20.834Z", "totals": { "downloads": 0, - "clones": 22221 + "clones": 59792 }, "assets": {}, "traffic": { @@ -133,6 +133,218 @@ "2026-09-01": { "count": 552, "uniques": 396 + }, + "2026-09-02": { + "count": 1065, + "uniques": 726 + }, + "2026-09-03": { + "count": 1489, + "uniques": 770 + }, + "2026-09-04": { + "count": 938, + "uniques": 642 + }, + "2026-09-05": { + "count": 722, + "uniques": 513 + }, + "2026-09-06": { + "count": 884, + "uniques": 445 + }, + "2026-09-07": { + "count": 655, + "uniques": 485 + }, + "2026-09-08": { + "count": 597, + "uniques": 440 + }, + "2026-09-09": { + "count": 615, + "uniques": 431 + }, + "2026-09-10": { + "count": 542, + "uniques": 383 + }, + "2026-09-11": { + "count": 646, + "uniques": 342 + }, + "2026-09-12": { + "count": 451, + "uniques": 336 + }, + "2026-09-13": { + "count": 482, + "uniques": 362 + }, + "2026-09-14": { + "count": 610, + "uniques": 349 + }, + "2026-09-15": { + "count": 452, + "uniques": 343 + }, + "2026-09-16": { + "count": 651, + "uniques": 335 + }, + "2026-09-17": { + "count": 881, + "uniques": 316 + }, + "2026-09-18": { + "count": 414, + "uniques": 295 + }, + "2026-09-19": { + "count": 701, + "uniques": 300 + }, + "2026-09-20": { + "count": 405, + "uniques": 271 + }, + "2026-09-21": { + "count": 477, + "uniques": 303 + }, + "2026-09-22": { + "count": 587, + "uniques": 347 + }, + "2026-09-23": { + "count": 436, + "uniques": 293 + }, + "2026-09-24": { + "count": 377, + "uniques": 276 + }, + "2026-09-25": { + "count": 526, + "uniques": 350 + }, + "2026-09-26": { + "count": 723, + "uniques": 397 + }, + "2026-09-27": { + "count": 994, + "uniques": 620 + }, + "2026-09-28": { + "count": 1548, + "uniques": 1091 + }, + "2026-09-29": { + "count": 1043, + "uniques": 692 + }, + "2026-09-30": { + "count": 768, + "uniques": 504 + }, + "2026-10-01": { + "count": 661, + "uniques": 443 + }, + "2026-10-02": { + "count": 596, + "uniques": 425 + }, + "2026-10-03": { + "count": 486, + "uniques": 372 + }, + "2026-10-04": { + "count": 1074, + "uniques": 333 + }, + "2026-10-05": { + "count": 1183, + "uniques": 366 + }, + "2026-10-06": { + "count": 648, + "uniques": 367 + }, + "2026-10-07": { + "count": 527, + "uniques": 381 + }, + "2026-10-08": { + "count": 540, + "uniques": 352 + }, + "2026-10-09": { + "count": 548, + "uniques": 363 + }, + "2026-10-10": { + "count": 443, + "uniques": 305 + }, + "2026-10-11": { + "count": 511, + "uniques": 305 + }, + "2026-10-12": { + "count": 520, + "uniques": 362 + }, + "2026-10-13": { + "count": 564, + "uniques": 354 + }, + "2026-10-14": { + "count": 540, + "uniques": 372 + }, + "2026-10-15": { + "count": 1253, + "uniques": 429 + }, + "2026-10-16": { + "count": 751, + "uniques": 342 + }, + "2026-10-17": { + "count": 821, + "uniques": 380 + }, + "2026-10-18": { + "count": 727, + "uniques": 348 + }, + "2026-10-19": { + "count": 712, + "uniques": 368 + }, + "2026-10-20": { + "count": 908, + "uniques": 464 + }, + "2026-10-21": { + "count": 623, + "uniques": 406 + }, + "2026-10-22": { + "count": 755, + "uniques": 419 + }, + "2026-10-23": { + "count": 601, + "uniques": 337 + }, + "2026-10-24": { + "count": 900, + "uniques": 316 } } }, @@ -3369,7 +3581,385 @@ "stars": 2926, "forks": 152, "downloads": 0, - "clones": 22221 + "clones": 23286 + }, + { + "date": "2026-09-03", + "stars": 2927, + "forks": 152, + "downloads": 0, + "clones": 24775 + }, + { + "date": "2026-09-04", + "stars": 2930, + "forks": 152, + "downloads": 0, + "clones": 25713 + }, + { + "date": "2026-09-05", + "stars": 2944, + "forks": 152, + "downloads": 0, + "clones": 26435 + }, + { + "date": "2026-09-06", + "stars": 2954, + "forks": 152, + "downloads": 0, + "clones": 27319 + }, + { + "date": "2026-09-07", + "stars": 2959, + "forks": 152, + "downloads": 0, + "clones": 27974 + }, + { + "date": "2026-09-08", + "stars": 2959, + "forks": 153, + "downloads": 0, + "clones": 28571 + }, + { + "date": "2026-09-09", + "stars": 2960, + "forks": 153, + "downloads": 0, + "clones": 29186 + }, + { + "date": "2026-09-10", + "stars": 2961, + "forks": 154, + "downloads": 0, + "clones": 29728 + }, + { + "date": "2026-09-11", + "stars": 2965, + "forks": 154, + "downloads": 0, + "clones": 30374 + }, + { + "date": "2026-09-12", + "stars": 2967, + "forks": 154, + "downloads": 0, + "clones": 30825 + }, + { + "date": "2026-09-13", + "stars": 2971, + "forks": 154, + "downloads": 0, + "clones": 31307 + }, + { + "date": "2026-09-14", + "stars": 2972, + "forks": 154, + "downloads": 0, + "clones": 31917 + }, + { + "date": "2026-09-15", + "stars": 2974, + "forks": 155, + "downloads": 0, + "clones": 32369 + }, + { + "date": "2026-09-16", + "stars": 2974, + "forks": 155, + "downloads": 0, + "clones": 33020 + }, + { + "date": "2026-09-17", + "stars": 2975, + "forks": 155, + "downloads": 0, + "clones": 33901 + }, + { + "date": "2026-09-18", + "stars": 2978, + "forks": 155, + "downloads": 0, + "clones": 34315 + }, + { + "date": "2026-09-19", + "stars": 2981, + "forks": 155, + "downloads": 0, + "clones": 35016 + }, + { + "date": "2026-09-20", + "stars": 2981, + "forks": 156, + "downloads": 0, + "clones": 35421 + }, + { + "date": "2026-09-21", + "stars": 2984, + "forks": 156, + "downloads": 0, + "clones": 35898 + }, + { + "date": "2026-09-22", + "stars": 2986, + "forks": 156, + "downloads": 0, + "clones": 36485 + }, + { + "date": "2026-09-23", + "stars": 2989, + "forks": 156, + "downloads": 0, + "clones": 36921 + }, + { + "date": "2026-09-24", + "stars": 2991, + "forks": 156, + "downloads": 0, + "clones": 37298 + }, + { + "date": "2026-09-25", + "stars": 2993, + "forks": 156, + "downloads": 0, + "clones": 37824 + }, + { + "date": "2026-09-26", + "stars": 2996, + "forks": 156, + "downloads": 0, + "clones": 38547 + }, + { + "date": "2026-09-27", + "stars": 3007, + "forks": 156, + "downloads": 0, + "clones": 39541 + }, + { + "date": "2026-09-28", + "stars": 3041, + "forks": 156, + "downloads": 0, + "clones": 41089 + }, + { + "date": "2026-09-29", + "stars": 3052, + "forks": 157, + "downloads": 0, + "clones": 42132 + }, + { + "date": "2026-09-30", + "stars": 3062, + "forks": 157, + "downloads": 0, + "clones": 42900 + }, + { + "date": "2026-10-01", + "stars": 3067, + "forks": 158, + "downloads": 0, + "clones": 43561 + }, + { + "date": "2026-10-02", + "stars": 3072, + "forks": 159, + "downloads": 0, + "clones": 44157 + }, + { + "date": "2026-10-03", + "stars": 3077, + "forks": 159, + "downloads": 0, + "clones": 44643 + }, + { + "date": "2026-10-04", + "stars": 3082, + "forks": 160, + "downloads": 0, + "clones": 45717 + }, + { + "date": "2026-10-05", + "stars": 3087, + "forks": 160, + "downloads": 0, + "clones": 46900 + }, + { + "date": "2026-10-06", + "stars": 3090, + "forks": 161, + "downloads": 0, + "clones": 47548 + }, + { + "date": "2026-10-07", + "stars": 3103, + "forks": 163, + "downloads": 0, + "clones": 48075 + }, + { + "date": "2026-10-08", + "stars": 3112, + "forks": 163, + "downloads": 0, + "clones": 48615 + }, + { + "date": "2026-10-09", + "stars": 3123, + "forks": 165, + "downloads": 0, + "clones": 49163 + }, + { + "date": "2026-10-10", + "stars": 3128, + "forks": 164, + "downloads": 0, + "clones": 49606 + }, + { + "date": "2026-10-11", + "stars": 3134, + "forks": 165, + "downloads": 0, + "clones": 50117 + }, + { + "date": "2026-10-12", + "stars": 3138, + "forks": 168, + "downloads": 0, + "clones": 50637 + }, + { + "date": "2026-10-13", + "stars": 3141, + "forks": 169, + "downloads": 0, + "clones": 51201 + }, + { + "date": "2026-10-14", + "stars": 3148, + "forks": 170, + "downloads": 0, + "clones": 51741 + }, + { + "date": "2026-10-15", + "stars": 3160, + "forks": 171, + "downloads": 0, + "clones": 52994 + }, + { + "date": "2026-10-16", + "stars": 3166, + "forks": 173, + "downloads": 0, + "clones": 53745 + }, + { + "date": "2026-10-17", + "stars": 3170, + "forks": 173, + "downloads": 0, + "clones": 54566 + }, + { + "date": "2026-10-18", + "stars": 3174, + "forks": 174, + "downloads": 0, + "clones": 55293 + }, + { + "date": "2026-10-19", + "stars": 3180, + "forks": 174, + "downloads": 0, + "clones": 56005 + }, + { + "date": "2026-10-20", + "stars": 3191, + "forks": 175, + "downloads": 0, + "clones": 56913 + }, + { + "date": "2026-10-21", + "stars": 3205, + "forks": 175, + "downloads": 0, + "clones": 57536 + }, + { + "date": "2026-10-22", + "stars": 3214, + "forks": 174, + "downloads": 0, + "clones": 58291 + }, + { + "date": "2026-10-23", + "stars": 3220, + "forks": 175, + "downloads": 0, + "clones": 58892 + }, + { + "date": "2026-10-24", + "stars": 3226, + "forks": 175, + "downloads": 0, + "clones": 59792 + }, + { + "date": "2026-10-25", + "stars": 3229, + "forks": 175, + "downloads": 0, + "clones": 59792 + }, + { + "date": "2026-10-26", + "stars": 3234, + "forks": 175, + "downloads": 0, + "clones": 59792 } ] } diff --git a/AppImage/ProxMenux-1.2.6.AppImage b/AppImage/ProxMenux-1.2.6.AppImage new file mode 100755 index 00000000..35a59c35 Binary files /dev/null and b/AppImage/ProxMenux-1.2.6.AppImage differ diff --git a/AppImage/ProxMenux-Monitor.AppImage.sha256 b/AppImage/ProxMenux-Monitor.AppImage.sha256 new file mode 100644 index 00000000..b9d9c5b6 --- /dev/null +++ b/AppImage/ProxMenux-Monitor.AppImage.sha256 @@ -0,0 +1 @@ +fc092901ab67df01316a389e92502c26248fe61a68b705d9eacfd717a40c2391 ProxMenux-1.2.6.AppImage diff --git a/images/project-growth.svg b/images/project-growth.svg index d31e54ef..b45eb71c 100644 --- a/images/project-growth.svg +++ b/images/project-growth.svg @@ -30,62 +30,62 @@ ProxMenux growth - MacRimi/ProxMenux · Jan 15, 2025 – Sep 2, 2026 + MacRimi/ProxMenux · Jan 15, 2025 – Oct 26, 2026 LOCAL HISTORY STARS - 2,926 - +2,925 tracked + 3,234 + +3,233 tracked FORKS - 152 - +152 tracked + 175 + +175 tracked GIT CLONES - 22.2K - +21.8K tracked + 59.8K + +59.3K tracked Stars - 2,926 - range 1–2,926 - 2,9261,4641 - - + 3,234 + range 1–3,234 + 3,2341,6181 + + - Jan 15, 2025Nov 8, 2025Sep 2, 2026 + Jan 15, 2025Dec 5, 2025Oct 26, 2026 Forks - 152 - range 0–153 - 153770 - - - - Jan 15, 2025Nov 8, 2025Sep 2, 2026 + 175 + range 0–175 + 175880 + + + + Jan 15, 2025Dec 5, 2025Oct 26, 2026 Git clones - 22.2K - range 448–22.2K - 22.2K11.3K448 - - + 59.8K + range 448–59.8K + 59.8K30.1K448 + + - Aug 2, 2026Aug 17, 2026Sep 2, 2026 + Aug 2, 2026Sep 13, 2026Oct 26, 2026 - Updated Sep 2, 2026 + Updated Oct 26, 2026 Generated by Repo Growth ↗ diff --git a/json/app_tracking_hints.json b/json/app_tracking_hints.json index 4bfe3966..7c5224aa 100644 --- a/json/app_tracking_hints.json +++ b/json/app_tracking_hints.json @@ -117,6 +117,32 @@ "repo": "nearai/ironclaw", "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)" }, + "alpine-it-tools": { + "default_ports": [ + 80 + ], + "file_path": "/root/.it-tools", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/it-tools.webp", + "repo": "sharevb/it-tools", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://sharevb-it-tools.vercel.app/" + }, + "alpine-wakapi": { + "default_ports": [ + 3000 + ], + "file_path": "/root/.wakapi", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/wakapi.webp", + "repo": "muety/wakapi", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://wakapi.dev/" + }, "anchor": { "default_ports": [ 3000 @@ -130,6 +156,32 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/ZhFahim/anchor" }, + "anki-sync-server": { + "default_ports": [ + 8080 + ], + "file_path": "/root/.anki-sync-server", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/anki.webp", + "repo": "ankitects/anki", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://apps.ankiweb.net/" + }, + "anythingllm": { + "default_ports": [ + 3001 + ], + "file_path": "/root/.anythingllm", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/anythingllm.webp", + "repo": "Mintplex-Labs/anything-llm", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://anythingllm.com/" + }, "anytype-server": { "default_ports": [ 33010 @@ -168,6 +220,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://www.audiobookshelf.org/" }, + "audiomuse-ai": { + "default_ports": [ + 8000 + ], + "file_path": "/root/.audiomuse-ai", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/audiomuse-ai.webp", + "repo": "NeptuneHub/AudioMuse-AI", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/NeptuneHub/AudioMuse-AI" + }, "aurral": { "default_ports": [ 3001 @@ -428,6 +493,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://www.bookstackapp.com/" }, + "borg-ui": { + "default_ports": [ + 8081 + ], + "file_path": "/root/.borg-ui", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/borgbackup.webp", + "repo": "karanhudia/borg-ui", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/karanhudia/borg-ui" + }, "budget-board": { "default_ports": [ 80 @@ -471,20 +549,33 @@ "default_ports": [ 80 ], - "file_path": "/root/.xcaddy", + "file_path": "/root/.caddy", "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "github_source": "releases", "installed_via": "file", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/caddy.webp", - "repo": "caddyserver/xcaddy", + "repo": "caddyserver/caddy", "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://caddyserver.com/" }, + "calagopus": { + "default_ports": [ + 8000 + ], + "file_path": "/root/.calagopus-panel", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/calagopus.webp", + "repo": "calagopus/panel", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://calagopus.com" + }, "calibre-web": { "default_ports": [ 8083 ], - "file_path": "/root/.calibre-web", + "file_path": "/root/.calibreweb", "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "github_source": "releases", "installed_via": "file", @@ -493,6 +584,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/janeczku/calibre-web" }, + "casdoor": { + "default_ports": [ + 8000 + ], + "file_path": "/root/.casdoor", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/casdoor.webp", + "repo": "casdoor/casdoor", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://casdoor.ai/" + }, "certimate": { "default_ports": [ 8090 @@ -506,6 +610,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://docs.certimate.me/en-US/" }, + "certmate": { + "default_ports": [ + 8000 + ], + "file_path": "/root/.certmate", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/fabriziosalmi/certmate@main/certmate_logo.png", + "repo": "fabriziosalmi/certmate", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://www.certmate.org" + }, "changedetection": { "command_argv": [ "/opt/changedetection/.venv/bin/changedetection.io", @@ -521,6 +638,19 @@ "tag_regex": "v?(\\d+\\.\\d+\\.\\d+)", "website": "https://changedetection.io/" }, + "chatwoot": { + "default_ports": [ + 3000 + ], + "file_path": "/root/.chatwoot", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/chatwoot.webp", + "repo": "chatwoot/chatwoot", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://www.chatwoot.com/" + }, "checkmate": { "default_ports": [ 5173 @@ -534,6 +664,32 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/bluewave-labs/Checkmate" }, + "chevereto": { + "default_ports": [ + 80 + ], + "file_path": "/root/.chevereto", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/chevereto.webp", + "repo": "chevereto/chevereto", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://chevereto.com/" + }, + "cinephage": { + "default_ports": [ + 3000 + ], + "file_path": "/root/.cinephage", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/cinephage.webp", + "repo": "MoldyTaint/Cinephage", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/MoldyTaint/Cinephage" + }, "cliproxyapi": { "default_ports": [ 8317 @@ -766,6 +922,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/qdm12/ddns-updater" }, + "decypharr": { + "default_ports": [ + 8282 + ], + "file_path": "/root/.decypharr", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/decypharr.webp", + "repo": "sirrobot01/decypharr", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/sirrobot01/decypharr" + }, "degoog": { "default_ports": [ 4444 @@ -914,6 +1083,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://donetick.com" }, + "downtify": { + "default_ports": [ + 8000 + ], + "file_path": "/root/.downtify", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/downtify.webp", + "repo": "henriquesebastiao/downtify", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://downtify.henriquesebastiao.com/" + }, "drawio": { "default_ports": [ 8080 @@ -927,6 +1109,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://www.drawio.com/" }, + "dreeve": { + "default_ports": [ + 8080 + ], + "file_path": "/root/.dreeve", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/dreeve.webp", + "repo": "dreeveapp/dreeve", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://dreeve.app/" + }, "droppedneedle": { "default_ports": [ 8688 @@ -989,6 +1184,32 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://emby.media/" }, + "emdash": { + "default_ports": [ + 4321 + ], + "file_path": "/root/.emdash", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/emdash-cms/emdash@main/docs/public/favicon.svg", + "repo": "emdash-cms/emdash", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://emdashcms.com/" + }, + "endurain": { + "default_ports": [ + 8080 + ], + "file_path": "/root/.endurain", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/endurain.webp", + "repo": "endurain-project/endurain", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://codeberg.org/endurain-project/endurain" + }, "ersatztv": { "default_ports": [ 8409 @@ -1304,7 +1525,7 @@ "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/gitea-mirror.webp", "repo": "RayLabsHQ/gitea-mirror", "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", - "website": "https://github.com/RayLabsHQ/gitea-mirror/" + "website": "https://gitea-mirror.raylabs.io" }, "github-runner": { "file_path": "/root/.actions-runner", @@ -1341,6 +1562,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://www.globaleaks.org/" }, + "glpi": { + "default_ports": [ + 80 + ], + "file_path": "/root/.glpi", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/glpi.webp", + "repo": "glpi-project/glpi", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://glpi-project.org/" + }, "gluetun": { "default_ports": [ 8000 @@ -1350,7 +1584,7 @@ "github_source": "releases", "installed_via": "file", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/gluetun.webp", - "repo": "qdm12/gluetun", + "repo": "passteque/gluetun", "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/qdm12/gluetun" }, @@ -1406,6 +1640,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/Forceu/Gokapi" }, + "gotenberg": { + "default_ports": [ + 3000 + ], + "file_path": "/root/.gotenberg", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://gotenberg.dev/img/logo.png", + "repo": "gotenberg/gotenberg", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://gotenberg.dev/" + }, "gotify": { "default_ports": [ 80 @@ -1507,6 +1754,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/HydroshieldMKII/Guardian" }, + "hammer": { + "default_ports": [ + 8080 + ], + "file_path": "/root/.hammer", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/hammer-editor.webp", + "repo": "Darkrock-Studios/hammer-editor", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://hammer.ink/" + }, "headscale": { "file_path": "/root/.headscale", "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", @@ -1646,6 +1906,32 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/bastienwirtz/homer" }, + "hometube": { + "default_ports": [ + 8501 + ], + "file_path": "/root/.hometube", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/hometube.webp", + "repo": "EgalitarianMonkey/hometube", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://hometube.latentnoise.dev/" + }, + "honcho": { + "default_ports": [ + 8000 + ], + "file_path": "/root/.honcho", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/plastic-labs/honcho@main/docs/favicon.svg", + "repo": "plastic-labs/honcho", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://honcho.dev/" + }, "hoodik": { "file_path": "/root/.hoodik", "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", @@ -1929,6 +2215,32 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/fccview/jotty" }, + "journiv": { + "default_ports": [ + 8000 + ], + "file_path": "/root/.journiv", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/journiv.webp", + "repo": "journiv/journiv-app", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://journiv.com/" + }, + "kaneo": { + "default_ports": [ + 5173 + ], + "file_path": "/root/.kaneo", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/kaneo.webp", + "repo": "usekaneo/kaneo", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://kaneo.app/" + }, "kapowarr": { "default_ports": [ 5656 @@ -1968,6 +2280,19 @@ "tag_regex": "v?(\\d+\\.\\d+\\.\\d+)", "website": "https://www.kavitareader.com/" }, + "keeper": { + "default_ports": [ + 3000 + ], + "file_path": "/root/.keeper", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/keeper.webp", + "repo": "ridafkih/keeper.sh", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://www.keeper.sh/" + }, "keycloak": { "default_ports": [ 8080 @@ -2143,6 +2468,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://leantime.io" }, + "lemonade-server": { + "default_ports": [ + 13305 + ], + "file_path": "/root/.lemonade-server", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/lemonade-ai.webp", + "repo": "lemonade-sdk/lemonade", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://lemonade-server.ai/" + }, "librenms": { "default_ports": [ 80 @@ -2195,6 +2533,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://lidarr.audio/" }, + "lingarr": { + "default_ports": [ + 9876 + ], + "file_path": "/root/.lingarr", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/lingarr.webp", + "repo": "lingarr-translate/lingarr", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/lingarr-translate/lingarr" + }, "linkding": { "default_ports": [ 9090 @@ -2221,6 +2572,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://linkwarden.app/" }, + "listenarr": { + "default_ports": [ + 4545 + ], + "file_path": "/root/.listenarr", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/listenarr.webp", + "repo": "Listenarrs/Listenarr", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://getlistenarr.com/" + }, "listmonk": { "default_ports": [ 9000 @@ -2272,6 +2636,32 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/mudler/LocalAGI" }, + "localai": { + "default_ports": [ + 8080 + ], + "file_path": "/root/.localai", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/localai.webp", + "repo": "mudler/LocalAI", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://localai.io/" + }, + "logseq": { + "default_ports": [ + 80 + ], + "file_path": "/root/.logseq", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/logseq.webp", + "repo": "logseq/logseq", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://logseq.com/" + }, "loki": { "default_ports": [ 3100 @@ -2427,6 +2817,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://matomo.org/" }, + "matter-hub": { + "default_ports": [ + 8482 + ], + "file_path": "/root/.matter-hub", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/home-assistant.webp", + "repo": "RiDDiX/home-assistant-matter-hub", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/RiDDiX/home-assistant-matter-hub" + }, "matter-server": { "default_ports": [ 5580 @@ -2704,6 +3107,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://netboxlabs.com/products/netbox/" }, + "netronome": { + "default_ports": [ + 7575 + ], + "file_path": "/root/.netronome", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/netronome.webp", + "repo": "autobrr/netronome", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://netrono.me/" + }, "networkoptimizer": { "default_ports": [ 8042 @@ -2840,6 +3256,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/technomancer702/nodecast-tv" }, + "norish": { + "default_ports": [ + 3000 + ], + "file_path": "/root/.norish", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/norish.webp", + "repo": "norish-recipes/norish", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://norish.dev/" + }, "notediscovery": { "default_ports": [ 8000 @@ -2967,6 +3396,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://onedev.io/" }, + "onetimesecret": { + "default_ports": [ + 80 + ], + "file_path": "/root/.onetimesecret", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://onetimesecret.com/favicon.svg", + "repo": "onetimesecret/onetimesecret", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://onetimesecret.com/" + }, "onlyoffice": { "default_ports": [ 80 @@ -3031,6 +3473,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://opengist.io/" }, + "opengym": { + "default_ports": [ + 80 + ], + "file_path": "/root/.opengym", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/DuarteSantos8/openGym@main/frontend/public/icon-512.png", + "repo": "DuarteSantos8/openGym", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://opengym.ch/" + }, "openproject": { "default_ports": [ 80 @@ -3279,6 +3734,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://paymenter.org/" }, + "peertube": { + "default_ports": [ + 9000 + ], + "file_path": "/root/.peertube", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/peertube.webp", + "repo": "Chocobozzz/PeerTube", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://joinpeertube.org/" + }, "pegaprox": { "default_ports": [ 5000 @@ -3437,6 +3905,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://podman.io/" }, + "portabase": { + "default_ports": [ + 3000 + ], + "file_path": "/root/.portabase", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/portabase.webp", + "repo": "Portabase/portabase", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://portabase.io" + }, "portainer": { "binary_args": [ "--version" @@ -3480,6 +3961,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/timothepoznanski/poznote" }, + "pricebuddy": { + "default_ports": [ + 80 + ], + "file_path": "/root/.pricebuddy", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/pricebuddy.webp", + "repo": "jez500/pricebuddy", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://pricebuddy.jez.me/" + }, "privatebin": { "default_ports": [ 80 @@ -3581,6 +4075,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/Prowlarr/Prowlarr" }, + "proxcenter": { + "default_ports": [ + 3000 + ], + "file_path": "/root/.proxcenter", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/proxcenter.webp", + "repo": "adminsyspro/proxcenter-ui", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://proxcenter.io/" + }, "proxmox-backup-server": { "default_ports": [ 8007 @@ -3604,6 +4111,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/FunkeyFlo/" }, + "pterodactyl-panel": { + "default_ports": [ + 80 + ], + "file_path": "/root/.pterodactyl-panel", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/pterodactyl.webp", + "repo": "pterodactyl/panel", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://pterodactyl.io" + }, "pterodactyl-wings": { "file_path": "/root/.wings", "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", @@ -3640,6 +4160,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/ffind-dev/pve-ups" }, + "qbit-manage": { + "default_ports": [ + 8181 + ], + "file_path": "/root/.qbit-manage", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/qbittorrent.webp", + "repo": "StuffAnThings/qbit_manage", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/StuffAnThings/qbit_manage" + }, "qbittorrent": { "binary_path": "/opt/qbittorrent/qbittorrent-nox", "default_ports": [ @@ -3762,6 +4295,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://rxresu.me/" }, + "readmeabook": { + "default_ports": [ + 3030 + ], + "file_path": "/root/.readmeabook", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/readmeabook.webp", + "repo": "kikootwo/ReadMeABook", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/kikootwo/ReadMeABook" + }, "recyclarr": { "file_path": "/root/.recyclarr", "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", @@ -3837,15 +4383,28 @@ "default_ports": [ 21114 ], - "file_path": "/root/.rustdesk-hbbs", + "file_path": "/root/.rustdesk-server", "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "github_source": "releases", "installed_via": "file", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/rustdesk.webp", - "repo": "lejianwen/rustdesk-server", + "repo": "rustdesk/rustdesk-server", "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://rustdesk.com/" }, + "rustfs": { + "default_ports": [ + 9001 + ], + "file_path": "/root/.rustfs", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/rustfs.webp", + "repo": "rustfs/rustfs", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://rustfs.com/" + }, "rustypaste": { "default_ports": [ 8000 @@ -3872,6 +4431,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://sabnzbd.org/" }, + "safebucket": { + "default_ports": [ + 8080 + ], + "file_path": "/root/.safebucket", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/safebucket.webp", + "repo": "safebucket/safebucket", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/safebucket/safebucket" + }, "salt": { "file_path": "/root/.salt", "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", @@ -4035,6 +4607,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://shlink.io/" }, + "shoko": { + "default_ports": [ + 8111 + ], + "file_path": "/root/.shoko", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/shoko-server.webp", + "repo": "ShokoAnime/ShokoServer", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://shokoanime.com/" + }, "signoz": { "default_ports": [ 8080 @@ -4048,6 +4633,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://signoz.io/" }, + "silo": { + "default_ports": [ + 9001 + ], + "file_path": "/root/.silo_s3", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/pgsty-silo.webp", + "repo": "pgsty/silo", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://silo.pgsty.com/" + }, "silverbullet": { "default_ports": [ 3000 @@ -4290,6 +4888,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://stalw.art/" }, + "stash": { + "default_ports": [ + 9999 + ], + "file_path": "/root/.stash", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/stash.webp", + "repo": "stashapp/stash", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://stashapp.cc/" + }, "step-ca": { "default_ports": [ 443 @@ -4328,6 +4939,32 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/CrazyWolf13/streamlink-webui" }, + "streamystats": { + "default_ports": [ + 3000 + ], + "file_path": "/root/.streamystats", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/streamystats.webp", + "repo": "fredrikburmester/streamystats", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/fredrikburmester/streamystats" + }, + "stump": { + "default_ports": [ + 10801 + ], + "file_path": "/root/.stump", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/stump.webp", + "repo": "stumpapp/stump", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://www.stumpapp.dev/" + }, "stylus": { "default_ports": [ 8000 @@ -4424,6 +5061,32 @@ "tag_regex": "v?(\\d+\\.\\d+\\.\\d+)", "website": "https://tandoor.dev/" }, + "taskview": { + "default_ports": [ + 80 + ], + "file_path": "/root/.taskview", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/taskview.webp", + "repo": "Gimanh/taskview-community", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://taskview.tech/" + }, + "tasmocompiler": { + "default_ports": [ + 3000 + ], + "file_path": "/root/.tasmocompiler", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/tasmocompiler.webp", + "repo": "benzino77/tasmocompiler", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/benzino77/tasmocompiler" + }, "tautulli": { "default_ports": [ 8181 @@ -4866,6 +5529,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://www.urbackup.org/" }, + "valhalla": { + "default_ports": [ + 8002 + ], + "file_path": "/root/.valhalla", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/valhalla.webp", + "repo": "valhalla/valhalla", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://valhalla.github.io/valhalla/" + }, "valkey": { "default_ports": [ 6379 @@ -4878,6 +5554,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://valkey.io/" }, + "vane": { + "default_ports": [ + 3000 + ], + "file_path": "/root/.vane", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/ItzCrazyKns/Vane@master/public/icon.png", + "repo": "ItzCrazyKns/Vane", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/ItzCrazyKns/Vane" + }, "vaultwarden": { "alt_detectors": [ { @@ -4995,6 +5684,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://warracker.com/" }, + "wastebin": { + "default_ports": [ + 8088 + ], + "file_path": "/root/.wastebin", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/wastebin.webp", + "repo": "matze/wastebin", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/matze/wastebin" + }, "watcharr": { "default_ports": [ 3080 @@ -5008,6 +5710,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://watcharr.app/" }, + "watchstate": { + "default_ports": [ + 8080 + ], + "file_path": "/root/.watchstate", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/watchstate.webp", + "repo": "arabcoders/watchstate", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/arabcoders/watchstate" + }, "watchyourlan": { "default_ports": [ 8840 @@ -5060,6 +5775,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/lissy93/web-check" }, + "weblate": { + "default_ports": [ + 80 + ], + "file_path": "/root/.weblate", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/weblate.webp", + "repo": "WeblateOrg/weblate", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://weblate.org/" + }, "webtrees": { "default_ports": [ 80 @@ -5073,6 +5801,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://webtrees.net/" }, + "whisparr-eros": { + "default_ports": [ + 6969 + ], + "file_path": "/root/.whisparr-eros", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/whisparr.webp", + "repo": "Whisparr/Whisparr-Eros", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/Whisparr/Whisparr-Eros" + }, "whodb": { "default_ports": [ 8080 @@ -5095,7 +5836,7 @@ "github_source": "releases", "installed_via": "file", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/wiki-js.webp", - "repo": "requarks/wiki", + "repo": "requarks/wiki-v2", "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://js.wiki/" }, @@ -5185,6 +5926,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://yopass.se/" }, + "your-spotify": { + "default_ports": [ + 3000 + ], + "file_path": "/root/.your-spotify", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/your-spotify.webp", + "repo": "Yooooomi/your_spotify", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/Yooooomi/your_spotify" + }, "yourls": { "default_ports": [ 80 @@ -5198,6 +5952,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://yourls.org/" }, + "youtarr": { + "default_ports": [ + 3011 + ], + "file_path": "/root/.youtarr", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/youtarr.webp", + "repo": "DialmasterOrg/Youtarr", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://youtarr.com/" + }, "yt-dlp-webui": { "default_ports": [ 3033 @@ -5211,6 +5978,19 @@ "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", "website": "https://github.com/marcopiovanello/yt-dlp-web-ui" }, + "ytptube": { + "default_ports": [ + 8081 + ], + "file_path": "/root/.ytptube", + "file_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "github_source": "releases", + "installed_via": "file", + "logo": "https://cdn.jsdelivr.net/gh/arabcoders/ytptube@master/ui/public/images/favicon.png", + "repo": "arabcoders/ytptube", + "tag_regex": "(?i)(?:v|release[-_/]?)?(\\d+(?:\\.\\d+){1,3}(?:[-+._][0-9A-Za-z.-]+)?)", + "website": "https://github.com/arabcoders/ytptube" + }, "yubal": { "default_ports": [ 8000 diff --git a/json/helpers_cache.json b/json/helpers_cache.json index 0d1f94be..296e333e 100644 --- a/json/helpers_cache.json +++ b/json/helpers_cache.json @@ -15,7 +15,7 @@ "Authentication & Security" ], "notes": [ - "Database credentials: `cat ~/2FAuth.creds`", + "Database credentials: `cat ~/2fauth.creds`", "The very first account created is automatically set up as an administrator account.", "Users should register with http:///register" ], @@ -34,6 +34,82 @@ "config_path": "", "os": "debian" }, + { + "name": "8mb.local", + "slug": "8mblocal", + "desc": "8mb.local is a self-hosted video compressor inspired by 8mb.video, free for non-commercial use (CC BY-NC 4.0). Pick a target size such as 8, 25 or 50 MB and it works out the bitrate and encodes to H.264, HEVC or AV1, on the CPU or with NVENC, Quick Sync or VAAPI.", + "script": "ct/8mblocal.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/8mblocal.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/8mblocal.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00013" + ], + "category_names": [ + "Media & Streaming" + ], + "notes": [ + "The UI is behind HTTP Basic auth: user admin, password AUTH_PASS in /opt/8mblocal_data/.env. Change it under Settings > Authentication.", + "Hardware encoders are only offered when a test encode passes at startup. For NVENC, the NVIDIA libraries in the container must match the host driver version." + ], + "warnings": [ + "Uploads and results are deleted after 1 hour. Download results right away or raise the retention under Settings." + ], + "port": 8001, + "website": "https://github.com/JMS1717/8mb.local", + "documentation": "https://github.com/JMS1717/8mb.local#readme", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/8mb-local.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "admin", + "password": "" + }, + "os": "debian" + }, + { + "name": "Activepieces", + "slug": "activepieces", + "desc": "Activepieces is an open-source workflow automation platform and Zapier alternative. Flows are built visually from hundreds of integrations, branches, loops, approvals and TypeScript code steps, run on schedules, webhooks or app events, and every integration is also available as an MCP tool.", + "script": "ct/activepieces.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/activepieces.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/activepieces.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00019" + ], + "category_names": [ + "Automation & Scheduling" + ], + "notes": [ + "Webhook and OAuth2 URLs come from AP_FRONTEND_URL in /opt/activepieces_data/.env. Behind a reverse proxy or domain, change it and run systemctl restart activepieces." + ], + "warnings": [ + "There is no default account: the first sign-up becomes the platform admin and closes sign-up. Anyone who reaches the port can claim it, so create it right after the install.", + "Code steps are not sandboxed, so anyone who can edit flows can run code in the container. Only give flow access to people you trust." + ], + "port": 80, + "website": "https://www.activepieces.com/", + "documentation": "https://www.activepieces.com/docs/install/overview", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/activepieces.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Actual Budget Prometheus Exporter", "slug": "actual-budget-prometheus-exporter", @@ -449,6 +525,42 @@ "config_path": "", "os": "ubuntu" }, + { + "name": "AIOStreams", + "slug": "aiostreams", + "desc": "AIOStreams consolidates multiple Stremio addons and debrid services into a single, highly customisable super-addon, with filtering, sorting, and formatting of results.", + "script": "ct/aiostreams.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/aiostreams.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/aiostreams.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00013" + ], + "category_names": [ + "Media & Streaming" + ], + "notes": [ + "The FUSE share (Shares > FUSE) needs /dev/fuse: set var_fuse=yes or enable FUSE in the advanced install before creating the container. WebDAV and NFS shares work without it." + ], + "warnings": [ + "No authentication is enabled by default. Set AIOSTREAMS_AUTH in /opt/aiostreams_data/.env to secure the dashboard.", + "Keep SECRET_KEY in /opt/aiostreams_data/.env: changing it after the first run invalidates all saved encrypted configs. Back up the .env file." + ], + "port": 3000, + "website": "https://github.com/Viren070/AIOStreams", + "documentation": "https://docs.aiostreams.viren070.me/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/aiostreams.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "AirTrail", "slug": "airtrail", @@ -532,6 +644,7 @@ "Gaming & Leisure" ], "notes": [ + "The script asks which Debian release AllStarLink runs on (13 Trixie or 12 Bookworm) and pulls the matching asl-apt-repos package. Upstream ships asl3 3.18.2 for both.", "Cloud-Init is enabled by default. Configure your SSH key and credentials in the Proxmox Cloud-Init tab before starting the VM.", "If you use Cloud-init, checkout cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`" ], @@ -539,11 +652,11 @@ "port": 0, "website": "https://allstarlink.org/", "documentation": "https://allstarlink.github.io/", - "logo": "", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/allstar-link.webp", "updateable": false, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "vm" ], @@ -551,12 +664,12 @@ "os": "" }, { - "name": "AlmaLinux 10", - "slug": "almalinux-10-vm", - "desc": "AlmaLinux 10 (Heliotrope Lion) is a community-driven, RHEL-compatible enterprise Linux distribution. It provides a stable, production-ready platform with long-term support, making it ideal for servers, workloads, and cloud deployments.", - "script": "vm/almalinux-10-vm.sh", - "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/almalinux-10-vm.sh", - "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/vm/almalinux-10-vm.sh", + "name": "AlmaLinux", + "slug": "almalinux-vm", + "desc": "AlmaLinux as a cloud image, with a choice of release at start: 10, 9 or 8. A community-owned RHEL-compatible distribution.", + "script": "vm/almalinux-vm.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/almalinux-vm.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/vm/almalinux-vm.sh", "type": "vm", "type_id": "lte524abgx960bd", "categories": [ @@ -566,6 +679,7 @@ "Operating Systems & Appliances" ], "notes": [ + "The script asks which AlmaLinux release to install (10, 9 or 8). AlmaLinux 10 requires an x86-64-v3 capable host CPU; 9 and 8 run on older hardware.", "Cloud-Init is enabled by default. Configure your SSH key and credentials in the Proxmox Cloud-Init tab before starting the VM.", "If you use Cloud-init, checkout cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`" ], @@ -577,7 +691,7 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "vm" ], @@ -808,7 +922,7 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "vm" ], @@ -940,11 +1054,11 @@ "port": 8080, "website": "https://apps.ankiweb.net/", "documentation": "https://docs.ankiweb.net/sync-server.html", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/anki-sync-server.webp", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/anki.webp", "updateable": true, "privileged": false, "has_arm": true, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -955,6 +1069,43 @@ }, "os": "debian" }, + { + "name": "Anubis", + "slug": "anubis", + "desc": "Anubis is a reverse proxy that sits in front of a web service and stops AI scrapers and abusive bots with a proof-of-work challenge, while letting real browsers and well-behaved crawlers through.", + "script": "ct/anubis.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/anubis.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/anubis.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00021", + "scriptcat00006" + ], + "category_names": [ + "Webservers & Proxies", + "Authentication & Security" + ], + "notes": [ + "Anubis forwards to TARGET in /etc/anubis/main.env. Set it to the service you want to protect, run systemctl restart anubis@main and point your reverse proxy or DNS at port 8923.", + "Behind a TLS reverse proxy, set COOKIE_SECURE=true and remove USE_REMOTE_ADDRESS in main.env so client IPs come from X-Forwarded-For.", + "One instance protects one TARGET. For another service, copy main.env to /etc/anubis/.env with its own BIND, METRICS_BIND and TARGET, then run systemctl enable --now anubis@." + ], + "warnings": [], + "port": 8923, + "website": "https://anubis.techaro.lol/", + "documentation": "https://anubis.techaro.lol/docs/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/anubis.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "AnythingLLM", "slug": "anythingllm", @@ -985,7 +1136,7 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -1423,8 +1574,8 @@ "Operating Systems & Appliances" ], "notes": [ - "Cloud-Init is enabled by default. Configure your SSH key and credentials in the Proxmox Cloud-Init tab before starting the VM.", - "If you use Cloud-init, checkout cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`" + "This boots the Arch installer ISO, which logs in as root by itself. Run `archinstall` or install by hand onto the empty disk, then detach the ISO with `qm set --ide2 none`.", + "The Arch ISO carries no Cloud-Init and no guest agent. Install `qemu-guest-agent` in the guest for Proxmox to show its IP." ], "warnings": [], "port": 0, @@ -1515,10 +1666,10 @@ "type": "lxc", "type_id": "nm9bra8mzye2scg", "categories": [ - "scriptcat00014" + "scriptcat00012" ], "category_names": [ - "*Arr Suite" + "Documents & Notes" ], "notes": [ "This script will prompt you to select the applications you want to install and configure the network settings." @@ -1526,7 +1677,7 @@ "warnings": [], "port": 3010, "website": "https://community-scripts.org", - "documentation": "community-scripts/ProxmoxVED/blob/main/tools/arr-stack.sh", + "documentation": "community-scripts/DevScripts/blob/main/tools/arr-stack.sh", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/ProxmoxVE.webp", "updateable": true, "privileged": false, @@ -1630,7 +1781,7 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -2322,6 +2473,41 @@ "config_path": "", "os": "alpine" }, + { + "name": "Blinko", + "slug": "blinko", + "desc": "Blinko is a self-hosted, open-source AI note-taking tool. Short \"blinkos\" capture quick ideas and longer notes hold the rest, all in Markdown with tags and todos. With an AI provider such as OpenAI, Anthropic or Ollama it adds RAG search and a chat over your notes.", + "script": "ct/blinko.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/blinko.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/blinko.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00012" + ], + "category_names": [ + "Documents & Notes" + ], + "notes": [ + "AI search, chat and tagging stay off until you add a model provider under Settings > AI." + ], + "warnings": [ + "There is no default account: the first sign-up becomes the administrator and closes sign-up. Anyone who reaches the port can claim it, so create it right after the install." + ], + "port": 1111, + "website": "https://blinko.space/", + "documentation": "https://docs.blinko.space/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/blinko.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "BlissOS", "slug": "blissos-vm", @@ -2334,12 +2520,10 @@ "categories": [], "category_names": [], "notes": [ - "Without a passed-through GPU everything renders in software, which works but is slow. For Android apps on a Linux host instead, waydroid-vm is the lighter option.", - "This VM boots an installer. Open the console, choose Installation, create and format a partition on sda, and say yes to GRUB and a writable /system.", - "This is the FOSS build, without Google apps. The Gapps tree sits beside it on SourceForge." + "Without a passed-through GPU everything renders in software, which works but is slow. For Android apps on a Linux host, waydroid-vm is the lighter option." ], "warnings": [ - "The last official x86 release is from October 2024 (BlissOS 16, Android 13). The BlissOS17 directories exist on SourceForge but contain no builds." + "The last official x86 release is BlissOS 16 (Android 13) from October 2024. There are no newer builds." ], "port": 0, "website": "https://blissos.org/", @@ -2386,6 +2570,37 @@ "config_path": "", "os": "debian" }, + { + "name": "Blocky", + "slug": "blocky", + "desc": "Blocky is a software tool designed for blocking unwanted ads and trackers on local networks. It functions as a DNS proxy and runs on the Go programming language. Blocky intercepts requests to advertisements and other unwanted content and blocks them before they reach the end user. This results in a cleaner, faster, and more secure online experience for users connected to the local network. Blocky is open-source, easy to configure and can be run on a variety of devices, making it a versatile solution for small to medium-sized local networks.", + "script": "ct/blocky.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/blocky.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/blocky.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00005" + ], + "category_names": [ + "Adblock & DNS" + ], + "notes": [], + "warnings": [], + "port": 4000, + "website": "https://0xerr0r.github.io/blocky/", + "documentation": "https://0xerr0r.github.io/blocky/latest/configuration/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/blocky.webp", + "updateable": true, + "privileged": false, + "has_arm": true, + "is_dev": false, + "execute_in": [ + "pve" + ], + "config_path": "", + "os": "alpine" + }, { "name": "BookLore", "slug": "booklore", @@ -2495,7 +2710,7 @@ { "name": "Borg-UI", "slug": "borg-ui", - "desc": "Borg-UI is a web frontend for BorgBackup. It replaces the borg command line for everyday work: creating and browsing repositories, scheduling backups, inspecting archives and restoring files, all from the browser. BorgBackup itself is installed alongside it.", + "desc": "Borg-UI is a web frontend for BorgBackup. It replaces the borg command line for everyday work: creating and browsing repositories, scheduling backups, inspecting archives and restoring files, all from the browser. Borg 1 and Borg 2 are installed alongside it, at the versions the upstream release pins.", "script": "ct/borg-ui.sh", "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/borg-ui.sh", "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/borg-ui.sh", @@ -2508,11 +2723,12 @@ "Backup & Recovery" ], "notes": [ - "Create your account through the web UI at http://:8081 on first visit.", + "Borg 1 and Borg 2 are both installed, as 'borg' and 'borg2'. Their versions are not chosen by this script: they are read from docker/runtime-base.env in the upstream repository, which is Borg-UI's declared single source of truth, so an update follows whatever the release pins. rclone is installed from the same file for rclone:// repositories and cloud mirroring.", "ENABLE_STARTUP_LICENSE_SYNC is set to false in /opt/borg-ui/.env so the container does not contact the upstream licence service on every start. Set it to true if you use a paid licence.", "Application data lives in /opt/borg-ui_data. The Borg repositories themselves are wherever you point them - those are the ones that actually matter for backups." ], "warnings": [ + "Log in with admin / admin123 and change the password immediately - the UI prompts for it on first login.", "This container backs up what it can see. Mount the directories you want to protect into the LXC, and for remote repositories deploy an SSH key from the UI to the target host." ], "port": 8081, @@ -2522,7 +2738,7 @@ "updateable": true, "privileged": false, "has_arm": true, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -2567,6 +2783,42 @@ "config_path": "", "os": "debian" }, + { + "name": "Budibase", + "slug": "budibase", + "desc": "Budibase is a low-code platform for building internal tools such as forms, portals, admin panels and approval apps. Apps run on its built-in database or on PostgreSQL, MySQL, REST APIs and Google Sheets, with automations triggered by events, schedules or webhooks.", + "script": "ct/budibase.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/budibase.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/budibase.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00020" + ], + "category_names": [ + "AI / Coding & Dev-Tools" + ], + "notes": [ + "Without a license key Budibase runs the free self-hosted plan: one workspace, unlimited users and rows, no user groups and no custom AI providers.", + "AI agents and custom AI providers also need your own LiteLLM proxy: set LITELLM_URL and LITELLM_MASTER_KEY in /opt/budibase_data/.env and run systemctl restart budibase-server." + ], + "warnings": [ + "There is no default account: create the admin on the setup page right after the install. Until then anyone who reaches port 80 can claim it." + ], + "port": 80, + "website": "https://budibase.com/", + "documentation": "https://docs.budibase.com/docs/hosting-methods", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/budibase.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "BunkerWeb", "slug": "bunkerweb", @@ -2633,6 +2885,42 @@ "config_path": "", "os": "debian" }, + { + "name": "ByteChef", + "slug": "bytechef", + "desc": "ByteChef is an open-source API integration and workflow automation platform. Workflows are built visually from 170+ connectors, conditions, loops and JavaScript, Python or Ruby code steps, and run manually, on a schedule or from webhooks.", + "script": "ct/bytechef.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/bytechef.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/bytechef.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00019" + ], + "category_names": [ + "Automation & Scheduling" + ], + "notes": [ + "Webhook and OAuth2 URLs come from BYTECHEF_PUBLIC_URL in /opt/bytechef_data/.env. Behind a reverse proxy or domain, change it and run systemctl restart bytechef.", + "This build runs the Enterprise Edition. Its enterprise modules (embedded iPaaS, API platform, AI gateway, SSO, audit log) are free for development and testing; production use needs a subscription." + ], + "warnings": [ + "There is no default account: the first sign-up (Create account on the login page) becomes the administrator and closes sign-up. Anyone who reaches the port can claim it, so do it right away." + ], + "port": 8080, + "website": "https://www.bytechef.io/", + "documentation": "https://docs.bytechef.io/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/bytechef.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "ByteStash", "slug": "bytestash", @@ -2767,6 +3055,38 @@ "config_path": "", "os": "alpine" }, + { + "name": "Calagopus", + "slug": "calagopus", + "desc": "Modern game server management panel built in Rust. Deploy, monitor, and manage Minecraft, Hytale, and other game servers with industry-leading performance.", + "script": "ct/calagopus.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/calagopus.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/calagopus.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [], + "category_names": [], + "notes": [ + "Installs the All-in-One (AIO) build, which bundles the Panel and Wings in a single binary for single-node deployments.", + "Docker is installed as a system dependency because Wings uses it to run the actual game server containers; the Panel and Wings processes themselves run natively, not inside Docker." + ], + "warnings": [ + "The encryption key is generated automatically and saved to /etc/calagopus/.env. Back it up, losing it will make existing data unreadable." + ], + "port": 8000, + "website": "https://calagopus.com", + "documentation": "https://calagopus.com/docs", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/calagopus.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Calibre-Web", "slug": "calibre-web", @@ -2838,6 +3158,46 @@ "config_path": "", "os": "debian" }, + { + "name": "Casdoor", + "slug": "casdoor", + "desc": "Casdoor is an open-source identity and access management (IAM) and single sign-on platform. It acts as an OAuth 2.0, OIDC, SAML and CAS provider with LDAP, RADIUS and SCIM endpoints, social logins, MFA and WebAuthn, and Casbin-based permissions.", + "script": "ct/casdoor.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/casdoor.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/casdoor.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00006" + ], + "category_names": [ + "Authentication & Security" + ], + "notes": [ + "origin in /opt/casdoor_data/conf/app.conf is the OIDC issuer. Behind a reverse proxy or domain, change it before connecting applications and run systemctl restart casdoor.", + "Casdoor also serves LDAP on port 389 and RADIUS on UDP port 1812. The RADIUS secret is radiusSecret in /opt/casdoor_data/conf/app.conf." + ], + "warnings": [ + "The default admin login (organization built-in) is public and controls every user and application. Change the password right away under the user menu > My Account." + ], + "port": 8000, + "website": "https://casdoor.ai/", + "documentation": "https://casdoor.ai/docs/overview", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/casdoor.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "admin", + "password": "123" + }, + "os": "debian" + }, { "name": "Castopod", "slug": "castopod", @@ -2948,6 +3308,43 @@ }, "os": "debian" }, + { + "name": "CertMate", + "slug": "certmate", + "desc": "CertMate is a self-hosted SSL/TLS certificate manager. It issues and renews certificates over ACME (Let's Encrypt, ZeroSSL or a private ACME CA) with DNS-01 across many DNS providers or HTTP-01, renews them on a schedule, and exposes a web UI and a REST API for issuing, downloading and deploying certificates, with encrypted backups and webhook notifications.", + "script": "ct/certmate.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/certmate.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/certmate.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00006" + ], + "category_names": [ + "Authentication & Security" + ], + "notes": [ + "CertMate listens on plain HTTP on port 8000 on every interface. To expose it beyond your LAN, put an HTTPS reverse proxy in front and set BEHIND_PROXY=true in /opt/certmate_data/.env, then run systemctl restart certmate.", + "Certificates, settings, backups and logs live in /opt/certmate_data and survive updates." + ], + "warnings": [ + "There is no default login. The first page creates the administrator account and asks for the API token, which the install generated: grep API_BEARER_TOKEN /opt/certmate_data/.env", + "Keep a copy of /opt/certmate_data/.env off the container. CERTMATE_BACKUP_PASSPHRASE encrypts the backups, and SECRET_KEY must match for a backup to restore the API token." + ], + "port": 8000, + "website": "https://www.certmate.org", + "documentation": "https://github.com/fabriziosalmi/certmate/blob/main/docs/installation.md", + "logo": "https://cdn.jsdelivr.net/gh/fabriziosalmi/certmate@main/certmate_logo.png", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Change Detection", "slug": "changedetection", @@ -3012,10 +3409,48 @@ "config_path": "", "os": "debian" }, + { + "name": "ChartDB", + "slug": "chartdb", + "desc": "ChartDB is a database diagram editor that runs in the browser. One query against PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, ClickHouse or CockroachDB returns the schema, which ChartDB turns into an editable ER diagram that can be exported as SQL, DBML or an image.", + "script": "ct/chartdb.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/chartdb.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/chartdb.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00008", + "scriptcat00020" + ], + "category_names": [ + "Databases", + "AI / Coding & Dev-Tools" + ], + "notes": [ + "ChartDB uses a self-signed certificate: accept the browser warning on the first visit." + ], + "warnings": [ + "Diagrams are stored in your browser, not in the container. Another browser, cleared site data or a new address shows an empty list, so export the diagrams you want to keep.", + "For the optional AI SQL export, set OPENAI_API_KEY or an OpenAI-compatible endpoint in /opt/chartdb_data/config.js. The key is sent to every browser that opens ChartDB, so use one with a spending limit." + ], + "port": 443, + "website": "https://chartdb.io/", + "documentation": "https://docs.chartdb.io/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/chartdb.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Chatto", "slug": "chatto", - "desc": "Chatto is a fully-featured, privacy-first team and group chat application that is free and easy to self-host. It ships as a single binary with an embedded NATS/JetStream store (no external database) and supports voice/video calls and screensharing via an optional LiveKit server.", + "desc": "Chatto is a privacy-first team and group chat app built for self-hosting. It runs as a single binary with an embedded NATS/JetStream store, so it needs no external database, and supports voice and video calls and screensharing through an optional LiveKit server.", "script": "ct/chatto.sh", "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/chatto.sh", "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/chatto.sh", @@ -3028,13 +3463,11 @@ "Communication & Community" ], "notes": [ - "Create the first account with `cd /opt/chatto && ./chatto operator user create --login admin` (the operator API is enabled by default), or register via the web UI at http://IP:4000.", - "Voice and video calls require a separately deployed LiveKit server; configure the [livekit] section in chatto.toml to enable them." - ], - "warnings": [ - "Review /opt/chatto_data/chatto.toml and configure SMTP credentials and a public webserver.url before using Chatto in production.", - "All persistent data (embedded NATS/JetStream store and chatto.toml with its secrets) lives in /opt/chatto_data, kept outside the app directory so it survives updates. Include /opt/chatto_data in regular backups." + "Register the first account in the web UI, or run cd /opt/chatto && ./chatto operator user create --login . Logins such as root, admin, op and operator are blocked.", + "Set SMTP credentials and a public webserver.url in /opt/chatto_data/chatto.toml before using Chatto in production.", + "Voice and video calls need a separately deployed LiveKit server, configured in the [livekit] section of chatto.toml." ], + "warnings": [], "port": 4000, "website": "https://chatto.run", "documentation": "https://docs.chatto.run", @@ -3079,7 +3512,7 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -3182,7 +3615,46 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, + { + "name": "Cinephage", + "slug": "cinephage", + "desc": "Cinephage is a self-hosted media manager that covers in one app what usually takes Radarr, Sonarr, Prowlarr, Bazarr and Overseerr: it discovers, searches, downloads and organizes movies and TV shows, manages indexers and subtitles, and adds smart lists, .strm streaming and Live TV. Cloudflare-protected indexers are handled by a built-in headless browser (Camoufox) instead of FlareSolverr. Downloads go to external clients such as qBittorrent, SABnzbd or NZBGet.", + "script": "ct/cinephage.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/cinephage.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/cinephage.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00014" + ], + "category_names": [ + "*Arr Suite" + ], + "notes": [ + "Cinephage needs a free TMDB API key (themoviedb.org/settings/api), entered in the settings after the first login. Download clients (qBittorrent, SABnzbd, NZBGet, Deluge, Transmission, rTorrent, aria2, Debrid) run outside this container and are added by URL.", + "Bind-mount the media library and the download folder into the container (e.g. /media and /downloads) and add them as root folders. The download client has to see the downloads under the same path, otherwise imports fail.", + "Behind a reverse proxy or a hostname, set BETTER_AUTH_URL in /opt/cinephage_data/.env to the public URL (or the External URL under Settings > System), then run systemctl restart cinephage.", + "Install and updates build Cinephage from source, which peaks at about 3.3 GB RAM on 2 cores (about 3.8 GB on 4). Cloudflare challenges are solved with the bundled Camoufox browser (about 1.3 GB in /root/.cache/camoufox), and each running solve uses another 300 MB to 1 GB." + ], + "warnings": [ + "There is no default account. Open http://:3000 and complete the setup wizard: it creates the only admin account and closes sign-up. Anyone who reaches the port can claim it until then, so finish the setup right after the install.", + "Back up BETTER_AUTH_SECRET from /opt/cinephage_data/.env together with the database in /opt/cinephage_data. Losing or changing it signs everyone out and makes the stored API keys unrecoverable." + ], + "port": 3000, + "website": "https://github.com/MoldyTaint/Cinephage", + "documentation": "https://docs.cinephage.net/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/cinephage.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, "execute_in": [ "lxc" ], @@ -3376,11 +3848,10 @@ "Network & Firewall" ], "notes": [ - "To update the configuration edit `/etc/systemd/system/cloudflare-ddns.service`. After edit please restart with `systemctl restart cloudflare-ddns`" - ], - "warnings": [ - "To setup the updater you must have the Cloudflare Token and the domains, please read the Github documentation at `https://github.com/favonia/cloudflare-ddns?tab=readme-ov-file#-step-1-updating-the-compose-file` (only the expandable section)" + "To setup the updater you must have a Cloudflare Account API Token with \"DNS Read\" and \"DNS Write\" permission on the domains you want to create or update. See also the Github documentation at `https://github.com/favonia/cloudflare-ddns?tab=readme-ov-file#-step-1-updating-the-compose-file` (only the expandable section).", + "To update the configuration, edit `/etc/cloudflare-ddns.env`. After editing, please restart with `systemctl restart cloudflare-ddns`. Check the logs with `journalctl -u cloudflare-ddns -f`" ], + "warnings": [], "port": 0, "website": "https://github.com/favonia/cloudflare-ddns", "documentation": "https://github.com/favonia/cloudflare-ddns/blob/main/README.markdown", @@ -3393,6 +3864,10 @@ "pve" ], "config_path": "", + "default_credentials": { + "username": "root", + "password": "" + }, "os": "debian" }, { @@ -3537,28 +4012,22 @@ { "name": "Colanode", "slug": "colanode", - "desc": "Open-source, local-first collaboration workspace — a self-hosted Slack and Notion alternative with real-time chat, rich text pages, customizable databases, and file management.", + "desc": "Colanode is an open-source, local-first collaboration workspace and a self-hosted alternative to Slack and Notion, with real-time chat, rich text pages, customizable databases and file management.", "script": "ct/colanode.sh", "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/colanode.sh", "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/colanode.sh", "type": "lxc", "type_id": "nm9bra8mzye2scg", "categories": [ - "scriptcat00012", - "scriptcat000026" + "scriptcat00012" ], "category_names": [ - "Documents & Notes", - "Productivity & Workflows" + "Documents & Notes" ], "notes": [ - "Access the web interface at https://YOUR_IP:4000. When adding a server in the desktop or mobile app, enter https://YOUR_IP:4000 as the server URL.", - "No default credentials — open the web UI and register a new account on first access." - ], - "warnings": [ - "Before using the app: download and import the self-signed certificate into your browser. Navigate to https://YOUR_IP:4000/colanode.crt and install it as a trusted CA. This is required for Service Worker and OPFS storage to work.", - "Requires at least 4 GB RAM for the build process." + "There is no default account: register one in the web UI on first access." ], + "warnings": [], "port": 4000, "website": "https://colanode.com/", "documentation": "https://github.com/colanode/colanode/blob/main/hosting/docker", @@ -4266,6 +4735,42 @@ "config_path": "", "os": "debian" }, + { + "name": "Databasement", + "slug": "databasement", + "desc": "Databasement is a self-hosted backup manager for MySQL, MariaDB, PostgreSQL, MongoDB, SQLite and Redis/Valkey. It runs scheduled or on-demand backups, optionally through an SSH tunnel, stores them locally or on S3, SFTP, FTP, Samba or Azure, and restores them to any registered server.", + "script": "ct/databasement.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/databasement.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/databasement.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00007" + ], + "category_names": [ + "Backup & Recovery" + ], + "notes": [ + "Backup jobs run as www-data, so a local volume needs a path www-data can write to, such as /opt/databasement_data/backups." + ], + "warnings": [ + "There is no default account: the first account created at /register becomes the administrator and closes sign-up. Anyone who reaches the page can claim it, so create it right after the install.", + "Back up APP_KEY from /opt/databasement_data/.env. It encrypts the stored server passwords and, unless BACKUP_ENCRYPTION_KEY is set, the backups, so neither can be read without it." + ], + "port": 80, + "website": "https://david-crty.github.io/databasement/", + "documentation": "https://david-crty.github.io/databasement/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/databasement.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Databasus", "slug": "databasus", @@ -4444,43 +4949,9 @@ "os": "debian" }, { - "name": "Debian 13", - "slug": "debian-13-vm", - "desc": "Debian 13 (Trixie) as a cloud image. A general-purpose base for anything you would otherwise install by hand.", - "script": "vm/debian-13-vm.sh", - "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/debian-13-vm.sh", - "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/vm/debian-13-vm.sh", - "type": "vm", - "type_id": "lte524abgx960bd", - "categories": [ - "scriptcat00002" - ], - "category_names": [ - "Operating Systems & Appliances" - ], - "notes": [ - "Cloud-Init is enabled by default. Configure your SSH key and credentials in the Proxmox Cloud-Init tab before starting the VM.", - "If you use Cloud-init, checkout cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`" - ], - "warnings": [], - "port": 0, - "website": "https://www.debian.org/", - "documentation": "https://www.debian.org/doc/", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/debian.webp", - "updateable": false, - "privileged": false, - "has_arm": false, - "is_dev": false, - "execute_in": [ - "vm" - ], - "config_path": "", - "os": "" - }, - { - "name": "Debian 12", + "name": "Debian", "slug": "debian-vm", - "desc": "Debian 12 (Bookworm) as a cloud image. The long-standing default base for servers that value stability over recency.", + "desc": "Debian as a cloud image, with a choice of release at start: 13 (Trixie), 12 (Bookworm) or 11 (Bullseye). The long-standing default base for servers that value stability over recency.", "script": "vm/debian-vm.sh", "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/debian-vm.sh", "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/vm/debian-vm.sh", @@ -4493,10 +4964,13 @@ "Operating Systems & Appliances" ], "notes": [ - "Cloud-Init is enabled by default. Configure your SSH key and credentials in the Proxmox Cloud-Init tab before starting the VM.", + "The script asks which Debian release to install (13, 12 or 11). It replaces the former separate debian-13-vm script.", + "Cloud-Init is optional and off by default. Choosing it switches the image from nocloud to genericcloud; configure your SSH key and credentials in the Proxmox Cloud-Init tab before starting the VM.", "If you use Cloud-init, checkout cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`" ], - "warnings": [], + "warnings": [ + "Debian and Ubuntu Cloud Images use a serial console by default. In the Proxmox WebUI, use xterm.js instead of noVNC to enable console access and copy-paste." + ], "port": 0, "website": "https://www.debian.org/", "documentation": "https://www.debian.org/doc/", @@ -4571,6 +5045,42 @@ "updateable": true, "privileged": false, "has_arm": true, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, + { + "name": "Deemix", + "slug": "deemix", + "desc": "Deemix is a Deezer music downloader with a web interface, in the maintained community fork by bambanah. It downloads tracks, albums, playlists and discographies from Deezer with tags and cover art, in MP3 or FLAC depending on the account.", + "script": "ct/deemix.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/deemix.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/deemix.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00013" + ], + "category_names": [ + "Media & Streaming" + ], + "notes": [ + "Downloading needs your Deezer ARL: copy the arl cookie from deezer.com in your browser's developer tools and paste it under Settings > Login > Log in with ARL. It expires after about three months.", + "Music is saved to /opt/deemix_data/music. For a NAS, bind-mount the share there with pct set -mp0; in an unprivileged container the host directory must be writable by UID 100000." + ], + "warnings": [ + "Deemix has no login and uses the saved ARL for every visitor. Keep port 6595 on a trusted network or behind an authenticating reverse proxy." + ], + "port": 6595, + "website": "https://github.com/bambanah/deemix", + "documentation": "https://github.com/bambanah/deemix#readme", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/deemix.webp", + "updateable": true, + "privileged": false, + "has_arm": false, "is_dev": true, "execute_in": [ "lxc" @@ -4639,7 +5149,7 @@ "Miscellaneous" ], "notes": [ - "Add extension store repositories in Settings after first start (official repo: https://github.com/fccview/fccview-degoog-extensions).", + "Add extension store repositories in Settings after first start (official repo: https://github.com/degoog-org/official-extensions).", "If you need to access to settings page, you can find the password here `cat /opt/degoog/.env`." ], "warnings": [ @@ -4767,6 +5277,41 @@ }, "os": "devuan" }, + { + "name": "DietPi", + "slug": "dietpi", + "desc": "DietPi is a lightweight Debian-based OS with a curated software catalogue (dietpi-software) and simple configuration tools. The script creates a Debian LXC and converts it with the official dietpi-installer.", + "script": "ct/dietpi.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/dietpi.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/dietpi.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [], + "category_names": [], + "notes": [ + "Restart the container once after creation; DietPi's interactive first run setup starts at the next login.", + "SSH server, locale, software picks and more can be preconfigured in /boot/dietpi.txt before that restart.", + "A root password set in the advanced settings is applied to root and the dietpi user at that restart. Without one, both get the password dietpi." + ], + "warnings": [], + "port": 0, + "website": "https://dietpi.com/", + "documentation": "https://dietpi.com/docs/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/dietpi.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "root", + "password": "dietpi" + }, + "os": "debian" + }, { "name": "Directus", "slug": "directus", @@ -4958,10 +5503,10 @@ "category_names": [ "Containers & Docker" ], - "notes": [], - "warnings": [ - "The update function may modify or recreate Portainer containers (portainer/portainer-ce), even if they were created manually." + "notes": [ + "You can choose the add-on of your choice later; we offer many options, such as Arcane, Komodo, Dockhand, Dockge, Portainer..." ], + "warnings": [], "port": 0, "website": "https://www.docker.com/", "documentation": "", @@ -4991,10 +5536,10 @@ "category_names": [ "Containers & Docker" ], - "notes": [], - "warnings": [ - "The update function may modify or recreate Portainer containers (portainer/portainer-ce), even if they were created manually." + "notes": [ + "You can choose the add-on of your choice later; we offer many options, such as Arcane, Komodo, Dockhand, Dockge, Portainer..." ], + "warnings": [], "port": 0, "website": "https://www.docker.com/", "documentation": "", @@ -5079,6 +5624,42 @@ "config_path": "", "os": "debian" }, + { + "name": "Dockhand", + "slug": "dockhand", + "desc": "

Dockhand is a modern, efficient Docker management application providing real-time container management, Compose stack orchestration, and multi-environment support. All in a lightweight, secure and privacy-focused package.

", + "script": "tools/addon/dockhand.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/dockhand.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/tools/addon/dockhand.sh", + "type": "addon", + "type_id": "88xtxy57q80v38v", + "categories": [ + "scriptcat00003" + ], + "category_names": [ + "Containers & Docker" + ], + "notes": [ + "This is an addon script intended to be used on top of an existing Docker container.", + "Execute within an existing LXC console (Debian / Ubuntu / Alpine supported)", + "To update, run the addon script again and select Update, or use: bash <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/dockhand.sh)" + ], + "warnings": [], + "port": 3000, + "website": "https://dockhand.pro/", + "documentation": "https://dockhand.pro/manual/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/dockhand.webp", + "updateable": true, + "privileged": false, + "has_arm": true, + "is_dev": false, + "execute_in": [ + "lxc", + "vm" + ], + "config_path": "", + "os": "debian" + }, { "name": "Docmost", "slug": "docmost", @@ -5385,6 +5966,84 @@ "config_path": "", "os": "ubuntu" }, + { + "name": "Downtify", + "slug": "downtify", + "desc": "Downtify is a self-hosted music downloader with a web interface. Paste a Spotify, YouTube Music or Deezer link, or search by name, and it reads the metadata without a Spotify account or API key, downloads the matching audio from YouTube Music with yt-dlp and tags it with cover art and lyrics. It also has a library with a built-in player, a Playlist Monitor that downloads new tracks from watched playlists and artists, podcasts, M3U export for Jellyfin, Navidrome and Plex, and accounts for several users.", + "script": "ct/downtify.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/downtify.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/downtify.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00013" + ], + "category_names": [ + "Media & Streaming" + ], + "notes": [ + "Music is saved to /opt/downtify_data/downloads. To keep it on a NAS or share it with a media server, bind-mount that folder from the host, e.g. pct set -mp0 /mnt/media/music,mp=/opt/downtify_data/downloads. In an unprivileged container the host folder must be writable by UID 100000.", + "Settings, accounts, the Playlist Monitor database and an uploaded cookies.txt live in /opt/downtify_data/data, outside the app directory, so updates keep them. Optional variables from the documentation (TZ, DOWNTIFY_MONITOR_SYNC_TIME, DOWNTIFY_FORCE_IPV4, ...) go in /opt/downtify_data/.env, followed by systemctl restart downtify.", + "If YouTube starts refusing downloads (\"Sign in to confirm you're not a bot\", age-restricted tracks), upload a cookies.txt from a logged-in browser in Settings > YouTube cookies.", + "Downtify downloads the audio from YouTube. Whether that is allowed depends on YouTube's terms of service and the law where you live." + ], + "warnings": [ + "Every Downtify server starts with the same login, admin / downtify. Change the password right after the first sign-in in Settings > General > Account. If you forget it, reset it to the default with: cd /opt/downtify && set -a && . /opt/downtify_data/.env && set +a && .venv/bin/python main.py auth-reset", + "Downtify serves plain HTTP on port 8000. Do not expose it to the internet directly; put it behind a reverse proxy with HTTPS. Add the proxy's address as DOWNTIFY_TRUSTED_PROXIES= to /opt/downtify_data/.env and have the proxy send X-Forwarded-Host/-Proto/-For, otherwise Downtify answers \"Cross-site request refused\" when the proxy rewrites the Host header, and rate-limits sign-ins by the proxy's address." + ], + "port": 8000, + "website": "https://downtify.henriquesebastiao.com/", + "documentation": "https://downtify.henriquesebastiao.com/getting-started/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/downtify.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "admin", + "password": "downtify" + }, + "os": "debian" + }, + { + "name": "Dragonfly", + "slug": "dragonfly", + "desc": "Dragonfly is an in-memory data store compatible with the Redis and Memcached APIs, so existing Redis clients and tools work against it unchanged. It is multi-threaded, uses every core it is given and takes snapshots without forking.", + "script": "ct/dragonfly.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/dragonfly.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/dragonfly.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00008" + ], + "category_names": [ + "Databases" + ], + "notes": [ + "When memory is full, writes fail instead of evicting old keys. For cache use, add --cache_mode=true to /etc/dragonfly/dragonfly.conf and run systemctl restart dragonfly." + ], + "warnings": [ + "Dragonfly refuses to start with less than 256 MiB of free RAM per CPU core. Add RAM when you add cores, or set --maxmemory= in /etc/dragonfly/dragonfly.conf." + ], + "port": 6379, + "website": "https://www.dragonflydb.io/", + "documentation": "https://www.dragonflydb.io/docs", + "logo": "https://cdn.jsdelivr.net/gh/dragonflydb/dragonfly@main/.github/images/logo-full.svg", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "DrawDB", "slug": "drawdb", @@ -5405,7 +6064,7 @@ "notes": [], "warnings": [], "port": 3000, - "website": "https://drawdb.vercel.app", + "website": "https://www.drawdb.app", "documentation": "https://github.com/drawdb-io/drawdb", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/drawdb.webp", "updateable": true, @@ -5451,6 +6110,42 @@ "config_path": "", "os": "debian" }, + { + "name": "Dreeve", + "slug": "dreeve", + "desc": "Dreeve, formerly Statistics for Strava, is a self-hosted dashboard for sports and fitness data. It imports your Strava activities and turns them into statistics, heatmaps, gear tracking, training analysis and yearly overviews.", + "script": "ct/dreeve.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/dreeve.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/dreeve.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00009" + ], + "category_names": [ + "Monitoring & Analytics" + ], + "notes": [ + "Create a Strava API application at https://www.strava.com/settings/api, put STRAVA_CLIENT_ID, STRAVA_CLIENT_SECRET and STRAVA_REFRESH_TOKEN into /opt/dreeve/.env.local and run systemctl restart dreeve.", + "FIT file import and push notifications are unavailable: the fit-tool and shoutrrr binaries of the official image are not included." + ], + "warnings": [ + "Upstream only supports Docker. This script runs the same FrankenPHP setup natively, so an upstream change can break it." + ], + "port": 8080, + "website": "https://dreeve.app/", + "documentation": "https://docs.dreeve.app/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/dreeve.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "DroppedNeedle", "slug": "droppedneedle", @@ -5622,7 +6317,7 @@ "updateable": true, "privileged": false, "has_arm": true, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -5701,6 +6396,42 @@ "config_path": "", "os": "ubuntu" }, + { + "name": "EmDash", + "slug": "emdash", + "desc": "EmDash is a full-stack TypeScript CMS built on Astro and meant as a modern successor to WordPress. It has a visual schema builder, a media library, revisions and scheduled publishing, sandboxed plugins, WordPress import and an MCP server for AI tools.", + "script": "ct/emdash.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/emdash.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/emdash.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00021" + ], + "category_names": [ + "Webservers & Proxies" + ], + "notes": [ + "Behind a reverse proxy with a trusted certificate, set EMDASH_SITE_URL in /opt/emdash_data/.env to its exact address and rebuild: cd /opt/emdash && set -a && . /opt/emdash_data/.env && set +a && pnpm build && systemctl restart emdash", + "To try it without a domain, set EMDASH_SITE_URL=http://localhost:4321, rebuild, run ssh -L 4321:localhost:4321 root@ and open http://localhost:4321/_emdash/admin." + ], + "warnings": [ + "The admin at /_emdash/admin signs in with passkeys only, which browsers allow on HTTPS with a domain or on localhost, never on an IP. The first account cannot be created at http://:4321." + ], + "port": 4321, + "website": "https://emdashcms.com/", + "documentation": "https://docs.emdashcms.com/", + "logo": "https://cdn.jsdelivr.net/gh/emdash-cms/emdash@main/docs/public/favicon.svg", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "EMQX", "slug": "emqx", @@ -5946,6 +6677,44 @@ "config_path": "", "os": "debian" }, + { + "name": "EspoCRM", + "slug": "espocrm", + "desc": "EspoCRM is an open-source CRM for managing contacts, accounts, leads, opportunities, cases and email, with a customizable entity manager and a REST API.", + "script": "ct/espocrm.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/espocrm.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/espocrm.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00025" + ], + "category_names": [ + "Business & ERP" + ], + "notes": [ + "The admin login is saved to ~/espocrm.creds inside the container.", + "If the IP changes or EspoCRM sits behind a domain or reverse proxy, update the site URL under Administration > Settings." + ], + "warnings": [], + "port": 80, + "website": "https://www.espocrm.com/", + "documentation": "https://docs.espocrm.com/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/espocrm.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "admin", + "password": "" + }, + "os": "debian" + }, { "name": "Etherpad", "slug": "etherpad", @@ -6147,6 +6916,40 @@ "config_path": "", "os": "debian" }, + { + "name": "FalkorDB", + "slug": "falkordb", + "desc": "FalkorDB is a low-latency property graph database built on sparse matrices (GraphBLAS), aimed at knowledge graphs and GraphRAG. It runs as a Redis module queried with OpenCypher from any Redis client, and FalkorDB Browser adds a web UI for queries and exploring graphs.", + "script": "ct/falkordb.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/falkordb.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/falkordb.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00008" + ], + "category_names": [ + "Databases" + ], + "notes": [ + "Log in to FalkorDB Browser with host localhost, port 6379, an empty username and the requirepass password from /etc/redis/falkordb.conf.", + "If you open the browser under another address (new IP, hostname, reverse proxy), set NEXTAUTH_URL in /opt/falkordb-browser_data/.env and run systemctl restart falkordb-browser." + ], + "warnings": [], + "port": 3000, + "website": "https://www.falkordb.com/", + "documentation": "https://docs.falkordb.com/", + "logo": "https://cdn.jsdelivr.net/gh/FalkorDB/falkordb-browser@main/public/icons/F-light.svg", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Fedora", "slug": "fedora", @@ -6205,7 +7008,7 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "vm" ], @@ -6280,6 +7083,42 @@ "config_path": "", "os": "debian" }, + { + "name": "Figranium", + "slug": "figranium", + "desc": "Figranium is a self-hosted browser automation platform. You build workflows from blocks such as navigate, click, type and extract in a visual editor, run them in headless Chromium, and trigger them from the UI, on a schedule or through the REST API.", + "script": "ct/figranium.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/figranium.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/figranium.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00019" + ], + "category_names": [ + "Automation & Scheduling" + ], + "notes": [ + "Workflows cannot open LAN addresses by default. To automate local services, set ALLOW_PRIVATE_NETWORKS=true in /opt/figranium_data/.env and run systemctl restart figranium.", + "To run tasks over the REST API, generate a key under Settings > API Keys and send it in the x-api-key header." + ], + "warnings": [ + "There is no default account: the first visitor becomes the administrator. Create the account right after the install." + ], + "port": 11345, + "website": "https://figranium.dev/", + "documentation": "https://figranium.dev/docs", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/figranium.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "File Browser", "slug": "filebrowser", @@ -6533,6 +7372,42 @@ "config_path": "", "os": "debian" }, + { + "name": "Firefox Syncserver", + "slug": "firefox-syncserver", + "desc": "Firefox Syncserver (syncstorage-rs) is Mozilla's server behind Firefox Sync. It keeps your bookmarks, history, passwords, tabs and add-ons on your own hardware, encrypted by Firefox before upload, while you still sign in with a regular Mozilla account.", + "script": "ct/firefox-syncserver.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/firefox-syncserver.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/firefox-syncserver.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00007" + ], + "category_names": [ + "Backup & Recovery" + ], + "notes": [ + "There is no web interface. Before signing in to Sync, set identity.sync.tokenserver.uri in about:config to http://:8000/1.0/sync/1.5 and restart Firefox.", + "On Android, tap the logo in Settings > About Firefox until the debug menu appears, then set the custom Sync server there before signing in." + ], + "warnings": [ + "Behind an HTTPS reverse proxy or after an IP change, set SYNC_TOKENSERVER__INIT_NODE_URL in /opt/firefox-syncserver_data/.env to the new origin, restart firefox-syncserver and update the URL in Firefox." + ], + "port": 8000, + "website": "https://www.mozilla.org/firefox/features/sync/", + "documentation": "https://mozilla-services.github.io/syncstorage-rs/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/firefox.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "fireshare", "slug": "fireshare", @@ -6858,6 +7733,43 @@ "config_path": "", "os": "debian" }, + { + "name": "Folding@home", + "slug": "foldingathome", + "desc": "Folding@home is a distributed computing project that simulates protein dynamics to help research diseases such as cancer, Alzheimer's and infectious diseases. This script installs the official v8.5 client, which runs headless and folds work units on the container's CPUs and on any passed-through GPU, managed remotely through the Folding@home Web Control.", + "script": "ct/foldingathome.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/foldingathome.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/foldingathome.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00000" + ], + "category_names": [ + "Miscellaneous" + ], + "notes": [ + "There is no local web interface. Manage the client from the Web Control at https://app.foldingathome.org/ once it is linked to your Folding@home account - the client's own port 7396 only listens on localhost.", + "A new client starts paused: press Fold in the Web Control. By default it leaves one of the container's cores free; the CPU count and which GPUs fold are set in the machine settings there.", + "GPU folding needs GPU passthrough, which the script enables when the host has a GPU. Supported NVIDIA, AMD and some Intel GPUs then appear in the machine settings, where each has to be enabled." + ], + "warnings": [ + "Linking needs the account token from Account Settings in the Web Control. If you skipped it, set it in /etc/fah-client/config.xml as and run systemctl restart fah-client. Generate a fresh token afterwards - only the newest token can add machines." + ], + "port": 0, + "website": "https://foldingathome.org/", + "documentation": "https://foldingathome.org/guides/v8-5", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/folding-home.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Forgejo", "slug": "forgejo", @@ -6873,7 +7785,9 @@ "category_names": [ "AI / Coding & Dev-Tools" ], - "notes": [], + "notes": [ + "The script installs SQLite3 as default database provider. You will be asked to select database type when you initially open the application URL. Select SQLite3 or provide your own database." + ], "warnings": [], "port": 3000, "website": "https://forgejo.org/", @@ -6904,7 +7818,9 @@ "category_names": [ "AI / Coding & Dev-Tools" ], - "notes": [], + "notes": [ + "The script installs SQLite3 as default database provider. You will be asked to select database type when you initially open the application URL. Select SQLite3 or provide your own database." + ], "warnings": [], "port": 3000, "website": "https://forgejo.org/", @@ -6955,6 +7871,42 @@ "config_path": "", "os": "debian" }, + { + "name": "Formbricks", + "slug": "formbricks", + "desc": "Formbricks is an open-source survey and experience management platform and an alternative to Qualtrics. It runs link, website and in-app surveys with logic and multiple languages, and passes responses on through webhooks, the API and integrations such as Slack, Notion and Zapier.", + "script": "ct/formbricks.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/formbricks.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/formbricks.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00025" + ], + "category_names": [ + "Business & ERP" + ], + "notes": [ + "Logins and survey links are built from WEBAPP_URL and NEXTAUTH_URL in /opt/formbricks_data/.env. Change both behind a reverse proxy or after an IP change, then run systemctl restart formbricks.", + "File uploads need S3-compatible storage (S3_* settings) and emails need SMTP (SMTP_* and MAIL_FROM). Add them to /opt/formbricks_data/.env." + ], + "warnings": [ + "There is no default account: the first sign-up becomes the administrator and closes public sign-up. Create it right after the install." + ], + "port": 3000, + "website": "https://formbricks.com/", + "documentation": "https://formbricks.com/docs/self-hosting/overview", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/formbricks.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "FreePBX", "slug": "freepbx", @@ -7481,8 +8433,8 @@ "notes": [], "warnings": [], "port": 4321, - "website": "https://github.com/RayLabsHQ/gitea-mirror/", - "documentation": "https://github.com/RayLabsHQ/gitea-mirror/", + "website": "https://gitea-mirror.raylabs.io", + "documentation": "https://gitea-mirror.raylabs.io/docs/", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/gitea-mirror.webp", "updateable": true, "privileged": false, @@ -7494,6 +8446,74 @@ "config_path": "", "os": "debian" }, + { + "name": "Gitea Runner", + "slug": "gitea-runner", + "desc": "Gitea Runner (act_runner) is the daemon that executes CI/CD jobs for Gitea Actions. It connects to your Gitea instance, polls for queued workflow runs, and executes tasks using either host execution or containerized engines.", + "script": "ct/gitea-runner.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/gitea-runner.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/gitea-runner.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00020" + ], + "category_names": [ + "AI / Coding & Dev-Tools" + ], + "notes": [ + "Create a registration token in Gitea under Site Administration > Actions > Runners and enter it with your Gitea URL during setup, so the runner registers and starts on its own.", + "Skipped that step? Run the register command the install prints, then start the gitea-runner service." + ], + "warnings": [], + "port": 0, + "website": "https://gitea.com/gitea/runner", + "documentation": "https://docs.gitea.com/runner/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/gitea.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, + { + "name": "Gitea Runner", + "slug": "gitea-runner", + "desc": "Gitea Runner (act_runner) is the daemon that executes CI/CD jobs for Gitea Actions. It connects to your Gitea instance, polls for queued workflow runs, and executes tasks using either host execution or containerized engines.", + "script": "ct/gitea-runner.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/gitea-runner.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/gitea-runner.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00020" + ], + "category_names": [ + "AI / Coding & Dev-Tools" + ], + "notes": [ + "Create a registration token in Gitea under Site Administration > Actions > Runners and enter it with your Gitea URL during setup, so the runner registers and starts on its own.", + "Skipped that step? Run the register command the install prints, then start the gitea-runner service." + ], + "warnings": [], + "port": 0, + "website": "https://gitea.com/gitea/runner", + "documentation": "https://docs.gitea.com/runner/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/gitea.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "alpine" + }, { "name": "GitHub Runner", "slug": "github-runner", @@ -7602,6 +8622,37 @@ "config_path": "", "os": "debian" }, + { + "name": "Glance", + "slug": "glance", + "desc": "A self-hosted dashboard that puts all your feeds in one place", + "script": "ct/glance.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/glance.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/glance.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00010" + ], + "category_names": [ + "Dashboards & Frontends" + ], + "notes": [], + "warnings": [], + "port": 8080, + "website": "https://github.com/glanceapp/glance", + "documentation": "https://github.com/glanceapp/glance/blob/main/docs/configuration.md", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/glance.webp", + "updateable": true, + "privileged": false, + "has_arm": true, + "is_dev": false, + "execute_in": [ + "pve" + ], + "config_path": "", + "os": "alpine" + }, { "name": "Glances", "slug": "glances", @@ -7863,6 +8914,82 @@ "config_path": "", "os": "debian" }, + { + "name": "Gopeed", + "slug": "gopeed", + "desc": "Gopeed is a fast download manager for HTTP(S), BitTorrent, Magnet links and ed2k, written in Go and Flutter. It supports JavaScript extensions, a REST API, webhooks, post-download scripts and browser integration.", + "script": "ct/gopeed.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/gopeed.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/gopeed.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00011" + ], + "category_names": [ + "Files & Downloads" + ], + "notes": [ + "The login password is generated during the install and stored in /opt/gopeed_data/config.json. Run systemctl restart gopeed after changing it.", + "The REST API and the browser extension's remote mode use the apiToken from the same file, sent as the X-Api-Token header." + ], + "warnings": [ + "Keep /opt/gopeed_data/config.json valid JSON. If Gopeed cannot parse it, it starts without any login on an empty database." + ], + "port": 9999, + "website": "https://gopeed.com/", + "documentation": "https://gopeed.com/docs", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/gopeed.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "gopeed", + "password": "" + }, + "os": "debian" + }, + { + "name": "Gotenberg", + "slug": "gotenberg", + "desc": "Gotenberg is a developer-friendly API for converting numerous document formats (HTML, Markdown, URLs and LibreOffice-supported office documents such as DOCX, XLSX, PPTX and ODF) into PDF. It also merges, splits, flattens and manipulates PDFs using Chromium, LibreOffice, QPDF, pdfcpu, PDFtk and ExifTool. This script builds Gotenberg from source and runs it bare-metal instead of via Docker.", + "script": "ct/gotenberg.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/gotenberg.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/gotenberg.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00012" + ], + "category_names": [ + "Documents & Notes" + ], + "notes": [ + "Gotenberg is a stateless conversion API - it has no web interface. Verify it is running with: curl http://:3000/health", + "Compiled from source on install (no prebuilt bare-metal binary exists) and bundles Chromium + LibreOffice, so the first install takes a while and pulls in sizeable dependencies. The first conversion after a (re)start is slower while Chromium/LibreOffice warm up." + ], + "warnings": [ + "The API listens on port 3000 with no authentication. Keep it on a private/internal network or place a reverse proxy with auth in front of it." + ], + "port": 3000, + "website": "https://gotenberg.dev/", + "documentation": "https://gotenberg.dev/docs/getting-started/introduction", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/gotenberg.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Gotify", "slug": "gotify", @@ -8174,6 +9301,39 @@ "config_path": "", "os": "debian" }, + { + "name": "PVE Guest Deletion", + "slug": "guest-delete", + "desc": "

This script helps manage and delete LXC containers or VM's on a Proxmox VE server. It lists all available containers/virtual machines, allowing the user to select one or more for deletion through an interactive menu. Running containers/vm's are automatically stopped before deletion, and the user is asked to confirm each action. The script ensures a controlled and efficient management process.

", + "script": "tools/pve/guest-delete.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/guest-delete.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/tools/pve/guest-delete.sh", + "type": "pve", + "type_id": "1uyjfno0fpf5buh", + "categories": [ + "scriptcat00001" + ], + "category_names": [ + "Host Management" + ], + "notes": [ + "Execute within the Proxmox shell" + ], + "warnings": [], + "port": 0, + "website": "", + "documentation": "", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/proxmox-helper-scripts.webp", + "updateable": false, + "privileged": false, + "has_arm": true, + "is_dev": false, + "execute_in": [ + "pve" + ], + "config_path": "", + "os": "debian" + }, { "name": "GWN Manager", "slug": "gwn-manager", @@ -8231,12 +9391,48 @@ "Sync data is stored in an embedded PostgreSQL under /opt/hammer_data (kept outside the app directory so it survives updates). Include /opt/hammer_data in regular backups." ], "port": 8080, - "website": "https://hammereditor.com", + "website": "https://hammer.ink/", "documentation": "https://github.com/Darkrock-Studios/hammer-editor/blob/develop/HOW-TO-RUN-A-SERVER.md", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/hammer-editor.webp", "updateable": true, "privileged": false, "has_arm": true, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, + { + "name": "Hanko", + "slug": "hanko", + "desc": "Hanko is an open-source authentication and user management backend, an alternative to Auth0 or Clerk. It provides passkeys, passwords, email passcodes, MFA and single sign-on, and web apps add the login through the Hanko Elements web components or SDKs.", + "script": "ct/hanko.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/hanko.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/hanko.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00006" + ], + "category_names": [ + "Authentication & Security" + ], + "notes": [ + "Hanko is an API, not a web app: port 8000 only shows a status page and there is no admin UI. Your own app's login talks to it through Hanko Elements or the SDKs." + ], + "warnings": [ + "Passkeys need HTTPS on a domain name. Publish port 8000 through a TLS reverse proxy, put that domain and your SMTP server in /opt/hanko_data/config.yaml and run systemctl restart hanko.", + "The admin API on 127.0.0.1:8001 has no authentication. Anyone who reaches it can sign in as any user, so never expose it without a firewall or an authenticating proxy." + ], + "port": 8000, + "website": "https://www.hanko.io/", + "documentation": "https://docs.hanko.io/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/hanko.webp", + "updateable": true, + "privileged": false, + "has_arm": false, "is_dev": true, "execute_in": [ "lxc" @@ -8263,7 +9459,7 @@ "This VM boots an installer image. Open the console after creation and complete the installation there." ], "warnings": [], - "port": 8123, + "port": 80, "website": "https://www.home-assistant.io/", "documentation": "https://www.home-assistant.io/docs/", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/home-assistant.webp", @@ -8390,6 +9586,42 @@ }, "os": "debian" }, + { + "name": "HedgeDoc", + "slug": "hedgedoc", + "desc": "HedgeDoc (formerly CodiMD) is a self-hosted, real-time collaborative Markdown editor. Several people can write the same note at once in the browser, with support for diagrams, math, slide presentations and per-note sharing permissions.", + "script": "ct/hedgedoc.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/hedgedoc.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/hedgedoc.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00012" + ], + "category_names": [ + "Documents & Notes" + ], + "notes": [ + "There is no default account. Register the first user under Sign In with an email address and password." + ], + "warnings": [ + "Anyone who reaches the instance can register. Once your accounts exist, set \"allowEmailRegister\": false in /opt/hedgedoc_data/config.json and run systemctl restart hedgedoc.", + "Behind a reverse proxy, set domain to your hostname, urlAddPort to false and protocolUseSSL to true in config.json, then restart hedgedoc. Otherwise the page loads without scripts." + ], + "port": 3000, + "website": "https://hedgedoc.org/", + "documentation": "https://docs.hedgedoc.org/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/hedgedoc.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Heimdall Dashboard", "slug": "heimdall-dashboard", @@ -8838,6 +10070,78 @@ "config_path": "", "os": "debian" }, + { + "name": "HomeTube", + "slug": "hometube", + "desc": "HomeTube is a web UI for yt-dlp that downloads single videos or whole playlists into a clean folder structure for Plex, Jellyfin or Emby. It embeds subtitles, chapters and metadata, skips sponsor segments with SponsorBlock and keeps playlists in sync.", + "script": "ct/hometube.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/hometube.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/hometube.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00013" + ], + "category_names": [ + "Media & Streaming" + ], + "notes": [ + "Videos are saved to /opt/hometube_data/videos. Bind-mount your Plex, Jellyfin or Emby library there to download straight into it.", + "YouTube often needs cookies, even for public videos. Export a cookies.txt from your browser to /opt/hometube_data/cookies/youtube_cookies.txt and reload the page." + ], + "warnings": [ + "HomeTube has no login. Anyone who reaches port 8501 can download to your media folder, so keep it on a trusted network or behind a reverse proxy with authentication." + ], + "port": 8501, + "website": "https://hometube.latentnoise.dev/", + "documentation": "https://github.com/EgalitarianMonkey/hometube/blob/main/docs/README.md", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/hometube.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, + { + "name": "Honcho", + "slug": "honcho", + "desc": "Honcho is an open-source memory server for building stateful AI agents. Apps store the messages of users and agents through a REST API or the Python and TypeScript SDKs, and an LLM derives conclusions about each peer that agents can then query in natural language.", + "script": "ct/honcho.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/honcho.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/honcho.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00020" + ], + "category_names": [ + "AI / Coding & Dev-Tools" + ], + "notes": [ + "There is no web interface. Every API request needs a key sent as Authorization: Bearer ; the install prints an admin key." + ], + "warnings": [ + "Honcho needs an API key for OpenAI, Anthropic or Gemini, or an OpenAI-compatible endpoint such as Ollama. Without one the install leaves it stopped.", + "Port 8000 is plain HTTP, and /docs and /health answer without a key. Put a reverse proxy with TLS in front before exposing Honcho beyond your LAN." + ], + "port": 8000, + "website": "https://honcho.dev/", + "documentation": "https://honcho.dev/docs/v3/contributing/self-hosting", + "logo": "https://cdn.jsdelivr.net/gh/plastic-labs/honcho@main/docs/favicon.svg", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "HortusFox", "slug": "hortusfox", @@ -8967,6 +10271,42 @@ "config_path": "", "os": "debian" }, + { + "name": "Ideon", + "slug": "ideon", + "desc": "Ideon is a self-hosted visual workspace that maps a project on an infinite canvas. Notes, files, links, tasks, kanban boards, sketches and live Git repository blocks sit side by side, are edited together in real time and can be rewound to earlier snapshots.", + "script": "ct/ideon.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/ideon.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/ideon.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00012" + ], + "category_names": [ + "Documents & Notes" + ], + "notes": [ + "Links and redirects use APP_URL in /opt/ideon_data/.env. Change it behind a reverse proxy or after an IP change, add the SMTP_* values for email, then run systemctl restart ideon.", + "Shell blocks, MCP and API-key clients, and access requests to other users' projects do not work here, as the database user is not a superuser like in upstream's Docker setup." + ], + "warnings": [ + "There is no default account: the first visit opens the setup page that creates the super-admin. Finish it right after the install." + ], + "port": 3000, + "website": "https://www.theideon.com/", + "documentation": "https://www.theideon.com/docs/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/ideon.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Ignis", "slug": "ignis", @@ -9682,7 +11022,7 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -9966,7 +11306,7 @@ "updateable": true, "privileged": false, "has_arm": true, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -10051,10 +11391,10 @@ "type": "lxc", "type_id": "nm9bra8mzye2scg", "categories": [ - "scriptcat000026" + "scriptcat00025" ], "category_names": [ - "Productivity & Workflows" + "Business & ERP" ], "notes": [ "The first registered account becomes the instance admin.", @@ -10071,7 +11411,7 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -10209,6 +11549,44 @@ "config_path": "", "os": "debian" }, + { + "name": "Keeper", + "slug": "keeper", + "desc": "Keeper is an open-source calendar syncing tool. It pulls events from iCal/ICS links, CalDAV, iCloud, Fastmail, Google Calendar and Outlook, and pushes them to one or many destination calendars, removing copies again when the source event is deleted. Self-hosted instances get every Pro feature.", + "script": "ct/keeper.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/keeper.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/keeper.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00019" + ], + "category_names": [ + "Automation & Scheduling" + ], + "notes": [ + "iCal/ICS links and CalDAV accounts (iCloud, Fastmail, Nextcloud, ...) work out of the box. Google Calendar and Outlook need your own OAuth app: put the credentials into GOOGLE_CLIENT_ID/GOOGLE_CLIENT_SECRET and MICROSOFT_CLIENT_ID/MICROSOFT_CLIENT_SECRET in /opt/keeper_data/.env, then run `systemctl restart keeper-api keeper-cron keeper-worker`.", + "Google and Microsoft only accept HTTPS redirect URIs on a real domain, so OAuth needs a reverse proxy in front of port 3000. Set BETTER_AUTH_URL and TRUSTED_ORIGINS in /opt/keeper_data/.env to that URL and register /api/auth/callback/google, /api/sources/callback/google, /api/auth/callback/microsoft and /api/sources/callback/outlook as redirect URIs.", + "Web UI (port 3000), API (3001), cron and worker run as keeper-web, keeper-api, keeper-cron and keeper-worker. Database, Redis, secrets and OAuth settings live outside /opt/keeper, which is rebuilt on every update." + ], + "warnings": [ + "There is no default account: open the web UI and register one with a username and password. Registration stays open to anyone who can reach port 3000, so keep the container off the public internet or behind an authenticating proxy.", + "BETTER_AUTH_URL and TRUSTED_ORIGINS in /opt/keeper_data/.env are set to http://:3000 at install; auth requests from any other origin fail with \"Invalid origin\". When the IP changes or you add a domain, update them (TRUSTED_ORIGINS takes a comma-separated list) and run `systemctl restart keeper-api`." + ], + "port": 3000, + "website": "https://www.keeper.sh/", + "documentation": "https://github.com/ridafkih/keeper.sh#self-hosted", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/keeper.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "PVE Kernel Clean", "slug": "kernel-clean", @@ -10724,6 +12102,42 @@ "config_path": "", "os": "debian" }, + { + "name": "Kyoo", + "slug": "kyoo", + "desc": "Kyoo is a self-hosted media server for movies, series and anime, an alternative to Jellyfin or Plex. It identifies files without a required folder structure, pulls metadata from TheMovieDB and TheTVDB, and transcodes on the fly with hardware acceleration.", + "script": "ct/kyoo.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/kyoo.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/kyoo.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00013" + ], + "category_names": [ + "Media & Streaming" + ], + "notes": [ + "Kyoo uses HTTPS with a self-signed certificate, so accept the browser warning. Until the first video is scanned, the home page only shows \"Resource not found.\".", + "Behind a reverse proxy or under another address, set PUBLIC_URL and JWT_ISSUER in /opt/kyoo_data/.env to the same new URL, then run systemctl restart kyoo-auth kyoo-api kyoo-scanner." + ], + "warnings": [ + "There is no default account: the first account registered becomes the administrator, so create it right after the install." + ], + "port": 443, + "website": "https://kyoo.zoriya.dev/", + "documentation": "https://github.com/zoriya/Kyoo/blob/master/INSTALLING.md", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/kyoo.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "LanguageTool", "slug": "languagetool", @@ -10876,7 +12290,7 @@ "Models download on demand — increase disk size if you plan to run large models." ], "warnings": [ - "Remote access is configured with `host=0.0.0.0`. Set `LEMONADE_API_KEY` via a systemd override at `/etc/systemd/system/lemond.service.d/override.conf` before exposing the service." + "Remote access is configured with `host=0.0.0.0`, which also exposes the internal control endpoints (`/internal/*`, including shutdown and config). Secure it before use: run `systemctl edit lemond.service`, add `[Service]` followed by `Environment=\"LEMONADE_API_KEY=\"`, then `systemctl restart lemond`. `LEMONADE_API_KEY` protects every endpoint; `LEMONADE_ADMIN_API_KEY` alone only protects `/internal/*` and leaves `/api`, `/v0` and `/v1` open." ], "port": 13305, "website": "https://lemonade-server.ai/", @@ -10885,7 +12299,7 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -10928,6 +12342,46 @@ "config_path": "", "os": "debian" }, + { + "name": "LibreDB Studio", + "slug": "libredbstudio", + "desc": "LibreDB Studio is a browser-based SQL IDE you run on your own server. It connects to PostgreSQL, MySQL, SQLite, SQL Server, MongoDB, Redis, ClickHouse, Elasticsearch and many more databases, with optional AI query help from a local Ollama model.", + "script": "ct/libredbstudio.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/libredbstudio.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/libredbstudio.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00008" + ], + "category_names": [ + "Databases" + ], + "notes": [ + "The admin password is generated during install and written to /etc/libredb-studio/env inside the container.", + "The AI panel is hidden unless a model is configured, and nothing leaves the container while it is unconfigured." + ], + "warnings": [ + "The install sets AUTH_COOKIE_SECURE=false because the container is reached over plain HTTP. Remove that line when you put the app behind HTTPS." + ], + "port": 3000, + "website": "https://libredb.org/", + "documentation": "https://github.com/libredb/libredb-studio/blob/main/README.md", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/libredb-studio.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "admin@libredb.org", + "password": "" + }, + "os": "debian" + }, { "name": "LibreNMS", "slug": "librenms", @@ -11057,6 +12511,41 @@ "config_path": "", "os": "debian" }, + { + "name": "Lidify", + "slug": "lidify", + "desc": "Lidify is a music discovery tool for Lidarr. It reads your existing Lidarr artists and uses Last.fm, Spotify or MusicBrainz to suggest similar artists, which can then be added straight back into Lidarr from the web UI.", + "script": "ct/lidify.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/lidify.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/lidify.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00014" + ], + "category_names": [ + "*Arr Suite" + ], + "notes": [ + "Configure the Lidarr address and API key, and a Last.fm or Spotify API key, under Settings in the web UI on first run." + ], + "warnings": [ + "Lidify lets environment variables override config/settings_config.json. A Lidify setting added to /opt/lidify/.env wins over the web UI, and changes made there will appear to revert." + ], + "port": 5000, + "website": "https://github.com/TheWicklowWolf/Lidify", + "documentation": "https://github.com/TheWicklowWolf/Lidify#readme", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/lidify.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "LimeSurvey", "slug": "limesurvey", @@ -11120,7 +12609,7 @@ "updateable": true, "privileged": false, "has_arm": true, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -11229,6 +12718,42 @@ "config_path": "", "os": "ubuntu" }, + { + "name": "Listenarr", + "slug": "listenarr", + "desc": "Listenarr automates audiobook collection management in the style of Sonarr and Radarr. It searches torrent and NZB indexers, hands grabs to your download client, and imports and organizes the finished audiobooks with metadata from Audible and other sources.", + "script": "ct/listenarr.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/listenarr.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/listenarr.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00014" + ], + "category_names": [ + "*Arr Suite" + ], + "notes": [ + "If your download client runs in another container, mount its download folder here and set a remote path mapping in Listenarr." + ], + "warnings": [ + "There is no login on first start. Turn it on and create the admin account under Settings > General > Authentication, or keep Listenarr on a trusted network.", + "Listenarr only publishes canary pre-releases, and this script installs and updates from them. Expect breaking changes and keep backups of /opt/listenarr_data." + ], + "port": 4545, + "website": "https://getlistenarr.com/", + "documentation": "https://getlistenarr.com/docs/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/listenarr.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "listmonk", "slug": "listmonk", @@ -11333,7 +12858,7 @@ { "name": "llama.cpp", "slug": "llama-cpp", - "desc": "llama.cpp runs GGUF language models directly in C/C++ with no Python runtime. This installs llama-server, which serves a built-in web chat UI plus an OpenAI-compatible API on the same port, so it can back tools like AnythingLLM, Open WebUI or Claude Code. Lighter and closer to the metal than Ollama.", + "desc": "llama.cpp runs GGUF language models directly in C/C++ with no Python runtime. Its llama-server offers a built-in web chat and an OpenAI-compatible API, so it can back tools like AnythingLLM, Open WebUI or Claude Code.", "script": "ct/llama-cpp.sh", "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/llama-cpp.sh", "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/llama-cpp.sh", @@ -11346,12 +12871,11 @@ "AI / Coding & Dev-Tools" ], "notes": [ - "On first start llama-server downloads the model set in LLAMA_ARG_HF_REPO (default: ggml-org/gemma-3-1b-it-GGUF, roughly 800 MB) into /opt/llama-cpp_data/models, so the container is usable straight away. Swap it for any GGUF repo, or point LLAMA_ARG_MODEL at a local file, then restart.", - "The build variant is chosen at install time: cpu or vulkan, or auto to follow the passed-through GPU. Upstream publishes no Linux CUDA or ROCm build, so every GPU is served by the vulkan build - AMD through RADV, NVIDIA through the driver's Vulkan ICD, which has to be present in the container. The choice is remembered in /opt/llama-cpp_data/.backend so updates keep it.", - "RAM is the limiting factor: the model must fit alongside the KV cache. 8 GB comfortably runs models up to roughly 7B at Q4. Raise LLAMA_ARG_CTX_SIZE only if you have headroom." + "The first start downloads gemma-4-E2B-it Q4_0 (about 3.5 GB). Set LLAMA_ARG_HF_REPO to another GGUF repo, or LLAMA_ARG_MODEL to a local file, then run systemctl restart llama-cpp.", + "Pick the build with var_backend: Vulkan works on any GPU, or use CUDA, ROCm, SYCL or OpenVINO. NVIDIA on Vulkan needs the driver's Vulkan libraries in the container." ], "warnings": [ - "The web UI and the OpenAI-compatible API share port 8080: /v1/chat/completions, /v1/models and friends. There is no authentication unless an API key is set - supply one at install time or set LLAMA_ARG_API_KEY in /opt/llama-cpp.env." + "The web UI and the API have no authentication unless you set an API key at install time or LLAMA_ARG_API_KEY in /opt/llama-cpp.env." ], "port": 8080, "website": "https://github.com/ggml-org/llama.cpp", @@ -11474,6 +12998,44 @@ "config_path": "", "os": "debian" }, + { + "name": "LocalAI", + "slug": "localai", + "desc": "LocalAI is a drop-in replacement for the OpenAI API that runs entirely on your own hardware. One binary serves text generation, image generation, speech-to-text and text-to-speech behind OpenAI-compatible endpoints, backed by a model gallery and pluggable inference backends. Heavier than llama.cpp, but multi-modal and self-managing.", + "script": "ct/localai.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/localai.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/localai.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00020" + ], + "category_names": [ + "AI / Coding & Dev-Tools" + ], + "notes": [ + "No models are installed by default. Use the gallery in the web UI to pull one, or drop GGUF files into /opt/localai_data/models. Inference backends are fetched on first use and can be several GB each, which is what the 30 GB default disk is for.", + "GPU passthrough is offered during creation and driver libraries inside the container are matched to the host driver version automatically. Without a GPU everything still works on the CPU, just slowly.", + "Models, backends and the auth database live in /opt/localai_data and configuration in /opt/localai.env, both outside the application directory, so updates never touch them. A mount point on /opt/localai_data is worth considering rather than growing the root disk.", + "User accounts need a database. Upstream ships the release binary without the CGO auth tag, so the built-in SQLite store is unavailable and PostgreSQL is installed alongside LocalAI when the option is enabled. Leaving it off keeps the container to a single service." + ], + "warnings": [ + "The API is protected from the moment it starts. With user accounts off, a static API key is generated and saved to ~/localai.creds in the container; clients send it as 'Authorization: Bearer ' or an 'x-api-key' header, and it grants full admin access. With user accounts on, register in the web UI immediately after install - the first account created becomes the admin." + ], + "port": 8080, + "website": "https://localai.io/", + "documentation": "https://localai.io/docs/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/localai.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Logseq", "slug": "logseq", @@ -11504,42 +13066,7 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, - "execute_in": [ - "lxc" - ], - "config_path": "", - "os": "debian" - }, - { - "name": "Logto", - "slug": "logto", - "desc": "Logto is an open-source identity and access management (IAM) platform for building sign-in, authentication, and authorization. It provides OIDC-based auth, a prebuilt sign-in experience, user and role management, and an Admin Console, backed by PostgreSQL.", - "script": "ct/logto.sh", - "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/logto.sh", - "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/logto.sh", - "type": "lxc", - "type_id": "nm9bra8mzye2scg", - "categories": [ - "scriptcat00006" - ], - "category_names": [ - "Authentication & Security" - ], - "notes": [ - "Open the Admin Console at https://:3002 and accept the self-signed certificate. The sign-in flow redirects to the Core at https://logto..nip.io:3001 (a nip.io hostname that auto-resolves to the container) — open that URL once too and accept its certificate before signing in. Then complete the Welcome flow to create your first admin account." - ], - "warnings": [ - "HTTPS with two distinct hostnames is required: the console uses Web Crypto (crypto.subtle, HTTPS-only), and Logto's OIDC needs the Core (logto..nip.io:3001) and Console (:3002) on different hostnames so their session cookies don't collide (a bare IP on two ports causes an 'invalid session' error). If your router blocks nip.io (DNS-rebinding protection), or for a browser-trusted cert, front Logto with your own domain + reverse proxy and set ENDPOINT/ADMIN_ENDPOINT in /opt/logto/.env accordingly." - ], - "port": 3002, - "website": "https://logto.io/", - "documentation": "https://docs.logto.io/", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/logto.webp", - "updateable": true, - "privileged": false, - "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -11628,19 +13155,16 @@ "AI / Coding & Dev-Tools" ], "notes": [ - "Disk usage scales with total repository size. The default 20 GB is a starting point; size the container to your data.", - "Ports: 41337 (main endpoint, gRPC over TCP + QUIC over UDP), 41339 (HTTP health check), 41340 (internal mTLS replication, disabled by default).", - "A self-signed TLS certificate is generated at install (/etc/ssl/lore). Clients must trust it or be configured to accept it.", - "This is the Lore SERVER (loreserver). Developers connect to it with the 'lore' client CLI." + "Developers connect with the lore client CLI on port 41337 (TCP and UDP) and must trust the self-signed certificate in /etc/ssl/lore." ], "warnings": [ - "Lore is pre-1.0: on-disk formats may still change between versions, though committed-data durability is guaranteed. Intended for the experimental VED repo only.", - "Authentication is disabled by default (demo mode): the public endpoint accepts unauthenticated clients. Enable JWT verification via [server.auth.jwk] against an external identity provider in /opt/lore/local.toml before exposing it." + "Authentication is off, so anyone who reaches port 41337 can connect. Set up JWT verification under [server.auth.jwk] in /opt/lore/local.toml before exposing it.", + "Lore is pre-1.0, so its on-disk format may still change between versions." ], "port": 41337, "website": "https://epicgames.github.io/lore/", "documentation": "https://epicgames.github.io/lore/", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/lore-epic-games.webp", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/lore.webp", "updateable": true, "privileged": false, "has_arm": false, @@ -11682,39 +13206,6 @@ "config_path": "", "os": "debian" }, - { - "name": "PVE LXC Deletion", - "slug": "lxc-delete", - "desc": "This script helps manage and delete LXC containers on a Proxmox VE server. It lists all available containers, allowing the user to select one or more for deletion through an interactive menu. Running containers are automatically stopped before deletion, and the user is asked to confirm each action. The script ensures a controlled and efficient container management process.", - "script": "tools/pve/lxc-delete.sh", - "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/lxc-delete.sh", - "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/tools/pve/lxc-delete.sh", - "type": "pve", - "type_id": "1uyjfno0fpf5buh", - "categories": [ - "scriptcat00001" - ], - "category_names": [ - "Host Management" - ], - "notes": [ - "Execute within the Proxmox shell" - ], - "warnings": [], - "port": 0, - "website": "", - "documentation": "", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/proxmox-helper-scripts.webp", - "updateable": false, - "privileged": false, - "has_arm": true, - "is_dev": false, - "execute_in": [ - "pve" - ], - "config_path": "", - "os": "debian" - }, { "name": "Lychee", "slug": "lychee", @@ -12126,6 +13617,41 @@ }, "os": "debian" }, + { + "name": "Mathesar", + "slug": "mathesar", + "desc": "Mathesar is a spreadsheet-like web interface for PostgreSQL. Users of any technical skill level can view, edit, query and collaborate on Postgres data directly, build relationships between tables, import CSV files and create forms, while access is governed by native PostgreSQL roles and privileges.", + "script": "ct/mathesar.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/mathesar.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/mathesar.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00008" + ], + "category_names": [ + "Databases" + ], + "notes": [ + "The first visit asks you to create the admin account. Its two analytics checkboxes are ticked by default; untick them if you do not want to share usage data.", + "The bundled PostgreSQL only holds Mathesar's own database. Choose 'Create a new database' for your data, or connect to an existing PostgreSQL 14+ server.", + "Behind a reverse proxy, set ALLOWED_HOSTS in /opt/mathesar_data/.env to your domain instead of * and forward the Host and X-Forwarded-Proto headers." + ], + "warnings": [], + "port": 8000, + "website": "https://mathesar.org/", + "documentation": "https://docs.mathesar.org/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/mathesar.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Matomo", "slug": "matomo", @@ -12189,7 +13715,7 @@ "updateable": true, "privileged": false, "has_arm": true, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -12349,7 +13875,9 @@ "category_names": [ "Gaming & Leisure" ], - "notes": [], + "notes": [ + "Reverse proxy auth is available but disabled. To enable it, edit the REVERSE_PROXY_AUTH_* lines in /opt/mealie/mealie.env and run: systemctl restart mealie. Only use it behind a trusted proxy and set REVERSE_PROXY_AUTH_SECRET. Docs: https://docs.mealie.io/documentation/getting-started/installation/backend-config/#reverse-proxy-auth" + ], "warnings": [], "port": 9000, "website": "https://mealie.io/", @@ -12500,6 +14028,42 @@ "config_path": "", "os": "debian" }, + { + "name": "Meme Search", + "slug": "memesearch", + "desc": "Meme Search is a self-hosted search engine for your own meme collection. A local vision model writes a description of each image, and the memes can then be found by keyword or by meaning, tagged, and fetched through a read-only search API.", + "script": "ct/memesearch.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/memesearch.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/memesearch.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00013" + ], + "category_names": [ + "Media & Streaming" + ], + "notes": [ + "After an IP change or behind a reverse proxy, add the new IP or host name to MEME_SEARCH_ALLOWED_HOSTS in /opt/memesearch_data/.env and run systemctl restart memesearch.", + "To index memes from the host, bind-mount them as a subfolder of /opt/memesearch_data/memes (symlinks are rejected) and add that folder under Settings." + ], + "warnings": [ + "Meme Search has no login. Anyone who reaches port 3000 can delete memes, change settings and create API tokens, so keep it on a trusted network or behind a VPN." + ], + "port": 3000, + "website": "https://meme-search.neonwatty.com/", + "documentation": "https://github.com/meme-search/meme-search#readme", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/meme-search.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Memos", "slug": "memos", @@ -12676,21 +14240,28 @@ "Network & Firewall" ], "notes": [ - "This VM boots an installer image. Open the console after creation and complete the installation there." + "This VM imports a preinstalled MikroTik Cloud Hosted Router (CHR) disk image. No installer needs to be run.", + "Run /ip address print and /ip dhcp-client print in RouterOS to check the management IP and DHCP status. Use the configured IP in WinBox or WebFig; if no IP exists, configure networking through the console. Keep CHR on a trusted network until its password and firewall are configured. Factory credentials no longer apply after changing the password." + ], + "warnings": [ + "For a fresh official CHR image, open the Proxmox console and log in as admin with an empty password (press Enter). Follow the first-login prompts and set a strong password immediately, or run /password in RouterOS." ], - "warnings": [], "port": 0, "website": "https://mikrotik.com/software", - "documentation": "https://help.mikrotik.com/docs/", + "documentation": "https://help.mikrotik.com/docs/spaces/ROS/pages/18350234/Cloud+Hosted+Router+CHR", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/mikrotik.webp", "updateable": false, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "vm" ], "config_path": "", + "default_credentials": { + "username": "admin", + "password": "" + }, "os": "" }, { @@ -13567,6 +15138,44 @@ "config_path": "", "os": "debian" }, + { + "name": "Netronome", + "slug": "netronome", + "desc": "Netronome is a network speed test and monitoring tool with a web interface. It runs Speedtest.net, LibreSpeed and iperf3 tests on demand or on a schedule, watches packet loss and DNS, and collects metrics from agents on your servers.", + "script": "ct/netronome.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/netronome.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/netronome.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00004", + "scriptcat00009" + ], + "category_names": [ + "Network & Firewall", + "Monitoring & Analytics" + ], + "notes": [ + "iperf3 tests need an iperf3 server: run iperf3 -s on another host and add it under Speed Test > iperf3." + ], + "warnings": [ + "There is no default login: the first visit opens a registration page, and that account is the only one. Create it right after the install.", + "/api/speedtest/public/history shows your test results without a login. Put a reverse proxy in front before exposing it beyond your LAN." + ], + "port": 7575, + "website": "https://netrono.me/", + "documentation": "https://netrono.me/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/netronome.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "NetworkOptimizer", "slug": "networkoptimizer", @@ -13739,6 +15348,39 @@ "config_path": "", "os": "debian" }, + { + "name": "NextDNS", + "slug": "nextdns", + "desc": "NextDNS is a DNS-over-HTTPS (DoH) client and resolver that blocks ads, trackers and malware using cloud-managed profiles. It serves DNS for your network on port 53; profiles are managed at my.nextdns.io, there is no local web interface.", + "script": "ct/nextdns.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/nextdns.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/nextdns.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00005" + ], + "category_names": [ + "Adblock & DNS" + ], + "notes": [ + "Have your NextDNS profile ID from https://my.nextdns.io ready: the install asks for it, or pass var_nextdns_profile." + ], + "warnings": [], + "port": 0, + "website": "https://nextdns.io/", + "documentation": "https://github.com/nextdns/nextdns/wiki", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/nextdns.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Nexterm", "slug": "nexterm", @@ -13983,6 +15625,45 @@ "config_path": "", "os": "debian" }, + { + "name": "Nightingale", + "slug": "nightingale", + "desc": "Nightingale is an open-source monitoring and alerting platform. It queries data sources such as Prometheus, VictoriaMetrics, Elasticsearch or Loki, and adds alert rules, muting, notifications to more than 20 channels, dashboards and a built-in time series database.", + "script": "ct/nightingale.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/nightingale.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/nightingale.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00009" + ], + "category_names": [ + "Monitoring & Analytics" + ], + "notes": [ + "No separate Prometheus is needed: Categraf agents push metrics into the built-in time series database. Infrastructure > Hosts generates the agent install command." + ], + "warnings": [ + "The default login is public and has admin rights. Change the password right after the first login: user menu, Profile, Change password." + ], + "port": 17000, + "website": "https://n9e.github.io/", + "documentation": "https://n9e.github.io/docs/", + "logo": "https://cdn.jsdelivr.net/gh/n9e/n9e.github.io@main/static/apple-touch-icon.png", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "root", + "password": "root.2020" + }, + "os": "debian" + }, { "name": "Nightscout", "slug": "nightscout", @@ -14195,6 +15876,42 @@ "config_path": "", "os": "debian" }, + { + "name": "Norish", + "slug": "norish", + "desc": "Norish is a realtime, self-hosted recipe app for families and friends. Recipes are imported from a link, pasted text or photos, organised in cookbooks, planned on a calendar and turned into a shared grocery list that updates live for everyone in the household.", + "script": "ct/norish.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/norish.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/norish.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00024" + ], + "category_names": [ + "Gaming & Leisure" + ], + "notes": [ + "Sign-in only works at AUTH_URL in /opt/norish_data/.env, set to the container IP. Change it for a new IP, a domain or a reverse proxy, then run systemctl restart norish." + ], + "warnings": [ + "There is no default account: the first sign-up becomes the admin, and sign-up closes after it. Create it right after the install.", + "Back up MASTER_KEY from /opt/norish_data/.env together with the database. A database restored without it locks every user out." + ], + "port": 3000, + "website": "https://norish.dev/", + "documentation": "https://docs.norish.dev/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/norish.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "NoteDiscovery", "slug": "notediscovery", @@ -14234,6 +15951,41 @@ }, "os": "debian" }, + { + "name": "Note Mark", + "slug": "notemark", + "desc": "Note Mark is a fast, minimal web-based Markdown note-taking app. Notes are kept as plain Markdown files on disk and can be shared with other users or publicly, with a CodeMirror editor, optional Vim keybindings and optional OpenID Connect login.", + "script": "ct/notemark.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/notemark.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/notemark.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00012" + ], + "category_names": [ + "Documents & Notes" + ], + "notes": [ + "PUBLIC_URL in /opt/notemark_data/.env must be the address you open Note Mark at. Change it for a new IP or a reverse proxy, then restart notemark. Clipboard copy and the PWA need HTTPS." + ], + "warnings": [ + "There is no default account, and sign-up at /auth/signup is open to anyone. Once your accounts exist, set ENABLE_INTERNAL_SIGNUP=false in /opt/notemark_data/.env and run systemctl restart notemark." + ], + "port": 8080, + "website": "https://notemark.docs.enchantedcode.co.uk/", + "documentation": "https://notemark.docs.enchantedcode.co.uk/docs/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/note-mark.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Notifiarr", "slug": "notifiarr", @@ -14838,7 +16590,9 @@ "category_names": [ "Operating Systems & Appliances" ], - "notes": [], + "notes": [ + "Installed version is OpenMediaVault 7" + ], "warnings": [ "Running OVM in a LXC container may require a complicated disk setup, consider using a VM instead. More info: `https://github.com/community-scripts/ProxmoxVE/discussions/175`" ], @@ -14920,7 +16674,7 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -15179,6 +16933,48 @@ "config_path": "", "os": "debian" }, + { + "name": "openGym", + "slug": "opengym", + "desc": "openGym is a self-hosted gym and body-weight tracker. Plan weekly routines, log workouts with supersets and cardio, track body weight, measurements and personal records, and browse a library of more than 5,600 exercises with animations. Every profile keeps its own data and syncs across devices; the web app installs to the home screen, and an Android app can pair with your server. This script builds the web app from source and runs the Node.js API behind nginx.", + "script": "ct/opengym.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/opengym.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/opengym.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00024" + ], + "category_names": [ + "Gaming & Leisure" + ], + "notes": [ + "openGym is served over plain HTTP at http:// with password sign-in switched on (PASSWORD_LOGIN=1): choose Create new profile and pick a name and a password. Passkeys, the app's default, cannot work on an IP address, because browsers only offer them on HTTPS under a hostname, so the sign-in screen offers passwords until you switch as described below.", + "ORIGIN in /opt/opengym_data/.env must be exactly the address in the browser bar (http:// as installed). If the container's IP changes or you open openGym under a hostname, set ORIGIN and RP_ID to that address and run systemctl restart opengym; until then sign-ins fail with \"cross-origin request refused\".", + "Passkeys: put openGym behind a reverse proxy or tunnel that terminates HTTPS for a real hostname (Caddy, Nginx Proxy Manager, Traefik, Cloudflare Tunnel) and points at http://:80, set RP_ID=gym.example.com and ORIGIN=https://gym.example.com in /opt/opengym_data/.env, then run systemctl restart opengym. Profiles made with a password keep signing in and can add a passkey under Settings > Account > Passkeys. Settle on the hostname before people register passkeys: changing RP_ID later invalidates every passkey made under the old one.", + "There is deliberately no self-signed certificate on the IP: an IP address can never be a passkey hostname, and browsers refuse service workers on untrusted certificates, so it would add a certificate warning and enable nothing. Push notifications, Keep screen awake and offline use also need a trusted HTTPS address.", + "The Android app pairs with the plain http:// address: sign in on the website, then use Settings > Account > Pair the mobile app.", + "Accounts, workouts, uploaded photos and videos and the key that signs every session live in /opt/opengym_data together with the .env; back up that folder. Updates replace /opt/opengym and leave it untouched.", + "Install and every update build the web app from source with Node.js 22, which peaks at about 0.9 GB of RAM. The running app needs about 150 MB." + ], + "warnings": [ + "The first profile created becomes the admin (FIRST_USER_ADMIN=1), so create yours right after the install. Anyone who can reach the address can create a profile; to close signup, set INVITE_ONLY=1 (and ALLOW_GUEST=0 to remove guest mode) in /opt/opengym_data/.env after your own profile exists, then run systemctl restart opengym.", + "Over plain HTTP the password and the session cookie cross the network unencrypted. Keep openGym on a network you trust, or put it behind HTTPS as described below." + ], + "port": 80, + "website": "https://opengym.ch/", + "documentation": "https://github.com/DuarteSantos8/openGym/blob/main/docs/SELF_HOSTING.md", + "logo": "https://cdn.jsdelivr.net/gh/DuarteSantos8/openGym@main/frontend/public/icon-512.png", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "openHAB", "slug": "openhab", @@ -15210,6 +17006,84 @@ "config_path": "", "os": "debian" }, + { + "name": "OpenList", + "slug": "openlist", + "desc": "OpenList is a file list program that mounts many storage backends - S3, WebDAV, OneDrive, Google Drive, SFTP, local disks and more - behind one web UI, and serves them again over WebDAV, FTP and S3. It is the community-driven fork of AList.", + "script": "ct/openlist.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/openlist.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/openlist.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00011" + ], + "category_names": [ + "Files & Downloads" + ], + "notes": [ + "One script serves both variants: the installer asks for the container OS, or pass var_os=alpine to pick Alpine unattended.", + "The admin password is generated during the installation and saved to /root/openlist.creds inside the container. Change it with `/opt/openlist/openlist --data /opt/openlist_data admin set `.", + "Config, database, logs and search index live in /opt/openlist_data, outside the directory an update replaces, so updating never touches them." + ], + "warnings": [], + "port": 5244, + "website": "https://oplist.org/", + "documentation": "https://doc.oplist.org/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/openlist.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "admin", + "password": "" + }, + "os": "debian" + }, + { + "name": "OpenList", + "slug": "openlist", + "desc": "OpenList is a file list program that mounts many storage backends - S3, WebDAV, OneDrive, Google Drive, SFTP, local disks and more - behind one web UI, and serves them again over WebDAV, FTP and S3. It is the community-driven fork of AList.", + "script": "ct/openlist.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/openlist.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/openlist.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00011" + ], + "category_names": [ + "Files & Downloads" + ], + "notes": [ + "One script serves both variants: the installer asks for the container OS, or pass var_os=alpine to pick Alpine unattended.", + "The admin password is generated during the installation and saved to /root/openlist.creds inside the container. Change it with `/opt/openlist/openlist --data /opt/openlist_data admin set `.", + "Config, database, logs and search index live in /opt/openlist_data, outside the directory an update replaces, so updating never touches them." + ], + "warnings": [], + "port": 5244, + "website": "https://oplist.org/", + "documentation": "https://doc.oplist.org/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/openlist.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "admin", + "password": "" + }, + "os": "alpine" + }, { "name": "OpenObserve", "slug": "openobserve", @@ -15352,6 +17226,41 @@ "config_path": "", "os": "debian" }, + { + "name": "OpenViking", + "slug": "openviking", + "desc": "OpenViking is a self-evolving context database for AI agents that unifies agent memory, knowledge RAG and skills. Run it as a standalone HTTP server and connect any client (Python SDK, CLI, or the bundled Web Studio).", + "script": "ct/openviking.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/openviking.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/openviking.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00020" + ], + "category_names": [ + "AI / Coding & Dev-Tools" + ], + "notes": [ + "A root API key is generated during install and printed at the end of the setup; it is also stored as server.root_api_key in /opt/openviking_data/ov.conf." + ], + "warnings": [ + "Model API keys must be configured in /opt/openviking_data/ov.conf (embedding and VLM sections) before the server can store or retrieve memory. Edit the file and restart the service afterwards." + ], + "port": 1933, + "website": "https://www.openviking.ai/", + "documentation": "https://docs.openviking.ai/", + "logo": "https://raw.githubusercontent.com/volcengine/OpenViking/main/web-studio/public/icon-512.png", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Open WebUI", "slug": "openwebui", @@ -15760,7 +17669,7 @@ "updateable": true, "privileged": false, "has_arm": true, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -16350,7 +18259,7 @@ "updateable": true, "privileged": false, "has_arm": true, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -16382,7 +18291,7 @@ "Besides port 5000 (web), PegaProx also uses port 5001 (VNC WebSocket) and port 5002 (SSH WebSocket) for the in-browser consoles." ], "warnings": [ - "PegaProx is pre-1.0 BETA software with frequent, sometimes breaking releases. This script lives in the experimental ProxmoxVED repo - snapshot/back up before updating." + "Hardened Proxmox hosts (e.g. PegaProx CIS umask 027) can break installs — run `umask 022` first. See #16745" ], "port": 5000, "website": "https://pegaprox.com/", @@ -16569,6 +18478,46 @@ "config_path": "", "os": "debian" }, + { + "name": "PigeonPod", + "slug": "pigeonpod", + "desc": "PigeonPod turns YouTube and Bilibili channels and playlists into podcast RSS feeds you can subscribe to in any podcast app. It downloads new episodes as audio or video with yt-dlp, and supports per-feed keyword and duration filters, cookies for restricted content, proxies, and local or S3 storage.", + "script": "ct/pigeonpod.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/pigeonpod.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/pigeonpod.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00013" + ], + "category_names": [ + "Media & Streaming" + ], + "notes": [ + "YouTube channels and playlists need a YouTube Data API key, set in the web UI settings. Bilibili works without one.", + "RSS links use the Base URL from the web UI settings, set to the container IP at install. Update it when the IP changes or podcast apps reach PigeonPod through a domain or reverse proxy." + ], + "warnings": [ + "Change the default password after the first login." + ], + "port": 8080, + "website": "https://pigeonpod.cloud/", + "documentation": "https://github.com/aizhimou/pigeon-pod/wiki", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/pigeonpod.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "root", + "password": "Root@123" + }, + "os": "debian" + }, { "name": "Pi-Hole", "slug": "pihole", @@ -16749,19 +18698,15 @@ "type": "lxc", "type_id": "nm9bra8mzye2scg", "categories": [ - "scriptcat00022" + "scriptcat00000" ], "category_names": [ - "Communication & Community" + "Miscellaneous" ], "notes": [ - "Credentials are stored in /opt/pixelfed/.env", - "ActivityPub federation is enabled by default", - "Uses PostgreSQL, Redis (socket), and PHP-FPM" - ], - "warnings": [ - "Create admin account with: cd /opt/pixelfed && sudo -u pixelfed php artisan user:create" + "There is no default account. Create the admin with: cd /opt/pixelfed && sudo -u pixelfed php artisan user:create" ], + "warnings": [], "port": 80, "website": "https://pixelfed.org/", "documentation": "https://docs.pixelfed.org/", @@ -17076,7 +19021,7 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -17441,6 +19386,46 @@ }, "os": "debian" }, + { + "name": "PriceBuddy", + "slug": "pricebuddy", + "desc": "PriceBuddy is a self-hosted price tracker. Paste a product URL from almost any store and it checks price and stock on a schedule, keeps the price history, compares the same product across retailers, and notifies you by email, Pushover, Gotify, ntfy, Telegram, Discord or Apprise when a deal moves in your favour.", + "script": "ct/pricebuddy.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/pricebuddy.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/pricebuddy.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00023" + ], + "category_names": [ + "Finance & Budgeting" + ], + "notes": [ + "Stores set to the API (browser) scraper service are rendered by the bundled SeleniumBase Scrapper, a headless Google Chrome on 127.0.0.1:3000 (service seleniumbase-scrapper). The default HTTP scraper does not use it.", + "The configuration is cached. After editing /opt/pricebuddy/.env (for example APP_URL and ASSET_URL behind a reverse proxy), run 'php artisan config:cache' in /opt/pricebuddy and restart pricebuddy-worker." + ], + "warnings": [ + "The admin password is generated at install and stored as APP_USER_PASSWORD in /opt/pricebuddy/.env. Log in with admin@example.com, then change the email and password under Account settings." + ], + "port": 80, + "website": "https://pricebuddy.jez.me/", + "documentation": "https://pricebuddy.jez.me/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/pricebuddy.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "admin@example.com", + "password": "" + }, + "os": "debian" + }, { "name": "PrivateBin", "slug": "privatebin", @@ -17519,7 +19504,7 @@ "Documents & Notes" ], "notes": [ - "After running the update script, logging in as a system user in ProjectSend is necessary to upgrade the database. Finish the installation at http://[ip-address]/install" + "After running the update script, logging in as a system user in ProjectSend is necessary to upgrade the database. After installation, default login credentials are available in ~/projectsend.creds" ], "warnings": [], "port": 80, @@ -17795,6 +19780,38 @@ "config_path": "", "os": "debian" }, + { + "name": "ProxCenter", + "slug": "proxcenter", + "desc": "ProxCenter is a web console for running several Proxmox VE clusters and Proxmox Backup Server instances from one place, with inventory, in-browser consoles, backup visibility, migrations from VMware and other hypervisors, RBAC and SSO. This is the open-source Community Edition.", + "script": "ct/proxcenter.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/proxcenter.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/proxcenter.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [], + "category_names": [], + "notes": [ + "NEXTAUTH_URL and APP_URL in /opt/proxcenter_data/.env point at the container IP. Update both for a new IP, a domain or a reverse proxy, then run systemctl restart proxcenter." + ], + "warnings": [ + "There is no default account: the first visit opens a setup page that creates the administrator. Create it right after the install.", + "Connect clusters with a dedicated API token with Privilege Separation, not root@pam. Required permissions: https://docs.proxcenter.io/getting-started/connect-proxmox#proxmox-permissions" + ], + "port": 3000, + "website": "https://proxcenter.io/", + "documentation": "https://docs.proxcenter.io/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/proxcenter.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Proxmox Backup Server (PBS)", "slug": "proxmox-backup-server", @@ -17836,7 +19853,7 @@ { "name": "Proxmox Datacenter Manager (PDM)", "slug": "proxmox-datacenter-manager", - "desc": "The Proxmox Datacenter Manager project has been developed with the objective of providing a centralized overview of all your individual nodes and clusters. It also enables basic management like migrations of virtual guests without any cluster network requirements. ", + "desc": "The Proxmox Datacenter Manager project has been developed with the objective of providing a centralized overview of all your individual nodes and clusters. It also enables basic management like migrations of virtual guests without any cluster network requirements.", "script": "ct/proxmox-datacenter-manager.sh", "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/proxmox-datacenter-manager.sh", "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/proxmox-datacenter-manager.sh", @@ -17853,8 +19870,8 @@ ], "warnings": [], "port": 8443, - "website": "https://pve.proxmox.com/wiki/Proxmox_Datacenter_Manager_Roadmap", - "documentation": "https://pve.proxmox.com/wiki/Proxmox_Datacenter_Manager_Roadmap", + "website": "https://www.proxmox.com/en/products/proxmox-datacenter-manager/overview", + "documentation": "https://pdm.proxmox.com/docs/index.html", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/proxmox.webp", "updateable": true, "privileged": false, @@ -18065,7 +20082,7 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -18248,7 +20265,7 @@ "updateable": true, "privileged": false, "has_arm": true, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -18549,6 +20566,80 @@ "config_path": "", "os": "debian" }, + { + "name": "Rauthy", + "slug": "rauthy", + "desc": "Rauthy is a single sign-on identity and access management server. It is an OpenID Connect and OAuth 2 provider with an admin UI, passkey (FIDO2/WebAuthn) and OTP multi-factor login, upstream login providers, SCIM, forward auth and PAM/SSH login.", + "script": "ct/rauthy.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/rauthy.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/rauthy.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00006" + ], + "category_names": [ + "Authentication & Security" + ], + "notes": [ + "Accept the self-signed certificate and sign in as admin@localhost with the password_plain value under [bootstrap] in /opt/rauthy_data/config.toml. Change it right away." + ], + "warnings": [ + "Passkeys need a domain, so admin MFA is off. For production, set pub_url, rp_id and rp_origin to your domain before anyone registers a passkey, then add the admin's passkey and set admin_force_mfa = true.", + "Back up /opt/rauthy_data/config.toml together with the database in /opt/rauthy_data/hiqlite. Without its encryption keys the database is unusable." + ], + "port": 8443, + "website": "https://github.com/sebadob/rauthy", + "documentation": "https://sebadob.github.io/rauthy/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/rauthy.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "admin@localhost", + "password": "" + }, + "os": "debian" + }, + { + "name": "Razzia", + "slug": "razzia", + "desc": "Razzia is a self-hosted, open-source quiz platform for smaller events. A manager hosts a live quiz from the browser while participants join with a room code from their own devices, with quizzes, results and custom branding stored as files in the config folder.", + "script": "ct/razzia.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/razzia.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/razzia.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00024" + ], + "category_names": [ + "Gaming & Leisure" + ], + "notes": [ + "Host quizzes at http://:3000/manager with the generated password stored as MANAGER_PASSWORD in /opt/razzia/.env.", + "Behind a reverse proxy, forward the WebSocket upgrade headers and allow 100 MB uploads, or players stay stuck on connecting." + ], + "warnings": [], + "port": 3000, + "website": "https://github.com/Ralex91/Razzia", + "documentation": "https://github.com/Ralex91/Razzia/blob/main/docs/README.md", + "logo": "https://cdn.jsdelivr.net/gh/Ralex91/Razzia@main/packages/web/public/icon.svg", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Rclone", "slug": "rclone", @@ -18742,11 +20833,51 @@ "updateable": true, "privileged": false, "has_arm": true, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, + { + "name": "Reconya", + "slug": "reconya", + "desc": "Reconya is a network reconnaissance and asset discovery tool. It sweeps your networks with ICMP, ARP and TCP probes, identifies devices and their open ports, and alerts on new devices or risky ports, all in a web console with a topology map.", + "script": "ct/reconya.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/reconya.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/reconya.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00004" + ], + "category_names": [ + "Network & Firewall" + ], + "notes": [ + "Log in as admin with the generated LOGIN_PASSWORD from /opt/reconya_data/.env. To change it, edit that file and run systemctl restart reconya.", + "Nothing is scanned until you add a network under Networks and start a scan. ARP and MAC discovery only reach the bridges or VLANs the container has an interface on." + ], + "warnings": [ + "Sessions are signed with a key built into the binary, so a session cookie from any Reconya install works on yours. Keep port 3008 on a trusted network, never on the internet." + ], + "port": 3008, + "website": "https://reconya.com/", + "documentation": "https://github.com/Dyneteq/reconya#readme", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/reconya.webp", + "updateable": true, + "privileged": false, + "has_arm": false, "is_dev": true, "execute_in": [ "lxc" ], "config_path": "", + "default_credentials": { + "username": "admin", + "password": "" + }, "os": "debian" }, { @@ -19153,7 +21284,7 @@ "updateable": true, "privileged": false, "has_arm": true, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -19226,6 +21357,42 @@ "config_path": "", "os": "alpine" }, + { + "name": "Ryot", + "slug": "ryot", + "desc": "Ryot (Roll Your Own Tracker) is a self-hosted tracker for the media you consume and the workouts you do. It logs movies, shows, books, games, anime, podcasts and more with metadata from TMDB, IGDB, OpenLibrary and AniList, and records workouts and body measurements.", + "script": "ct/ryot.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/ryot.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/ryot.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00024" + ], + "category_names": [ + "Gaming & Leisure" + ], + "notes": [ + "Movies and shows need MOVIES_AND_SHOWS_TMDB_ACCESS_TOKEN, video games need the two VIDEO_GAMES_TWITCH_* keys. Add them to /opt/ryot_data/.env and restart ryot-backend.", + "Behind a reverse proxy or after an IP change, set FRONTEND_URL in /opt/ryot_data/.env to the new address and restart ryot-backend." + ], + "warnings": [ + "There is no default login: the first account you register becomes the admin. Registration stays open, so set USERS_ALLOW_REGISTRATION=false in /opt/ryot_data/.env afterwards and restart ryot-backend." + ], + "port": 8000, + "website": "https://ryot.io/", + "documentation": "https://docs.ryot.io/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/ryot.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "SABnzbd", "slug": "sabnzbd", @@ -19286,7 +21453,7 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -19919,7 +22086,7 @@ "updateable": true, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -19959,6 +22126,46 @@ "config_path": "", "os": "debian" }, + { + "name": "Silo", + "slug": "silo", + "desc": "Silo is an S3-compatible object storage server, a community-maintained fork of the open-source MinIO server by PGSTY. It carries on the AGPL release line after upstream MinIO stopped community distribution, with security fixes and the full web console restored. It keeps the MinIO storage format, MINIO_* variables and S3 API, so existing MinIO data and clients keep working.", + "script": "ct/silo.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/silo.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/silo.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00011" + ], + "category_names": [ + "Files & Downloads" + ], + "notes": [ + "Two ports: 9000 serves the S3 API, 9001 the web console. Object data lives in /opt/silo_data - back that up, or better, give the container a dedicated disk and point MINIO_VOLUMES at it.", + "Coming from MinIO? Silo reads the same data directory and MINIO_* settings. See https://silo.pgsty.com/compatibility/migration/ before moving an existing deployment." + ], + "warnings": [ + "The root password is generated at install and stored as MINIO_ROOT_PASSWORD in /etc/default/silo. Use it to log into the console on port 9001, then create dedicated access keys for your S3 clients." + ], + "port": 9001, + "website": "https://silo.pgsty.com/", + "documentation": "https://silo.pgsty.com/docs/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/pgsty-silo.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "silo-admin", + "password": "" + }, + "os": "debian" + }, { "name": "Silverbullet", "slug": "silverbullet", @@ -20000,21 +22207,17 @@ "type": "lxc", "type_id": "nm9bra8mzye2scg", "categories": [ - "scriptcat00006", - "scriptcat00022" + "scriptcat00006" ], "category_names": [ - "Authentication & Security", - "Communication & Community" + "Authentication & Security" ], "notes": [ - "DKIM keys are generated in /opt/simplelogin/dkim/. The ready-to-use DNS TXT record is saved to /opt/simplelogin/dkim/dkim.dns.txt (public key also at dkim.public.key). Add it as a TXT record at dkim._domainkey.yourdomain.com, replacing EMAIL_DOMAIN with your domain.", - "Create your first admin account by visiting the web interface and registering." + "There is no default login: register the first admin account in the web interface." ], "warnings": [ - "After installation, update EMAIL_DOMAIN and URL in /opt/simplelogin/.env with your actual domain and configure DNS (MX, SPF, DKIM) accordingly.", - "A working SMTP setup (Postfix + valid domain/DNS) is required. Registration sends an activation email that must be delivered.", - "For real email delivery, edit /etc/postfix/main.cf with your values: myhostname (e.g. sl.yourdomain.com), mydomain (yourdomain.com), myorigin = $mydomain, inet_interfaces = all, and add your LXC subnet to mynetworks; then 'systemctl restart postfix'. SimpleLogin requires a fully configured mail domain (MX, SPF, DKIM, PTR/rDNS)." + "Set EMAIL_DOMAIN and URL in /opt/simplelogin/.env and add MX, SPF, DKIM and PTR records for your domain. The DKIM record is in /opt/simplelogin/dkim/dkim.dns.txt (replace EMAIL_DOMAIN in it).", + "Mail delivery must work, or the activation email after registration never arrives. Set myhostname, mydomain and mynetworks in /etc/postfix/main.cf, then restart postfix." ], "port": 80, "website": "https://simplelogin.io/", @@ -20030,40 +22233,6 @@ "config_path": "", "os": "debian" }, - { - "name": "Skylite-UX", - "slug": "skylite-ux", - "desc": "Skylite-UX is an open-source, self-hosted family management app with calendar, todos, shopping lists, and user management.", - "script": "ct/skylite-ux.sh", - "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/skylite-ux.sh", - "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/skylite-ux.sh", - "type": "lxc", - "type_id": "nm9bra8mzye2scg", - "categories": [ - "scriptcat00019" - ], - "category_names": [ - "Automation & Scheduling" - ], - "notes": [ - "Database credentials: `cat ~/skylite-ux.creds`", - "Build process requires ~4GB RAM. Runtime usage is much lower — RAM can be reduced after installation." - ], - "warnings": [], - "port": 3000, - "website": "https://github.com/Wetzel402/Skylite-UX", - "documentation": "https://github.com/Wetzel402/Skylite-UX", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/skylite-ux.webp", - "updateable": true, - "privileged": false, - "has_arm": false, - "is_dev": true, - "execute_in": [ - "lxc" - ], - "config_path": "", - "os": "debian" - }, { "name": "Slskd", "slug": "slskd", @@ -20405,6 +22574,46 @@ "config_path": "", "os": "debian" }, + { + "name": "Soulbeet", + "slug": "soulbeet", + "desc": "Soulbeet is a self-hosted music downloader and library manager. It finds albums and tracks on Soulseek through slskd, tags and files them into your library with beets, and can push discovery playlists from your Last.fm or ListenBrainz history to Navidrome.", + "script": "ct/soulbeet.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/soulbeet.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/soulbeet.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00013" + ], + "category_names": [ + "Media & Streaming" + ], + "notes": [ + "Needs a separate slskd 0.26+ instance. Enter its URL and API key in Settings > Config and mount its downloads folder here, e.g. pct set -mp0 /path/to/downloads,mp=/opt/soulbeet_data/downloads.", + "Mount the music share Navidrome reads at /opt/soulbeet_data/music and add it in Settings > Library. For Navidrome logins and playlists, uncomment NAVIDROME_URL in /opt/soulbeet_data/.env and restart soulbeet." + ], + "warnings": [ + "Anyone who reaches port 9765 can sign up and take over the instance, including the stored slskd API key. Keep it on a trusted network and change the admin password in Settings > Users right away." + ], + "port": 9765, + "website": "https://github.com/terry90/soulbeet", + "documentation": "https://github.com/terry90/soulbeet#readme", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/soulbeet.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "admin", + "password": "admin" + }, + "os": "debian" + }, { "name": "SoulSync", "slug": "soulsync", @@ -20802,7 +23011,7 @@ "port": 3128, "website": "https://www.squid-cache.org/", "documentation": "https://wiki.squid-cache.org/SquidFaq", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/squid.webp", + "logo": "https://wiki.squid-cache.org/assets/images/squid-logo-lucky-1.gif", "updateable": true, "privileged": false, "has_arm": true, @@ -20883,7 +23092,7 @@ "updateable": true, "privileged": false, "has_arm": true, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -20965,7 +23174,7 @@ { "name": "Stoatchat", "slug": "stoatchat", - "desc": "A self-hostable open-source chat platform and community server. Stoatchat is a fork of Revolt, featuring real-time messaging, voice channels, file sharing, and a full-featured web client. Built with Rust (backend) and SolidJS (frontend).", + "desc": "Stoatchat is an open-source chat platform and community server, forked from Revolt. It offers real-time messaging, voice channels, file sharing and a full-featured web client.", "script": "ct/stoatchat.sh", "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/stoatchat.sh", "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/stoatchat.sh", @@ -20978,14 +23187,13 @@ "Communication & Community" ], "notes": [ - "The first account registered becomes the instance administrator. Registration is open by default; set invite_only = true in /Revolt.toml to restrict it.", - "Voice and video calls require additional LiveKit setup. See https://github.com/stoatchat/self-hosted for details." + "Voice and video calls need a separate LiveKit setup, see https://github.com/stoatchat/self-hosted." ], "warnings": [ - "Initial setup takes 30-60 minutes due to Rust compilation and frontend build. Do not interrupt the process.", - "The files encryption key in /Revolt.toml is generated during installation. Back it up — losing it will make all uploaded files unreadable." + "Registration is open and the first account becomes the administrator. Register it right away, then set invite_only = true in /Revolt.toml to restrict sign-ups.", + "Back up the files encryption key in /Revolt.toml. Without it, all uploaded files are unreadable." ], - "port": 80, + "port": 443, "website": "https://stoat.chat", "documentation": "https://github.com/stoatchat/self-hosted", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/stoatchat.webp", @@ -21175,6 +23383,76 @@ }, "os": "debian" }, + { + "name": "Streamystats", + "slug": "streamystats", + "desc": "Streamystats is a statistics and analytics service for Jellyfin. It shows watch history, per-user, library and client statistics and watch-time graphs for one or more servers, and can import history from Jellystat and the Playback Reporting plugin.", + "script": "ct/streamystats.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/streamystats.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/streamystats.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00009" + ], + "category_names": [ + "Monitoring & Analytics" + ], + "notes": [ + "The first visit asks for your Jellyfin URL and an API key (Jellyfin: Dashboard > API Keys). After that, sign in with your Jellyfin account; Jellyfin admins get the admin views.", + "AI chat and recommendations stay off until you set up a provider under Settings > AI." + ], + "warnings": [], + "port": 3000, + "website": "https://github.com/fredrikburmester/streamystats", + "documentation": "https://github.com/fredrikburmester/streamystats/blob/main/DOCKERLESS.md", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/streamystats.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, + { + "name": "Stump", + "slug": "stump", + "desc": "Stump is a free and open-source comics, manga and digital book server. It organizes CBZ, CBR, EPUB and PDF files into libraries and series, reads them in the browser with progress tracking, and serves them to OPDS readers and the Stump mobile apps.", + "script": "ct/stump.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/stump.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/stump.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00013" + ], + "category_names": [ + "Media & Streaming" + ], + "notes": [ + "Create a library pointing at /opt/stump_data/library. To use a host folder, mount it there with pct set -mp0 /path/on/host,mp=/opt/stump_data/library.", + "OPDS readers connect to http://:10801/opds/v1.2/catalog (or /opds/v2.0/catalog) with a Stump username and password." + ], + "warnings": [ + "There is no default login: the first account created in the onboarding becomes the owner. Anyone who reaches the port can claim the server until then, so do it right after the install." + ], + "port": 10801, + "website": "https://www.stumpapp.dev/", + "documentation": "https://www.stumpapp.dev/docs", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/stump.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Stylus", "slug": "stylus", @@ -21484,6 +23762,42 @@ "config_path": "", "os": "alpine" }, + { + "name": "T3 Code", + "slug": "t3code", + "desc": "T3 Code is a web and desktop control surface for running coding agents on your machine.", + "script": "ct/t3code.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/t3code.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/t3code.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00020" + ], + "category_names": [ + "AI / Coding & Dev-Tools" + ], + "notes": [ + "Log in to the provider CLIs (Codex, Claude, Grok, OpenCode, GitHub) inside the container before using them in T3 Code.", + "The pairing URL shown after the install expires after an hour. Get a new one with pct exec -- t3 pair --base-dir /opt/t3code." + ], + "warnings": [ + "Agents run as root with Claude's Full access mode allowed, so they can change anything in the container and in writable bind mounts. Keep the container unprivileged and do not mount sensitive host paths." + ], + "port": 3773, + "website": "https://t3.codes", + "documentation": "https://github.com/pingdotgg/t3code/tree/main/docs", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/t3code.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Tandoor Recipes", "slug": "tandoor", @@ -21517,6 +23831,46 @@ "config_path": "", "os": "debian" }, + { + "name": "TaskView", + "slug": "taskview", + "desc": "TaskView is a source-available project and task management platform for teams. It offers task lists, Kanban boards, sprints and time tracking, plus organizations with role-based permissions, SSO, webhooks and issue sync with GitHub, GitLab and Gitea.", + "script": "ct/taskview.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/taskview.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/taskview.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00025" + ], + "category_names": [ + "Business & ERP" + ], + "notes": [ + "Without SMTP only the default account can sign in. Add the SMTP_* settings (and ALLOW_PUBLIC_REGISTRATION=false for invite-only) to /opt/taskview_data/.env, then restart taskview.", + "Behind a hostname or reverse proxy, or after an IP change, update APP_URL and CORS_ALLOWED_ORIGINS in /opt/taskview_data/.env and restart taskview." + ], + "warnings": [ + "The default login is publicly known. Sign in right away and set your own login, email and password under Account settings > Login and email." + ], + "port": 80, + "website": "https://taskview.tech/", + "documentation": "https://taskview.tech/docs", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/taskview.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "user", + "password": "user1!#Q" + }, + "os": "debian" + }, { "name": "TasmoAdmin", "slug": "tasmoadmin", @@ -21894,7 +24248,8 @@ "Remote Access & VPN" ], "notes": [ - "Guacamole (guacd) is running at 127.0.0.1:4822. If RDP/VNC connections fail, verify the Guacamole URL in Termix Admin Settings is set to 127.0.0.1:4822." + "Guacamole (guacd) is running at 127.0.0.1:4822. If RDP/VNC connections fail, verify the Guacamole URL in Termix Admin Settings is set to 127.0.0.1:4822.", + "You can install the specific one certbot you prefer. Important: This script does not install Certbot, as some require additional, external system dependencies (like specific packages for certain DNS providers). These external dependencies must be manually installed within the LXC container before you can successfully install and use the corresponding Certbot plugin. Consult the plugin's documentation for required packages." ], "warnings": [], "port": 80, @@ -22160,6 +24515,37 @@ "config_path": "", "os": "alpine" }, + { + "name": "tinyMediaManager", + "slug": "tinymediamanager", + "desc": "tinyMediaManager is a media library manager for organizing and scraping metadata, artwork, and NFO files for movies and TV shows, ready for Kodi, Plex, Jellyfin and Emby. Browser access is the desktop UI via noVNC.", + "script": "ct/tinymediamanager.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/tinymediamanager.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/tinymediamanager.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00013" + ], + "category_names": [ + "Media & Streaming" + ], + "notes": [], + "warnings": [], + "port": 6080, + "website": "https://www.tinymediamanager.org/", + "documentation": "https://www.tinymediamanager.org/docs/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/tinymediamanager.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Tolgee", "slug": "tolgee", @@ -22809,6 +25195,44 @@ "config_path": "", "os": "debian" }, + { + "name": "Tvheadend", + "slug": "tvheadend", + "desc": "Tvheadend is a TV streaming server and Digital Video Recorder for Linux, supporting DVB-S/S2, DVB-C, DVB-T/T2, ATSC, IPTV, SAT>IP and HDHomeRun as input sources, with HTSP and HTTP streaming output.", + "script": "ct/tvheadend.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/tvheadend.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/tvheadend.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00013" + ], + "category_names": [ + "Media & Streaming" + ], + "notes": [ + "The admin account is created by the Debian package itself during install and cannot be changed from within Tvheadend afterwards — only by re-running the install with new var_admin_user/var_admin_pass values.", + "IPTV, SAT>IP and HDHomeRun (network) sources work without extra container configuration. A physical DVB/USB tuner requires passing the device through to the container yourself (e.g. bind-mounting /dev/dvb) — this script does not automate hardware passthrough." + ], + "warnings": [], + "port": 9981, + "website": "https://tvheadend.org/", + "documentation": "https://docs.tvheadend.org", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/tvheadend.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "admin", + "password": "auto-generated" + }, + "os": "debian" + }, { "name": "Twenty", "slug": "twenty", @@ -22879,6 +25303,45 @@ "config_path": "", "os": "ubuntu" }, + { + "name": "Typecho", + "slug": "typecho", + "desc": "Typecho is a lightweight, open-source PHP blogging platform with a Markdown editor, pages, categories and tags, threaded comments, themes, plugins and an XML-RPC API for desktop and mobile editors.", + "script": "ct/typecho.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/typecho.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/typecho.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00012" + ], + "category_names": [ + "Documents & Notes" + ], + "notes": [ + "After the first login at http:///admin/, replace the placeholder email address admin@localhost.local in your profile.", + "Typecho builds every link from the site address http://. Change it under Settings > Basic when the IP changes or the blog sits behind a reverse proxy or domain.", + "After an update, open /admin/ and confirm the database upgrade Typecho asks for." + ], + "warnings": [], + "port": 80, + "website": "https://typecho.org/", + "documentation": "https://docs.typecho.org/", + "logo": "https://avatars.githubusercontent.com/u/2030842?v=4", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "admin", + "password": "" + }, + "os": "debian" + }, { "name": "Ubuntu", "slug": "ubuntu", @@ -22915,12 +25378,12 @@ "os": "ubuntu" }, { - "name": "Ubuntu 22.04", - "slug": "ubuntu2204-vm", - "desc": "Ubuntu 22.04 LTS (Jammy Jellyfish) as a cloud image, supported until 2027.", - "script": "vm/ubuntu2204-vm.sh", - "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/ubuntu2204-vm.sh", - "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/vm/ubuntu2204-vm.sh", + "name": "Ubuntu", + "slug": "ubuntu-vm", + "desc": "

Installs an Ubuntu VM with support for Ubuntu 22.04, 24.04, 25.04, and 26.04, optionally using Cloud-Init. Ubuntu is a widely used Linux distribution known for its stability, extensive package ecosystem, and strong server support. LTS releases such as 22.04, 24.04, and 26.04 receive long-term maintenance, while interim releases such as 25.04 are supported for nine months. This makes the VM suitable for both stable production environments and testing newer Ubuntu releases.

", + "script": "vm/ubuntu-vm.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/ubuntu-vm.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/vm/ubuntu-vm.sh", "type": "vm", "type_id": "lte524abgx960bd", "categories": [ @@ -22933,75 +25396,9 @@ "Cloud-Init is enabled by default. Configure your SSH key and credentials in the Proxmox Cloud-Init tab before starting the VM.", "If you use Cloud-init, checkout cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`" ], - "warnings": [], - "port": 0, - "website": "https://ubuntu.com/", - "documentation": "https://help.ubuntu.com/", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/ubuntu.webp", - "updateable": false, - "privileged": false, - "has_arm": false, - "is_dev": false, - "execute_in": [ - "vm" + "warnings": [ + "Debian and Ubuntu Cloud Images use a serial console by default. In the Proxmox WebUI, use xterm.js instead of noVNC to enable console access and copy-paste." ], - "config_path": "", - "os": "" - }, - { - "name": "Ubuntu 24.04", - "slug": "ubuntu2404-vm", - "desc": "Ubuntu 24.04 LTS (Noble Numbat) as a cloud image, supported until 2029.", - "script": "vm/ubuntu2404-vm.sh", - "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/ubuntu2404-vm.sh", - "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/vm/ubuntu2404-vm.sh", - "type": "vm", - "type_id": "lte524abgx960bd", - "categories": [ - "scriptcat00002" - ], - "category_names": [ - "Operating Systems & Appliances" - ], - "notes": [ - "Cloud-Init is enabled by default. Configure your SSH key and credentials in the Proxmox Cloud-Init tab before starting the VM.", - "If you use Cloud-init, checkout cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`" - ], - "warnings": [], - "port": 0, - "website": "https://ubuntu.com/", - "documentation": "https://help.ubuntu.com/", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/ubuntu.webp", - "updateable": false, - "privileged": false, - "has_arm": false, - "is_dev": false, - "execute_in": [ - "vm" - ], - "config_path": "", - "os": "" - }, - { - "name": "Ubuntu 25.04", - "slug": "ubuntu2504-vm", - "desc": "Ubuntu 25.04 (Plucky Puffin) as a cloud image. An interim release with a nine-month support window.", - "script": "vm/ubuntu2504-vm.sh", - "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/ubuntu2504-vm.sh", - "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/vm/ubuntu2504-vm.sh", - "type": "vm", - "type_id": "lte524abgx960bd", - "categories": [ - "scriptcat00002" - ], - "category_names": [ - "Operating Systems & Appliances" - ], - "notes": [ - "Cloud-Init is enabled by default. Configure your SSH key and credentials in the Proxmox Cloud-Init tab before starting the VM.", - "If you use Cloud-init, checkout cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`" - ], - "warnings": [], "port": 0, "website": "https://ubuntu.com/", "documentation": "https://help.ubuntu.com/", @@ -23123,7 +25520,7 @@ { "name": "Umbrel OS", "slug": "umbrel-os-vm", - "desc": "Umbrel OS is a personal server operating system with an app store for self-hosted software. This installs the official image as a VM.", + "desc": "Umbrel OS is a personal server operating system with an app store for self-hosted software. This creates a VM that boots the official umbrelOS installer ISO.", "script": "vm/umbrel-os-vm.sh", "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/umbrel-os-vm.sh", "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/vm/umbrel-os-vm.sh", @@ -23248,6 +25645,75 @@ "config_path": "", "os": "debian" }, + { + "name": "Unifi OS Server VM", + "slug": "unifi-os-server-vm", + "desc": "

Unifi OS Server VM is the operating system that powers Ubiquiti's UniFi line of network devices. It provides a centralized platform for managing and monitoring UniFi access points, switches, and security gateways, offering features such as network configuration, device provisioning, and performance analytics.

", + "script": "vm/unifi-os-server-vm.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/unifi-os-server-vm.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/vm/unifi-os-server-vm.sh", + "type": "vm", + "type_id": "lte524abgx960bd", + "categories": [ + "scriptcat00004" + ], + "category_names": [ + "Network & Firewall" + ], + "notes": [], + "warnings": [], + "port": 11443, + "website": "https://www.ui.com/", + "documentation": "https://help.ui.com/hc/en-us", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/ubiquiti-unifi.webp", + "updateable": true, + "privileged": true, + "has_arm": true, + "is_dev": false, + "execute_in": [ + "pve" + ], + "config_path": "", + "os": "debian" + }, + { + "name": "UniFi Protect Backup", + "slug": "unifi-protect-backup", + "desc": "Backs up UniFi Protect motion and smart-detection event clips to local or rclone-supported off-site storage in real time.", + "script": "ct/unifi-protect-backup.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/unifi-protect-backup.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/unifi-protect-backup.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00007", + "scriptcat00015" + ], + "category_names": [ + "Backup & Recovery", + "NVR & Cameras" + ], + "notes": [ + "Create a dedicated local UniFi Protect user with access to the cameras before installation.", + "The initial configuration stores clips locally. Configure an rclone remote and update RCLONE_DESTINATION in /opt/unifi-protect-backup/.env for off-site storage." + ], + "warnings": [ + "The default container disk is 4 GB. Select Advanced Install to choose a larger disk when retaining clips locally." + ], + "port": 0, + "website": "https://github.com/ep1cman/unifi-protect-backup", + "documentation": "https://github.com/ep1cman/unifi-protect-backup/blob/main/README.md", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/unifi.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Unmanic", "slug": "unmanic", @@ -23317,7 +25783,7 @@ { "name": "Unsloth", "slug": "unsloth", - "desc": "Unsloth Studio is a local web UI for running and fine-tuning language models. It can search, download and serve GGUF, LoRA and safetensors models, compare two models side by side, export to other formats, and expose OpenAI- and Anthropic-compatible endpoints so local models can be used from Claude Code, Codex and similar tools. Fine-tuning with LoRA is configured entirely through the UI.", + "desc": "Unsloth Studio is a local web UI for running and fine-tuning language models. It downloads and serves GGUF, LoRA and safetensors models, compares models side by side, and exposes OpenAI- and Anthropic-compatible endpoints for tools like Claude Code and Codex.", "script": "ct/unsloth.sh", "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/unsloth.sh", "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/unsloth.sh", @@ -23330,15 +25796,11 @@ "AI / Coding & Dev-Tools" ], "notes": [ - "The generated web UI password is saved to /root/unsloth.creds inside the container (user: unsloth). Run 'unsloth studio reset-password' to issue a new one.", - "Log in as the user 'unsloth'; the generated password is in ~/unsloth.creds inside the container. Rotate it with 'unsloth studio reset-password', which prints a new one and needs no restart.", - "Web search only works with an external provider (OpenAI, Anthropic, OpenRouter, Gemini or Kimi) configured in the settings, because the search runs server-side at the provider. Local GGUF models do not offer it and the search button stays hidden for them.", - "Models and Hugging Face caches land in /opt/unsloth_data, which fills up quickly - a single 7B model at Q4 is roughly 4 GB. Give the container more disk if you plan to keep several, and back that directory up rather than /opt/unsloth.", - "PyTorch is installed with uv's --torch-backend=auto, so a CPU-only container gets the CPU wheels and a GPU container the matching CUDA build. Re-run the update after adding a GPU so the right backend is pulled." - ], - "warnings": [ - "Fine-tuning requires an NVIDIA GPU. Without one, inference, model management, export and the OpenAI-compatible API work, but training does not. Pass a card through and install the NVIDIA driver in the container to enable it." + "Log in as unsloth with the password from ~/unsloth.creds in the container. To change it, run unsloth studio reset-password, which prints a new one.", + "Fine-tuning needs an NVIDIA GPU passed through to the container; without one, inference and export still work. After adding or changing a GPU, run the update to get matching builds.", + "Models are stored in /opt/unsloth_data and fill the disk fast (a 7B model at Q4 is about 4 GB). Add disk space if you plan to keep several." ], + "warnings": [], "port": 8888, "website": "https://unsloth.ai/", "documentation": "https://unsloth.ai/docs/new/studio", @@ -23591,6 +26053,77 @@ "config_path": "", "os": "debian" }, + { + "name": "useSend", + "slug": "usesend", + "desc": "useSend is an open-source email sending platform and self-hosted alternative to Resend, SendGrid or Postmark. It sends transactional email through a REST API, SDKs or SMTP and marketing campaigns from a visual editor, with tracking, bounce handling and webhooks, delivered through Amazon SES.", + "script": "ct/usesend.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/usesend.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/usesend.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [], + "category_names": [], + "notes": [ + "Sending needs Amazon SES: set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY in /opt/usesend_data/.env, then add SES under Admin with a callback URL reachable from the internet.", + "Behind a domain or after an IP change, update NEXTAUTH_URL in /opt/usesend_data/.env and the OAuth callback URL, then restart usesend." + ], + "warnings": [ + "Sign-in is GitHub OAuth only, and the first sign-in claims the instance. Anyone with a GitHub account who reaches the port can do that, so sign in right after setting up OAuth." + ], + "port": 3000, + "website": "https://usesend.com/", + "documentation": "https://docs.usesend.com/", + "logo": "https://cdn.jsdelivr.net/gh/usesend/useSend@main/apps/web/public/logo-squircle.png", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, + { + "name": "Valhalla", + "slug": "valhalla", + "desc": "Valhalla is an open-source routing engine and accompanying libraries for use with OpenStreetMap data. It provides turn-by-turn routing, map matching (snapping noisy GPS traces to the road/path network), time+distance matrices, isochrones and elevation lookups over a self-built tile graph. Commonly run as a self-hosted routing backend so that location data never has to be sent to a third party.", + "script": "ct/valhalla.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/valhalla.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/valhalla.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00000" + ], + "category_names": [ + "Miscellaneous" + ], + "notes": [ + "Installed by compiling from source (no prebuilt package exists), which takes roughly 20-45+ minutes depending on CPU/RAM.", + "build-tiles.sh rebuilds the graph from only the extracts passed in that run, so running it again for another region does not accumulate regions. To cover multiple regions, pass all their URLs/paths in one run (they are all forwarded to valhalla_build_tiles) or merge the PBFs first with 'osmium merge'.", + "To use this as the map-matching backend for GeoPulse, set GEOPULSE_TIMELINE_MAP_MATCHING_ENABLED=true, GEOPULSE_TIMELINE_MAP_MATCHING_PROVIDER=valhalla and GEOPULSE_TIMELINE_MAP_MATCHING_VALHALLA_BASE_URL=http://:8002 on the GeoPulse backend." + ], + "warnings": [ + "No routing tiles are built during install. Find your region's extract at https://download.geofabrik.de/ (browse to a continent, then country/region, and copy the .osm.pbf download link), then build the graph with: /opt/valhalla_data/build-tiles.sh {pbf-url-1} {pbf-url-2}. Avoid planet-wide data unless the container is sized for it.", + "The HTTP API on port 8002 has no authentication - keep it on a private/internal network.", + "The default 24GB disk / 6144MB RAM only covers the build. Routing tiles need several times the compressed extract size in free disk, so resize the container before building tiles for large regions." + ], + "port": 8002, + "website": "https://valhalla.github.io/valhalla/", + "documentation": "https://valhalla.github.io/valhalla/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/valhalla-maps.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Valkey", "slug": "valkey", @@ -23659,6 +26192,41 @@ "config_path": "", "os": "alpine" }, + { + "name": "Vane", + "slug": "vane", + "desc": "Vane (formerly Perplexica) is a self-hosted AI answering engine in the style of Perplexity. It searches the web through SearXNG and answers with cited sources, using a local LLM through Ollama or a cloud provider such as OpenAI, Anthropic, Gemini or Groq.", + "script": "ct/vane.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/vane.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/vane.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00020" + ], + "category_names": [ + "AI / Coding & Dev-Tools" + ], + "notes": [ + "The first visit opens the setup screen: add an AI provider and pick a chat and an embedding model. Ollama on another host must listen on 0.0.0.0 and is entered as http://:11434." + ], + "warnings": [ + "Vane has no login: anyone who reaches port 3000 can read the chat history and the provider API keys. Keep it on a trusted network or behind an authenticating reverse proxy." + ], + "port": 3000, + "website": "https://github.com/ItzCrazyKns/Vane", + "documentation": "https://github.com/ItzCrazyKns/Vane/tree/master/docs", + "logo": "https://cdn.jsdelivr.net/gh/ItzCrazyKns/Vane@master/public/icon.png", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Vaultwarden", "slug": "vaultwarden", @@ -23764,6 +26332,42 @@ "config_path": "", "os": "debian" }, + { + "name": "VictoriaLogs", + "slug": "victorialogs", + "desc": "VictoriaLogs is a fast, cost-effective and scalable open-source log database that can efficiently handle terabytes of logs with minimal resources.", + "script": "ct/victorialogs.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/victorialogs.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/victorialogs.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00009" + ], + "category_names": [ + "Monitoring & Analytics" + ], + "notes": [ + "Data is stored in /opt/victorialogs_data and persists across updates.", + "vlutils (vlogscli, vlagent) are installed in /opt/vlutils." + ], + "warnings": [ + "VictoriaLogs has no built-in authentication. Use a reverse proxy with authentication for production deployments." + ], + "port": 9428, + "website": "https://victoriametrics.com/products/victorialogs/", + "documentation": "https://docs.victoriametrics.com/victorialogs/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/victoriametrics.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "VictoriaMetrics", "slug": "victoriametrics", @@ -23844,12 +26448,11 @@ "AI / Coding & Dev-Tools" ], "notes": [ - "Model, port, dtype, VRAM share and HuggingFace token can be chosen up front in the script generator; they are written to /opt/vllm/vllm.env. Restart the service after changing the file: systemctl restart vllm", - "Flags not covered by a field go into VLLM_SERVE_ARGS in /opt/vllm/vllm.env, which is appended to 'vllm serve' verbatim.", - "The configured model is downloaded from HuggingFace on first service start, which needs internet access and disk space. For gated/private models set HF_TOKEN in /opt/vllm/vllm.env. Resource needs scale heavily with the chosen model." + "Pass a GPU through when creating the container. CPU-only inference is impractically slow.", + "The model downloads from HuggingFace on first start. Change it, HF_TOKEN (gated models) or extra flags (VLLM_SERVE_ARGS) in /opt/vllm/vllm.env, then run systemctl restart vllm." ], "warnings": [ - "Select NVIDIA GPU passthrough at container creation. vLLM installs the CUDA build by default and requires an NVIDIA GPU for usable performance; CPU-only inference is impractically slow." + "Without an API key the API accepts requests from anyone. Set VLLM_API_KEY in /opt/vllm/vllm.env (clients send it as a bearer token) and run systemctl restart vllm." ], "port": 8000, "website": "https://vllm.ai/", @@ -24057,6 +26660,44 @@ "config_path": "", "os": "debian" }, + { + "name": "WatchState", + "slug": "watchstate", + "desc": "WatchState syncs play state (watched/unwatched and resume progress) between Plex, Jellyfin and Emby without relying on third-party services. It pulls changes from the media servers through scheduled imports or webhooks and pushes them to the others one-way or two-way, maps the users of each server, keeps portable backups of the play state and audits mismatched records with Media Health. This script builds the PHP backend and the web UI from source and serves them with nginx, PHP-FPM and Redis.", + "script": "ct/watchstate.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/watchstate.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/watchstate.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00013" + ], + "category_names": [ + "Media & Streaming" + ], + "notes": [ + "Add Plex, Jellyfin or Emby under Backends with the server URL and an API token (the help button in the top-right corner walks through one-way and two-way sync), then enable the Import and Export tasks under Tasks: both are off by default. For real-time sync, paste the webhook URL shown on the Backends page into each media server.", + "Settings (WS_* variables from the FAQ) are edited on the Env page of the web UI or in /opt/watchstate_data/config/.env; the database, backups and logs live in /opt/watchstate_data as well and survive updates.", + "The built-in player and file checks read media files directly. They only work if the media is mounted into the container under the same paths the media servers use." + ], + "warnings": [ + "There is no default account. The first visit to http://:8080 asks for a system user and password, and anyone who reaches the port can set them until then, so do it right after the install. A forgotten login is cleared with: runuser -u www-data -- php /opt/watchstate/bin/console system:resetpassword, after which the next visit asks for a new one.", + "Web UI and worker run as www-data. Run console commands from the Console page of the web UI or as www-data (runuser -u www-data -- php /opt/watchstate/bin/console ); run as root, they leave root-owned files in /opt/watchstate_data that WatchState can no longer write." + ], + "port": 8080, + "website": "https://github.com/arabcoders/watchstate", + "documentation": "https://github.com/arabcoders/watchstate/blob/master/FAQ.md", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/watchstate.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "WatchYourLAN", "slug": "watchyourlan", @@ -24230,6 +26871,49 @@ "config_path": "", "os": "debian" }, + { + "name": "Weblate", + "slug": "weblate", + "desc": "Weblate is a web-based continuous localization system with tight version control integration. Translators work in the browser while Weblate pulls from and pushes to your Git or Mercurial repositories, with quality checks, translation memory, machine translation, glossaries and add-ons across dozens of file formats.", + "script": "ct/weblate.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/weblate.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/weblate.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00012" + ], + "category_names": [ + "Documents & Notes" + ], + "notes": [ + "Settings come from upstream's environment-driven weblate.settings_docker: add WEBLATE_* variables from the Docker documentation to /opt/weblate_data/weblate.env (for example WEBLATE_EMAIL_HOST for outgoing mail, or WEBLATE_SITE_DOMAIN and WEBLATE_ENABLE_HTTPS=1 behind an HTTPS proxy), then run `systemctl restart weblate weblate-celery`. Python-level overrides go in /opt/weblate_data/settings-override.py.", + "No mail server is configured, so registration and notification e-mails fail until WEBLATE_EMAIL_HOST is set.", + "Management commands need the environment loaded: `set -a; . /opt/weblate_data/weblate.env; set +a; /opt/weblate/.venv/bin/weblate `.", + "Celery runs two worker processes (--concurrency=2 in weblate-celery.service). Raise it together with CPU and RAM if Weblate reports long task queues.", + "Repositories, uploads and the secret key live in /opt/weblate_data. Back it up together with the PostgreSQL database." + ], + "warnings": [ + "The admin password is generated at install and stored as WEBLATE_ADMIN_PASSWORD in /opt/weblate_data/weblate.env. Weblate does not read that value, so change the password from your profile afterwards, or reset it with `weblate createadmin --update`." + ], + "port": 80, + "website": "https://weblate.org/", + "documentation": "https://docs.weblate.org/en/latest/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/weblate.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "admin", + "password": "" + }, + "os": "debian" + }, { "name": "Webmin System Administration", "slug": "webmin", @@ -24403,7 +27087,7 @@ "updateable": true, "privileged": false, "has_arm": true, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -24474,6 +27158,46 @@ "config_path": "", "os": "debian" }, + { + "name": "Windmill", + "slug": "windmill", + "desc": "Windmill is an open-source developer platform that turns scripts into webhooks, workflows and UIs. Scripts in Python, TypeScript, Bash, SQL and more get an auto-generated form and API, and can be chained into flows, run on schedules or triggers, and back low-code apps.", + "script": "ct/windmill.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/windmill.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/windmill.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00019" + ], + "category_names": [ + "Automation & Scheduling" + ], + "notes": [ + "Webhook URLs and OAuth redirects are built from BASE_URL in /opt/windmill_data/.env. Update it after an IP change or behind a reverse proxy or domain, then restart windmill.", + "Python, TypeScript on Bun, Bash, DuckDB and SQL work out of the box. Other languages need their runtime installed in the container first." + ], + "warnings": [ + "Log in with the default credentials right away: Windmill then asks for a new superadmin account. Until then, anyone who reaches port 8000 can log in." + ], + "port": 8000, + "website": "https://www.windmill.dev/", + "documentation": "https://www.windmill.dev/docs/intro", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/windmill.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "default_credentials": { + "username": "admin@windmill.dev", + "password": "changeme" + }, + "os": "debian" + }, { "name": "WireGuard", "slug": "wireguard", @@ -24616,6 +27340,42 @@ "config_path": "", "os": "debian" }, + { + "name": "Woodpecker CI", + "slug": "woodpecker-ci", + "desc": "Woodpecker CI is a simple, community-driven CI/CD engine for Forgejo, Gitea, GitHub, GitLab and Bitbucket. Pipelines are YAML files in the repository that run on pushes, pull requests, tags or schedules, with matrix builds, secrets and a web UI with live logs.", + "script": "ct/woodpecker-ci.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/woodpecker-ci.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/woodpecker-ci.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00020" + ], + "category_names": [ + "AI / Coding & Dev-Tools" + ], + "notes": [ + "The forge must reach WOODPECKER_HOST (http://:8000) for webhooks. Forgejo and Gitea block private addresses unless ALLOWED_HOST_LIST under [webhook] in their app.ini allows them.", + "Steps run without containers: image: names a shell or plugin, not a container image, and services: are not supported. Install the toolchains your pipelines need in the container." + ], + "warnings": [ + "Pipeline steps run directly in this container as root, so any pipeline can read the stored secrets and the users' forge tokens. Only build repositories you trust." + ], + "port": 8000, + "website": "https://woodpecker-ci.org/", + "documentation": "https://woodpecker-ci.org/docs/intro", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/woodpecker-ci.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Wordpress", "slug": "wordpress", @@ -24680,6 +27440,39 @@ "config_path": "", "os": "debian" }, + { + "name": "WRP", + "slug": "wrp", + "desc": "WRP (Web Rendering Proxy) is a browser-in-browser proxy server that lets historical and vintage web browsers use the modern web. It drives a headless Chromium instance and renders pages back as clickable images or simplified HTML, so clients as old as Mosaic can browse today's HTTPS-only web.", + "script": "ct/wrp.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/wrp.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/wrp.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00004" + ], + "category_names": [ + "Network & Firewall" + ], + "notes": [ + "Point a legacy browser (or its proxy settings) at http://:8080." + ], + "warnings": [], + "port": 8080, + "website": "https://github.com/tenox7/wrp", + "documentation": "https://github.com/tenox7/wrp#readme", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/chromium.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": true, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "xyOps", "slug": "xyops", @@ -24806,12 +27599,12 @@ "Media & Streaming" ], "notes": [ - "Two services run here: your-spotify (API on 8080) and your-spotify-web (UI on 3000). Point the reverse proxy at both.", - "Listening history is stored in the local MongoDB database 'your_spotify'. Back that up rather than /opt." + "Two services run here: your-spotify (API on 8080) and your-spotify-web (UI on 3000). Point the reverse proxy at both." ], "warnings": [ "Spotify only accepts https redirect URIs (loopback excepted), so the Spotify login cannot be completed on the container's plain IP - it fails with 'redirect_uri: Insecure'. A TLS reverse proxy with a real domain is required for normal use.", - "Create an app at https://developer.spotify.com/dashboard, put its client ID and secret into SPOTIFY_PUBLIC and SPOTIFY_SECRET in /opt/your-spotify.env, set API_ENDPOINT and CLIENT_ENDPOINT to your https URLs, and register /oauth/spotify/callback in the dashboard. The API endpoint is baked into the built frontend; set both endpoints at install time, or change them in /opt/your-spotify.env and run 'update' inside the container, which re-applies them." + "Create an app at https://developer.spotify.com/dashboard, put its client ID and secret into SPOTIFY_PUBLIC and SPOTIFY_SECRET in /opt/your-spotify.env, set API_ENDPOINT and CLIENT_ENDPOINT to your https URLs, and register /oauth/spotify/callback in the dashboard. The API endpoint is baked into the built frontend; set both endpoints at install time, or change them in /opt/your-spotify.env and run 'update' inside the container, which re-applies them.", + "Known issue in 1.20.0: the Settings page stays blank. Fixed upstream but not yet released - see `https://github.com/Yooooomi/your_spotify/issues/617`" ], "port": 3000, "website": "https://github.com/Yooooomi/your_spotify", @@ -24820,7 +27613,7 @@ "updateable": true, "privileged": false, "has_arm": true, - "is_dev": true, + "is_dev": false, "execute_in": [ "lxc" ], @@ -24865,6 +27658,40 @@ }, "os": "debian" }, + { + "name": "Youtarr", + "slug": "youtarr", + "desc": "Youtarr is a self-hosted YouTube downloader that subscribes to channels and playlists and downloads new videos on a schedule with yt-dlp. It adds NFO files, posters and metadata so the videos show up cleanly in Plex, Jellyfin, Emby or Kodi.", + "script": "ct/youtarr.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/youtarr.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/youtarr.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00013" + ], + "category_names": [ + "Media & Streaming" + ], + "notes": [ + "There is no default login: paste the one-time token from /opt/youtarr_data/config/setup-token into the web UI and create the admin account.", + "To keep videos on a NAS or share them with Plex or Jellyfin, mount that folder at /opt/youtarr_data/videos (pct set -mp0 /host/path,mp=/opt/youtarr_data/videos). The host folder must be writable by UID 100000." + ], + "warnings": [], + "port": 3011, + "website": "https://youtarr.com/", + "documentation": "https://dialmasterorg.github.io/Youtarr/docs/installation/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/youtarr.webp", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "yt-dlp-webui", "slug": "yt-dlp-webui", @@ -24904,6 +27731,42 @@ }, "os": "debian" }, + { + "name": "YTPTube", + "slug": "ytptube", + "desc": "YTPTube is a self-hosted web interface and download manager for yt-dlp. It queues URLs, playlists, channels and live streams, checks sources on a schedule, and adds reusable presets, notifications, a file browser and a built-in player.", + "script": "ct/ytptube.sh", + "script_url": "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/ytptube.sh", + "script_url_mirror": "https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/ct/ytptube.sh", + "type": "lxc", + "type_id": "nm9bra8mzye2scg", + "categories": [ + "scriptcat00013" + ], + "category_names": [ + "Media & Streaming" + ], + "notes": [ + "To keep downloads on a NAS or share them with Plex or Jellyfin, mount that folder at /opt/ytptube_data/downloads (pct set -mp0 /host/path,mp=/opt/ytptube_data/downloads). The host folder must be writable by UID 100000.", + "To reset a password, stop ytptube and run: cd /opt/ytptube && YTP_CONFIG_PATH=/opt/ytptube_data/config .venv/bin/python -m app.scripts.reset_password --username " + ], + "warnings": [ + "There is no default login: the first visitor creates the admin account, so open the web UI right after the install." + ], + "port": 8081, + "website": "https://github.com/arabcoders/ytptube", + "documentation": "https://github.com/arabcoders/ytptube/blob/master/FAQ.md", + "logo": "https://cdn.jsdelivr.net/gh/arabcoders/ytptube@master/ui/public/images/favicon.png", + "updateable": true, + "privileged": false, + "has_arm": false, + "is_dev": false, + "execute_in": [ + "lxc" + ], + "config_path": "", + "os": "debian" + }, { "name": "Yubal", "slug": "yubal", @@ -25058,7 +27921,9 @@ "category_names": [ "Business & ERP" ], - "notes": [], + "notes": [ + "Elasticsearch's memory is set to 2 GB in `/etc/elasticsearch/jvm.options.d/heap.options`. If you change the container's RAM, adjust `-Xms`/`-Xmx` there (keep both the same, at most half the container's RAM) and run `systemctl restart elasticsearch`." + ], "warnings": [], "port": 0, "website": "https://zammad.org/", @@ -25232,7 +28097,7 @@ "updateable": false, "privileged": false, "has_arm": false, - "is_dev": true, + "is_dev": false, "execute_in": [ "vm" ], @@ -25290,8 +28155,9 @@ "Authentication & Security" ], "notes": [ - "Application credentials: `cat /etc/zitadel/INSTALLATION_INFO.txt`", - "Change the ExternalDomain value in `/opt/zitadel/config.yaml` to your domain/hostname/IP and run `bash zitadel-rerun.sh`" + "Sign in at /ui/console as zitadel-admin@zitadel.localhost with the initial password from ~/zitadel.creds in the container. Zitadel asks for a new password at the first sign-in.", + "With Login V2 (default) Zitadel runs at https://:8080 with a self-signed certificate; accept it in the browser. Login V1 stays on plain http://:8080.", + "Zitadel only answers on the ExternalDomain in /opt/zitadel/config.yaml (the container IP). To use a hostname, change it, run zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml and restart zitadel" ], "warnings": [], "port": 8080, @@ -25308,7 +28174,7 @@ "config_path": "", "default_credentials": { "username": "zitadel-admin@zitadel.localhost", - "password": "Password1!" + "password": "cat ~/zitadel.creds" }, "os": "debian" },