Compare commits

...

3 Commits

Author SHA1 Message Date
MickLesk
089555dd9e Setup Node v22 and build SoulSync WebUI
Install and use Node.js v22 during both install and update flows, and build the WebUI. Adds NODE_VERSION="22" setup_nodejs to install/soulsync-install.sh and ct/soulsync.sh, and runs npm ci and npm run build in /opt/soulsync/webui during install/update so the front-end assets are compiled. Existing Python venv and service restart logic remain unchanged.
2026-05-22 08:09:41 +02:00
community-scripts-pr-app[bot]
2c9f6c5305 Update CHANGELOG.md (#14637)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-22 05:46:42 +00:00
Atahan Kucuk
bc43c262a8 fix: make LXC banner OS detection dynamic via /etc/os-release (#14269)
* fix: derive LXC banner OS from os-release

Read os-release at login time for the generated LXC banner so OS display stays accurate after template changes or in-place upgrades. Prefer PRETTY_NAME with safe fallbacks to NAME, template defaults, and Unknown OS while preserving existing banner formatting.

Co-authored-by: Cursor <cursoragent@cursor.com>

* refactor: simplify dynamic LXC banner OS resolution

Reduce banner OS rendering to a minimal runtime os-release read with PRETTY_NAME/NAME fallbacks and Unknown OS default. Remove redundant OS rewrites from update_motd_ip now that OS display is resolved dynamically at login.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-22 07:46:18 +02:00
6 changed files with 41 additions and 8 deletions

View File

@@ -464,6 +464,14 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</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
### 🚀 Updated Scripts

View File

@@ -29,6 +29,8 @@ function update_script() {
exit
fi
NODE_VERSION="22" setup_nodejs
if check_for_gh_release "soulsync" "Nezreka/SoulSync"; then
msg_info "Stopping Service"
systemctl stop soulsync
@@ -47,6 +49,12 @@ function update_script() {
$STD uv pip install -r requirements.txt
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-data.bak /opt/soulsync/data

View File

@@ -23,6 +23,7 @@ $STD apt install -y \
msg_ok "Installed Dependencies"
UV_PYTHON="3.11" setup_uv
NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "soulsync" "Nezreka/SoulSync" "tarball"
@@ -33,6 +34,12 @@ $STD uv pip install -r requirements.txt --python /opt/soulsync/.venv/bin/python
mkdir -p /opt/soulsync/{config,data,logs}
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"
cat <<EOF >/etc/systemd/system/soulsync.service
[Unit]

View File

@@ -182,11 +182,19 @@ motd_ssh() {
echo "export TERM='xterm-256color'" >>/root/.bashrc
PROFILE_FILE="/etc/profile.d/00_lxc-details.sh"
echo "echo -e \"\"" >"$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 "echo \"\"" >>"$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"
cat <<EOF >>"$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}${INFO}${YW} IP Address: ${GN}\$(ip -4 addr show eth0 | awk '/inet / {print \$2}' | cut -d/ -f1 | head -n 1)${CL}\"" >>"$PROFILE_FILE"

View File

@@ -217,22 +217,16 @@ update_motd_ip() {
# Only update if file exists and is from community-scripts
if [ -f "$PROFILE_FILE" ] && grep -q "community-scripts" "$PROFILE_FILE" 2>/dev/null; then
# 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_ip="$(hostname -I | awk '{print $1}')"
# Escape sed special chars in replacement strings (& \ |)
current_os="${current_os//\\/\\\\}"
current_os="${current_os//&/\\&}"
current_hostname="${current_hostname//\\/\\\\}"
current_hostname="${current_hostname//&/\\&}"
current_ip="${current_ip//\\/\\\\}"
current_ip="${current_ip//&/\\&}"
# 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
sed -i "s|Hostname:.*|Hostname: \${GN}$current_hostname\${CL}\\\"|" "$PROFILE_FILE"
fi

View File

@@ -455,11 +455,19 @@ motd_ssh() {
grep -qxF "export TERM='xterm-256color'" /root/.bashrc || echo "export TERM='xterm-256color'" >>/root/.bashrc
PROFILE_FILE="/etc/profile.d/00_lxc-details.sh"
echo "echo -e \"\"" >"$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 "echo \"\"" >>"$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"
cat <<EOF >>"$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}${INFO}${YW} IP Address: ${GN}\$(hostname -I | awk '{print \$1}')${CL}\"" >>"$PROFILE_FILE"