Compare commits

..

1 Commits

Author SHA1 Message Date
github-actions[bot]
f82be54f63 Archive old changelog entries 2026-02-08 00:08:56 +00:00
12 changed files with 87 additions and 131 deletions

View File

@@ -401,28 +401,6 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details> </details>
## 2026-02-09
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- tracearr: prepare for next stable release [@durzo](https://github.com/durzo) ([#11673](https://github.com/community-scripts/ProxmoxVE/pull/11673))
- PeaNUT: symlink server.js after update [@vhsdream](https://github.com/vhsdream) ([#11696](https://github.com/community-scripts/ProxmoxVE/pull/11696))
## 2026-02-08
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- feat(healthchecks): add sendalerts service [@Mika56](https://github.com/Mika56) ([#11694](https://github.com/community-scripts/ProxmoxVE/pull/11694))
- ComfyUI: Dynamic Fetch PyTorch Versions [@MickLesk](https://github.com/MickLesk) ([#11657](https://github.com/community-scripts/ProxmoxVE/pull/11657))
- #### 💥 Breaking Changes
- Semaphore: switch from Debian to Ubuntu 24.04 [@MickLesk](https://github.com/MickLesk) ([#11670](https://github.com/community-scripts/ProxmoxVE/pull/11670))
## 2026-02-07 ## 2026-02-07
### 🆕 New Scripts ### 🆕 New Scripts

View File

@@ -30,30 +30,30 @@ function update_script() {
NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs
if check_for_gh_release "PeaNUT" "Brandawg93/PeaNUT"; then if check_for_gh_release "peanut" "Brandawg93/PeaNUT"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop peanut systemctl stop peanut
msg_info "Stopped Service" msg_info "Stopped Service"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "PeaNUT" "Brandawg93/PeaNUT" "tarball" "latest" "/opt/peanut" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "peanut" "Brandawg93/PeaNUT" "tarball" "latest" "/opt/peanut"
if ! grep -q '/opt/peanut/entrypoint.mjs' /etc/systemd/system/peanut.service; then if ! grep -q '/opt/peanut/entrypoint.mjs' /etc/systemd/system/peanut.service; then
msg_info "Fixing entrypoint" msg_info "Fixing entrypoint"
cd /opt/peanut cd /opt/peanut
ln -sf .next/standalone/server.js server.js
sed -i 's|/opt/peanut/.next/standalone/server.js|/opt/peanut/entrypoint.mjs|' /etc/systemd/system/peanut.service sed -i 's|/opt/peanut/.next/standalone/server.js|/opt/peanut/entrypoint.mjs|' /etc/systemd/system/peanut.service
systemctl daemon-reload systemctl daemon-reload
msg_ok "Fixed entrypoint" msg_ok "Fixed entrypoint"
fi fi
msg_info "Updating PeaNUT" msg_info "Updating Peanut"
cd /opt/peanut cd /opt/peanut
$STD pnpm i $STD pnpm i
$STD pnpm run build:local $STD pnpm run build:local
cp -r .next/static .next/standalone/.next/ cp -r .next/static .next/standalone/.next/
mkdir -p /opt/peanut/.next/standalone/config mkdir -p /opt/peanut/.next/standalone/config
ln -sf /etc/peanut/settings.yml /opt/peanut/.next/standalone/config/settings.yml ln -sf /etc/peanut/settings.yml /opt/peanut/.next/standalone/config/settings.yml
ln -sf .next/standalone/server.js server.js msg_ok "Updated Peanut"
msg_ok "Updated PeaNUT"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start peanut systemctl start peanut

View File

@@ -10,8 +10,8 @@ var_tags="${var_tags:-dev_ops}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-4}"
var_os="${var_os:-ubuntu}" var_os="${var_os:-debian}"
var_version="${var_version:-24.04}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"

View File

@@ -105,7 +105,6 @@ EOF
cp -rf pnpm-lock.yaml /opt/tracearr/ cp -rf pnpm-lock.yaml /opt/tracearr/
cp -rf apps/server/package.json /opt/tracearr/apps/server/ cp -rf apps/server/package.json /opt/tracearr/apps/server/
cp -rf apps/server/dist /opt/tracearr/apps/server/dist cp -rf apps/server/dist /opt/tracearr/apps/server/dist
cp -rf apps/server/scripts /opt/tracearr/apps/server/scripts
cp -rf apps/web/dist /opt/tracearr/apps/web/dist cp -rf apps/web/dist /opt/tracearr/apps/web/dist
cp -rf packages/shared/package.json /opt/tracearr/packages/shared/ cp -rf packages/shared/package.json /opt/tracearr/packages/shared/
cp -rf packages/shared/dist /opt/tracearr/packages/shared/dist cp -rf packages/shared/dist /opt/tracearr/packages/shared/dist

View File

@@ -1,5 +1,5 @@
{ {
"generated": "2026-02-09T06:27:10Z", "generated": "2026-02-07T18:08:02Z",
"versions": [ "versions": [
{ {
"slug": "2fauth", "slug": "2fauth",
@@ -120,13 +120,6 @@
"pinned": false, "pinned": false,
"date": "2026-02-01T19:02:42Z" "date": "2026-02-01T19:02:42Z"
}, },
{
"slug": "bichon",
"repo": "rustmailer/bichon",
"version": "0.3.7",
"pinned": false,
"date": "2026-01-28T12:47:09Z"
},
{ {
"slug": "bitmagnet", "slug": "bitmagnet",
"repo": "bitmagnet-io/bitmagnet", "repo": "bitmagnet-io/bitmagnet",
@@ -158,9 +151,9 @@
{ {
"slug": "byparr", "slug": "byparr",
"repo": "ThePhaseless/Byparr", "repo": "ThePhaseless/Byparr",
"version": "v2.1.0", "version": "v2.0.1",
"pinned": false, "pinned": false,
"date": "2026-02-08T12:59:20Z" "date": "2025-09-11T20:29:38Z"
}, },
{ {
"slug": "bytestash", "slug": "bytestash",
@@ -176,13 +169,6 @@
"pinned": false, "pinned": false,
"date": "2025-07-29T16:39:18Z" "date": "2025-07-29T16:39:18Z"
}, },
{
"slug": "checkmate",
"repo": "bluewave-labs/Checkmate",
"version": "v3.3",
"pinned": false,
"date": "2026-01-28T14:25:25Z"
},
{ {
"slug": "cleanuparr", "slug": "cleanuparr",
"repo": "Cleanuparr/Cleanuparr", "repo": "Cleanuparr/Cleanuparr",
@@ -249,9 +235,9 @@
{ {
"slug": "dawarich", "slug": "dawarich",
"repo": "Freika/dawarich", "repo": "Freika/dawarich",
"version": "1.1.0", "version": "1.0.4",
"pinned": false, "pinned": false,
"date": "2026-02-08T14:42:45Z" "date": "2026-02-01T11:37:27Z"
}, },
{ {
"slug": "discopanel", "slug": "discopanel",
@@ -340,9 +326,9 @@
{ {
"slug": "firefly", "slug": "firefly",
"repo": "firefly-iii/firefly-iii", "repo": "firefly-iii/firefly-iii",
"version": "v6.4.18", "version": "v6.4.17",
"pinned": false, "pinned": false,
"date": "2026-02-08T07:28:00Z" "date": "2026-02-07T06:56:00Z"
}, },
{ {
"slug": "fladder", "slug": "fladder",
@@ -389,9 +375,9 @@
{ {
"slug": "ghostfolio", "slug": "ghostfolio",
"repo": "ghostfolio/ghostfolio", "repo": "ghostfolio/ghostfolio",
"version": "2.237.0", "version": "2.236.0",
"pinned": false, "pinned": false,
"date": "2026-02-08T13:59:53Z" "date": "2026-02-05T19:30:11Z"
}, },
{ {
"slug": "gitea", "slug": "gitea",
@@ -557,9 +543,9 @@
{ {
"slug": "jackett", "slug": "jackett",
"repo": "Jackett/Jackett", "repo": "Jackett/Jackett",
"version": "v0.24.1074", "version": "v0.24.1060",
"pinned": false, "pinned": false,
"date": "2026-02-09T06:01:19Z" "date": "2026-02-07T05:55:27Z"
}, },
{ {
"slug": "joplin-server", "slug": "joplin-server",
@@ -767,16 +753,16 @@
{ {
"slug": "mediamanager", "slug": "mediamanager",
"repo": "maxdorninger/MediaManager", "repo": "maxdorninger/MediaManager",
"version": "v1.12.2", "version": "v1.12.1",
"pinned": false, "pinned": false,
"date": "2026-02-08T19:18:29Z" "date": "2026-01-05T09:06:22Z"
}, },
{ {
"slug": "mediamtx", "slug": "mediamtx",
"repo": "bluenviron/mediamtx", "repo": "bluenviron/mediamtx",
"version": "v1.16.1", "version": "v1.16.0",
"pinned": false, "pinned": false,
"date": "2026-02-07T18:58:24Z" "date": "2026-01-31T15:38:51Z"
}, },
{ {
"slug": "meilisearch", "slug": "meilisearch",
@@ -790,14 +776,14 @@
"repo": "usememos/memos", "repo": "usememos/memos",
"version": "v0.25.3", "version": "v0.25.3",
"pinned": true, "pinned": true,
"date": "2025-11-25T15:40:41Z" "date": "2025-11-25T00:00:00Z"
}, },
{ {
"slug": "metube", "slug": "metube",
"repo": "alexta69/metube", "repo": "alexta69/metube",
"version": "2026.02.08", "version": "2026.02.07",
"pinned": false, "pinned": false,
"date": "2026-02-08T17:01:37Z" "date": "2026-02-07T16:24:37Z"
}, },
{ {
"slug": "miniflux", "slug": "miniflux",
@@ -837,9 +823,9 @@
{ {
"slug": "navidrome", "slug": "navidrome",
"repo": "navidrome/navidrome", "repo": "navidrome/navidrome",
"version": "v0.60.2", "version": "v0.60.0",
"pinned": false, "pinned": false,
"date": "2026-02-07T19:42:33Z" "date": "2026-02-03T18:57:04Z"
}, },
{ {
"slug": "netbox", "slug": "netbox",
@@ -867,7 +853,7 @@
"repo": "nocodb/nocodb", "repo": "nocodb/nocodb",
"version": "0.301.1", "version": "0.301.1",
"pinned": true, "pinned": true,
"date": "2026-01-14T13:13:33Z" "date": "2026-01-21T16:23:04Z"
}, },
{ {
"slug": "nodebb", "slug": "nodebb",
@@ -1005,9 +991,9 @@
{ {
"slug": "peanut", "slug": "peanut",
"repo": "Brandawg93/PeaNUT", "repo": "Brandawg93/PeaNUT",
"version": "v5.22.0", "version": "v5.21.2",
"pinned": false, "pinned": false,
"date": "2026-02-08T00:32:25Z" "date": "2026-01-18T17:32:08Z"
}, },
{ {
"slug": "pelican-panel", "slug": "pelican-panel",
@@ -1131,9 +1117,9 @@
{ {
"slug": "pulse", "slug": "pulse",
"repo": "rcourtman/Pulse", "repo": "rcourtman/Pulse",
"version": "v5.1.5", "version": "v5.1.3",
"pinned": false, "pinned": false,
"date": "2026-02-08T12:19:53Z" "date": "2026-02-07T14:59:29Z"
}, },
{ {
"slug": "pve-scripts-local", "slug": "pve-scripts-local",
@@ -1306,9 +1292,9 @@
{ {
"slug": "speedtest-tracker", "slug": "speedtest-tracker",
"repo": "alexjustesen/speedtest-tracker", "repo": "alexjustesen/speedtest-tracker",
"version": "v1.13.9", "version": "v1.13.8",
"pinned": false, "pinned": false,
"date": "2026-02-08T21:48:49Z" "date": "2026-02-04T19:24:23Z"
}, },
{ {
"slug": "spoolman", "slug": "spoolman",
@@ -1348,9 +1334,9 @@
{ {
"slug": "tandoor", "slug": "tandoor",
"repo": "TandoorRecipes/recipes", "repo": "TandoorRecipes/recipes",
"version": "2.5.0", "version": "2.4.2",
"pinned": false, "pinned": false,
"date": "2026-02-08T13:23:02Z" "date": "2026-02-01T12:52:37Z"
}, },
{ {
"slug": "tasmoadmin", "slug": "tasmoadmin",
@@ -1628,9 +1614,9 @@
{ {
"slug": "yubal", "slug": "yubal",
"repo": "guillevc/yubal", "repo": "guillevc/yubal",
"version": "v0.4.2", "version": "v0.4.0",
"pinned": false, "pinned": false,
"date": "2026-02-08T21:35:13Z" "date": "2026-02-06T21:25:24Z"
}, },
{ {
"slug": "zigbee2mqtt", "slug": "zigbee2mqtt",

View File

@@ -28,14 +28,10 @@
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": "admin",
"password": null "password": null
}, },
"notes": [ "notes": [
{
"text": "On first visit, the setup wizard will guide you to create an admin account and configure ACME email.",
"type": "warning"
},
{ {
"text": "Nginx runs on ports 80/443, Nginx UI management interface on port 9000.", "text": "Nginx runs on ports 80/443, Nginx UI management interface on port 9000.",
"type": "info" "type": "info"
@@ -43,6 +39,10 @@
{ {
"text": "SSL certificates can be managed automatically with Let's Encrypt integration.", "text": "SSL certificates can be managed automatically with Let's Encrypt integration.",
"type": "info" "type": "info"
},
{
"text": "Initial Login data: `cat ~/nginx-ui.creds`",
"type": "info"
} }
] ]
} }

View File

@@ -22,8 +22,8 @@
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 2048,
"hdd": 4, "hdd": 4,
"os": "ubuntu", "os": "debian",
"version": "24.04" "version": "12"
} }
} }
], ],

View File

@@ -37,42 +37,26 @@ fetch_and_deploy_gh_release "ComfyUI" "comfyanonymous/ComfyUI" "tarball" "latest
msg_info "Python dependencies" msg_info "Python dependencies"
$STD uv venv "/opt/ComfyUI/venv" $STD uv venv "/opt/ComfyUI/venv"
if [[ "${comfyui_gpu_type,,}" == "nvidia" ]]; then if [[ "${comfyui_gpu_type,,}" == "nvidia" ]]; then
pytorch_url="https://download.pytorch.org/whl/cu130"
if [[ -f "/opt/ComfyUI/README.md" ]]; then
extracted=$(grep -oP 'pip install.*?--extra-index-url\s+\Khttps://download\.pytorch\.org/whl/cu\d+' /opt/ComfyUI/README.md | head -1 || true)
[[ -n "$extracted" ]] && pytorch_url="$extracted"
fi
$STD uv pip install \ $STD uv pip install \
torch \ torch \
torchvision \ torchvision \
torchaudio \ torchaudio \
--extra-index-url "$pytorch_url" \ --extra-index-url "https://download.pytorch.org/whl/cu128" \
--python="/opt/ComfyUI/venv/bin/python" --python="/opt/ComfyUI/venv/bin/python"
elif [[ "${comfyui_gpu_type,,}" == "amd" ]]; then elif [[ "${comfyui_gpu_type,,}" == "amd" ]]; then
pytorch_url="https://download.pytorch.org/whl/rocm6.4"
if [[ -f "/opt/ComfyUI/README.md" ]]; then
extracted=$(grep -oP 'pip install.*?--index-url\s+\Khttps://download\.pytorch\.org/whl/rocm[\d.]+' /opt/ComfyUI/README.md | grep -v 'nightly' | head -1 || true)
[[ -n "$extracted" ]] && pytorch_url="$extracted"
fi
$STD uv pip install \ $STD uv pip install \
torch \ torch \
torchvision \ torchvision \
torchaudio \ torchaudio \
--index-url "$pytorch_url" \ --index-url "https://download.pytorch.org/whl/rocm6.3" \
--python="/opt/ComfyUI/venv/bin/python" --python="/opt/ComfyUI/venv/bin/python"
elif [[ "${comfyui_gpu_type,,}" == "intel" ]]; then elif [[ "${comfyui_gpu_type,,}" == "intel" ]]; then
pytorch_url="https://download.pytorch.org/whl/xpu"
if [[ -f "/opt/ComfyUI/README.md" ]]; then
extracted=$(grep -oP 'pip install.*?--index-url\s+\Khttps://download\.pytorch\.org/whl/xpu' /opt/ComfyUI/README.md | head -1 || true)
[[ -n "$extracted" ]] && pytorch_url="$extracted"
fi
$STD uv pip install \ $STD uv pip install \
torch \ torch \
torchvision \ torchvision \
torchaudio \ torchaudio \
--index-url "$pytorch_url" \ --index-url "https://download.pytorch.org/whl/xpu" \
--python="/opt/ComfyUI/venv/bin/python" --python="/opt/ComfyUI/venv/bin/python"
fi fi
$STD uv pip install -r "/opt/ComfyUI/requirements.txt" --python="/opt/ComfyUI/venv/bin/python" $STD uv pip install -r "/opt/ComfyUI/requirements.txt" --python="/opt/ComfyUI/venv/bin/python"

View File

@@ -108,7 +108,7 @@ ${LOCAL_IP} {
EOF EOF
msg_ok "Configured Caddy" msg_ok "Configured Caddy"
msg_info "Creating systemd services" msg_info "Creating systemd service"
cat <<EOF >/etc/systemd/system/healthchecks.service cat <<EOF >/etc/systemd/system/healthchecks.service
[Unit] [Unit]
Description=Healthchecks Service Description=Healthchecks Service
@@ -123,23 +123,9 @@ Restart=always
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
cat <<EOF >/etc/systemd/system/healthchecks-sendalerts.service systemctl enable -q --now healthchecks caddy
[Unit]
Description=Healthchecks Sendalerts Service
After=network.target postgresql.service healthchecks.service
[Service]
WorkingDirectory=/opt/healthchecks/
ExecStart=/opt/healthchecks/venv/bin/python manage.py sendalerts
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now healthchecks healthchecks-sendalerts caddy
systemctl reload caddy systemctl reload caddy
msg_ok "Created Services" msg_ok "Created Service"
motd_ssh motd_ssh
customize customize

View File

@@ -30,20 +30,29 @@ msg_ok "Installed Nginx UI"
msg_info "Configuring Nginx UI" msg_info "Configuring Nginx UI"
mkdir -p /usr/local/etc/nginx-ui mkdir -p /usr/local/etc/nginx-ui
cat <<EOF >/usr/local/etc/nginx-ui/app.ini cat <<EOF >/usr/local/etc/nginx-ui/app.ini
[app]
PageSize = 10
[server] [server]
Host = 0.0.0.0 HttpHost = 0.0.0.0
Port = 9000 HttpPort = 9000
RunMode = release RunMode = release
JwtSecret = $(openssl rand -hex 32) JwtSecret = $(openssl rand -hex 32)
[cert] [nginx]
HTTPChallengePort = 9180 AccessLogPath = /var/log/nginx/access.log
ErrorLogPath = /var/log/nginx/error.log
ConfigDir = /etc/nginx
PIDPath = /run/nginx.pid
TestConfigCmd = nginx -t
ReloadCmd = nginx -s reload
RestartCmd = systemctl restart nginx
[terminal] [app]
StartCmd = login PageSize = 10
[cert]
Email =
CADir =
RenewalInterval = 7
RecursiveNameservers =
EOF EOF
msg_ok "Configured Nginx UI" msg_ok "Configured Nginx UI"
@@ -69,6 +78,17 @@ EOF
systemctl daemon-reload systemctl daemon-reload
msg_ok "Created Service" msg_ok "Created Service"
msg_info "Creating Initial Admin User"
systemctl start nginx-ui
sleep 3
systemctl stop nginx-ui
sleep 1
/usr/local/bin/nginx-ui reset-password --config /usr/local/etc/nginx-ui/app.ini &>/tmp/nginx-ui-reset.log || true
ADMIN_PASS=$(grep -oP 'Password: \K\S+' /tmp/nginx-ui-reset.log || echo "admin")
echo -e "Nginx-UI Credentials\nUsername: admin\nPassword: $ADMIN_PASS" >~/nginx-ui.creds
rm -f /tmp/nginx-ui-reset.log
msg_ok "Created Initial Admin User"
msg_info "Starting Service" msg_info "Starting Service"
systemctl enable -q --now nginx-ui systemctl enable -q --now nginx-ui
rm -rf /etc/nginx/sites-enabled/default rm -rf /etc/nginx/sites-enabled/default

View File

@@ -14,9 +14,13 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt install -y \ $STD apt install -y git
git \ setup_deb822_repo \
ansible "ansible" \
"https://keyserver.ubuntu.com/pks/lookup?fingerprint=on&op=get&search=0x6125E2A8C77F2818FB7BD15B93C4A3FD7BB9C367" \
"http://ppa.launchpad.net/ansible/ansible/ubuntu" \
"noble"
$STD apt install -y ansible
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "semaphore" "semaphoreui/semaphore" "binary" "latest" "/opt/semaphore" "semaphore_*_linux_amd64.deb" fetch_and_deploy_gh_release "semaphore" "semaphoreui/semaphore" "binary" "latest" "/opt/semaphore" "semaphore_*_linux_amd64.deb"

View File

@@ -59,7 +59,6 @@ cp -rf pnpm-workspace.yaml /opt/tracearr/
cp -rf pnpm-lock.yaml /opt/tracearr/ cp -rf pnpm-lock.yaml /opt/tracearr/
cp -rf apps/server/package.json /opt/tracearr/apps/server/ cp -rf apps/server/package.json /opt/tracearr/apps/server/
cp -rf apps/server/dist /opt/tracearr/apps/server/dist cp -rf apps/server/dist /opt/tracearr/apps/server/dist
cp -rf apps/server/scripts /opt/tracearr/apps/server/scripts
cp -rf apps/web/dist /opt/tracearr/apps/web/dist cp -rf apps/web/dist /opt/tracearr/apps/web/dist
cp -rf packages/shared/package.json /opt/tracearr/packages/shared/ cp -rf packages/shared/package.json /opt/tracearr/packages/shared/
cp -rf packages/shared/dist /opt/tracearr/packages/shared/dist cp -rf packages/shared/dist /opt/tracearr/packages/shared/dist