mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-12-15 19:53:31 +01:00
Compare commits
19 Commits
update_ver
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| d0a09ccd5d | |||
| 494ab1cee3 | |||
| 568bbb7f32 | |||
| 3026a405c8 | |||
| 7d98f80eb7 | |||
| f4c1b68881 | |||
| a949a1cc97 | |||
| 1e6b9a7001 | |||
| 8672aa075a | |||
| aaa20f7845 | |||
| 6da27a7112 | |||
| 8e07685aab | |||
| 5ba55d1f5a | |||
| 126b0c339a | |||
| c2034039e8 | |||
| 9374e5d183 | |||
| 6311584fef | |||
| 5bbf0861e9 | |||
| 7cb02a0cc3 |
19
CHANGELOG.md
19
CHANGELOG.md
@ -18,6 +18,17 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- homarr: add: temp note aboute deb13 requirement [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9992](https://github.com/community-scripts/ProxmoxVE/pull/9992))
|
||||
- paperless-ai: backup data and recreate venv during update [@MickLesk](https://github.com/MickLesk) ([#9987](https://github.com/community-scripts/ProxmoxVE/pull/9987))
|
||||
- fix(booklore): add setup_yq to update script [@MickLesk](https://github.com/MickLesk) ([#9989](https://github.com/community-scripts/ProxmoxVE/pull/9989))
|
||||
- fix(pangolin-install): add network-online dependency [@worried-networking](https://github.com/worried-networking) ([#9984](https://github.com/community-scripts/ProxmoxVE/pull/9984))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- OPNsense: dynamic crawl latest stable FreeBSD [@austindsmith](https://github.com/austindsmith) ([#9831](https://github.com/community-scripts/ProxmoxVE/pull/9831))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Heimdall Dashboard [@tremor021](https://github.com/tremor021) ([#9959](https://github.com/community-scripts/ProxmoxVE/pull/9959))
|
||||
@ -26,12 +37,18 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- tools: prevent awk errors in setup_rust on restricted containers [@MickLesk](https://github.com/MickLesk) ([#9985](https://github.com/community-scripts/ProxmoxVE/pull/9985))
|
||||
- core: App Defaults force mode and prevent unbound variables [@MickLesk](https://github.com/MickLesk) ([#9971](https://github.com/community-scripts/ProxmoxVE/pull/9971))
|
||||
- core: load app defaults before applying base_settings / fix composer cleanup after install/update [@MickLesk](https://github.com/MickLesk) ([#9965](https://github.com/community-scripts/ProxmoxVE/pull/9965))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools: handle flat repositories in setup_deb822_repo [@MickLesk](https://github.com/MickLesk) ([#9994](https://github.com/community-scripts/ProxmoxVE/pull/9994))
|
||||
|
||||
### 📚 Documentation
|
||||
|
||||
- README; add project statistics / formatting [@MickLesk](https://github.com/MickLesk) ([#9967](https://github.com/community-scripts/ProxmoxVE/pull/9967))
|
||||
- (github) remove old files and assets [@MickLesk](https://github.com/MickLesk) ([#9991](https://github.com/community-scripts/ProxmoxVE/pull/9991))
|
||||
- README; add project statistics / formatting [@MickLesk](https://github.com/MickLesk) ([#9967](https://github.com/community-scripts/ProxmoxVE/pull/9967))
|
||||
|
||||
## 2025-12-14
|
||||
|
||||
|
||||
@ -46,6 +46,7 @@ function update_script() {
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
JAVA_VERSION="21" setup_java
|
||||
setup_yq
|
||||
|
||||
msg_info "Building Backend"
|
||||
cd /opt/booklore/booklore-api
|
||||
|
||||
@ -1,138 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster) | Co-Author: remz1337
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/janeczku/calibre-web
|
||||
|
||||
APP="Calibre-Web"
|
||||
var_tags="${var_tags:-eBook}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
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 /etc/systemd/system/cps.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop cps
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
cd /opt/kepubify
|
||||
rm -rf kepubify-linux-64bit
|
||||
curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit
|
||||
chmod +x kepubify-linux-64bit
|
||||
menu_array=("1" "Enables gdrive as storage backend for your ebooks" OFF
|
||||
"2" "Enables sending emails via a googlemail account without enabling insecure apps" OFF
|
||||
"3" "Enables displaying of additional author infos on the authors page" OFF
|
||||
"4" "Enables login via LDAP server" OFF
|
||||
"5" "Enables login via google or github oauth" OFF
|
||||
"6" "Enables extracting of metadata from epub, fb2, pdf files, and also extraction of covers from cbr, cbz, cbt files" OFF
|
||||
"7" "Enables extracting of metadata from cbr, cbz, cbt files" OFF
|
||||
"8" "Enables syncing with your kobo reader" OFF)
|
||||
if [ -f "/opt/calibre-web/options.txt" ]; then
|
||||
cps_options="$(cat /opt/calibre-web/options.txt)"
|
||||
IFS=',' read -ra ADDR <<<"$cps_options"
|
||||
for i in "${ADDR[@]}"; do
|
||||
if [ $i == "gdrive" ]; then
|
||||
line=0
|
||||
elif [ $i == "gmail" ]; then
|
||||
line=1
|
||||
elif [ $i == "goodreads" ]; then
|
||||
line=2
|
||||
elif [ $i == "ldap" ]; then
|
||||
line=3
|
||||
elif [ $i == "oauth" ]; then
|
||||
line=4
|
||||
elif [ $i == "metadata" ]; then
|
||||
line=5
|
||||
elif [ $i == "comics" ]; then
|
||||
line=6
|
||||
elif [ $i == "kobo" ]; then
|
||||
line=7
|
||||
fi
|
||||
array_index=$((3 * line + 2))
|
||||
menu_array[$array_index]=ON
|
||||
done
|
||||
fi
|
||||
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi
|
||||
CHOICES=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "CALIBRE-WEB OPTIONS" --separate-output --checklist "Choose Additional Options" 15 125 8 "${menu_array[@]}" 3>&1 1>&2 2>&3)
|
||||
spinner &
|
||||
SPINNER_PID=$!
|
||||
options=()
|
||||
if [ ! -z "$CHOICES" ]; then
|
||||
for CHOICE in $CHOICES; do
|
||||
case "$CHOICE" in
|
||||
"1")
|
||||
options+=(gdrive)
|
||||
;;
|
||||
"2")
|
||||
options+=(gmail)
|
||||
;;
|
||||
"3")
|
||||
options+=(goodreads)
|
||||
;;
|
||||
"4")
|
||||
options+=(ldap)
|
||||
apt-get install -qqy libldap2-dev libsasl2-dev
|
||||
;;
|
||||
"5")
|
||||
options+=(oauth)
|
||||
;;
|
||||
"6")
|
||||
options+=(metadata)
|
||||
;;
|
||||
"7")
|
||||
options+=(comics)
|
||||
;;
|
||||
"8")
|
||||
options+=(kobo)
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported item $CHOICE!" >&2
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ ${#options[@]} -gt 0 ]; then
|
||||
cps_options=$(
|
||||
IFS=,
|
||||
echo "${options[*]}"
|
||||
)
|
||||
echo $cps_options >/opt/calibre-web/options.txt
|
||||
$STD pip install --upgrade calibreweb[$cps_options]
|
||||
else
|
||||
rm -rf /opt/calibre-web/options.txt
|
||||
$STD pip install --upgrade calibreweb
|
||||
fi
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start cps
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
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}:8083${CL}"
|
||||
@ -1,6 +0,0 @@
|
||||
______ ___ __ _ __ __
|
||||
/ ____/___ _/ (_) /_ ________ | | / /__ / /_
|
||||
/ / / __ `/ / / __ \/ ___/ _ \_____| | /| / / _ \/ __ \
|
||||
/ /___/ /_/ / / / /_/ / / / __/_____/ |/ |/ / __/ /_/ /
|
||||
\____/\__,_/_/_/_.___/_/ \___/ |__/|__/\___/_.___/
|
||||
|
||||
6
ct/headers/koel
Normal file
6
ct/headers/koel
Normal file
@ -0,0 +1,6 @@
|
||||
__ __ __
|
||||
/ //_/___ ___ / /
|
||||
/ ,< / __ \/ _ \/ /
|
||||
/ /| / /_/ / __/ /
|
||||
/_/ |_\____/\___/_/
|
||||
|
||||
40
ct/homarr.sh
40
ct/homarr.sh
@ -35,24 +35,34 @@ function update_script() {
|
||||
msg_ok "Services Stopped"
|
||||
|
||||
if ! { grep -q '^REDIS_IS_EXTERNAL=' /opt/homarr/.env 2>/dev/null || grep -q '^REDIS_IS_EXTERNAL=' /opt/homarr.env 2>/dev/null; }; then
|
||||
msg_info "Fixing old structure"
|
||||
# fix musl issues because homarr compiles on alpine not debian soure: https://github.com/alexander-akhmetov/python-telegram/issues/3
|
||||
$STD apt install -y musl-dev
|
||||
ln -s /usr/lib/x86_64-linux-musl/libc.so /lib/libc.musl-x86_64.so.1
|
||||
cp /opt/homarr/.env /opt/homarr.env
|
||||
echo "REDIS_IS_EXTERNAL='true'" >> /opt/homarr.env
|
||||
sed -i 's|^ExecStart=.*|ExecStart=/opt/homarr/run.sh|' /etc/systemd/system/homarr.service
|
||||
sed -i 's|^EnvironmentFile=.*|EnvironmentFile=-/opt/homarr.env|' /etc/systemd/system/homarr.service
|
||||
chown -R redis:redis /appdata/redis
|
||||
chmod 744 /appdata/redis
|
||||
mkdir -p /etc/systemd/system/redis-server.service.d/
|
||||
cat <<EOF >/etc/systemd/system/redis-server.service.d/override.conf
|
||||
DEBIAN_VERSION=$(cat /etc/debian_version 2>/dev/null | cut -d'.' -f1)
|
||||
if [[ -n "$DEBIAN_VERSION" ]] && [[ "$DEBIAN_VERSION" -lt 13 ]]; then
|
||||
msg_warn "⚠️ COMPATIBILITY WARNING ⚠️"
|
||||
msg_warn "You are running Debian ${DEBIAN_VERSION}. Homarr's requires Debian 13"
|
||||
msg_warn ""
|
||||
msg_warn "Please Upgrade to Debian 13:"
|
||||
msg_warn "See: https://github.com/community-scripts/ProxmoxVE/discussions/7489"
|
||||
msg_warn ""
|
||||
exit
|
||||
fi
|
||||
msg_info "Fixing old structure"
|
||||
# fix musl issues because homarr compiles on alpine not debian soure: https://github.com/alexander-akhmetov/python-telegram/issues/3
|
||||
$STD apt install -y musl-dev
|
||||
ln -s /usr/lib/x86_64-linux-musl/libc.so /lib/libc.musl-x86_64.so.1
|
||||
cp /opt/homarr/.env /opt/homarr.env
|
||||
echo "REDIS_IS_EXTERNAL='true'" >> /opt/homarr.env
|
||||
sed -i 's|^ExecStart=.*|ExecStart=/opt/homarr/run.sh|' /etc/systemd/system/homarr.service
|
||||
sed -i 's|^EnvironmentFile=.*|EnvironmentFile=-/opt/homarr.env|' /etc/systemd/system/homarr.service
|
||||
chown -R redis:redis /appdata/redis
|
||||
chmod 744 /appdata/redis
|
||||
mkdir -p /etc/systemd/system/redis-server.service.d/
|
||||
cat <<EOF >/etc/systemd/system/redis-server.service.d/override.conf
|
||||
[Service]
|
||||
ReadWritePaths=-/appdata/redis -/var/lib/redis -/var/log/redis -/var/run/redis -/etc/redis
|
||||
EOF
|
||||
systemctl daemon-reload
|
||||
rm /opt/run_homarr.sh
|
||||
msg_ok "Fixed old structure"
|
||||
systemctl daemon-reload
|
||||
rm /opt/run_homarr.sh
|
||||
msg_ok "Fixed old structure"
|
||||
fi
|
||||
|
||||
msg_info "Updating Nodejs"
|
||||
|
||||
@ -33,10 +33,23 @@ function update_script() {
|
||||
systemctl stop paperless-ai paperless-rag
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up data"
|
||||
cp -r /opt/paperless-ai/data /opt/paperless-ai-data-backup
|
||||
msg_ok "Backed up data"
|
||||
|
||||
fetch_and_deploy_gh_release "paperless-ai" "clusterzx/paperless-ai"
|
||||
|
||||
msg_info "Restoring data"
|
||||
cp -r /opt/paperless-ai-data-backup/* /opt/paperless-ai/data/
|
||||
rm -rf /opt/paperless-ai-data-backup
|
||||
msg_ok "Restored data"
|
||||
|
||||
msg_info "Updating Paperless-AI"
|
||||
cd /opt/paperless-ai
|
||||
if [[ ! -d /opt/paperless-ai/venv ]]; then
|
||||
msg_info "Recreating Python venv"
|
||||
$STD python3 -m venv /opt/paperless-ai/venv
|
||||
fi
|
||||
source /opt/paperless-ai/venv/bin/activate
|
||||
$STD pip install --upgrade pip
|
||||
$STD pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
@ -230,6 +230,8 @@ systemctl enable -q --now gerbil
|
||||
cat <<'EOF' >/etc/systemd/system/traefik.service
|
||||
[Unit]
|
||||
Description=Traefik is an open-source Edge Router that makes publishing your services a fun and easy experience
|
||||
Wants=network-online.target
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=notify
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 137 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 42 KiB |
@ -1249,7 +1249,10 @@ setup_deb822_repo() {
|
||||
echo "Types: deb"
|
||||
echo "URIs: $repo_url"
|
||||
echo "Suites: $suite"
|
||||
echo "Components: $component"
|
||||
# Flat repositories (suite="./" or absolute path) must not have Components
|
||||
if [[ "$suite" != "./" && -n "$component" ]]; then
|
||||
echo "Components: $component"
|
||||
fi
|
||||
[[ -n "$architectures" ]] && echo "Architectures: $architectures"
|
||||
echo "Signed-By: /etc/apt/keyrings/${name}.gpg"
|
||||
} >/etc/apt/sources.list.d/${name}.sources
|
||||
@ -4424,7 +4427,7 @@ function setup_rust() {
|
||||
# Get currently installed version
|
||||
local CURRENT_VERSION=""
|
||||
if command -v rustc &>/dev/null; then
|
||||
CURRENT_VERSION=$(rustc --version 2>/dev/null | awk '{print $2}')
|
||||
CURRENT_VERSION=$(rustc --version 2>/dev/null | awk '{print $2}' 2>/dev/null) || true
|
||||
fi
|
||||
|
||||
# Scenario 1: Rustup not installed - fresh install
|
||||
@ -4443,7 +4446,8 @@ function setup_rust() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
local RUST_VERSION=$(rustc --version 2>/dev/null | awk '{print $2}')
|
||||
local RUST_VERSION
|
||||
RUST_VERSION=$(rustc --version 2>/dev/null | awk '{print $2}' 2>/dev/null) || true
|
||||
if [[ -z "$RUST_VERSION" ]]; then
|
||||
msg_error "Failed to determine Rust version"
|
||||
return 1
|
||||
@ -4474,7 +4478,8 @@ function setup_rust() {
|
||||
# Ensure PATH is updated for current shell session
|
||||
export PATH="$CARGO_BIN:$PATH"
|
||||
|
||||
local RUST_VERSION=$(rustc --version 2>/dev/null | awk '{print $2}')
|
||||
local RUST_VERSION
|
||||
RUST_VERSION=$(rustc --version 2>/dev/null | awk '{print $2}' 2>/dev/null) || true
|
||||
if [[ -z "$RUST_VERSION" ]]; then
|
||||
msg_error "Failed to determine Rust version after update"
|
||||
return 1
|
||||
|
||||
@ -578,7 +578,25 @@ fi
|
||||
msg_ok "Using ${CL}${BL}$STORAGE${CL} ${GN}for Storage Location."
|
||||
msg_ok "Virtual Machine ID is ${CL}${BL}$VMID${CL}."
|
||||
msg_info "Retrieving the URL for the OPNsense Qcow2 Disk Image"
|
||||
URL="https://download.freebsd.org/releases/VM-IMAGES/14.3-RELEASE/amd64/Latest/FreeBSD-14.3-RELEASE-amd64.qcow2.xz"
|
||||
# Use latest stable FreeBSD amd64 qcow2 VM image (generic, not UFS/ZFS)
|
||||
RELEASE_LIST="$(curl -s https://download.freebsd.org/releases/VM-IMAGES/ \
|
||||
| grep -Eo '[0-9]+\.[0-9]+-RELEASE' \
|
||||
| sort -Vr \
|
||||
| uniq)"
|
||||
URL=""
|
||||
FREEBSD_VER=""
|
||||
for ver in $RELEASE_LIST; do
|
||||
candidate="https://download.freebsd.org/releases/VM-IMAGES/${ver}/amd64/Latest/FreeBSD-${ver}-amd64.qcow2.xz"
|
||||
if curl -fsI "$candidate" >/dev/null 2>&1; then
|
||||
FREEBSD_VER="$ver"
|
||||
URL="$candidate"
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ -z "$URL" ]; then
|
||||
msg_error "Could not find generic FreeBSD amd64 qcow2 image (non-UFS/ZFS)."
|
||||
exit 1
|
||||
fi
|
||||
msg_ok "Download URL: ${CL}${BL}${URL}${CL}"
|
||||
curl -f#SL -o "$(basename "$URL")" "$URL"
|
||||
echo -en "\e[1A\e[0K"
|
||||
|
||||
Reference in New Issue
Block a user