mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-04-28 13:20:40 +00:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c02e5fd006 | |||
| 8aee0efa4d | |||
| 11fdfa549a | |||
| 0fc913478e | |||
| ada387f1a2 | |||
| 4fd80e3e60 | |||
| d19cc5b69c | |||
| 02c174c4a2 | |||
| fb9e8d90a7 | |||
| 501ea61d2e |
@@ -442,6 +442,18 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
## 2026-04-18
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Dagu ([#13830](https://github.com/community-scripts/ProxmoxVE/pull/13830))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- SparkyFitness Garmin Microservice: fix update function [@tomfrenzel](https://github.com/tomfrenzel) ([#13824](https://github.com/community-scripts/ProxmoxVE/pull/13824))
|
||||||
|
|
||||||
## 2026-04-17
|
## 2026-04-17
|
||||||
|
|
||||||
### 🆕 New Scripts
|
### 🆕 New Scripts
|
||||||
@@ -452,6 +464,8 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- core: pin IGC version to compute-runtime compatible tag (Intel GPU) [@MickLesk](https://github.com/MickLesk) ([#13814](https://github.com/community-scripts/ProxmoxVE/pull/13814))
|
||||||
|
- Fix for bambuddy community script update [@abbasegbeyemi](https://github.com/abbasegbeyemi) ([#13816](https://github.com/community-scripts/ProxmoxVE/pull/13816))
|
||||||
- Umami: Fix update procedure [@tremor021](https://github.com/tremor021) ([#13807](https://github.com/community-scripts/ProxmoxVE/pull/13807))
|
- Umami: Fix update procedure [@tremor021](https://github.com/tremor021) ([#13807](https://github.com/community-scripts/ProxmoxVE/pull/13807))
|
||||||
|
|
||||||
### 💾 Core
|
### 💾 Core
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ function update_script() {
|
|||||||
mv /tmp/production.py.bak /opt/babybuddy/babybuddy/settings/production.py
|
mv /tmp/production.py.bak /opt/babybuddy/babybuddy/settings/production.py
|
||||||
source .venv/bin/activate
|
source .venv/bin/activate
|
||||||
$STD uv pip install -r requirements.txt
|
$STD uv pip install -r requirements.txt
|
||||||
|
export DJANGO_SETTINGS_MODULE=babybuddy.settings.production
|
||||||
$STD python manage.py migrate
|
$STD python manage.py migrate
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -48,7 +48,7 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating Python Dependencies"
|
msg_info "Updating Python Dependencies"
|
||||||
cd /opt/bambuddy
|
cd /opt/bambuddy
|
||||||
$STD uv venv
|
$STD uv venv --clear
|
||||||
$STD uv pip install -r requirements.txt
|
$STD uv pip install -r requirements.txt
|
||||||
msg_ok "Updated Python Dependencies"
|
msg_ok "Updated Python Dependencies"
|
||||||
|
|
||||||
|
|||||||
+64
@@ -0,0 +1,64 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://dagu.sh/
|
||||||
|
|
||||||
|
APP="Dagu"
|
||||||
|
var_tags="${var_tags:-automation;workflow;scheduler}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-512}"
|
||||||
|
var_disk="${var_disk:-4}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /opt/dagu/dagu ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "dagu" "dagucloud/dagu"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop dagu
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Backing up Data"
|
||||||
|
cp -r /opt/dagu/data /opt/dagu_data_backup
|
||||||
|
msg_ok "Backed up Data"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "dagu" "dagucloud/dagu" "prebuild" "latest" "/opt/dagu" "dagu_*_linux_amd64.tar.gz"
|
||||||
|
|
||||||
|
msg_info "Restoring Data"
|
||||||
|
mkdir -p /opt/dagu/data
|
||||||
|
cp -r /opt/dagu_data_backup/. /opt/dagu/data
|
||||||
|
rm -rf /opt/dagu_data_backup
|
||||||
|
msg_ok "Restored Data"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start dagu
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
____
|
||||||
|
/ __ \____ _____ ___ __
|
||||||
|
/ / / / __ `/ __ `/ / / /
|
||||||
|
/ /_/ / /_/ / /_/ / /_/ /
|
||||||
|
/_____/\__,_/\__, /\__,_/
|
||||||
|
/____/
|
||||||
+8
-2
@@ -32,10 +32,16 @@ function update_script() {
|
|||||||
if ! grep -qEi 'ubuntu' /etc/os-release; then
|
if ! grep -qEi 'ubuntu' /etc/os-release; then
|
||||||
msg_info "Updating Intel Dependencies"
|
msg_info "Updating Intel Dependencies"
|
||||||
rm -f ~/.intel-* || true
|
rm -f ~/.intel-* || true
|
||||||
fetch_and_deploy_gh_release "intel-igc-core-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-core-2_*_amd64.deb"
|
|
||||||
fetch_and_deploy_gh_release "intel-igc-opencl-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-opencl-2_*_amd64.deb"
|
# Fetch compute-runtime first so /tmp/gh_rel.json is populated for IGC tag resolution
|
||||||
fetch_and_deploy_gh_release "intel-libgdgmm12" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb"
|
fetch_and_deploy_gh_release "intel-libgdgmm12" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb"
|
||||||
fetch_and_deploy_gh_release "intel-opencl-icd" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb"
|
fetch_and_deploy_gh_release "intel-opencl-icd" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb"
|
||||||
|
|
||||||
|
local igc_tag
|
||||||
|
_resolve_igc_tag igc_tag
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "intel-igc-core-2" "intel/intel-graphics-compiler" "binary" "$igc_tag" "" "intel-igc-core-2_*_amd64.deb"
|
||||||
|
fetch_and_deploy_gh_release "intel-igc-opencl-2" "intel/intel-graphics-compiler" "binary" "$igc_tag" "" "intel-igc-opencl-2_*_amd64.deb"
|
||||||
msg_ok "Updated Intel Dependencies"
|
msg_ok "Updated Intel Dependencies"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://dagu.sh/
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "dagu" "dagucloud/dagu" "prebuild" "latest" "/opt/dagu" "dagu_*_linux_amd64.tar.gz"
|
||||||
|
|
||||||
|
msg_info "Setting up Dagu"
|
||||||
|
mkdir -p /opt/dagu/data
|
||||||
|
msg_ok "Set up Dagu"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/dagu.service
|
||||||
|
[Unit]
|
||||||
|
Description=Dagu Workflow Engine
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=root
|
||||||
|
WorkingDirectory=/opt/dagu
|
||||||
|
Environment=DAGU_HOME=/opt/dagu/data
|
||||||
|
Environment=DAGU_HOST=0.0.0.0
|
||||||
|
Environment=DAGU_PORT=8080
|
||||||
|
ExecStart=/opt/dagu/dagu start-all
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now dagu
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
+62
-32
@@ -1139,39 +1139,42 @@ validate_github_token() {
|
|||||||
-H "Authorization: Bearer $token" \
|
-H "Authorization: Bearer $token" \
|
||||||
-H "Accept: application/vnd.github+json" \
|
-H "Accept: application/vnd.github+json" \
|
||||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||||
"https://api.github.com/user" 2>/dev/null) || { rm -f "$headers"; return 3; }
|
"https://api.github.com/user" 2>/dev/null) || {
|
||||||
|
rm -f "$headers"
|
||||||
|
return 3
|
||||||
|
}
|
||||||
http_code="$response"
|
http_code="$response"
|
||||||
|
|
||||||
# Read expiry header (fine-grained PATs carry this)
|
# Read expiry header (fine-grained PATs carry this)
|
||||||
expiry_date=$(grep -i '^github-authentication-token-expiration:' "$headers" \
|
expiry_date=$(grep -i '^github-authentication-token-expiration:' "$headers" |
|
||||||
| sed 's/.*: *//' | tr -d '\r\n' || true)
|
sed 's/.*: *//' | tr -d '\r\n' || true)
|
||||||
# Read token scopes (classic PATs)
|
# Read token scopes (classic PATs)
|
||||||
scopes=$(grep -i '^x-oauth-scopes:' "$headers" \
|
scopes=$(grep -i '^x-oauth-scopes:' "$headers" |
|
||||||
| sed 's/.*: *//' | tr -d '\r\n' || true)
|
sed 's/.*: *//' | tr -d '\r\n' || true)
|
||||||
rm -f "$headers"
|
rm -f "$headers"
|
||||||
|
|
||||||
case "$http_code" in
|
case "$http_code" in
|
||||||
200)
|
200)
|
||||||
if [[ -n "$expiry_date" ]]; then
|
if [[ -n "$expiry_date" ]]; then
|
||||||
msg_ok "GitHub token is valid (expires: $expiry_date)."
|
msg_ok "GitHub token is valid (expires: $expiry_date)."
|
||||||
else
|
else
|
||||||
msg_ok "GitHub token is valid (no expiry / fine-grained PAT)."
|
msg_ok "GitHub token is valid (no expiry / fine-grained PAT)."
|
||||||
fi
|
fi
|
||||||
# Warn if classic PAT has no public_repo scope
|
# Warn if classic PAT has no public_repo scope
|
||||||
if [[ -n "$scopes" && "$scopes" != *"public_repo"* && "$scopes" != *"repo"* ]]; then
|
if [[ -n "$scopes" && "$scopes" != *"public_repo"* && "$scopes" != *"repo"* ]]; then
|
||||||
msg_warn "Token has no 'public_repo' scope - private repos and some release APIs may fail."
|
msg_warn "Token has no 'public_repo' scope - private repos and some release APIs may fail."
|
||||||
return 2
|
return 2
|
||||||
fi
|
fi
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
401)
|
401)
|
||||||
msg_error "GitHub token is invalid or expired (HTTP 401)."
|
msg_error "GitHub token is invalid or expired (HTTP 401)."
|
||||||
return 1
|
return 1
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
msg_warn "GitHub token validation returned HTTP $http_code - treating as valid."
|
msg_warn "GitHub token validation returned HTTP $http_code - treating as valid."
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4604,6 +4607,23 @@ function setup_hwaccel() {
|
|||||||
msg_ok "Setup Hardware Acceleration"
|
msg_ok "Setup Hardware Acceleration"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ══════════════════════════════════════════════════════════════════════════════
|
||||||
|
# Resolve the IGC tag that the latest compute-runtime was built against.
|
||||||
|
# Must be called AFTER a fetch_and_deploy_gh_release for intel/compute-runtime
|
||||||
|
# so that /tmp/gh_rel.json contains the compute-runtime release metadata.
|
||||||
|
# Sets the variable named by $1 (default: igc_tag) to the discovered tag.
|
||||||
|
# ══════════════════════════════════════════════════════════════════════════════
|
||||||
|
_resolve_igc_tag() {
|
||||||
|
local -n _out_ref="${1:-igc_tag}"
|
||||||
|
_out_ref="latest"
|
||||||
|
if [[ -f /tmp/gh_rel.json ]]; then
|
||||||
|
local _body _parsed
|
||||||
|
_body=$(jq -r '.body // empty' /tmp/gh_rel.json 2>/dev/null) || return 0
|
||||||
|
_parsed=$(grep -oP 'intel-graphics-compiler/releases/tag/\K[^\s\)]+' <<<"$_body" | head -1)
|
||||||
|
[[ -n "$_parsed" ]] && _out_ref="$_parsed"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# ══════════════════════════════════════════════════════════════════════════════
|
# ══════════════════════════════════════════════════════════════════════════════
|
||||||
# Intel Arc GPU Setup
|
# Intel Arc GPU Setup
|
||||||
# ══════════════════════════════════════════════════════════════════════════════
|
# ══════════════════════════════════════════════════════════════════════════════
|
||||||
@@ -4630,12 +4650,17 @@ _setup_intel_arc() {
|
|||||||
if [[ "$os_codename" == "trixie" || "$os_codename" == "sid" ]]; then
|
if [[ "$os_codename" == "trixie" || "$os_codename" == "sid" ]]; then
|
||||||
msg_info "Fetching Intel compute-runtime from GitHub for Arc support"
|
msg_info "Fetching Intel compute-runtime from GitHub for Arc support"
|
||||||
|
|
||||||
|
# Fetch a compute-runtime package first so /tmp/gh_rel.json is populated,
|
||||||
|
# then resolve the matching IGC tag from the release notes.
|
||||||
# libigdgmm - bundled in compute-runtime releases
|
# libigdgmm - bundled in compute-runtime releases
|
||||||
fetch_and_deploy_gh_release "libigdgmm12" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb" || true
|
fetch_and_deploy_gh_release "libigdgmm12" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb" || true
|
||||||
|
|
||||||
# Intel Graphics Compiler (note: packages have -2 suffix)
|
local igc_tag
|
||||||
fetch_and_deploy_gh_release "intel-igc-core" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-core-2_*_amd64.deb" || true
|
_resolve_igc_tag igc_tag
|
||||||
fetch_and_deploy_gh_release "intel-igc-opencl" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-opencl-2_*_amd64.deb" || true
|
|
||||||
|
# Intel Graphics Compiler – pinned to the version compute-runtime expects
|
||||||
|
fetch_and_deploy_gh_release "intel-igc-core" "intel/intel-graphics-compiler" "binary" "$igc_tag" "" "intel-igc-core-2_*_amd64.deb" || true
|
||||||
|
fetch_and_deploy_gh_release "intel-igc-opencl" "intel/intel-graphics-compiler" "binary" "$igc_tag" "" "intel-igc-opencl-2_*_amd64.deb" || true
|
||||||
|
|
||||||
# Compute Runtime (depends on IGC and gmmlib)
|
# Compute Runtime (depends on IGC and gmmlib)
|
||||||
fetch_and_deploy_gh_release "intel-opencl-icd" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb" || true
|
fetch_and_deploy_gh_release "intel-opencl-icd" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb" || true
|
||||||
@@ -4685,12 +4710,17 @@ _setup_intel_modern() {
|
|||||||
if [[ "$os_codename" == "trixie" || "$os_codename" == "sid" ]]; then
|
if [[ "$os_codename" == "trixie" || "$os_codename" == "sid" ]]; then
|
||||||
msg_info "Fetching Intel compute-runtime from GitHub"
|
msg_info "Fetching Intel compute-runtime from GitHub"
|
||||||
|
|
||||||
|
# Fetch a compute-runtime package first so /tmp/gh_rel.json is populated,
|
||||||
|
# then resolve the matching IGC tag from the release notes.
|
||||||
# libigdgmm first (bundled in compute-runtime releases)
|
# libigdgmm first (bundled in compute-runtime releases)
|
||||||
fetch_and_deploy_gh_release "libigdgmm12" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb" || true
|
fetch_and_deploy_gh_release "libigdgmm12" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb" || true
|
||||||
|
|
||||||
# Intel Graphics Compiler (note: packages have -2 suffix)
|
local igc_tag
|
||||||
fetch_and_deploy_gh_release "intel-igc-core" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-core-2_*_amd64.deb" || true
|
_resolve_igc_tag igc_tag
|
||||||
fetch_and_deploy_gh_release "intel-igc-opencl" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-opencl-2_*_amd64.deb" || true
|
|
||||||
|
# Intel Graphics Compiler – pinned to the version compute-runtime expects
|
||||||
|
fetch_and_deploy_gh_release "intel-igc-core" "intel/intel-graphics-compiler" "binary" "$igc_tag" "" "intel-igc-core-2_*_amd64.deb" || true
|
||||||
|
fetch_and_deploy_gh_release "intel-igc-opencl" "intel/intel-graphics-compiler" "binary" "$igc_tag" "" "intel-igc-opencl-2_*_amd64.deb" || true
|
||||||
|
|
||||||
# Compute Runtime
|
# Compute Runtime
|
||||||
fetch_and_deploy_gh_release "intel-opencl-icd" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb" || true
|
fetch_and_deploy_gh_release "intel-opencl-icd" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb" || true
|
||||||
|
|||||||
@@ -69,6 +69,9 @@ function update() {
|
|||||||
msg_ok "Stopped service"
|
msg_ok "Stopped service"
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "sparkyfitness-garmin" "CodeWithCJ/SparkyFitness" "tarball" "latest" $INSTALL_PATH
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "sparkyfitness-garmin" "CodeWithCJ/SparkyFitness" "tarball" "latest" $INSTALL_PATH
|
||||||
|
cd $INSTALL_PATH/SparkyFitnessGarmin
|
||||||
|
$STD uv venv --clear .venv
|
||||||
|
$STD uv pip install -r requirements.txt
|
||||||
|
|
||||||
msg_info "Starting service"
|
msg_info "Starting service"
|
||||||
systemctl start sparkyfitness-garmin
|
systemctl start sparkyfitness-garmin
|
||||||
|
|||||||
Reference in New Issue
Block a user