mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-05-23 08:54:58 +02:00
Compare commits
2 Commits
soulsync_w
...
MickLesk-p
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8dcbb969dd | ||
|
|
3df32570bf |
@@ -464,21 +464,12 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## 2026-05-22
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- fix: make LXC banner OS detection dynamic via /etc/os-release [@atahan99](https://github.com/atahan99) ([#14269](https://github.com/community-scripts/ProxmoxVE/pull/14269))
|
|
||||||
|
|
||||||
## 2026-05-21
|
## 2026-05-21
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
- snowshare: use mv instead of cp for uploads backup to prevent disk fill [@TuroYT](https://github.com/TuroYT) ([#14558](https://github.com/community-scripts/ProxmoxVE/pull/14558))
|
|
||||||
- Technitium DNS: download release before stopping the service on update [@w-gitops](https://github.com/w-gitops) ([#14616](https://github.com/community-scripts/ProxmoxVE/pull/14616))
|
- Technitium DNS: download release before stopping the service on update [@w-gitops](https://github.com/w-gitops) ([#14616](https://github.com/community-scripts/ProxmoxVE/pull/14616))
|
||||||
|
|
||||||
- #### ✨ New Features
|
- #### ✨ New Features
|
||||||
|
|||||||
@@ -36,9 +36,9 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "deno" "denoland/deno"; then
|
if check_for_gh_release "deno" "denoland/deno" "v2.7.5" "Deno is pinned to 2.7.5 because the known WouldBlock: Resource temporarily unavailable (os error 11) Issue"; then
|
||||||
ARCH=$(uname -m)
|
ARCH=$(uname -m)
|
||||||
fetch_and_deploy_gh_release "deno" "denoland/deno" "prebuild" "latest" "/usr/local/bin" "deno-${ARCH}-unknown-linux-gnu.zip"
|
fetch_and_deploy_gh_release "deno" "denoland/deno" "v2.7.5" "latest" "/usr/local/bin" "deno-${ARCH}-unknown-linux-gnu.zip"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "profilarr" "Dictionarry-Hub/profilarr"; then
|
if check_for_gh_release "profilarr" "Dictionarry-Hub/profilarr"; then
|
||||||
|
|||||||
@@ -35,20 +35,16 @@ function update_script() {
|
|||||||
systemctl stop snowshare
|
systemctl stop snowshare
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
if ! grep -q '^UPLOAD_DIR=' /opt/snowshare.env 2>/dev/null; then
|
msg_info "Backing up uploads"
|
||||||
msg_info "Migrating uploads to persistent directory"
|
[ -d /opt/snowshare/uploads ] && cp -a /opt/snowshare/uploads /opt/.snowshare_uploads_backup
|
||||||
mkdir -p /opt/snowshare_data
|
msg_ok "Uploads backed up"
|
||||||
if [ -d /opt/snowshare/uploads ] && [ -z "$(ls -A /opt/snowshare_data 2>/dev/null)" ]; then
|
|
||||||
mv /opt/snowshare/uploads/* /opt/snowshare_data/ 2>/dev/null || true
|
|
||||||
mv /opt/snowshare/uploads/.[!.]* /opt/snowshare_data/ 2>/dev/null || true
|
|
||||||
rmdir /opt/snowshare/uploads 2>/dev/null || true
|
|
||||||
fi
|
|
||||||
echo "UPLOAD_DIR=/opt/snowshare_data" >>/opt/snowshare.env
|
|
||||||
msg_ok "Migrated uploads to /opt/snowshare_data"
|
|
||||||
fi
|
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "snowshare" "TuroYT/snowshare" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "snowshare" "TuroYT/snowshare" "tarball"
|
||||||
|
|
||||||
|
msg_info "Restoring uploads"
|
||||||
|
[ -d /opt/.snowshare_uploads_backup ] && rm -rf /opt/snowshare/uploads && cp -a /opt/.snowshare_uploads_backup /opt/snowshare/uploads
|
||||||
|
msg_ok "Uploads restored"
|
||||||
|
|
||||||
msg_info "Updating Snowshare"
|
msg_info "Updating Snowshare"
|
||||||
cd /opt/snowshare
|
cd /opt/snowshare
|
||||||
$STD npm ci
|
$STD npm ci
|
||||||
|
|||||||
@@ -29,8 +29,6 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
NODE_VERSION="22" setup_nodejs
|
|
||||||
|
|
||||||
if check_for_gh_release "soulsync" "Nezreka/SoulSync"; then
|
if check_for_gh_release "soulsync" "Nezreka/SoulSync"; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop soulsync
|
systemctl stop soulsync
|
||||||
@@ -49,12 +47,6 @@ function update_script() {
|
|||||||
$STD uv pip install -r requirements.txt
|
$STD uv pip install -r requirements.txt
|
||||||
msg_ok "Updated Python Dependencies"
|
msg_ok "Updated Python Dependencies"
|
||||||
|
|
||||||
msg_info "Building WebUI"
|
|
||||||
cd /opt/soulsync/webui
|
|
||||||
$STD npm ci
|
|
||||||
$STD npm run build
|
|
||||||
msg_ok "Built WebUI"
|
|
||||||
|
|
||||||
mv /opt/soulsync-config.bak /opt/soulsync/config
|
mv /opt/soulsync-config.bak /opt/soulsync/config
|
||||||
mv /opt/soulsync-data.bak /opt/soulsync/data
|
mv /opt/soulsync-data.bak /opt/soulsync/data
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ $STD apt install -y \
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
ARCH=$(uname -m)
|
ARCH=$(uname -m)
|
||||||
fetch_and_deploy_gh_release "deno" "denoland/deno" "prebuild" "latest" "/usr/local/bin" "deno-${ARCH}-unknown-linux-gnu.zip"
|
fetch_and_deploy_gh_release "deno" "denoland/deno" "prebuild" "v2.7.5" "/usr/local/bin" "deno-${ARCH}-unknown-linux-gnu.zip"
|
||||||
fetch_and_deploy_gh_release "profilarr" "Dictionarry-Hub/profilarr" "tarball"
|
fetch_and_deploy_gh_release "profilarr" "Dictionarry-Hub/profilarr" "tarball"
|
||||||
PROFILARR_VERSION=$(cat ~/.profilarr)
|
PROFILARR_VERSION=$(cat ~/.profilarr)
|
||||||
|
|
||||||
|
|||||||
@@ -21,14 +21,12 @@ fetch_and_deploy_gh_release "snowshare" "TuroYT/snowshare" "tarball"
|
|||||||
msg_info "Installing SnowShare"
|
msg_info "Installing SnowShare"
|
||||||
cd /opt/snowshare
|
cd /opt/snowshare
|
||||||
$STD npm ci
|
$STD npm ci
|
||||||
mkdir -p /opt/snowshare_data
|
|
||||||
cat <<EOF >/opt/snowshare.env
|
cat <<EOF >/opt/snowshare.env
|
||||||
DATABASE_URL="postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME"
|
DATABASE_URL="postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME"
|
||||||
NEXTAUTH_URL="http://localhost:3000"
|
NEXTAUTH_URL="http://localhost:3000"
|
||||||
NEXTAUTH_SECRET="$(openssl rand -base64 32)"
|
NEXTAUTH_SECRET="$(openssl rand -base64 32)"
|
||||||
ALLOW_SIGNUP=true
|
ALLOW_SIGNUP=true
|
||||||
NODE_ENV=production
|
NODE_ENV=production
|
||||||
UPLOAD_DIR=/opt/snowshare_data
|
|
||||||
EOF
|
EOF
|
||||||
set -a
|
set -a
|
||||||
source /opt/snowshare.env
|
source /opt/snowshare.env
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ $STD apt install -y \
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
UV_PYTHON="3.11" setup_uv
|
UV_PYTHON="3.11" setup_uv
|
||||||
NODE_VERSION="22" setup_nodejs
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "soulsync" "Nezreka/SoulSync" "tarball"
|
fetch_and_deploy_gh_release "soulsync" "Nezreka/SoulSync" "tarball"
|
||||||
|
|
||||||
@@ -34,12 +33,6 @@ $STD uv pip install -r requirements.txt --python /opt/soulsync/.venv/bin/python
|
|||||||
mkdir -p /opt/soulsync/{config,data,logs}
|
mkdir -p /opt/soulsync/{config,data,logs}
|
||||||
msg_ok "Set up Application"
|
msg_ok "Set up Application"
|
||||||
|
|
||||||
msg_info "Building WebUI"
|
|
||||||
cd /opt/soulsync/webui
|
|
||||||
$STD npm ci
|
|
||||||
$STD npm run build
|
|
||||||
msg_ok "Built WebUI"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/soulsync.service
|
cat <<EOF >/etc/systemd/system/soulsync.service
|
||||||
[Unit]
|
[Unit]
|
||||||
|
|||||||
@@ -182,19 +182,11 @@ motd_ssh() {
|
|||||||
echo "export TERM='xterm-256color'" >>/root/.bashrc
|
echo "export TERM='xterm-256color'" >>/root/.bashrc
|
||||||
|
|
||||||
PROFILE_FILE="/etc/profile.d/00_lxc-details.sh"
|
PROFILE_FILE="/etc/profile.d/00_lxc-details.sh"
|
||||||
|
|
||||||
echo "echo -e \"\"" >"$PROFILE_FILE"
|
echo "echo -e \"\"" >"$PROFILE_FILE"
|
||||||
echo -e "echo -e \"${BOLD}${APPLICATION} LXC Container${CL}"\" >>"$PROFILE_FILE"
|
echo -e "echo -e \"${BOLD}${APPLICATION} LXC Container${CL}"\" >>"$PROFILE_FILE"
|
||||||
echo -e "echo -e \"${TAB}${GATEWAY}${YW} Provided by: ${GN}community-scripts ORG ${YW}| GitHub: ${GN}https://github.com/community-scripts/ProxmoxVE${CL}\"" >>"$PROFILE_FILE"
|
echo -e "echo -e \"${TAB}${GATEWAY}${YW} Provided by: ${GN}community-scripts ORG ${YW}| GitHub: ${GN}https://github.com/community-scripts/ProxmoxVE${CL}\"" >>"$PROFILE_FILE"
|
||||||
echo "echo \"\"" >>"$PROFILE_FILE"
|
echo "echo \"\"" >>"$PROFILE_FILE"
|
||||||
cat <<EOF >>"$PROFILE_FILE"
|
echo -e "echo -e \"${TAB}${OS}${YW} OS: ${GN}\$(grep ^NAME /etc/os-release | cut -d= -f2 | tr -d '\"') - Version: \$(grep ^VERSION_ID /etc/os-release | cut -d= -f2 | tr -d '\"')${CL}\"" >>"$PROFILE_FILE"
|
||||||
os_display="Unknown OS"
|
|
||||||
if [ -r /etc/os-release ]; then
|
|
||||||
. /etc/os-release
|
|
||||||
os_display="\${PRETTY_NAME:-\${NAME:-Unknown OS}}"
|
|
||||||
fi
|
|
||||||
echo -e "${TAB}${OS}${YW} OS: ${GN}\${os_display}${CL}"
|
|
||||||
EOF
|
|
||||||
echo -e "echo -e \"${TAB}${HOSTNAME}${YW} Hostname: ${GN}\$(hostname)${CL}\"" >>"$PROFILE_FILE"
|
echo -e "echo -e \"${TAB}${HOSTNAME}${YW} Hostname: ${GN}\$(hostname)${CL}\"" >>"$PROFILE_FILE"
|
||||||
echo -e "echo -e \"${TAB}${INFO}${YW} IP Address: ${GN}\$(ip -4 addr show eth0 | awk '/inet / {print \$2}' | cut -d/ -f1 | head -n 1)${CL}\"" >>"$PROFILE_FILE"
|
echo -e "echo -e \"${TAB}${INFO}${YW} IP Address: ${GN}\$(ip -4 addr show eth0 | awk '/inet / {print \$2}' | cut -d/ -f1 | head -n 1)${CL}\"" >>"$PROFILE_FILE"
|
||||||
|
|
||||||
|
|||||||
@@ -217,16 +217,22 @@ update_motd_ip() {
|
|||||||
# Only update if file exists and is from community-scripts
|
# Only update if file exists and is from community-scripts
|
||||||
if [ -f "$PROFILE_FILE" ] && grep -q "community-scripts" "$PROFILE_FILE" 2>/dev/null; then
|
if [ -f "$PROFILE_FILE" ] && grep -q "community-scripts" "$PROFILE_FILE" 2>/dev/null; then
|
||||||
# Get current values
|
# Get current values
|
||||||
|
local current_os="$(grep ^NAME /etc/os-release | cut -d= -f2 | tr -d '"') - Version: $(grep ^VERSION_ID /etc/os-release | cut -d= -f2 | tr -d '"')"
|
||||||
local current_hostname="$(hostname)"
|
local current_hostname="$(hostname)"
|
||||||
local current_ip="$(hostname -I | awk '{print $1}')"
|
local current_ip="$(hostname -I | awk '{print $1}')"
|
||||||
|
|
||||||
# Escape sed special chars in replacement strings (& \ |)
|
# Escape sed special chars in replacement strings (& \ |)
|
||||||
|
current_os="${current_os//\\/\\\\}"
|
||||||
|
current_os="${current_os//&/\\&}"
|
||||||
current_hostname="${current_hostname//\\/\\\\}"
|
current_hostname="${current_hostname//\\/\\\\}"
|
||||||
current_hostname="${current_hostname//&/\\&}"
|
current_hostname="${current_hostname//&/\\&}"
|
||||||
current_ip="${current_ip//\\/\\\\}"
|
current_ip="${current_ip//\\/\\\\}"
|
||||||
current_ip="${current_ip//&/\\&}"
|
current_ip="${current_ip//&/\\&}"
|
||||||
|
|
||||||
# Update only if values actually changed
|
# Update only if values actually changed
|
||||||
|
if ! grep -q "OS:.*$current_os" "$PROFILE_FILE" 2>/dev/null; then
|
||||||
|
sed -i "s|OS:.*|OS: \${GN}$current_os\${CL}\\\"|" "$PROFILE_FILE"
|
||||||
|
fi
|
||||||
if ! grep -q "Hostname:.*$current_hostname" "$PROFILE_FILE" 2>/dev/null; then
|
if ! grep -q "Hostname:.*$current_hostname" "$PROFILE_FILE" 2>/dev/null; then
|
||||||
sed -i "s|Hostname:.*|Hostname: \${GN}$current_hostname\${CL}\\\"|" "$PROFILE_FILE"
|
sed -i "s|Hostname:.*|Hostname: \${GN}$current_hostname\${CL}\\\"|" "$PROFILE_FILE"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -455,19 +455,11 @@ motd_ssh() {
|
|||||||
grep -qxF "export TERM='xterm-256color'" /root/.bashrc || echo "export TERM='xterm-256color'" >>/root/.bashrc
|
grep -qxF "export TERM='xterm-256color'" /root/.bashrc || echo "export TERM='xterm-256color'" >>/root/.bashrc
|
||||||
|
|
||||||
PROFILE_FILE="/etc/profile.d/00_lxc-details.sh"
|
PROFILE_FILE="/etc/profile.d/00_lxc-details.sh"
|
||||||
|
|
||||||
echo "echo -e \"\"" >"$PROFILE_FILE"
|
echo "echo -e \"\"" >"$PROFILE_FILE"
|
||||||
echo -e "echo -e \"${BOLD}${APPLICATION} LXC Container${CL}"\" >>"$PROFILE_FILE"
|
echo -e "echo -e \"${BOLD}${APPLICATION} LXC Container${CL}"\" >>"$PROFILE_FILE"
|
||||||
echo -e "echo -e \"${TAB}${GATEWAY}${YW} Provided by: ${GN}community-scripts ORG ${YW}| GitHub: ${GN}https://github.com/community-scripts/ProxmoxVE${CL}\"" >>"$PROFILE_FILE"
|
echo -e "echo -e \"${TAB}${GATEWAY}${YW} Provided by: ${GN}community-scripts ORG ${YW}| GitHub: ${GN}https://github.com/community-scripts/ProxmoxVE${CL}\"" >>"$PROFILE_FILE"
|
||||||
echo "echo \"\"" >>"$PROFILE_FILE"
|
echo "echo \"\"" >>"$PROFILE_FILE"
|
||||||
cat <<EOF >>"$PROFILE_FILE"
|
echo -e "echo -e \"${TAB}${OS}${YW} OS: ${GN}\$(grep ^NAME /etc/os-release | cut -d= -f2 | tr -d '\"') - Version: \$(grep ^VERSION_ID /etc/os-release | cut -d= -f2 | tr -d '\"')${CL}\"" >>"$PROFILE_FILE"
|
||||||
os_display="Unknown OS"
|
|
||||||
if [ -r /etc/os-release ]; then
|
|
||||||
. /etc/os-release
|
|
||||||
os_display="\${PRETTY_NAME:-\${NAME:-Unknown OS}}"
|
|
||||||
fi
|
|
||||||
echo -e "${TAB}${OS}${YW} OS: ${GN}\${os_display}${CL}"
|
|
||||||
EOF
|
|
||||||
echo -e "echo -e \"${TAB}${HOSTNAME}${YW} Hostname: ${GN}\$(hostname)${CL}\"" >>"$PROFILE_FILE"
|
echo -e "echo -e \"${TAB}${HOSTNAME}${YW} Hostname: ${GN}\$(hostname)${CL}\"" >>"$PROFILE_FILE"
|
||||||
echo -e "echo -e \"${TAB}${INFO}${YW} IP Address: ${GN}\$(hostname -I | awk '{print \$1}')${CL}\"" >>"$PROFILE_FILE"
|
echo -e "echo -e \"${TAB}${INFO}${YW} IP Address: ${GN}\$(hostname -I | awk '{print \$1}')${CL}\"" >>"$PROFILE_FILE"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user