mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-21 21:15:16 +00:00
Compare commits
31 Commits
omada_remo
...
MickLesk-p
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aa26bf81e1 | ||
|
|
06d8e5354a | ||
|
|
60fc5573aa | ||
|
|
29ee6cdff3 | ||
|
|
bda9286043 | ||
|
|
4389a43670 | ||
|
|
43877a8b17 | ||
|
|
ff6cb3b87e | ||
|
|
4b0fb547e9 | ||
|
|
e2c6020c64 | ||
|
|
33f4482012 | ||
|
|
9b375bccab | ||
|
|
3f2f29d352 | ||
|
|
636b0d3afd | ||
|
|
36acad3b25 | ||
|
|
00060740d9 | ||
|
|
4a5f7ab855 | ||
|
|
dd8bb6f42b | ||
|
|
9879cb4b69 | ||
|
|
264a29980c | ||
|
|
3af525882a | ||
|
|
17bb0af069 | ||
|
|
3850960eca | ||
|
|
323ca24625 | ||
|
|
6fc20ae5c2 | ||
|
|
318574fcd1 | ||
|
|
fe3dab0ee1 | ||
|
|
b314ba4bf1 | ||
|
|
0153f4bd40 | ||
|
|
3b7de3da6b | ||
|
|
7ea03832ec |
31
CHANGELOG.md
31
CHANGELOG.md
@@ -10,8 +10,39 @@
|
|||||||
> [!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-11-21
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- plex: prevent [] syntax issue [@MickLesk](https://github.com/MickLesk) ([#9318](https://github.com/community-scripts/ProxmoxVE/pull/9318))
|
||||||
|
- fix: karakeep strip "v" from release version [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9324](https://github.com/community-scripts/ProxmoxVE/pull/9324))
|
||||||
|
- NetVisor: fix grep in update [@vhsdream](https://github.com/vhsdream) ([#9334](https://github.com/community-scripts/ProxmoxVE/pull/9334))
|
||||||
|
- Immich: pin correct version [@vhsdream](https://github.com/vhsdream) ([#9332](https://github.com/community-scripts/ProxmoxVE/pull/9332))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor IPv6 disable logic and add 'disable' option [@MickLesk](https://github.com/MickLesk) ([#9326](https://github.com/community-scripts/ProxmoxVE/pull/9326))
|
||||||
|
|
||||||
## 2025-11-20
|
## 2025-11-20
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- core: change 'uv cache clear' to 'uv cache clean' [@MickLesk](https://github.com/MickLesk) ([#9299](https://github.com/community-scripts/ProxmoxVE/pull/9299))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Immich v2.3.1: OpenVINO tuning, OCR fixes, Maintenance mode, workflows/plugin framework [@vhsdream](https://github.com/vhsdream) ([#9310](https://github.com/community-scripts/ProxmoxVE/pull/9310))
|
||||||
|
- kasm: add: update [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9253](https://github.com/community-scripts/ProxmoxVE/pull/9253))
|
||||||
|
- tools/pve: expand PVE support to 9.0–9.1 (post-install & netdata) [@MickLesk](https://github.com/MickLesk) ([#9298](https://github.com/community-scripts/ProxmoxVE/pull/9298))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Omada - AVX-only support [@MickLesk](https://github.com/MickLesk) ([#9295](https://github.com/community-scripts/ProxmoxVE/pull/9295))
|
||||||
|
|
||||||
## 2025-11-19
|
## 2025-11-19
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
module proxmox-api
|
module proxmox-api
|
||||||
|
|
||||||
go 1.23.2
|
go 1.24.0
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/gorilla/mux v1.8.1
|
github.com/gorilla/mux v1.8.1
|
||||||
@@ -17,7 +17,7 @@ require (
|
|||||||
github.com/xdg-go/scram v1.1.2 // indirect
|
github.com/xdg-go/scram v1.1.2 // indirect
|
||||||
github.com/xdg-go/stringprep v1.0.4 // indirect
|
github.com/xdg-go/stringprep v1.0.4 // indirect
|
||||||
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
|
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
|
||||||
golang.org/x/crypto v0.35.0 // indirect
|
golang.org/x/crypto v0.45.0 // indirect
|
||||||
golang.org/x/sync v0.11.0 // indirect
|
golang.org/x/sync v0.18.0 // indirect
|
||||||
golang.org/x/text v0.22.0 // indirect
|
golang.org/x/text v0.31.0 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
12
api/go.sum
12
api/go.sum
@@ -27,16 +27,16 @@ go.mongodb.org/mongo-driver v1.17.2 h1:gvZyk8352qSfzyZ2UMWcpDpMSGEr1eqE4T793Sqyh
|
|||||||
go.mongodb.org/mongo-driver v1.17.2/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
|
go.mongodb.org/mongo-driver v1.17.2/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
|
golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
|
||||||
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
|
golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
|
golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
|
||||||
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
@@ -48,8 +48,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||||
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
|
golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
|
||||||
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
|
golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
|
|||||||
29
ct/immich.sh
29
ct/immich.sh
@@ -61,6 +61,15 @@ EOF
|
|||||||
msg_ok "Installed libmimalloc3"
|
msg_ok "Installed libmimalloc3"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f /etc/apt/sources.list.d/mise.list ]]; then
|
||||||
|
msg_info "Installing Mise"
|
||||||
|
curl -fSs https://mise.jdx.dev/gpg-key.pub | tee /etc/apt/keyrings/mise-archive-keyring.pub 1>/dev/null
|
||||||
|
echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.pub arch=amd64] https://mise.jdx.dev/deb stable main" | tee /etc/apt/sources.list.d/mise.list
|
||||||
|
$STD apt update
|
||||||
|
$STD apt install -y mise
|
||||||
|
msg_ok "Installed Mise"
|
||||||
|
fi
|
||||||
|
|
||||||
STAGING_DIR=/opt/staging
|
STAGING_DIR=/opt/staging
|
||||||
BASE_DIR=${STAGING_DIR}/base-images
|
BASE_DIR=${STAGING_DIR}/base-images
|
||||||
SOURCE_DIR=${STAGING_DIR}/image-source
|
SOURCE_DIR=${STAGING_DIR}/image-source
|
||||||
@@ -93,7 +102,7 @@ EOF
|
|||||||
msg_ok "Image-processing libraries up to date"
|
msg_ok "Image-processing libraries up to date"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE="2.2.3"
|
RELEASE="2.3.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
|
||||||
@@ -121,6 +130,7 @@ EOF
|
|||||||
UPLOAD_DIR="$(sed -n '/^IMMICH_MEDIA_LOCATION/s/[^=]*=//p' /opt/immich/.env)"
|
UPLOAD_DIR="$(sed -n '/^IMMICH_MEDIA_LOCATION/s/[^=]*=//p' /opt/immich/.env)"
|
||||||
SRC_DIR="${INSTALL_DIR}/source"
|
SRC_DIR="${INSTALL_DIR}/source"
|
||||||
APP_DIR="${INSTALL_DIR}/app"
|
APP_DIR="${INSTALL_DIR}/app"
|
||||||
|
PLUGIN_DIR="${APP_DIR}/corePlugin"
|
||||||
ML_DIR="${APP_DIR}/machine-learning"
|
ML_DIR="${APP_DIR}/machine-learning"
|
||||||
GEO_DIR="${INSTALL_DIR}/geodata"
|
GEO_DIR="${INSTALL_DIR}/geodata"
|
||||||
|
|
||||||
@@ -145,9 +155,7 @@ EOF
|
|||||||
rm -rf "${APP_DIR:?}"/*
|
rm -rf "${APP_DIR:?}"/*
|
||||||
)
|
)
|
||||||
|
|
||||||
rm -rf "$SRC_DIR"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v${RELEASE}" "$SRC_DIR"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v${RELEASE}" "$SRC_DIR"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} web and microservices"
|
msg_info "Updating ${APP} web and microservices"
|
||||||
cd "$SRC_DIR"/server
|
cd "$SRC_DIR"/server
|
||||||
@@ -180,7 +188,18 @@ EOF
|
|||||||
$STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
|
$STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
|
||||||
cd "$APP_DIR"
|
cd "$APP_DIR"
|
||||||
mv "$INSTALL_DIR"/start.sh "$APP_DIR"/bin
|
mv "$INSTALL_DIR"/start.sh "$APP_DIR"/bin
|
||||||
msg_ok "Updated ${APP} web and microservices"
|
|
||||||
|
# plugins
|
||||||
|
cd "$SRC_DIR"
|
||||||
|
$STD mise trust --ignore ./mise.toml
|
||||||
|
$STD mise trust ./plugins/mise.toml
|
||||||
|
cd plugins
|
||||||
|
$STD mise install
|
||||||
|
$STD mise run build
|
||||||
|
mkdir -p "$PLUGIN_DIR"
|
||||||
|
cp -r ./dist "$PLUGIN_DIR"/dist
|
||||||
|
cp ./manifest.json "$PLUGIN_DIR"
|
||||||
|
msg_ok "Updated ${APP} server, web, cli and plugins"
|
||||||
|
|
||||||
cd "$SRC_DIR"/machine-learning
|
cd "$SRC_DIR"/machine-learning
|
||||||
mkdir -p "$ML_DIR" && chown -R immich:immich "$ML_DIR"
|
mkdir -p "$ML_DIR" && chown -R immich:immich "$ML_DIR"
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ function update_script() {
|
|||||||
cd /opt/karakeep/packages/db
|
cd /opt/karakeep/packages/db
|
||||||
$STD pnpm migrate
|
$STD pnpm migrate
|
||||||
$STD pnpm store prune
|
$STD pnpm store prune
|
||||||
sed -i "s/^SERVER_VERSION=.*$/SERVER_VERSION=${CHECK_UPDATE_RELEASE}/" /etc/karakeep/karakeep.env
|
sed -i "s/^SERVER_VERSION=.*$/SERVER_VERSION=${CHECK_UPDATE_RELEASE#v}/" /etc/karakeep/karakeep.env
|
||||||
msg_ok "Updated Karakeep"
|
msg_ok "Updated Karakeep"
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
|
|||||||
47
ct/kasm.sh
47
ct/kasm.sh
@@ -25,14 +25,51 @@ 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 /opt/kasm/current ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating LXC"
|
|
||||||
$STD apt update
|
msg_info "Checking for new version"
|
||||||
$STD apt -y upgrade
|
CURRENT_VERSION=$(readlink -f /opt/kasm/current | awk -F'/' '{print $4}')
|
||||||
msg_ok "Updated LXC"
|
KASM_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_[0-9]+\.[0-9]+\.[0-9]+\.[a-z0-9]+\.tar\.gz' | head -n 1)
|
||||||
|
if [[ -z "$KASM_URL" ]]; then
|
||||||
|
msg_error "Unable to detect latest Kasm release URL."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
KASM_VERSION=$(echo "$KASM_URL" | sed -E 's/.*kasm_release_([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
|
||||||
|
msg_info "Checked for new version"
|
||||||
|
|
||||||
|
msg_info "Removing outdated docker-compose plugin"
|
||||||
|
[ -f ~/.docker/cli-plugins/docker-compose ] && rm -rf ~/.docker/cli-plugins/docker-compose
|
||||||
|
msg_ok "Removed outdated docker-compose plugin"
|
||||||
|
|
||||||
|
if [[ -z "$CURRENT_VERSION" ]] || [[ "$KASM_VERSION" != "$CURRENT_VERSION" ]]; then
|
||||||
|
msg_info "Updating Kasm"
|
||||||
|
cd /tmp
|
||||||
|
|
||||||
|
msg_warn "WARNING: This script will run an external installer from a third-party source (https://www.kasmweb.com/)."
|
||||||
|
msg_warn "The following code is NOT maintained or audited by our repository."
|
||||||
|
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
|
||||||
|
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ upgrade.sh inside tar.gz $KASM_URL"
|
||||||
|
echo
|
||||||
|
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
|
||||||
|
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
||||||
|
msg_error "Aborted by user. No changes have been made."
|
||||||
|
exit 10
|
||||||
|
fi
|
||||||
|
curl -fsSL -o "/tmp/kasm_release_${KASM_VERSION}.tar.gz" "$KASM_URL"
|
||||||
|
tar -xf "kasm_release_${KASM_VERSION}.tar.gz"
|
||||||
|
chmod +x /tmp/kasm_release/install.sh
|
||||||
|
rm -f /tmp/kasm_release_${KASM_VERSION}.tar.gz
|
||||||
|
|
||||||
|
bash /tmp/kasm_release/upgrade.sh --proxy-port 443
|
||||||
|
rm -rf /tmp/kasm_release
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. Kasm is already at v${KASM_VERSION}"
|
||||||
|
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ function update_script() {
|
|||||||
|
|
||||||
cp /opt/netvisor.env.bak /opt/netvisor/.env
|
cp /opt/netvisor.env.bak /opt/netvisor/.env
|
||||||
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
||||||
if ! grep -q "PUBLIC_URL"; then
|
if ! grep -q "PUBLIC_URL" /opt/netvisor/.env; then
|
||||||
sed -i "\|_PATH=|a\NETVISOR_PUBLIC_URL=http://${LOCAL_IP}:60072" /opt/netvisor/.env
|
sed -i "\|_PATH=|a\NETVISOR_PUBLIC_URL=http://${LOCAL_IP}:60072" /opt/netvisor/.env
|
||||||
fi
|
fi
|
||||||
sed -i 's|_TARGET=.*$|_URL=http://127.0.0.1:60072|' /opt/netvisor/.env
|
sed -i 's|_TARGET=.*$|_URL=http://127.0.0.1:60072|' /opt/netvisor/.env
|
||||||
|
|||||||
16
ct/omada.sh
16
ct/omada.sh
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
|||||||
var_ram="${var_ram:-3072}"
|
var_ram="${var_ram:-3072}"
|
||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -32,19 +32,11 @@ function update_script() {
|
|||||||
if lscpu | grep -q 'avx'; then
|
if lscpu | grep -q 'avx'; then
|
||||||
MONGO_VERSION="8.0" setup_mongodb
|
MONGO_VERSION="8.0" setup_mongodb
|
||||||
else
|
else
|
||||||
msg_warn "No AVX detected: Using older MongoDB 4.4"
|
msg_error "No AVX detected (CPU-Flag)! We have discontinued support for this. You are welcome to try it manually with a Debian LXC, but due to the many issues with Omada, we currently only support AVX CPUs."
|
||||||
MONGO_VERSION="4.4" setup_mongodb
|
exit 10
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Checking if right Azul Zulu Java is installed"
|
JAVA_VERSION="21" setup_java
|
||||||
java_version=$(java -version 2>&1 | awk -F[\"_] '/version/ {print $2}')
|
|
||||||
if [[ "$java_version" =~ ^1\.8\.* ]]; then
|
|
||||||
$STD apt remove --purge -y zulu8-jdk
|
|
||||||
$STD apt -y install zulu21-jre-headless
|
|
||||||
msg_ok "Updated Azul Zulu Java to 21"
|
|
||||||
else
|
|
||||||
msg_ok "Azul Zulu Java 21 already installed"
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg_info "Updating Omada Controller"
|
msg_info "Updating Omada Controller"
|
||||||
OMADA_URL=$(curl -fsSL "https://support.omadanetworks.com/en/download/software/omada-controller/" |
|
OMADA_URL=$(curl -fsSL "https://support.omadanetworks.com/en/download/software/omada-controller/" |
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [ ! -f /etc/apt/sources.list.d/plexmediaserver.list ]] && [[ ! -f /etc/apt/sources.list.d/plexmediaserver.sources ]]; then
|
if [[ ! -f /etc/apt/sources.list.d/plexmediaserver.list ]] \
|
||||||
|
&& [[ ! -f /etc/apt/sources.list.d/plexmediaserver.sources ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8080,
|
"interface_port": 8080,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://filebrowser.org/features",
|
"website": "https://filebrowser.org/index.html#features",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/file-browser.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/file-browser.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
"description": "File Browser offers a user-friendly web interface for managing files within a designated directory. It allows you to perform various actions such as uploading, deleting, previewing, renaming, and editing files.",
|
"description": "File Browser offers a user-friendly web interface for managing files within a designated directory. It allows you to perform various actions such as uploading, deleting, previewing, renaming, and editing files.",
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2025-05-26",
|
"date_created": "2025-05-26",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": true,
|
"privileged": true,
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
"interface_port": 443,
|
"interface_port": 443,
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 3072,
|
"ram": 3072,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "13"
|
"version": "12"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2025-08-26",
|
"date_created": "2025-08-26",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8888,
|
"interface_port": 8888,
|
||||||
"documentation": "https://docs.searxng.org/",
|
"documentation": "https://docs.searxng.org/",
|
||||||
|
|||||||
@@ -1,14 +1,174 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"name": "rcourtman/Pulse",
|
||||||
|
"version": "v4.32.3",
|
||||||
|
"date": "2025-11-21T11:16:25Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "seriousm4x/UpSnap",
|
||||||
|
"version": "5.2.4",
|
||||||
|
"date": "2025-11-21T10:25:05Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "emqx/emqx",
|
||||||
|
"version": "e6.0.2-beta.2",
|
||||||
|
"date": "2025-11-21T10:20:27Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sabnzbd/sabnzbd",
|
||||||
|
"version": "4.5.5",
|
||||||
|
"date": "2025-10-24T11:12:22Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openobserve/openobserve",
|
||||||
|
"version": "v0.16.3",
|
||||||
|
"date": "2025-11-21T08:54:06Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "booklore-app/booklore",
|
||||||
|
"version": "v1.11.0",
|
||||||
|
"date": "2025-11-21T08:09:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mattermost/mattermost",
|
||||||
|
"version": "v10.11.7",
|
||||||
|
"date": "2025-11-17T08:40:53Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MariaDB/server",
|
||||||
|
"version": "mariadb-12.1.2",
|
||||||
|
"date": "2025-11-18T15:16:21Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "morpheus65535/bazarr",
|
||||||
|
"version": "v1.5.3",
|
||||||
|
"date": "2025-09-20T12:12:33Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jackett/Jackett",
|
||||||
|
"version": "v0.24.338",
|
||||||
|
"date": "2025-11-21T05:55:33Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bluenviron/mediamtx",
|
||||||
|
"version": "v1.15.4",
|
||||||
|
"date": "2025-11-21T01:21:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jeedom/core",
|
||||||
|
"version": "4.4.20",
|
||||||
|
"date": "2025-11-21T00:27:06Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "TasmoAdmin/TasmoAdmin",
|
||||||
|
"version": "v4.3.2",
|
||||||
|
"date": "2025-10-18T12:11:00Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "project-zot/zot",
|
||||||
|
"version": "v2.1.11",
|
||||||
|
"date": "2025-11-20T20:14:44Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "readeck/readeck",
|
||||||
|
"version": "0.21.0",
|
||||||
|
"date": "2025-11-20T18:35:59Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "saltstack/salt",
|
||||||
|
"version": "v3007.9",
|
||||||
|
"date": "2025-11-20T17:58:32Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "keycloak/keycloak",
|
||||||
|
"version": "26.4.5",
|
||||||
|
"date": "2025-11-12T15:24:23Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "msgbyte/tianji",
|
||||||
|
"version": "v1.30.12",
|
||||||
|
"date": "2025-11-20T16:13:19Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "meilisearch/meilisearch",
|
||||||
|
"version": "prototype-v1.26.0.arm-native-docker-build-1",
|
||||||
|
"date": "2025-11-20T15:38:39Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "duplicati/duplicati",
|
||||||
|
"version": "v2.2.0.101-2.2.0.101_canary_2025-11-20",
|
||||||
|
"date": "2025-11-20T14:50:45Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "NodeBB/NodeBB",
|
||||||
|
"version": "v4.6.3",
|
||||||
|
"date": "2025-11-20T14:13:22Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "n8n-io/n8n",
|
||||||
|
"version": "n8n@1.120.4",
|
||||||
|
"date": "2025-11-19T12:57:55Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "SigNoz/signoz",
|
||||||
|
"version": "v0.102.1",
|
||||||
|
"date": "2025-11-20T12:20:18Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "kimai/kimai",
|
||||||
|
"version": "2.44.0",
|
||||||
|
"date": "2025-11-20T11:01:01Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "itsmng/itsm-ng",
|
||||||
|
"version": "v2.1.1",
|
||||||
|
"date": "2025-11-20T10:54:07Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fuma-nama/fumadocs",
|
||||||
|
"version": "fumadocs-ui@16.0.15",
|
||||||
|
"date": "2025-11-20T10:52:04Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Athou/commafeed",
|
||||||
|
"version": "5.12.0",
|
||||||
|
"date": "2025-11-20T06:18:58Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "documenso/documenso",
|
||||||
|
"version": "v2.0.14",
|
||||||
|
"date": "2025-11-20T04:12:40Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "immich-app/immich",
|
||||||
|
"version": "v2.3.1",
|
||||||
|
"date": "2025-11-20T03:10:27Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nextcloud/nextcloudpi",
|
||||||
|
"version": "v1.56.0",
|
||||||
|
"date": "2025-11-20T02:28:35Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BerriAI/litellm",
|
||||||
|
"version": "v1.80.0.dev6",
|
||||||
|
"date": "2025-11-20T02:03:21Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "steveiliop56/tinyauth",
|
||||||
|
"version": "v4.0.1",
|
||||||
|
"date": "2025-10-15T16:53:55Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "coder/code-server",
|
||||||
|
"version": "v4.106.2",
|
||||||
|
"date": "2025-11-20T00:23:05Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "esphome/esphome",
|
"name": "esphome/esphome",
|
||||||
"version": "2025.11.0",
|
"version": "2025.11.0",
|
||||||
"date": "2025-11-19T22:37:46Z"
|
"date": "2025-11-19T22:37:46Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "immich-app/immich",
|
|
||||||
"version": "v2.3.0",
|
|
||||||
"date": "2025-11-19T22:36:35Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "TandoorRecipes/recipes",
|
"name": "TandoorRecipes/recipes",
|
||||||
"version": "2.3.5",
|
"version": "2.3.5",
|
||||||
@@ -29,16 +189,6 @@
|
|||||||
"version": "v2.7.12",
|
"version": "v2.7.12",
|
||||||
"date": "2025-05-29T17:08:26Z"
|
"date": "2025-05-29T17:08:26Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "BerriAI/litellm",
|
|
||||||
"version": "v1.77.3-stable-patch-2",
|
|
||||||
"date": "2025-11-19T19:00:37Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "coder/code-server",
|
|
||||||
"version": "v4.106.0",
|
|
||||||
"date": "2025-11-19T18:01:23Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "tailscale/tailscale",
|
"name": "tailscale/tailscale",
|
||||||
"version": "v1.90.8",
|
"version": "v1.90.8",
|
||||||
@@ -49,11 +199,6 @@
|
|||||||
"version": "0.51.3",
|
"version": "0.51.3",
|
||||||
"date": "2025-11-19T15:45:28Z"
|
"date": "2025-11-19T15:45:28Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "NodeBB/NodeBB",
|
|
||||||
"version": "v4.6.2",
|
|
||||||
"date": "2025-11-19T15:31:59Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "BookStackApp/BookStack",
|
"name": "BookStackApp/BookStack",
|
||||||
"version": "v25.11.2",
|
"version": "v25.11.2",
|
||||||
@@ -84,21 +229,6 @@
|
|||||||
"version": "v0.13.0",
|
"version": "v0.13.0",
|
||||||
"date": "2025-11-19T14:16:07Z"
|
"date": "2025-11-19T14:16:07Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "nextcloud/nextcloudpi",
|
|
||||||
"version": "v1.56.0",
|
|
||||||
"date": "2025-11-19T14:11:24Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "mattermost/mattermost",
|
|
||||||
"version": "v10.11.7",
|
|
||||||
"date": "2025-11-17T08:40:53Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "n8n-io/n8n",
|
|
||||||
"version": "n8n@1.120.4",
|
|
||||||
"date": "2025-11-19T12:57:55Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "AdguardTeam/AdGuardHome",
|
"name": "AdguardTeam/AdGuardHome",
|
||||||
"version": "v0.107.69",
|
"version": "v0.107.69",
|
||||||
@@ -114,21 +244,6 @@
|
|||||||
"version": "v7.5.0",
|
"version": "v7.5.0",
|
||||||
"date": "2025-11-19T08:36:29Z"
|
"date": "2025-11-19T08:36:29Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "SigNoz/signoz",
|
|
||||||
"version": "v0.102.0",
|
|
||||||
"date": "2025-11-19T06:53:59Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "morpheus65535/bazarr",
|
|
||||||
"version": "v1.5.3",
|
|
||||||
"date": "2025-09-20T12:12:33Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Jackett/Jackett",
|
|
||||||
"version": "v0.24.327",
|
|
||||||
"date": "2025-11-19T05:55:51Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "element-hq/synapse",
|
"name": "element-hq/synapse",
|
||||||
"version": "v1.143.0rc1",
|
"version": "v1.143.0rc1",
|
||||||
@@ -139,16 +254,6 @@
|
|||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"date": "2025-06-14T17:45:06Z"
|
"date": "2025-06-14T17:45:06Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "jeedom/core",
|
|
||||||
"version": "4.4.20",
|
|
||||||
"date": "2025-11-19T00:27:10Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "steveiliop56/tinyauth",
|
|
||||||
"version": "v4.0.1",
|
|
||||||
"date": "2025-10-15T16:53:55Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "gtsteffaniak/filebrowser",
|
"name": "gtsteffaniak/filebrowser",
|
||||||
"version": "v1.0.1-stable",
|
"version": "v1.0.1-stable",
|
||||||
@@ -169,11 +274,6 @@
|
|||||||
"version": "v3.0.1",
|
"version": "v3.0.1",
|
||||||
"date": "2025-11-18T18:50:35Z"
|
"date": "2025-11-18T18:50:35Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "keycloak/keycloak",
|
|
||||||
"version": "26.4.5",
|
|
||||||
"date": "2025-11-12T15:24:23Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "seerr-team/seerr",
|
"name": "seerr-team/seerr",
|
||||||
"version": "preview-test-fix-subscriptions",
|
"version": "preview-test-fix-subscriptions",
|
||||||
@@ -184,21 +284,11 @@
|
|||||||
"version": "v3.6.2",
|
"version": "v3.6.2",
|
||||||
"date": "2025-11-18T16:25:16Z"
|
"date": "2025-11-18T16:25:16Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "MariaDB/server",
|
|
||||||
"version": "mariadb-12.1.2",
|
|
||||||
"date": "2025-11-18T15:16:21Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "redis/redis",
|
"name": "redis/redis",
|
||||||
"version": "8.4.0",
|
"version": "8.4.0",
|
||||||
"date": "2025-11-18T15:06:37Z"
|
"date": "2025-11-18T15:06:37Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "fuma-nama/fumadocs",
|
|
||||||
"version": "create-fumadocs-app@16.0.17",
|
|
||||||
"date": "2025-11-18T12:28:43Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "NginxProxyManager/nginx-proxy-manager",
|
"name": "NginxProxyManager/nginx-proxy-manager",
|
||||||
"version": "v2.13.5",
|
"version": "v2.13.5",
|
||||||
@@ -209,21 +299,11 @@
|
|||||||
"version": "v0.7.5",
|
"version": "v0.7.5",
|
||||||
"date": "2025-11-18T10:50:21Z"
|
"date": "2025-11-18T10:50:21Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "emqx/emqx",
|
|
||||||
"version": "e6.1.0-alpha.1",
|
|
||||||
"date": "2025-11-18T10:33:45Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "wazuh/wazuh",
|
"name": "wazuh/wazuh",
|
||||||
"version": "coverity-w47-4.14.2",
|
"version": "coverity-w47-4.14.2",
|
||||||
"date": "2025-11-18T07:24:43Z"
|
"date": "2025-11-18T07:24:43Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "documenso/documenso",
|
|
||||||
"version": "v2.0.13",
|
|
||||||
"date": "2025-11-18T05:59:02Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "0xERR0R/blocky",
|
"name": "0xERR0R/blocky",
|
||||||
"version": "v0.28.2",
|
"version": "v0.28.2",
|
||||||
@@ -259,11 +339,6 @@
|
|||||||
"version": "v1.4.5",
|
"version": "v1.4.5",
|
||||||
"date": "2025-11-17T15:20:35Z"
|
"date": "2025-11-17T15:20:35Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "meilisearch/meilisearch",
|
|
||||||
"version": "latest",
|
|
||||||
"date": "2025-11-17T09:29:20Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "rabbitmq/rabbitmq-server",
|
"name": "rabbitmq/rabbitmq-server",
|
||||||
"version": "v4.2.1",
|
"version": "v4.2.1",
|
||||||
@@ -309,11 +384,6 @@
|
|||||||
"version": "3.3.8",
|
"version": "3.3.8",
|
||||||
"date": "2025-11-16T17:04:37Z"
|
"date": "2025-11-16T17:04:37Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "msgbyte/tianji",
|
|
||||||
"version": "v1.30.11",
|
|
||||||
"date": "2025-11-16T16:21:04Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "AlexxIT/go2rtc",
|
"name": "AlexxIT/go2rtc",
|
||||||
"version": "v1.9.12",
|
"version": "v1.9.12",
|
||||||
@@ -379,11 +449,6 @@
|
|||||||
"version": "v1.43.3",
|
"version": "v1.43.3",
|
||||||
"date": "2025-11-14T19:16:17Z"
|
"date": "2025-11-14T19:16:17Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "kimai/kimai",
|
|
||||||
"version": "2.43.0",
|
|
||||||
"date": "2025-11-14T17:20:16Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "mealie-recipes/mealie",
|
"name": "mealie-recipes/mealie",
|
||||||
"version": "v3.5.0",
|
"version": "v3.5.0",
|
||||||
@@ -394,11 +459,6 @@
|
|||||||
"version": "22.0.3",
|
"version": "22.0.3",
|
||||||
"date": "2025-11-14T14:49:25Z"
|
"date": "2025-11-14T14:49:25Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "openobserve/openobserve",
|
|
||||||
"version": "v0.16.2",
|
|
||||||
"date": "2025-11-14T12:05:36Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "zitadel/zitadel",
|
"name": "zitadel/zitadel",
|
||||||
"version": "v4.7.0",
|
"version": "v4.7.0",
|
||||||
@@ -424,11 +484,6 @@
|
|||||||
"version": "v0.86.1",
|
"version": "v0.86.1",
|
||||||
"date": "2025-11-14T05:05:44Z"
|
"date": "2025-11-14T05:05:44Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "rcourtman/Pulse",
|
|
||||||
"version": "v4.31.0",
|
|
||||||
"date": "2025-11-14T00:18:50Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "gristlabs/grist-core",
|
"name": "gristlabs/grist-core",
|
||||||
"version": "v1.7.7",
|
"version": "v1.7.7",
|
||||||
@@ -554,11 +609,6 @@
|
|||||||
"version": "v1.0.0-beta19",
|
"version": "v1.0.0-beta19",
|
||||||
"date": "2025-11-09T17:26:30Z"
|
"date": "2025-11-09T17:26:30Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "duplicati/duplicati",
|
|
||||||
"version": "v2.2.0.1_stable_2025-11-09",
|
|
||||||
"date": "2025-11-09T17:21:54Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Cleanuparr/Cleanuparr",
|
"name": "Cleanuparr/Cleanuparr",
|
||||||
"version": "v2.4.5",
|
"version": "v2.4.5",
|
||||||
@@ -824,11 +874,6 @@
|
|||||||
"version": "cassandra-5.0.6",
|
"version": "cassandra-5.0.6",
|
||||||
"date": "2025-10-29T07:40:47Z"
|
"date": "2025-10-29T07:40:47Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "booklore-app/booklore",
|
|
||||||
"version": "v1.10.0",
|
|
||||||
"date": "2025-10-28T19:04:35Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "pi-hole/pi-hole",
|
"name": "pi-hole/pi-hole",
|
||||||
"version": "v6.2.2",
|
"version": "v6.2.2",
|
||||||
@@ -864,11 +909,6 @@
|
|||||||
"version": "v0.25.2",
|
"version": "v0.25.2",
|
||||||
"date": "2025-10-24T12:30:04Z"
|
"date": "2025-10-24T12:30:04Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "sabnzbd/sabnzbd",
|
|
||||||
"version": "4.5.5",
|
|
||||||
"date": "2025-10-24T11:12:22Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "crowdsecurity/crowdsec",
|
"name": "crowdsecurity/crowdsec",
|
||||||
"version": "v1.7.3",
|
"version": "v1.7.3",
|
||||||
@@ -894,11 +934,6 @@
|
|||||||
"version": "release-1.24.1",
|
"version": "release-1.24.1",
|
||||||
"date": "2025-10-22T10:28:00Z"
|
"date": "2025-10-22T10:28:00Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "bluenviron/mediamtx",
|
|
||||||
"version": "v1.15.3",
|
|
||||||
"date": "2025-10-21T19:56:55Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "kyantech/Palmr",
|
"name": "kyantech/Palmr",
|
||||||
"version": "v3.2.5-beta",
|
"version": "v3.2.5-beta",
|
||||||
@@ -909,11 +944,6 @@
|
|||||||
"version": "v1.71.2",
|
"version": "v1.71.2",
|
||||||
"date": "2025-10-20T15:25:52Z"
|
"date": "2025-10-20T15:25:52Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "seriousm4x/UpSnap",
|
|
||||||
"version": "5.2.3",
|
|
||||||
"date": "2025-10-19T20:50:15Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Part-DB/Part-DB-server",
|
"name": "Part-DB/Part-DB-server",
|
||||||
"version": "v2.2.1",
|
"version": "v2.2.1",
|
||||||
@@ -929,21 +959,6 @@
|
|||||||
"version": "v4.5.0",
|
"version": "v4.5.0",
|
||||||
"date": "2025-10-18T22:00:50Z"
|
"date": "2025-10-18T22:00:50Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "project-zot/zot",
|
|
||||||
"version": "v2.1.10",
|
|
||||||
"date": "2025-10-18T18:46:36Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "TasmoAdmin/TasmoAdmin",
|
|
||||||
"version": "v4.3.2",
|
|
||||||
"date": "2025-10-18T12:11:00Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "readeck/readeck",
|
|
||||||
"version": "0.20.4",
|
|
||||||
"date": "2025-10-18T10:00:42Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "diced/zipline",
|
"name": "diced/zipline",
|
||||||
"version": "v4.3.2",
|
"version": "v4.3.2",
|
||||||
@@ -1079,16 +1094,6 @@
|
|||||||
"version": "2025.09.24",
|
"version": "2025.09.24",
|
||||||
"date": "2025-09-24T13:51:23Z"
|
"date": "2025-09-24T13:51:23Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "itsmng/itsm-ng",
|
|
||||||
"version": "v2.1.0",
|
|
||||||
"date": "2025-09-22T09:23:37Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Athou/commafeed",
|
|
||||||
"version": "5.11.1",
|
|
||||||
"date": "2025-09-22T02:21:27Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "gotify/server",
|
"name": "gotify/server",
|
||||||
"version": "v2.7.3",
|
"version": "v2.7.3",
|
||||||
@@ -1104,11 +1109,6 @@
|
|||||||
"version": "v0.17.0",
|
"version": "v0.17.0",
|
||||||
"date": "2025-09-19T22:23:28Z"
|
"date": "2025-09-19T22:23:28Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "saltstack/salt",
|
|
||||||
"version": "v3007.8",
|
|
||||||
"date": "2025-09-18T18:19:04Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "docmost/docmost",
|
"name": "docmost/docmost",
|
||||||
"version": "v0.23.2",
|
"version": "v0.23.2",
|
||||||
|
|||||||
@@ -71,7 +71,11 @@ export TURBO_CACHE=1
|
|||||||
export NEXT_TELEMETRY_DISABLED=1
|
export NEXT_TELEMETRY_DISABLED=1
|
||||||
export CYPRESS_INSTALL_BINARY=0
|
export CYPRESS_INSTALL_BINARY=0
|
||||||
export NODE_OPTIONS="--max-old-space-size=4096"
|
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||||
|
$STD turbo prune --scope=@documenso/remix --docker
|
||||||
|
cd out
|
||||||
|
cp -r json/* .
|
||||||
$STD npm ci
|
$STD npm ci
|
||||||
|
cp -r full/* .
|
||||||
$STD turbo run build --filter=@documenso/remix
|
$STD turbo run build --filter=@documenso/remix
|
||||||
$STD npm run prisma:migrate-deploy
|
$STD npm run prisma:migrate-deploy
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
|||||||
@@ -84,6 +84,13 @@ if [[ "$CTTYPE" == "0" && -d /dev/dri ]]; then
|
|||||||
fi
|
fi
|
||||||
msg_ok "Dependencies Installed"
|
msg_ok "Dependencies Installed"
|
||||||
|
|
||||||
|
msg_info "Installing Mise"
|
||||||
|
curl -fSs https://mise.jdx.dev/gpg-key.pub | tee /etc/apt/keyrings/mise-archive-keyring.pub 1>/dev/null
|
||||||
|
echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.pub arch=amd64] https://mise.jdx.dev/deb stable main" | tee /etc/apt/sources.list.d/mise.list
|
||||||
|
$STD apt update
|
||||||
|
$STD apt install -y mise
|
||||||
|
msg_ok "Installed Mise"
|
||||||
|
|
||||||
read -r -p "${TAB3}Install OpenVINO dependencies for Intel HW-accelerated machine-learning? y/N " prompt
|
read -r -p "${TAB3}Install OpenVINO dependencies for Intel HW-accelerated machine-learning? y/N " prompt
|
||||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Installing OpenVINO dependencies"
|
msg_info "Installing OpenVINO dependencies"
|
||||||
@@ -277,12 +284,13 @@ INSTALL_DIR="/opt/${APPLICATION}"
|
|||||||
UPLOAD_DIR="${INSTALL_DIR}/upload"
|
UPLOAD_DIR="${INSTALL_DIR}/upload"
|
||||||
SRC_DIR="${INSTALL_DIR}/source"
|
SRC_DIR="${INSTALL_DIR}/source"
|
||||||
APP_DIR="${INSTALL_DIR}/app"
|
APP_DIR="${INSTALL_DIR}/app"
|
||||||
|
PLUGIN_DIR="${APP_DIR}/corePlugin"
|
||||||
ML_DIR="${APP_DIR}/machine-learning"
|
ML_DIR="${APP_DIR}/machine-learning"
|
||||||
GEO_DIR="${INSTALL_DIR}/geodata"
|
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" "v2.2.3" "$SRC_DIR"
|
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v2.3.1" "$SRC_DIR"
|
||||||
|
|
||||||
msg_info "Installing ${APPLICATION} (patience)"
|
msg_info "Installing ${APPLICATION} (patience)"
|
||||||
|
|
||||||
@@ -314,7 +322,18 @@ cp LICENSE "$APP_DIR"
|
|||||||
$STD pnpm --filter @immich/sdk --filter @immich/cli --frozen-lockfile install
|
$STD pnpm --filter @immich/sdk --filter @immich/cli --frozen-lockfile install
|
||||||
$STD pnpm --filter @immich/sdk --filter @immich/cli build
|
$STD pnpm --filter @immich/sdk --filter @immich/cli build
|
||||||
$STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
|
$STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
|
||||||
msg_ok "Installed Immich Server and Web Components"
|
|
||||||
|
# plugins
|
||||||
|
cd "$SRC_DIR"
|
||||||
|
$STD mise trust --ignore ./mise.toml
|
||||||
|
$STD mise trust ./plugins/mise.toml
|
||||||
|
cd plugins
|
||||||
|
$STD mise install
|
||||||
|
$STD mise run build
|
||||||
|
mkdir -p "$PLUGIN_DIR"
|
||||||
|
cp -r ./dist "$PLUGIN_DIR"/dist
|
||||||
|
cp ./manifest.json "$PLUGIN_DIR"
|
||||||
|
msg_ok "Installed Immich Server, Web and Plugin Components"
|
||||||
|
|
||||||
cd "$SRC_DIR"/machine-learning
|
cd "$SRC_DIR"/machine-learning
|
||||||
$STD useradd -U -s /usr/sbin/nologin -r -M -d "$INSTALL_DIR" immich
|
$STD useradd -U -s /usr/sbin/nologin -r -M -d "$INSTALL_DIR" immich
|
||||||
@@ -378,6 +397,10 @@ DB_VECTOR_EXTENSION=vectorchord
|
|||||||
REDIS_HOSTNAME=127.0.0.1
|
REDIS_HOSTNAME=127.0.0.1
|
||||||
IMMICH_MACHINE_LEARNING_URL=http://127.0.0.1:3003
|
IMMICH_MACHINE_LEARNING_URL=http://127.0.0.1:3003
|
||||||
MACHINE_LEARNING_CACHE_FOLDER=${INSTALL_DIR}/cache
|
MACHINE_LEARNING_CACHE_FOLDER=${INSTALL_DIR}/cache
|
||||||
|
## - For OpenVINO only - uncomment below to increase
|
||||||
|
## - inference speed while reducing accuracy
|
||||||
|
## - Default is FP32
|
||||||
|
# MACHINE_LEARNING_OPENVINO_PRECISION=FP16
|
||||||
|
|
||||||
IMMICH_MEDIA_LOCATION=${UPLOAD_DIR}
|
IMMICH_MEDIA_LOCATION=${UPLOAD_DIR}
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ export DATA_DIR=/opt/karakeep_data
|
|||||||
karakeep_SECRET=$(openssl rand -base64 36 | cut -c1-24)
|
karakeep_SECRET=$(openssl rand -base64 36 | cut -c1-24)
|
||||||
mkdir -p /etc/karakeep
|
mkdir -p /etc/karakeep
|
||||||
cat <<EOF >/etc/karakeep/karakeep.env
|
cat <<EOF >/etc/karakeep/karakeep.env
|
||||||
SERVER_VERSION="$(cat ~/.karakeep)"
|
SERVER_VERSION="$(sed 's/^v//' ~/.karakeep)"
|
||||||
NEXTAUTH_SECRET="$karakeep_SECRET"
|
NEXTAUTH_SECRET="$karakeep_SECRET"
|
||||||
NEXTAUTH_URL="http://localhost:3000"
|
NEXTAUTH_URL="http://localhost:3000"
|
||||||
DATA_DIR=${DATA_DIR}
|
DATA_DIR=${DATA_DIR}
|
||||||
|
|||||||
@@ -13,19 +13,16 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Detecting latest Kasm Workspaces release"
|
msg_info "Installing Docker"
|
||||||
KASM_URL=$(
|
$STD sh <(curl -fsSL https://get.docker.com/)
|
||||||
curl -fsSL "https://www.kasm.com/downloads" \
|
msg_ok "Installed Docker"
|
||||||
| tr '\n' ' ' \
|
|
||||||
| grep -oE 'https://kasm-static-content[^"]*kasm_release_[0-9]+\.[0-9]+\.[0-9]+\.[a-z0-9]+\.tar\.gz' \
|
|
||||||
| head -n 1
|
|
||||||
)
|
|
||||||
|
|
||||||
|
msg_info "Detecting latest Kasm Workspaces release"
|
||||||
|
KASM_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_[0-9]+\.[0-9]+\.[0-9]+\.[a-z0-9]+\.tar\.gz' | head -n 1)
|
||||||
if [[ -z "$KASM_URL" ]]; then
|
if [[ -z "$KASM_URL" ]]; then
|
||||||
msg_error "Unable to detect latest Kasm release URL."
|
msg_error "Unable to detect latest Kasm release URL."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
KASM_VERSION=$(echo "$KASM_URL" | sed -E 's/.*kasm_release_([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
|
KASM_VERSION=$(echo "$KASM_URL" | sed -E 's/.*kasm_release_([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
|
||||||
msg_ok "Detected Kasm Workspaces version $KASM_VERSION"
|
msg_ok "Detected Kasm Workspaces version $KASM_VERSION"
|
||||||
|
|
||||||
|
|||||||
@@ -17,24 +17,15 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt install -y jsvc
|
$STD apt install -y jsvc
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Checking CPU Features"
|
JAVA_VERSION="21" setup_java
|
||||||
|
|
||||||
if lscpu | grep -q 'avx'; then
|
if lscpu | grep -q 'avx'; then
|
||||||
MONGODB_VERSION="8.0"
|
|
||||||
msg_ok "AVX detected: Using MongoDB 8.0"
|
|
||||||
MONGO_VERSION="8.0" setup_mongodb
|
MONGO_VERSION="8.0" setup_mongodb
|
||||||
else
|
else
|
||||||
MONGO_VERSION="4.4" setup_mongodb
|
msg_error "No AVX detected (CPU-Flag)! We have discontinued support for this. You are welcome to try it manually with a Debian LXC, but due to the many issues with Omada, we currently only support AVX CPUs."
|
||||||
|
exit 10
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Installing Azul Zulu Java"
|
|
||||||
curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xB1998361219BD9C9" -o "/etc/apt/trusted.gpg.d/zulu-repo.asc"
|
|
||||||
curl -fsSL "https://cdn.azul.com/zulu/bin/zulu-repo_1.0.0-3_all.deb" -o zulu-repo.deb
|
|
||||||
$STD dpkg -i zulu-repo.deb
|
|
||||||
$STD apt update
|
|
||||||
$STD apt -y install zulu21-jre-headless
|
|
||||||
msg_ok "Installed Azul Zulu Java"
|
|
||||||
|
|
||||||
|
|
||||||
if ! dpkg -l | grep -q 'libssl1.1'; then
|
if ! dpkg -l | grep -q 'libssl1.1'; then
|
||||||
msg_info "Installing libssl (if needed)"
|
msg_info "Installing libssl (if needed)"
|
||||||
curl -fsSL "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u4_amd64.deb" -o "/tmp/libssl.deb"
|
curl -fsSL "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u4_amd64.deb" -o "/tmp/libssl.deb"
|
||||||
@@ -50,14 +41,9 @@ OMADA_URL=$(curl -fsSL "https://support.omadanetworks.com/en/download/software/o
|
|||||||
OMADA_PKG=$(basename "$OMADA_URL")
|
OMADA_PKG=$(basename "$OMADA_URL")
|
||||||
curl -fsSL "$OMADA_URL" -o "$OMADA_PKG"
|
curl -fsSL "$OMADA_URL" -o "$OMADA_PKG"
|
||||||
$STD dpkg -i "$OMADA_PKG"
|
$STD dpkg -i "$OMADA_PKG"
|
||||||
|
rm -rf "$OMADA_PKG"
|
||||||
msg_ok "Installed Omada Controller"
|
msg_ok "Installed Omada Controller"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
cleanup_lxc
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf "$OMADA_PKG" zulu-repo.deb
|
|
||||||
$STD apt -y autoremove
|
|
||||||
$STD apt -y autoclean
|
|
||||||
$STD apt -y clean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
|
|||||||
@@ -13,14 +13,17 @@ load_functions
|
|||||||
verb_ip6() {
|
verb_ip6() {
|
||||||
set_std_mode # Set STD mode based on VERBOSE
|
set_std_mode # Set STD mode based on VERBOSE
|
||||||
|
|
||||||
if [ "$IPV6_METHOD" == "none" ] || [ "$DISABLEIPV6" == "yes" ]; then
|
if [ "$IPV6_METHOD" == "disable" ]; then
|
||||||
msg_info "Disabling IPv6"
|
msg_info "Disabling IPv6 (this may affect some services)"
|
||||||
$STD sysctl -w net.ipv6.conf.all.disable_ipv6=1
|
$STD sysctl -w net.ipv6.conf.all.disable_ipv6=1
|
||||||
$STD sysctl -w net.ipv6.conf.default.disable_ipv6=1
|
$STD sysctl -w net.ipv6.conf.default.disable_ipv6=1
|
||||||
$STD sysctl -w net.ipv6.conf.lo.disable_ipv6=1
|
$STD sysctl -w net.ipv6.conf.lo.disable_ipv6=1
|
||||||
echo "net.ipv6.conf.all.disable_ipv6 = 1" >>/etc/sysctl.conf
|
mkdir -p /etc/sysctl.d
|
||||||
echo "net.ipv6.conf.default.disable_ipv6 = 1" >>/etc/sysctl.conf
|
$STD tee /etc/sysctl.d/99-disable-ipv6.conf >/dev/null <<EOF
|
||||||
echo "net.ipv6.conf.lo.disable_ipv6 = 1" >>/etc/sysctl.conf
|
net.ipv6.conf.all.disable_ipv6 = 1
|
||||||
|
net.ipv6.conf.default.disable_ipv6 = 1
|
||||||
|
net.ipv6.conf.lo.disable_ipv6 = 1
|
||||||
|
EOF
|
||||||
$STD rc-update add sysctl default
|
$STD rc-update add sysctl default
|
||||||
msg_ok "Disabled IPv6"
|
msg_ok "Disabled IPv6"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -627,11 +627,12 @@ advanced_settings() {
|
|||||||
# IPv6 Address Management selection
|
# IPv6 Address Management selection
|
||||||
while true; do
|
while true; do
|
||||||
IPV6_METHOD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --menu \
|
IPV6_METHOD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --menu \
|
||||||
"Select IPv6 Address Management Type:" 15 58 4 \
|
"Select IPv6 Address Management Type:" 16 70 5 \
|
||||||
"auto" "SLAAC/AUTO (recommended, default)" \
|
"auto" "SLAAC/AUTO (recommended) - Dynamic IPv6 from network" \
|
||||||
"dhcp" "DHCPv6" \
|
"dhcp" "DHCPv6 - DHCP-assigned IPv6 address" \
|
||||||
"static" "Static (manual entry)" \
|
"static" "Static - Manual IPv6 address configuration" \
|
||||||
"none" "Disabled" \
|
"none" "None - No IPv6 assignment (most containers)" \
|
||||||
|
"disable" "Fully Disabled - (breaks some services)" \
|
||||||
--default-item "auto" 3>&1 1>&2 2>&3)
|
--default-item "auto" 3>&1 1>&2 2>&3)
|
||||||
[ $? -ne 0 ] && exit_script
|
[ $? -ne 0 ] && exit_script
|
||||||
|
|
||||||
@@ -680,7 +681,15 @@ advanced_settings() {
|
|||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
none)
|
none)
|
||||||
echo -e "${NETWORK}${BOLD}${DGN}IPv6: ${BGN}Disabled${CL}"
|
echo -e "${NETWORK}${BOLD}${DGN}IPv6: ${BGN}None${CL}"
|
||||||
|
IPV6_ADDR="none"
|
||||||
|
IPV6_GATE=""
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
disable)
|
||||||
|
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox \
|
||||||
|
"⚠️ WARNING - FULLY DISABLE IPv6:\n\nThis will completely disable IPv6 inside the container via sysctl.\n\nSide Effects:\n • Services requiring IPv6 will fail\n • Localhost IPv6 (::1) will not work\n • Some applications may not start\n\nOnly use if you have a specific reason to completely disable IPv6.\n\nFor most use cases, select 'None' instead." 14 70
|
||||||
|
echo -e "${NETWORK}${BOLD}${DGN}IPv6: ${BGN}Fully Disabled (IPv6 disabled via sysctl)${CL}"
|
||||||
IPV6_ADDR="none"
|
IPV6_ADDR="none"
|
||||||
IPV6_GATE=""
|
IPV6_GATE=""
|
||||||
break
|
break
|
||||||
|
|||||||
@@ -393,7 +393,7 @@ cleanup_lxc() {
|
|||||||
# Python pip
|
# Python pip
|
||||||
if command -v pip &>/dev/null; then $STD pip cache purge || true; fi
|
if command -v pip &>/dev/null; then $STD pip cache purge || true; fi
|
||||||
# Python uv
|
# Python uv
|
||||||
if command -v uv &>/dev/null; then $STD uv cache clear || true; fi
|
if command -v uv &>/dev/null; then $STD uv cache clean || true; fi
|
||||||
# Node.js npm
|
# Node.js npm
|
||||||
if command -v npm &>/dev/null; then $STD npm cache clean --force || true; fi
|
if command -v npm &>/dev/null; then $STD npm cache clean --force || true; fi
|
||||||
# Node.js yarn
|
# Node.js yarn
|
||||||
|
|||||||
@@ -15,12 +15,16 @@ load_functions
|
|||||||
verb_ip6() {
|
verb_ip6() {
|
||||||
set_std_mode # Set STD mode based on VERBOSE
|
set_std_mode # Set STD mode based on VERBOSE
|
||||||
|
|
||||||
if [ "$IPV6_METHOD" == "none" ] || [ "$DISABLEIPV6" == "yes" ]; then
|
if [ "$IPV6_METHOD" == "disable" ]; then
|
||||||
msg_info "Disabling IPv6"
|
msg_info "Disabling IPv6 (this may affect some services)"
|
||||||
$STD echo "net.ipv6.conf.all.disable_ipv6 = 1" >>/etc/sysctl.conf
|
mkdir -p /etc/sysctl.d
|
||||||
$STD echo "net.ipv6.conf.default.disable_ipv6 = 1" >>/etc/sysctl.conf
|
$STD tee /etc/sysctl.d/99-disable-ipv6.conf >/dev/null <<EOF
|
||||||
$STD echo "net.ipv6.conf.lo.disable_ipv6 = 1" >>/etc/sysctl.conf
|
# Disable IPv6 (set by community-scripts)
|
||||||
$STD sysctl -p
|
net.ipv6.conf.all.disable_ipv6 = 1
|
||||||
|
net.ipv6.conf.default.disable_ipv6 = 1
|
||||||
|
net.ipv6.conf.lo.disable_ipv6 = 1
|
||||||
|
EOF
|
||||||
|
$STD sysctl -p /etc/sysctl.d/99-disable-ipv6.conf
|
||||||
msg_ok "Disabled IPv6"
|
msg_ok "Disabled IPv6"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
166
misc/tools.func
166
misc/tools.func
@@ -3577,157 +3577,109 @@ function setup_nodejs() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# Installs PHP with selected modules and configures Apache/FPM support.
|
|
||||||
#
|
|
||||||
# Description:
|
|
||||||
# - Adds Sury PHP repo if needed
|
|
||||||
# - Installs default and user-defined modules
|
|
||||||
# - Patches php.ini for CLI, Apache, and FPM as needed
|
|
||||||
#
|
|
||||||
# Variables:
|
|
||||||
# PHP_VERSION - PHP version to install (default: 8.4)
|
|
||||||
# PHP_MODULE - Additional comma-separated modules
|
|
||||||
# PHP_APACHE - Set YES to enable PHP with Apache
|
|
||||||
# PHP_FPM - Set YES to enable PHP-FPM
|
|
||||||
# PHP_MEMORY_LIMIT - (default: 512M)
|
|
||||||
# PHP_UPLOAD_MAX_FILESIZE - (default: 128M)
|
|
||||||
# PHP_POST_MAX_SIZE - (default: 128M)
|
|
||||||
# PHP_MAX_EXECUTION_TIME - (default: 300)
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
function setup_php() {
|
function setup_php() {
|
||||||
local PHP_VERSION="${PHP_VERSION:-8.4}"
|
local PHP_VERSION="${PHP_VERSION:-8.4}"
|
||||||
local PHP_MODULE="${PHP_MODULE:-}"
|
local PHP_MODULE="${PHP_MODULE:-}"
|
||||||
local PHP_APACHE="${PHP_APACHE:-NO}"
|
local PHP_APACHE="${PHP_APACHE:-NO}"
|
||||||
local PHP_FPM="${PHP_FPM:-NO}"
|
local PHP_FPM="${PHP_FPM:-NO}"
|
||||||
local DISTRO_ID DISTRO_CODENAME
|
|
||||||
DISTRO_ID=$(awk -F= '/^ID=/{print $2}' /etc/os-release | tr -d '"')
|
|
||||||
DISTRO_CODENAME=$(awk -F= '/^VERSION_CODENAME=/{print $2}' /etc/os-release)
|
|
||||||
|
|
||||||
local DEFAULT_MODULES="bcmath,cli,curl,gd,intl,mbstring,opcache,readline,xml,zip"
|
local DEFAULT_MODULES="bcmath,cli,curl,gd,intl,mbstring,opcache,readline,xml,zip"
|
||||||
local COMBINED_MODULES
|
local COMBINED_MODULES
|
||||||
|
|
||||||
local PHP_MEMORY_LIMIT="${PHP_MEMORY_LIMIT:-512M}"
|
local PHP_MEMORY_LIMIT="${PHP_MEMORY_LIMIT:-512M}"
|
||||||
local PHP_UPLOAD_MAX_FILESIZE="${PHP_UPLOAD_MAX_FILESIZE:-128M}"
|
local PHP_UPLOAD_MAX_FILESIZE="${PHP_UPLOAD_MAX_FILESIZE:-128M}"
|
||||||
local PHP_POST_MAX_SIZE="${PHP_POST_MAX_SIZE:-128M}"
|
local PHP_POST_MAX_SIZE="${PHP_POST_MAX_SIZE:-128M}"
|
||||||
local PHP_MAX_EXECUTION_TIME="${PHP_MAX_EXECUTION_TIME:-300}"
|
local PHP_MAX_EXECUTION_TIME="${PHP_MAX_EXECUTION_TIME:-300}"
|
||||||
|
|
||||||
# Merge default + user-defined modules
|
|
||||||
if [[ -n "$PHP_MODULE" ]]; then
|
if [[ -n "$PHP_MODULE" ]]; then
|
||||||
COMBINED_MODULES="${DEFAULT_MODULES},${PHP_MODULE}"
|
COMBINED_MODULES="${DEFAULT_MODULES},${PHP_MODULE}"
|
||||||
else
|
else
|
||||||
COMBINED_MODULES="${DEFAULT_MODULES}"
|
COMBINED_MODULES="${DEFAULT_MODULES}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Deduplicate
|
|
||||||
COMBINED_MODULES=$(echo "$COMBINED_MODULES" | tr ',' '\n' | awk '!seen[$0]++' | paste -sd, -)
|
COMBINED_MODULES=$(echo "$COMBINED_MODULES" | tr ',' '\n' | awk '!seen[$0]++' | paste -sd, -)
|
||||||
|
|
||||||
# Get current PHP-CLI version
|
# Ensure PHP version exists
|
||||||
local CURRENT_PHP=""
|
if ! apt-cache show "php${PHP_VERSION}" >/dev/null 2>&1; then
|
||||||
CURRENT_PHP=$(is_tool_installed "php" 2>/dev/null) || true
|
msg_error "PHP ${PHP_VERSION} is not available in repositories"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Scenario 1: Already at target version - just update packages
|
# Remove all existing PHP versions
|
||||||
if [[ -n "$CURRENT_PHP" && "$CURRENT_PHP" == "$PHP_VERSION" ]]; then
|
msg_info "Removing existing PHP versions"
|
||||||
msg_info "Update PHP $PHP_VERSION"
|
apt purge -y 'php[0-9]*' >/dev/null 2>&1 || true
|
||||||
|
msg_ok "Removed existing PHP"
|
||||||
|
|
||||||
# Ensure Sury repo is available
|
# Ensure Sury repo
|
||||||
if [[ ! -f /etc/apt/sources.list.d/php.sources ]]; then
|
if [[ ! -f /etc/apt/sources.list.d/php.sources ]]; then
|
||||||
manage_tool_repository "php" "$PHP_VERSION" "" "https://packages.sury.org/debsuryorg-archive-keyring.deb" || {
|
|
||||||
msg_error "Failed to setup PHP repository"
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
ensure_apt_working || return 1
|
|
||||||
|
|
||||||
# Perform upgrade with retry logic (non-fatal if fails)
|
|
||||||
upgrade_packages_with_retry "php${PHP_VERSION}" || true
|
|
||||||
|
|
||||||
cache_installed_version "php" "$PHP_VERSION"
|
|
||||||
msg_ok "Update PHP $PHP_VERSION"
|
|
||||||
else
|
|
||||||
# Scenario 2: Different version installed - clean upgrade
|
|
||||||
if [[ -n "$CURRENT_PHP" && "$CURRENT_PHP" != "$PHP_VERSION" ]]; then
|
|
||||||
msg_info "Upgrade PHP from $CURRENT_PHP to $PHP_VERSION"
|
|
||||||
# Stop and disable ALL PHP-FPM versions
|
|
||||||
stop_all_services "php.*-fpm"
|
|
||||||
remove_old_tool_version "php"
|
|
||||||
else
|
|
||||||
msg_info "Setup PHP $PHP_VERSION"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Prepare repository (cleanup + validation)
|
|
||||||
prepare_repository_setup "php" "deb.sury.org-php" || {
|
|
||||||
msg_error "Failed to prepare PHP repository"
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Setup Sury repository
|
|
||||||
manage_tool_repository "php" "$PHP_VERSION" "" "https://packages.sury.org/debsuryorg-archive-keyring.deb" || {
|
manage_tool_repository "php" "$PHP_VERSION" "" "https://packages.sury.org/debsuryorg-archive-keyring.deb" || {
|
||||||
msg_error "Failed to setup PHP repository"
|
msg_error "Failed to setup PHP repository"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
ensure_apt_working || return 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Build module list
|
ensure_apt_working || return 1
|
||||||
local MODULE_LIST="php${PHP_VERSION}"
|
|
||||||
IFS=',' read -ra MODULES <<<"$COMBINED_MODULES"
|
|
||||||
for mod in "${MODULES[@]}"; do
|
|
||||||
if apt-cache show "php${PHP_VERSION}-${mod}" >/dev/null 2>&1; then
|
|
||||||
MODULE_LIST+=" php${PHP_VERSION}-${mod}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if [[ "$PHP_FPM" == "YES" ]]; then
|
|
||||||
MODULE_LIST+=" php${PHP_VERSION}-fpm"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# install apache2 with PHP support if requested
|
# Install base PHP
|
||||||
if [[ "$PHP_APACHE" == "YES" ]]; then
|
msg_info "Installing PHP ${PHP_VERSION}"
|
||||||
if ! dpkg -l 2>/dev/null | grep -q "libapache2-mod-php${PHP_VERSION}"; then
|
install_packages_with_retry "php${PHP_VERSION}" || {
|
||||||
install_packages_with_retry "apache2" "libapache2-mod-php${PHP_VERSION}" || {
|
msg_error "Failed to install PHP"
|
||||||
msg_error "Failed to install Apache with PHP module"
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install PHP packages with retry logic
|
|
||||||
install_packages_with_retry $MODULE_LIST || {
|
|
||||||
msg_error "Failed to install PHP packages"
|
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
cache_installed_version "php" "$PHP_VERSION"
|
|
||||||
|
|
||||||
# Patch all relevant php.ini files
|
# Install modules
|
||||||
|
IFS=',' read -ra MODULES <<<"${COMBINED_MODULES}"
|
||||||
|
for mod in "${MODULES[@]}"; do
|
||||||
|
if apt-cache show "php${PHP_VERSION}-${mod}" >/dev/null 2>&1; then
|
||||||
|
install_packages_with_retry "php${PHP_VERSION}-${mod}"
|
||||||
|
else
|
||||||
|
msg_error "Module not found: php${PHP_VERSION}-${mod}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Apache support
|
||||||
|
if [[ "$PHP_APACHE" == "YES" ]]; then
|
||||||
|
install_packages_with_retry "apache2" "libapache2-mod-php${PHP_VERSION}" || {
|
||||||
|
msg_error "Failed to install Apache PHP module"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# PHP-FPM support
|
||||||
|
if [[ "$PHP_FPM" == "YES" ]]; then
|
||||||
|
install_packages_with_retry "php${PHP_VERSION}-fpm" || {
|
||||||
|
msg_error "Failed to install PHP-FPM"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Activate CLI PHP version
|
||||||
|
if [[ -x "/usr/bin/php${PHP_VERSION}" ]]; then
|
||||||
|
update-alternatives --set php "/usr/bin/php${PHP_VERSION}" >/dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Patch php.ini
|
||||||
local PHP_INI_PATHS=("/etc/php/${PHP_VERSION}/cli/php.ini")
|
local PHP_INI_PATHS=("/etc/php/${PHP_VERSION}/cli/php.ini")
|
||||||
[[ "$PHP_FPM" == "YES" ]] && PHP_INI_PATHS+=("/etc/php/${PHP_VERSION}/fpm/php.ini")
|
[[ "$PHP_FPM" == "YES" ]] && PHP_INI_PATHS+=("/etc/php/${PHP_VERSION}/fpm/php.ini")
|
||||||
[[ "$PHP_APACHE" == "YES" ]] && PHP_INI_PATHS+=("/etc/php/${PHP_VERSION}/apache2/php.ini")
|
[[ "$PHP_APACHE" == "YES" ]] && PHP_INI_PATHS+=("/etc/php/${PHP_VERSION}/apache2/php.ini")
|
||||||
|
|
||||||
for ini in "${PHP_INI_PATHS[@]}"; do
|
for ini in "${PHP_INI_PATHS[@]}"; do
|
||||||
if [[ -f "$ini" ]]; then
|
[[ -f "$ini" ]] || continue
|
||||||
$STD sed -i "s|^memory_limit = .*|memory_limit = ${PHP_MEMORY_LIMIT}|" "$ini"
|
$STD sed -i "s|^memory_limit = .*|memory_limit = ${PHP_MEMORY_LIMIT}|" "$ini"
|
||||||
$STD sed -i "s|^upload_max_filesize = .*|upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}|" "$ini"
|
$STD sed -i "s|^upload_max_filesize = .*|upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}|" "$ini"
|
||||||
$STD sed -i "s|^post_max_size = .*|post_max_size = ${PHP_POST_MAX_SIZE}|" "$ini"
|
$STD sed -i "s|^post_max_size = .*|post_max_size = ${PHP_POST_MAX_SIZE}|" "$ini"
|
||||||
$STD sed -i "s|^max_execution_time = .*|max_execution_time = ${PHP_MAX_EXECUTION_TIME}|" "$ini"
|
$STD sed -i "s|^max_execution_time = .*|max_execution_time = ${PHP_MAX_EXECUTION_TIME}|" "$ini"
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
|
||||||
# Patch Apache configuration if needed
|
# Apache restart
|
||||||
if [[ "$PHP_APACHE" == "YES" ]]; then
|
if [[ "$PHP_APACHE" == "YES" ]]; then
|
||||||
for mod in $(ls /etc/apache2/mods-enabled/ 2>/dev/null | grep -E '^php[0-9]\.[0-9]\.conf$' | sed 's/\.conf//'); do
|
for mod in $(ls /etc/apache2/mods-enabled/ 2>/dev/null | grep -E '^php[0-9]\.[0-9]\.conf$' | sed 's/\.conf//'); do
|
||||||
if [[ "$mod" != "php${PHP_VERSION}" ]]; then
|
[[ "$mod" == "php${PHP_VERSION}" ]] || $STD a2dismod "$mod" || true
|
||||||
$STD a2dismod "$mod" || true
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
$STD a2enmod mpm_prefork
|
|
||||||
$STD a2enmod "php${PHP_VERSION}"
|
$STD a2enmod "php${PHP_VERSION}"
|
||||||
safe_service_restart apache2 || true
|
safe_service_restart apache2 || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Enable and restart PHP-FPM if requested
|
# FPM restart
|
||||||
if [[ "$PHP_FPM" == "YES" ]]; then
|
if [[ "$PHP_FPM" == "YES" ]]; then
|
||||||
if systemctl list-unit-files | grep -q "php${PHP_VERSION}-fpm.service"; then
|
if systemctl list-unit-files | grep -q "php${PHP_VERSION}-fpm.service"; then
|
||||||
$STD systemctl enable php${PHP_VERSION}-fpm
|
$STD systemctl enable php${PHP_VERSION}-fpm
|
||||||
@@ -3735,7 +3687,7 @@ function setup_php() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_ok "Setup PHP $PHP_VERSION"
|
msg_ok "Setup PHP ${PHP_VERSION}"
|
||||||
}
|
}
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
@@ -4439,7 +4391,7 @@ function setup_rust() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Update to latest patch version
|
# Update to latest patch version
|
||||||
$STD rustup update "$RUST_TOOLCHAIN" || true
|
$STD rustup update "$RUST_TOOLCHAIN" </dev/null || true
|
||||||
|
|
||||||
# Ensure PATH is updated for current shell session
|
# Ensure PATH is updated for current shell session
|
||||||
export PATH="$CARGO_BIN:$PATH"
|
export PATH="$CARGO_BIN:$PATH"
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ function msg_ok() {
|
|||||||
function msg_error() { echo -e "${RD}✗ $1${CL}"; }
|
function msg_error() { echo -e "${RD}✗ $1${CL}"; }
|
||||||
|
|
||||||
# This function checks the version of Proxmox Virtual Environment (PVE) and exits if the version is not supported.
|
# This function checks the version of Proxmox Virtual Environment (PVE) and exits if the version is not supported.
|
||||||
# Supported: Proxmox VE 8.0.x – 8.9.x and 9.0 (NOT 9.1+)
|
# Supported: Proxmox VE 8.0.x – 8.9.x and 9.0–9.1.x
|
||||||
pve_check() {
|
pve_check() {
|
||||||
local PVE_VER
|
local PVE_VER
|
||||||
PVE_VER="$(pveversion | awk -F'/' '{print $2}' | awk -F'-' '{print $1}')"
|
PVE_VER="$(pveversion | awk -F'/' '{print $2}' | awk -F'-' '{print $1}')"
|
||||||
@@ -58,12 +58,12 @@ pve_check() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for Proxmox VE 9.x: allow ONLY 9.0
|
# Check for Proxmox VE 9.x: allow 9.0–9.1.x
|
||||||
if [[ "$PVE_VER" =~ ^9\.([0-9]+) ]]; then
|
if [[ "$PVE_VER" =~ ^9\.([0-9]+) ]]; then
|
||||||
local MINOR="${BASH_REMATCH[1]}"
|
local MINOR="${BASH_REMATCH[1]}"
|
||||||
if ((MINOR != 0)); then
|
if ((MINOR < 0 || MINOR > 1)); then
|
||||||
msg_error "This version of Proxmox VE is not yet supported."
|
msg_error "This version of Proxmox VE is not yet supported."
|
||||||
msg_error "Supported: Proxmox VE version 9.0"
|
msg_error "Supported: Proxmox VE version 9.0–9.1.x"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
return 0
|
return 0
|
||||||
@@ -71,7 +71,7 @@ pve_check() {
|
|||||||
|
|
||||||
# All other unsupported versions
|
# All other unsupported versions
|
||||||
msg_error "This version of Proxmox VE is not supported."
|
msg_error "This version of Proxmox VE is not supported."
|
||||||
msg_error "Supported versions: Proxmox VE 8.0 – 8.x or 9.0"
|
msg_error "Supported versions: Proxmox VE 8.0 – 8.9 or 9.0–9.1.x"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -88,14 +88,14 @@ main() {
|
|||||||
fi
|
fi
|
||||||
start_routines_8
|
start_routines_8
|
||||||
elif [[ "$PVE_MAJOR" == "9" ]]; then
|
elif [[ "$PVE_MAJOR" == "9" ]]; then
|
||||||
if ((PVE_MINOR != 0)); then
|
if ((PVE_MINOR < 0 || PVE_MINOR > 1)); then
|
||||||
msg_error "Only Proxmox 9.0 is currently supported"
|
msg_error "Only Proxmox 9.0-9.1.x is currently supported"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
start_routines_9
|
start_routines_9
|
||||||
else
|
else
|
||||||
msg_error "Unsupported Proxmox VE major version: $PVE_MAJOR"
|
msg_error "Unsupported Proxmox VE major version: $PVE_MAJOR"
|
||||||
echo -e "Supported: 8.0–8.9.x and 9.0"
|
echo -e "Supported: 8.0–8.9.x and 9.0–9.1.x"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user