Compare commits

..

19 Commits

Author SHA1 Message Date
5073271d4f Update CHANGELOG.md 2025-12-15 16:57:13 +00:00
494ab1cee3 add: note about deb13 requirement temp (#9992) 2025-12-15 17:56:55 +01:00
568bbb7f32 Update CHANGELOG.md (#10000)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-15 16:47:56 +00:00
3026a405c8 fix(paperless-ai): backup data and recreate venv during update (#9987) 2025-12-15 17:47:32 +01:00
7d98f80eb7 Update CHANGELOG.md (#9999)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-15 16:38:26 +00:00
f4c1b68881 Update CHANGELOG.md (#9998)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-15 16:38:17 +00:00
a949a1cc97 fix(booklore): add setup_yq to update script (#9989) 2025-12-15 17:38:03 +01:00
1e6b9a7001 Update CHANGELOG.md (#9997)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-15 16:37:51 +00:00
8672aa075a remove old files and assets (#9991) 2025-12-15 17:37:26 +01:00
aaa20f7845 Update CHANGELOG.md (#9996)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-15 16:30:16 +00:00
6da27a7112 fix(tools): handle flat repositories in setup_deb822_repo (#9994) 2025-12-15 17:29:48 +01:00
8e07685aab Update CHANGELOG.md (#9995)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-15 16:10:57 +00:00
5ba55d1f5a OPNsense: dynamic crawl latest stable FreeBSD (#9831)
* fixed curl flag typo, updated FreeBSD from 14.2 to 14.3 (14.2 no longer available), ran test install to verify script runs as intended

* implemented latest version query for FreeBSD (ensuring only generic qcow2)

---------

Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-12-15 17:10:29 +01:00
126b0c339a Update CHANGELOG.md (#9990)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-15 14:22:59 +00:00
c2034039e8 fix(tools): prevent awk errors in setup_rust on restricted containers (#9985)
Add error suppression and || true to awk commands that parse rustc version.
Prevents 'Operation not permitted' errors in containers with restricted syscalls.
2025-12-15 15:22:32 +01:00
9374e5d183 Update CHANGELOG.md (#9986)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-15 13:42:48 +00:00
6311584fef fix(pangolin-install): add network-online dependency (#9984)
Co-authored-by: Andrey Yantsen <worried-networking@users.noreply.github.com>
2025-12-15 14:42:24 +01:00
5bbf0861e9 Update .app files (#9978)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-15 13:09:52 +01:00
7cb02a0cc3 Update versions.json (#9981)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-15 13:07:48 +01:00
13 changed files with 93 additions and 165 deletions

View File

@ -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

View File

@ -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

View File

@ -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}"

View File

@ -1,6 +0,0 @@
______ ___ __ _ __ __
/ ____/___ _/ (_) /_ ________ | | / /__ / /_
/ / / __ `/ / / __ \/ ___/ _ \_____| | /| / / _ \/ __ \
/ /___/ /_/ / / / /_/ / / / __/_____/ |/ |/ / __/ /_/ /
\____/\__,_/_/_/_.___/_/ \___/ |__/|__/\___/_.___/

6
ct/headers/koel Normal file
View File

@ -0,0 +1,6 @@
__ __ __
/ //_/___ ___ / /
/ ,< / __ \/ _ \/ /
/ /| / /_/ / __/ /
/_/ |_\____/\___/_/

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"