Compare commits

...

26 Commits

Author SHA1 Message Date
d314168a37 Update CHANGELOG.md (#7390)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-04 00:12:13 +00:00
d6ad11c5c2 Update versions.json (#7389)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-04 02:11:47 +02:00
534592b44a Update CHANGELOG.md (#7386)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-03 18:33:13 +00:00
d9b6b58b36 Increase HDD size (#7384) 2025-09-03 20:32:52 +02:00
298eb7e83d Update CHANGELOG.md (#7380)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-03 12:56:32 +00:00
c2dd1e413f Wizarr: fix uv lock issue; use correct output suppression (#7378) 2025-09-03 14:56:04 +02:00
a4f1766408 Update CHANGELOG.md (#7379)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-03 12:45:49 +00:00
a24169e9b8 Fix navigation (#7376)
* Removed double entries from the search to improve navigation

* change input on search field to improve searchability

* added type to search to make sure that LXC and VM's dont get mixed up

* run linting over changes

---------

Co-authored-by: Bram Suurd <bram.suurd@infracom.nl>
2025-09-03 14:45:24 +02:00
45a2163e66 Update CHANGELOG.md (#7377)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-03 12:43:16 +00:00
2fc3e62d60 Fix paths (#7374) 2025-09-03 14:42:52 +02:00
210b846d61 Update versions.json (#7375)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-03 14:06:04 +02:00
b04cfb65f7 Update CHANGELOG.md (#7369)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-03 07:25:57 +00:00
6a2fc4083b Enhanced IP-Tag installation script with interactive configuration, improved VM IP detection, and better visual indicators (#7366)
- **Interactive Configuration**: Added setup wizard for `TAG_FORMAT` (last_two_octets/last_octet/full) and `LOOP_INTERVAL` (30-7200 seconds) during installation/update
- **Unified Installation Menu**: Replaced conditional service detection with unified menu offering install-with-service, install-command-only, and update options
- **Post-Installation Guidance**: Added comprehensive information display about configuration file location (`/opt/iptag/iptag.conf`) and required CIDR_LIST setup
- **Improved VM IP Detection**: Enhanced IP discovery with QM guest agent priority, ARP table validation via ping, and automatic removal of stale ARP entries
- **Visual Indicators**: Replaced emoji symbols with standard ASCII characters (✓/✗) with proper colors for better terminal compatibility
- **Simplified Update Process**: Removed complex service detection logic and provided direct update option in main menu

These changes address user feedback about complex installation requirements, VM IP detection issues, and provide clearer guidance for network subnet configuration.
2025-09-03 09:25:37 +02:00
f7f53943c2 Update CHANGELOG.md (#7365)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-03 00:12:00 +00:00
31f4d9b16c Update versions.json (#7364)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-03 02:11:34 +02:00
cd4cd5eec1 Update CHANGELOG.md (#7361)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-02 20:17:14 +00:00
8a7eeee727 Add max upload size to nginx (#7358) 2025-09-02 22:16:48 +02:00
be5d65f421 Update CHANGELOG.md (#7357)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-02 16:40:41 +00:00
591af3f109 Increase default disk size for Apt-Cacher-NG (#7352) 2025-09-02 18:40:22 +02:00
a3e0df9de1 Update CHANGELOG.md (#7356)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-02 16:39:59 +00:00
596699d07e booklore: remove folder before update (#7351) 2025-09-02 18:39:39 +02:00
b2275b44c2 Update CHANGELOG.md (#7355)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-02 16:35:45 +00:00
737842fb1e Immich: bump version to 1.140.1 (#7349) 2025-09-02 18:35:22 +02:00
646cb2bc30 Update versions.json (#7347)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-02 14:05:31 +02:00
4599bfe052 Update CHANGELOG.md (#7345)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-02 07:42:14 +00:00
bb85b1d4ac pbs: increase note on website for ipv6 (#7339) 2025-09-02 09:41:52 +02:00
18 changed files with 794 additions and 919 deletions

View File

@ -10,8 +10,49 @@
> [!CAUTION] > [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes. Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-09-04
## 2025-09-03
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Element-Synapse: Increase HDD size [@tremor021](https://github.com/tremor021) ([#7384](https://github.com/community-scripts/ProxmoxVE/pull/7384))
- Wizarr: fix uv lock issue; use correct output suppression [@vhsdream](https://github.com/vhsdream) ([#7378](https://github.com/community-scripts/ProxmoxVE/pull/7378))
- Netbox: Fix missing directory [@tremor021](https://github.com/tremor021) ([#7374](https://github.com/community-scripts/ProxmoxVE/pull/7374))
- #### 🔧 Refactor
- Enhanced IP-Tag installation script with interactive configuration, improved VM IP detection, and better visual indicators [@DesertGamer](https://github.com/DesertGamer) ([#7366](https://github.com/community-scripts/ProxmoxVE/pull/7366))
### 🌐 Website
- #### 🐞 Bug Fixes
- Fix navigation [@BramSuurdje](https://github.com/BramSuurdje) ([#7376](https://github.com/community-scripts/ProxmoxVE/pull/7376))
## 2025-09-02 ## 2025-09-02
### 🚀 Updated Scripts
- Increase default disk size for Apt-Cacher-NG [@MickLesk](https://github.com/MickLesk) ([#7352](https://github.com/community-scripts/ProxmoxVE/pull/7352))
- #### 🐞 Bug Fixes
- Snipe-IT: Fix Nginx configuration [@tremor021](https://github.com/tremor021) ([#7358](https://github.com/community-scripts/ProxmoxVE/pull/7358))
- booklore: remove folder before update [@MickLesk](https://github.com/MickLesk) ([#7351](https://github.com/community-scripts/ProxmoxVE/pull/7351))
- #### ✨ New Features
- Immich: bump version to 1.140.1 [@vhsdream](https://github.com/vhsdream) ([#7349](https://github.com/community-scripts/ProxmoxVE/pull/7349))
### 🌐 Website
- #### 📝 Script Information
- pbs: increase note on website for ipv6 [@MickLesk](https://github.com/MickLesk) ([#7339](https://github.com/community-scripts/ProxmoxVE/pull/7339))
## 2025-09-01 ## 2025-09-01
### 🚀 Updated Scripts ### 🚀 Updated Scripts

View File

@ -9,7 +9,7 @@ APP="Apt-Cacher-NG"
var_tags="${var_tags:-caching}" var_tags="${var_tags:-caching}"
var_cpu="${var_cpu:-1}" var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}" var_disk="${var_disk:-10}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
@ -20,18 +20,18 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /var ]]; then if [[ ! -d /var ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating $APP LXC"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated $APP LXC"
exit exit
fi
msg_info "Updating $APP LXC"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated $APP LXC"
exit
} }
start start

View File

@ -33,6 +33,10 @@ function update_script() {
systemctl stop booklore systemctl stop booklore
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "backup old install"
mv /opt/booklore /opt/booklore_bak
msg_ok "backup done"
fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore" fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore"
msg_info "Building Frontend" msg_info "Building Frontend"
@ -58,6 +62,7 @@ function update_script() {
msg_info "Starting $APP" msg_info "Starting $APP"
systemctl start booklore systemctl start booklore
systemctl reload nginx systemctl reload nginx
rm -rf /opt/booklore_bak
msg_ok "Started $APP" msg_ok "Started $APP"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
fi fi

View File

@ -9,7 +9,7 @@ APP="Element Synapse"
var_tags="${var_tags:-server}" var_tags="${var_tags:-server}"
var_cpu="${var_cpu:-1}" var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-8}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"

View File

@ -61,7 +61,7 @@ function update_script() {
done done
msg_ok "Image-processing libraries up to date" msg_ok "Image-processing libraries up to date"
fi fi
RELEASE="1.140.0" RELEASE="1.140.1"
if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
msg_info "Stopping Services" msg_info "Stopping Services"
systemctl stop immich-web systemctl stop immich-web

View File

@ -27,6 +27,9 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if ! grep -q "client_max_body_size[[:space:]]\+100M;" /etc/nginx/conf.d/snipeit.conf; then
sed -i '/index index.php;/i \ client_max_body_size 100M;' /etc/nginx/conf.d/snipeit.conf
fi
if check_for_gh_release "snipe-it" "snipe/snipe-it"; then if check_for_gh_release "snipe-it" "snipe/snipe-it"; then
msg_info "Stopping Services" msg_info "Stopping Services"

View File

@ -45,13 +45,14 @@ function update_script() {
msg_info "Updating $APP" msg_info "Updating $APP"
cd /opt/wizarr cd /opt/wizarr
/usr/local/bin/uv -q sync --locked $STD /usr/local/bin/uv lock
$STD /usr/local/bin/uv -q run pybabel compile -d app/translations $STD /usr/local/bin/uv sync --locked
$STD /usr/local/bin/uv run pybabel compile -d app/translations
$STD npm --prefix app/static install $STD npm --prefix app/static install
$STD npm --prefix app/static run build:css $STD npm --prefix app/static run build:css
mkdir -p ./.cache mkdir -p ./.cache
$STD tar -xf "$BACKUP_FILE" --directory=/ $STD tar -xf "$BACKUP_FILE" --directory=/
$STD /usr/local/bin/uv -q run flask db upgrade $STD /usr/local/bin/uv run flask db upgrade
msg_ok "Updated $APP" msg_ok "Updated $APP"
msg_info "Starting $APP" msg_info "Starting $APP"
@ -61,7 +62,7 @@ function update_script() {
msg_info "Cleaning Up" msg_info "Cleaning Up"
rm -rf "$BACKUP_FILE" rm -rf "$BACKUP_FILE"
msg_ok "Cleanup Completed" msg_ok "Cleanup Completed"
msg_ok "Update Successfully" msg_ok "Updated Successfully"
fi fi
exit exit
} }

View File

@ -21,7 +21,7 @@
"resources": { "resources": {
"cpu": 1, "cpu": 1,
"ram": 512, "ram": 512,
"hdd": 2, "hdd": 10,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }

View File

@ -21,7 +21,7 @@
"resources": { "resources": {
"cpu": 1, "cpu": 1,
"ram": 2048, "ram": 2048,
"hdd": 4, "hdd": 8,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }

View File

@ -32,6 +32,10 @@
"password": null "password": null
}, },
"notes": [ "notes": [
{
"text": "Please be aware that Immich releases are pinned to specific versions until compatibility has been confirmed by the Community Scripts maintainers; as a result, the version installed by the helper script may not be the most current version of Immich",
"type": "info"
},
{ {
"text": "During installation, you will be prompted with the option to install Intel OpenVINO for hardware-accelerated machine-learning. If you opt in, increase your LXC RAM after installation, as OpenVINO is memory-intensive", "text": "During installation, you will be prompted with the option to install Intel OpenVINO for hardware-accelerated machine-learning. If you opt in, increase your LXC RAM after installation, as OpenVINO is memory-intensive",
"type": "info" "type": "info"

View File

@ -37,7 +37,7 @@
"type": "warning" "type": "warning"
}, },
{ {
"text": "Advanced Install is only possible without root password and root SSH access, you can configure this after installation.", "text": "Advanced Install is only possible with disabled IPV6! Otherwise the installation sometimes stuck.",
"type": "warning" "type": "warning"
} }
] ]

View File

@ -1,23 +1,218 @@
[ [
{
"name": "Cleanuparr/Cleanuparr",
"version": "v2.2.2",
"date": "2025-09-03T20:58:13Z"
},
{
"name": "VictoriaMetrics/VictoriaMetrics",
"version": "pmm-6401-v1.125.1",
"date": "2025-09-03T20:17:18Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.35.1",
"date": "2025-09-03T18:53:36Z"
},
{
"name": "home-assistant/core",
"version": "2025.9.0",
"date": "2025-09-03T17:58:41Z"
},
{
"name": "NodeBB/NodeBB",
"version": "v4.5.0",
"date": "2025-09-03T17:42:18Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.1.1",
"date": "2025-09-03T15:12:56Z"
},
{
"name": "Graylog2/graylog2-server",
"version": "6.1.15",
"date": "2025-09-03T14:51:37Z"
},
{
"name": "emqx/emqx",
"version": "v5.8.8",
"date": "2025-09-03T14:25:26Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.13.0",
"date": "2025-09-03T13:48:17Z"
},
{
"name": "glpi-project/glpi",
"version": "10.0.19",
"date": "2025-07-16T09:45:14Z"
},
{
"name": "Radarr/Radarr",
"version": "v5.27.5.10198",
"date": "2025-09-03T12:08:43Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.109.2",
"date": "2025-09-03T07:50:21Z"
},
{
"name": "Checkmk/checkmk",
"version": "v2.4.0p11",
"date": "2025-09-03T09:58:14Z"
},
{
"name": "mattermost/mattermost",
"version": "server/public/v0.1.17",
"date": "2025-09-02T21:38:40Z"
},
{
"name": "cockpit-project/cockpit",
"version": "346",
"date": "2025-09-03T09:13:05Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.526",
"date": "2025-09-02T18:44:42Z"
},
{
"name": "apache/cassandra",
"version": "cassandra-4.1.10",
"date": "2025-09-03T08:46:02Z"
},
{
"name": "syncthing/syncthing",
"version": "v2.0.6",
"date": "2025-09-03T07:55:14Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3-beta.10",
"date": "2025-07-15T06:07:03Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2411",
"date": "2025-09-03T05:51:25Z"
},
{
"name": "booklore-app/booklore",
"version": "v1.1.2",
"date": "2025-09-03T03:18:53Z"
},
{
"name": "jeedom/core",
"version": "4.4.19",
"date": "2025-09-03T00:27:10Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "crafty-controller/crafty-4",
"version": "v4.5.3",
"date": "2025-09-02T23:52:26Z"
},
{
"name": "mongodb/mongo",
"version": "r8.0.14-rc0",
"date": "2025-09-02T22:46:40Z"
},
{
"name": "keycloak/keycloak",
"version": "26.0.15",
"date": "2025-08-27T12:12:03Z"
},
{
"name": "ollama/ollama",
"version": "v0.11.8",
"date": "2025-08-28T19:27:13Z"
},
{
"name": "runtipi/runtipi",
"version": "nightly",
"date": "2025-09-02T19:26:18Z"
},
{
"name": "Luligu/matterbridge",
"version": "3.2.5",
"date": "2025-09-02T17:25:13Z"
},
{
"name": "netbox-community/netbox",
"version": "v4.4.0",
"date": "2025-09-02T17:04:25Z"
},
{
"name": "element-hq/synapse",
"version": "v1.137.0",
"date": "2025-08-26T09:51:47Z"
},
{
"name": "rabbitmq/rabbitmq-server",
"version": "v4.1.4",
"date": "2025-09-02T14:26:24Z"
},
{
"name": "HabitRPG/habitica",
"version": "v5.40.0",
"date": "2025-09-02T14:09:11Z"
},
{
"name": "apache/tomcat",
"version": "10.1.45",
"date": "2025-09-02T12:46:34Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-ui@15.7.8",
"date": "2025-09-02T11:29:00Z"
},
{
"name": "Dolibarr/dolibarr",
"version": "22.0.1",
"date": "2025-09-02T10:29:08Z"
},
{
"name": "cloudreve/cloudreve",
"version": "4.7.0",
"date": "2025-09-02T06:02:43Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.3.2",
"date": "2025-08-19T04:08:36Z"
},
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.18.3",
"date": "2025-09-02T01:16:49Z"
},
{
"name": "ErsatzTV/ErsatzTV",
"version": "v25.5.0",
"date": "2025-09-02T01:00:11Z"
},
{
"name": "authelia/authelia",
"version": "v4.39.8",
"date": "2025-09-02T00:44:45Z"
},
{ {
"name": "MediaBrowser/Emby.Releases", "name": "MediaBrowser/Emby.Releases",
"version": "4.9.1.2", "version": "4.9.1.2",
"date": "2025-06-26T22:08:00Z" "date": "2025-06-26T22:08:00Z"
}, },
{ {
"name": "booklore-app/booklore", "name": "postgres/postgres",
"version": "v1.1.1", "version": "REL_18_RC1",
"date": "2025-09-01T22:05:26Z" "date": "2025-09-01T20:03:08Z"
},
{
"name": "syncthing/syncthing",
"version": "v2.0.3",
"date": "2025-08-22T08:12:47Z"
},
{
"name": "runtipi/runtipi",
"version": "nightly",
"date": "2025-09-01T19:23:40Z"
}, },
{ {
"name": "project-zot/zot", "name": "project-zot/zot",
@ -29,11 +224,6 @@
"version": "2.6.1", "version": "2.6.1",
"date": "2025-09-01T19:05:18Z" "date": "2025-09-01T19:05:18Z"
}, },
{
"name": "firefly-iii/firefly-iii",
"version": "v6.3.2",
"date": "2025-08-19T04:08:36Z"
},
{ {
"name": "outline/outline", "name": "outline/outline",
"version": "v0.87.3", "version": "v0.87.3",
@ -49,21 +239,11 @@
"version": "v0.11.0", "version": "v0.11.0",
"date": "2025-09-01T16:19:38Z" "date": "2025-09-01T16:19:38Z"
}, },
{
"name": "n8n-io/n8n",
"version": "n8n@1.108.2",
"date": "2025-08-27T13:05:35Z"
},
{ {
"name": "grafana/grafana", "name": "grafana/grafana",
"version": "rrc_steady_12.2.0-17245430286.patch1", "version": "rrc_steady_12.2.0-17245430286.patch1",
"date": "2025-09-01T14:19:14Z" "date": "2025-09-01T14:19:14Z"
}, },
{
"name": "apache/tomcat",
"version": "9.0.109",
"date": "2025-09-01T12:36:02Z"
},
{ {
"name": "fallenbagel/jellyseerr", "name": "fallenbagel/jellyseerr",
"version": "preview-issue-description", "version": "preview-issue-description",
@ -75,75 +255,35 @@
"date": "2025-09-01T09:47:06Z" "date": "2025-09-01T09:47:06Z"
}, },
{ {
"name": "zitadel/zitadel", "name": "wazuh/wazuh",
"version": "v4.1.0", "version": "coverity-w36-4.13.0",
"date": "2025-09-01T12:03:04Z" "date": "2025-09-01T11:40:11Z"
},
{
"name": "VictoriaMetrics/VictoriaMetrics",
"version": "pmm-6401-v1.125.0",
"date": "2025-09-01T11:01:54Z"
}, },
{ {
"name": "grokability/snipe-it", "name": "grokability/snipe-it",
"version": "v8.3.1", "version": "v8.3.1",
"date": "2025-09-01T11:00:07Z" "date": "2025-09-01T11:00:07Z"
}, },
{
"name": "home-assistant/core",
"version": "2025.8.3",
"date": "2025-08-21T18:23:10Z"
},
{ {
"name": "crowdsecurity/crowdsec", "name": "crowdsecurity/crowdsec",
"version": "v1.6.11", "version": "v1.7.0",
"date": "2025-07-22T12:11:38Z" "date": "2025-09-01T10:10:34Z"
},
{
"name": "Checkmk/checkmk",
"version": "v2.4.0p11-rc1",
"date": "2025-09-01T07:55:46Z"
}, },
{ {
"name": "readeck/readeck", "name": "readeck/readeck",
"version": "0.20.1", "version": "0.20.1",
"date": "2025-09-01T07:35:48Z" "date": "2025-09-01T07:35:48Z"
}, },
{
"name": "Jackett/Jackett",
"version": "v0.22.2390",
"date": "2025-09-01T05:57:06Z"
},
{ {
"name": "moghtech/komodo", "name": "moghtech/komodo",
"version": "v1.19.2", "version": "v1.19.2",
"date": "2025-09-01T02:33:52Z" "date": "2025-09-01T02:33:52Z"
}, },
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "jeedom/core",
"version": "4.4.19",
"date": "2025-09-01T00:27:07Z"
},
{
"name": "crafty-controller/crafty-4",
"version": "v4.5.2",
"date": "2025-08-31T22:21:50Z"
},
{ {
"name": "YunoHost/yunohost", "name": "YunoHost/yunohost",
"version": "debian/12.1.17.1", "version": "debian/12.1.17.1",
"date": "2025-08-31T21:38:21Z" "date": "2025-08-31T21:38:21Z"
}, },
{
"name": "rcourtman/Pulse",
"version": "v4.12.1",
"date": "2025-08-31T21:33:41Z"
},
{ {
"name": "wizarrrr/wizarr", "name": "wizarrrr/wizarr",
"version": "2025.8.5", "version": "2025.8.5",
@ -169,26 +309,11 @@
"version": "v12.0.2", "version": "v12.0.2",
"date": "2025-08-31T13:15:47Z" "date": "2025-08-31T13:15:47Z"
}, },
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-openapi@9.3.4",
"date": "2025-08-31T11:48:08Z"
},
{
"name": "keycloak/keycloak",
"version": "26.0.15",
"date": "2025-08-27T12:12:03Z"
},
{ {
"name": "Lidarr/Lidarr", "name": "Lidarr/Lidarr",
"version": "v2.13.3.4711", "version": "v2.13.3.4711",
"date": "2025-08-28T20:06:24Z" "date": "2025-08-28T20:06:24Z"
}, },
{
"name": "authelia/authelia",
"version": "v4.39.7",
"date": "2025-08-31T06:43:13Z"
},
{ {
"name": "jhuckaby/Cronicle", "name": "jhuckaby/Cronicle",
"version": "v0.9.91", "version": "v0.9.91",
@ -214,26 +339,11 @@
"version": "v0.12.6", "version": "v0.12.6",
"date": "2025-08-29T21:40:09Z" "date": "2025-08-29T21:40:09Z"
}, },
{
"name": "HabitRPG/habitica",
"version": "v5.39.1",
"date": "2025-08-29T21:02:00Z"
},
{ {
"name": "msgbyte/tianji", "name": "msgbyte/tianji",
"version": "v1.24.26", "version": "v1.24.26",
"date": "2025-08-29T20:26:08Z" "date": "2025-08-29T20:26:08Z"
}, },
{
"name": "homarr-labs/homarr",
"version": "v1.35.0",
"date": "2025-08-29T19:14:25Z"
},
{
"name": "emqx/emqx",
"version": "e6.0.0-alpha.1",
"date": "2025-08-29T13:59:45Z"
},
{ {
"name": "silverbulletmd/silverbullet", "name": "silverbulletmd/silverbullet",
"version": "2.0.0", "version": "2.0.0",
@ -242,17 +352,7 @@
{ {
"name": "Forceu/Gokapi", "name": "Forceu/Gokapi",
"version": "v2.1.0", "version": "v2.1.0",
"date": "2025-08-29T12:45:42Z" "date": "2025-08-29T12:56:13Z"
},
{
"name": "Luligu/matterbridge",
"version": "3.2.4",
"date": "2025-08-29T12:19:53Z"
},
{
"name": "Graylog2/graylog2-server",
"version": "7.0.0-alpha.2",
"date": "2025-08-29T10:57:06Z"
}, },
{ {
"name": "semaphoreui/semaphore", "name": "semaphoreui/semaphore",
@ -274,11 +374,6 @@
"version": "2025.8.2", "version": "2025.8.2",
"date": "2025-08-29T00:38:54Z" "date": "2025-08-29T00:38:54Z"
}, },
{
"name": "Dolibarr/dolibarr",
"version": "21.0.3",
"date": "2025-08-28T21:05:15Z"
},
{ {
"name": "9001/copyparty", "name": "9001/copyparty",
"version": "v1.19.7", "version": "v1.19.7",
@ -294,16 +389,6 @@
"version": "0.50.11", "version": "0.50.11",
"date": "2025-08-28T20:12:30Z" "date": "2025-08-28T20:12:30Z"
}, },
{
"name": "ollama/ollama",
"version": "v0.11.8",
"date": "2025-08-27T18:43:44Z"
},
{
"name": "mongodb/mongo",
"version": "r7.0.24-rc0",
"date": "2025-08-28T19:08:13Z"
},
{ {
"name": "benjaminjonard/koillection", "name": "benjaminjonard/koillection",
"version": "1.7.0", "version": "1.7.0",
@ -339,11 +424,6 @@
"version": "4.4.45", "version": "4.4.45",
"date": "2025-08-28T10:12:16Z" "date": "2025-08-28T10:12:16Z"
}, },
{
"name": "apache/cassandra",
"version": "4.1.10-tentative",
"date": "2025-08-28T10:02:40Z"
},
{ {
"name": "garethgeorge/backrest", "name": "garethgeorge/backrest",
"version": "v1.9.2", "version": "v1.9.2",
@ -354,11 +434,6 @@
"version": "1.23.3", "version": "1.23.3",
"date": "2025-08-28T02:50:06Z" "date": "2025-08-28T02:50:06Z"
}, },
{
"name": "rabbitmq/rabbitmq-server",
"version": "v4.1.3",
"date": "2025-08-04T12:13:45Z"
},
{ {
"name": "pocket-id/pocket-id", "name": "pocket-id/pocket-id",
"version": "v1.10.0", "version": "v1.10.0",
@ -399,36 +474,16 @@
"version": "v12.0.8", "version": "v12.0.8",
"date": "2025-08-27T06:22:32Z" "date": "2025-08-27T06:22:32Z"
}, },
{
"name": "netbox-community/netbox",
"version": "v4.3.7",
"date": "2025-08-26T17:54:25Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.525",
"date": "2025-08-26T14:28:44Z"
},
{ {
"name": "meilisearch/meilisearch", "name": "meilisearch/meilisearch",
"version": "latest", "version": "latest",
"date": "2025-08-26T14:14:42Z" "date": "2025-08-26T14:14:42Z"
}, },
{
"name": "element-hq/synapse",
"version": "v1.137.0",
"date": "2025-08-26T09:51:47Z"
},
{ {
"name": "evcc-io/evcc", "name": "evcc-io/evcc",
"version": "0.207.5", "version": "0.207.5",
"date": "2025-08-26T06:57:07Z" "date": "2025-08-26T06:57:07Z"
}, },
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3-beta.10",
"date": "2025-07-15T06:07:03Z"
},
{ {
"name": "documenso/documenso", "name": "documenso/documenso",
"version": "v1.12.2-rc.6", "version": "v1.12.2-rc.6",
@ -454,11 +509,6 @@
"version": "v3.1.2", "version": "v3.1.2",
"date": "2025-08-25T18:00:52Z" "date": "2025-08-25T18:00:52Z"
}, },
{
"name": "wazuh/wazuh",
"version": "coverity-w35-4.13.0",
"date": "2025-08-25T15:17:33Z"
},
{ {
"name": "sabnzbd/sabnzbd", "name": "sabnzbd/sabnzbd",
"version": "4.5.3", "version": "4.5.3",
@ -489,11 +539,6 @@
"version": "2.1", "version": "2.1",
"date": "2025-08-24T15:42:19Z" "date": "2025-08-24T15:42:19Z"
}, },
{
"name": "Radarr/Radarr",
"version": "v5.26.2.10099",
"date": "2025-06-11T20:10:39Z"
},
{ {
"name": "Prowlarr/Prowlarr", "name": "Prowlarr/Prowlarr",
"version": "v2.0.5.5160", "version": "v2.0.5.5160",
@ -529,11 +574,6 @@
"version": "v2.10.2", "version": "v2.10.2",
"date": "2025-08-23T03:10:31Z" "date": "2025-08-23T03:10:31Z"
}, },
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.18.2",
"date": "2025-08-22T23:56:41Z"
},
{ {
"name": "tailscale/tailscale", "name": "tailscale/tailscale",
"version": "v1.86.5", "version": "v1.86.5",
@ -549,11 +589,6 @@
"version": "version/2025.8.1", "version": "version/2025.8.1",
"date": "2025-08-22T14:55:30Z" "date": "2025-08-22T14:55:30Z"
}, },
{
"name": "mattermost/mattermost",
"version": "v10.11.2",
"date": "2025-08-22T06:50:56Z"
},
{ {
"name": "lazy-media/Reactive-Resume", "name": "lazy-media/Reactive-Resume",
"version": "v1.2.4", "version": "v1.2.4",
@ -569,11 +604,6 @@
"version": "v6.9.1", "version": "v6.9.1",
"date": "2025-08-22T04:04:12Z" "date": "2025-08-22T04:04:12Z"
}, },
{
"name": "cloudreve/cloudreve",
"version": "4.6.0",
"date": "2025-08-22T02:21:40Z"
},
{ {
"name": "hargata/lubelog", "name": "hargata/lubelog",
"version": "v1.5.0", "version": "v1.5.0",
@ -594,21 +624,11 @@
"version": "v1.4.6", "version": "v1.4.6",
"date": "2025-08-21T14:05:58Z" "date": "2025-08-21T14:05:58Z"
}, },
{
"name": "glpi-project/glpi",
"version": "10.0.19",
"date": "2025-07-16T09:45:14Z"
},
{ {
"name": "AdguardTeam/AdGuardHome", "name": "AdguardTeam/AdGuardHome",
"version": "v0.107.65", "version": "v0.107.65",
"date": "2025-08-20T14:02:28Z" "date": "2025-08-20T14:02:28Z"
}, },
{
"name": "cockpit-project/cockpit",
"version": "345",
"date": "2025-08-20T11:52:24Z"
},
{ {
"name": "openhab/openhab-core", "name": "openhab/openhab-core",
"version": "4.3.7", "version": "4.3.7",
@ -739,21 +759,11 @@
"version": "v1.0.0-beta16", "version": "v1.0.0-beta16",
"date": "2025-08-11T21:19:48Z" "date": "2025-08-11T21:19:48Z"
}, },
{
"name": "postgres/postgres",
"version": "REL_13_22",
"date": "2025-08-11T21:10:58Z"
},
{ {
"name": "FlowiseAI/Flowise", "name": "FlowiseAI/Flowise",
"version": "flowise@3.0.5", "version": "flowise@3.0.5",
"date": "2025-08-11T13:01:45Z" "date": "2025-08-11T13:01:45Z"
}, },
{
"name": "Cleanuparr/Cleanuparr",
"version": "v2.1.6",
"date": "2025-08-11T08:04:09Z"
},
{ {
"name": "slskd/slskd", "name": "slskd/slskd",
"version": "0.23.2", "version": "0.23.2",
@ -804,11 +814,6 @@
"version": "v25.08.1", "version": "v25.08.1",
"date": "2025-08-06T21:04:07Z" "date": "2025-08-06T21:04:07Z"
}, },
{
"name": "NodeBB/NodeBB",
"version": "v4.4.6",
"date": "2025-08-06T17:48:36Z"
},
{ {
"name": "TryGhost/Ghost-CLI", "name": "TryGhost/Ghost-CLI",
"version": "v1.28.3", "version": "v1.28.3",
@ -824,11 +829,6 @@
"version": "4.7.30", "version": "4.7.30",
"date": "2025-08-05T17:23:06Z" "date": "2025-08-05T17:23:06Z"
}, },
{
"name": "ErsatzTV/ErsatzTV",
"version": "v25.4.0",
"date": "2025-08-05T17:10:01Z"
},
{ {
"name": "binwiederhier/ntfy", "name": "binwiederhier/ntfy",
"version": "v2.14.0", "version": "v2.14.0",

View File

@ -36,19 +36,24 @@ export function formattedBadge(type: string) {
return null; return null;
} }
// random Script function getRandomScript(categories: Category[], previouslySelected: Set<string> = new Set()): Script | null {
function getRandomScript(categories: Category[]): Script | null {
const allScripts = categories.flatMap(cat => cat.scripts || []); const allScripts = categories.flatMap(cat => cat.scripts || []);
if (allScripts.length === 0) if (allScripts.length === 0)
return null; return null;
const idx = Math.floor(Math.random() * allScripts.length);
return allScripts[idx]; const availableScripts = allScripts.filter(script => !previouslySelected.has(script.slug));
if (availableScripts.length === 0) {
return allScripts[Math.floor(Math.random() * allScripts.length)];
}
const idx = Math.floor(Math.random() * availableScripts.length);
return availableScripts[idx];
} }
export default function CommandMenu() { function CommandMenu() {
const [open, setOpen] = React.useState(false); const [open, setOpen] = React.useState(false);
const [links, setLinks] = React.useState<Category[]>([]); const [links, setLinks] = React.useState<Category[]>([]);
const [isLoading, setIsLoading] = React.useState(false); const [isLoading, setIsLoading] = React.useState(false);
const [selectedScripts, setSelectedScripts] = React.useState<Set<string>>(new Set());
const router = useRouter(); const router = useRouter();
const fetchSortedCategories = () => { const fetchSortedCategories = () => {
@ -65,25 +70,26 @@ export default function CommandMenu() {
}; };
React.useEffect(() => { React.useEffect(() => {
const down = (e: KeyboardEvent) => { const handleKeyDown = (e: KeyboardEvent) => {
if (e.key === "k" && (e.metaKey || e.ctrlKey)) { if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
e.preventDefault(); e.preventDefault();
fetchSortedCategories(); fetchSortedCategories();
setOpen(open => !open); setOpen(open => !open);
} }
}; };
document.addEventListener("keydown", down); document.addEventListener("keydown", handleKeyDown);
return () => document.removeEventListener("keydown", down); return () => document.removeEventListener("keydown", handleKeyDown);
}, []); }, []);
const openRandomScript = async () => { const handleOpenRandomScript = async () => {
if (links.length === 0) { if (links.length === 0) {
setIsLoading(true); setIsLoading(true);
try { try {
const categories = await fetchCategories(); const categories = await fetchCategories();
setLinks(categories); setLinks(categories);
const randomScript = getRandomScript(categories); const randomScript = getRandomScript(categories, selectedScripts);
if (randomScript) { if (randomScript) {
setSelectedScripts(prev => new Set([...prev, randomScript.slug]));
router.push(`/scripts?id=${randomScript.slug}`); router.push(`/scripts?id=${randomScript.slug}`);
} }
} }
@ -92,13 +98,54 @@ export default function CommandMenu() {
} }
} }
else { else {
const randomScript = getRandomScript(links); const randomScript = getRandomScript(links, selectedScripts);
if (randomScript) { if (randomScript) {
setSelectedScripts(prev => new Set([...prev, randomScript.slug]));
router.push(`/scripts?id=${randomScript.slug}`); router.push(`/scripts?id=${randomScript.slug}`);
} }
} }
}; };
const getUniqueScriptsMap = React.useCallback(() => {
const scriptMap = new Map<string, { script: Script; categoryName: string }>();
for (const category of links) {
for (const script of category.scripts) {
if (!scriptMap.has(script.slug)) {
scriptMap.set(script.slug, { script, categoryName: category.name });
}
}
}
return scriptMap;
}, [links]);
const getUniqueScriptsByCategory = React.useCallback(() => {
const scriptMap = getUniqueScriptsMap();
const categoryOrder = links.map(cat => cat.name);
const grouped: Record<string, Script[]> = {};
for (const name of categoryOrder) {
grouped[name] = [];
}
for (const { script, categoryName } of scriptMap.values()) {
if (grouped[categoryName]) {
grouped[categoryName].push(script);
}
else {
grouped[categoryName] = [script];
}
}
Object.keys(grouped).forEach((cat) => {
if (grouped[cat].length === 0)
delete grouped[cat];
});
return grouped;
}, [getUniqueScriptsMap, links]);
const uniqueScriptsByCategory = getUniqueScriptsByCategory();
return ( return (
<> <>
<div className="flex gap-2"> <div className="flex gap-2">
@ -122,7 +169,20 @@ export default function CommandMenu() {
<TooltipProvider> <TooltipProvider>
<Tooltip delayDuration={100}> <Tooltip delayDuration={100}>
<TooltipTrigger asChild> <TooltipTrigger asChild>
<Button variant="outline" size="icon" onClick={openRandomScript} disabled={isLoading} className="hidden lg:flex"> <Button
variant="outline"
size="icon"
onClick={handleOpenRandomScript}
disabled={isLoading}
className="hidden lg:flex"
aria-label="Open Random Script"
tabIndex={0}
onKeyDown={(e) => {
if (e.key === "Enter" || e.key === " ") {
handleOpenRandomScript();
}
}}
>
<Sparkles className="size-4" /> <Sparkles className="size-4" />
<span className="sr-only">Open Random Script</span> <span className="sr-only">Open Random Script</span>
</Button> </Button>
@ -139,16 +199,24 @@ export default function CommandMenu() {
<CommandInput placeholder="Search for a script..." /> <CommandInput placeholder="Search for a script..." />
<CommandList> <CommandList>
<CommandEmpty>{isLoading ? "Loading..." : "No scripts found."}</CommandEmpty> <CommandEmpty>{isLoading ? "Loading..." : "No scripts found."}</CommandEmpty>
{links.map(category => ( {Object.entries(uniqueScriptsByCategory).map(([categoryName, scripts]) => (
<CommandGroup key={`category:${category.name}`} heading={category.name}> <CommandGroup key={`category:${categoryName}`} heading={categoryName}>
{category.scripts.map(script => ( {scripts.map(script => (
<CommandItem <CommandItem
key={`script:${script.slug}`} key={`script:${script.slug}`}
value={`${script.slug}-${script.name}`} value={`${script.name}-${script.type}`}
onSelect={() => { onSelect={() => {
setOpen(false); setOpen(false);
router.push(`/scripts?id=${script.slug}`); router.push(`/scripts?id=${script.slug}`);
}} }}
tabIndex={0}
aria-label={`Open script ${script.name}`}
onKeyDown={(e) => {
if (e.key === "Enter" || e.key === " ") {
setOpen(false);
router.push(`/scripts?id=${script.slug}`);
}
}}
> >
<div className="flex gap-2" onClick={() => setOpen(false)}> <div className="flex gap-2" onClick={() => setOpen(false)}>
<Image <Image
@ -172,3 +240,5 @@ export default function CommandMenu() {
</> </>
); );
} }
export default CommandMenu;

View File

@ -280,7 +280,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
mkdir -p "$INSTALL_DIR" mkdir -p "$INSTALL_DIR"
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache} mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.140.0" "$SRC_DIR" fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.140.1" "$SRC_DIR"
msg_info "Installing ${APPLICATION} (more patience please)" msg_info "Installing ${APPLICATION} (more patience please)"

View File

@ -56,6 +56,7 @@ RELEASE=$(curl -fsSL https://api.github.com/repos/netbox-community/netbox/releas
curl -fsSL "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip" curl -fsSL "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
$STD unzip "v${RELEASE}.zip" $STD unzip "v${RELEASE}.zip"
mv /opt/netbox-"${RELEASE}"/ /opt/netbox mv /opt/netbox-"${RELEASE}"/ /opt/netbox
mkdir -p /opt/netbox/netbox/media
$STD adduser --system --group netbox $STD adduser --system --group netbox
chown --recursive netbox /opt/netbox/netbox/media/ chown --recursive netbox /opt/netbox/netbox/media/

View File

@ -62,6 +62,7 @@ server {
listen 80; listen 80;
root /opt/snipe-it/public; root /opt/snipe-it/public;
server_name $IPADDRESS; server_name $IPADDRESS;
client_max_body_size 100M;
index index.php; index index.php;
location / { location / {

View File

@ -23,12 +23,13 @@ fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr"
msg_info "Configure ${APPLICATION}" msg_info "Configure ${APPLICATION}"
cd /opt/wizarr cd /opt/wizarr
/usr/local/bin/uv -q sync --locked $STD /usr/local/bin/uv lock
$STD /usr/local/bin/uv -q run pybabel compile -d app/translations $STD /usr/local/bin/uv sync --locked
$STD /usr/local/bin/uv run pybabel compile -d app/translations
$STD npm --prefix app/static install $STD npm --prefix app/static install
$STD npm --prefix app/static run build:css $STD npm --prefix app/static run build:css
mkdir -p ./.cache mkdir -p ./.cache
$STD /usr/local/bin/uv -q run flask db upgrade $STD /usr/local/bin/uv run flask db upgrade
msg_ok "Configure ${APPLICATION}" msg_ok "Configure ${APPLICATION}"
msg_info "Creating env, start script and service" msg_info "Creating env, start script and service"

File diff suppressed because it is too large Load Diff