Compare commits

..

13 Commits

Author SHA1 Message Date
Michel Roegl-Brunner
14cc064e8c fix(the-lounge): install Node.js 22 before deb package
The Lounge v4.5.0 requires nodejs (>= 22.13.0), which is not available from Debian 13 default repos. Install Node.js 22 via NodeSource before deploying the thelounge-deb package in both install and update scripts.
2026-05-22 12:42:13 +02:00
community-scripts-pr-app[bot]
5f0914d32c Update CHANGELOG.md (#14647)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-22 09:43:49 +00:00
push-app-to-main[bot]
bacdd0b99f bitfocus-companion (#14603) 2026-05-22 11:43:22 +02:00
community-scripts-pr-app[bot]
3a18573a6d Update CHANGELOG.md (#14646)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-22 09:06:22 +00:00
CanbiZ (MickLesk)
8b80ab2534 Docmost: Fix duplicate STORAGE_DRIVER (#14645) 2026-05-22 11:05:53 +02:00
community-scripts-pr-app[bot]
fa4fc95a74 Update CHANGELOG.md (#14643)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-22 07:08:43 +00:00
CanbiZ (MickLesk)
2fa9ae03a1 core: suppress MOTD for non-interactive shells (#14638) 2026-05-22 09:08:13 +02:00
community-scripts-pr-app[bot]
83859e2219 Update CHANGELOG.md (#14642)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-22 07:07:49 +00:00
CanbiZ (MickLesk)
82abeac9fb SoulSync: setup Node v22 and build WebUI (#14639) 2026-05-22 09:07:28 +02:00
community-scripts-pr-app[bot]
8aca89b8dc Update CHANGELOG.md (#14641)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-22 07:07:14 +00:00
CanbiZ (MickLesk)
35953b6d51 Refactor: Dispatcharr (#14313) 2026-05-22 09:06:48 +02:00
community-scripts-pr-app[bot]
a80e215262 Update CHANGELOG.md (#14640)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-22 06:52:09 +00:00
CanbiZ (MickLesk)
51468821f9 Profilarr: pin Deno version to v2.7.5 (#14632)
* Profilarr: pin Deno version to v2.7.5

* Update Deno version check and deployment

Pin Deno version to 2.7.5 to address known issue.
2026-05-22 08:51:43 +02:00
13 changed files with 237 additions and 20 deletions

View File

@@ -466,12 +466,32 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
## 2026-05-22
### 🆕 New Scripts
- bitfocus-companion ([#14603](https://github.com/community-scripts/ProxmoxVE/pull/14603))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Docmost: Fix duplicate STORAGE_DRIVER [@MickLesk](https://github.com/MickLesk) ([#14645](https://github.com/community-scripts/ProxmoxVE/pull/14645))
- Profilarr: pin Deno version to v2.7.5 [@MickLesk](https://github.com/MickLesk) ([#14632](https://github.com/community-scripts/ProxmoxVE/pull/14632))
- #### 🔧 Refactor
- SoulSync: setup Node v22 and build WebUI [@MickLesk](https://github.com/MickLesk) ([#14639](https://github.com/community-scripts/ProxmoxVE/pull/14639))
- Refactor: Dispatcharr [@MickLesk](https://github.com/MickLesk) ([#14313](https://github.com/community-scripts/ProxmoxVE/pull/14313))
### 💾 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))
- #### 🔧 Refactor
- core: suppress MOTD for non-interactive shells [@MickLesk](https://github.com/MickLesk) ([#14638](https://github.com/community-scripts/ProxmoxVE/pull/14638))
## 2026-05-21
### 🚀 Updated Scripts

70
ct/bitfocus-companion.sh Normal file
View File

@@ -0,0 +1,70 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: glabutis
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/bitfocus/companion
APP="Bitfocus-Companion"
var_tags="${var_tags:-automation;media}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-8}"
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 /opt/bitfocus-companion/companion_headless.sh ]]; then
msg_error "No ${APP} Installation Found!"
exit 1
fi
RELEASE_JSON=$(curl -fsSL "https://api.bitfocus.io/v1/product/companion/packages?limit=20")
PACKAGE_JSON=$(echo "$RELEASE_JSON" | jq -c '(if type == "array" then . else .packages end) | [.[] | select(.target=="linux-tgz" and (.uri | contains("linux-x64")))] | first')
RELEASE=$(echo "$PACKAGE_JSON" | jq -r '.version // empty')
ASSET_URL=$(echo "$PACKAGE_JSON" | jq -r '.uri // empty')
if [[ -z "$RELEASE" || -z "$ASSET_URL" ]]; then
msg_error "Could not resolve a matching Linux x64 Companion package from the Bitfocus API."
exit 1
fi
if [[ "${RELEASE}" == "$(cat ~/.bitfocus-companion 2>/dev/null)" ]]; then
msg_ok "No update required. ${APP} is already at v${RELEASE}"
exit
fi
msg_info "Stopping ${APP}"
systemctl stop bitfocus-companion
msg_ok "Stopped ${APP}"
msg_info "Updating ${APP} to v${RELEASE}"
CLEAN_INSTALL=1 fetch_and_deploy_from_url "$ASSET_URL" "/opt/bitfocus-companion"
echo "${RELEASE}" >~/.bitfocus-companion
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting ${APP}"
systemctl start bitfocus-companion
msg_ok "Started ${APP}"
msg_ok "Update Successful"
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}:8000${CL}"

View File

@@ -54,7 +54,7 @@ function update_script() {
cp /opt/dispatcharr/.env /tmp/dispatcharr.env.backup
fi
if [[ -f /opt/dispatcharr/start-gunicorn.sh ]]; then
cp /opt/dispatcharr/start-gunicorn.sh /tmp/start-gunicorn.sh.backup
rm -f /opt/dispatcharr/start-gunicorn.sh
fi
if [[ -f /opt/dispatcharr/start-celery.sh ]]; then
cp /opt/dispatcharr/start-celery.sh /tmp/start-celery.sh.backup
@@ -83,9 +83,6 @@ function update_script() {
if [[ -f /tmp/dispatcharr.env.backup ]]; then
mv /tmp/dispatcharr.env.backup /opt/dispatcharr/.env
fi
if [[ -f /tmp/start-gunicorn.sh.backup ]]; then
mv /tmp/start-gunicorn.sh.backup /opt/dispatcharr/start-gunicorn.sh
fi
if [[ -f /tmp/start-celery.sh.backup ]]; then
mv /tmp/start-celery.sh.backup /opt/dispatcharr/start-celery.sh
fi
@@ -105,7 +102,35 @@ function update_script() {
rm -rf .venv
$STD uv venv --clear
$STD uv sync
$STD uv pip install gunicorn gevent celery redis daphne
$STD uv pip install uwsgi gevent celery redis daphne
cat <<'EOF' >/opt/dispatcharr/start-uwsgi.sh
#!/usr/bin/env bash
cd /opt/dispatcharr
set -a
source .env
set +a
exec .venv/bin/uwsgi \
--chdir=/opt/dispatcharr \
--module=dispatcharr.wsgi:application \
--master \
--workers=4 \
--gevent=400 \
--http=0.0.0.0:5656 \
--http-keepalive=1 \
--http-timeout=600 \
--socket-timeout=600 \
--buffer-size=65536 \
--post-buffering=4096 \
--lazy-apps \
--thunder-lock \
--die-on-term \
--vacuum
EOF
chmod +x /opt/dispatcharr/start-uwsgi.sh
if grep -q 'start-gunicorn.sh' /etc/systemd/system/dispatcharr.service; then
sed -i 's|start-gunicorn.sh|start-uwsgi.sh|g' /etc/systemd/system/dispatcharr.service
systemctl daemon-reload
fi
msg_ok "Updated Dispatcharr Backend"
msg_info "Building Frontend"

View File

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

View File

@@ -36,9 +36,9 @@ function update_script() {
exit
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)
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
if check_for_gh_release "profilarr" "Dictionarry-Hub/profilarr"; then

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

@@ -33,6 +33,7 @@ function update_script() {
systemctl stop thelounge
msg_ok "Stopped Service"
NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "thelounge" "thelounge/thelounge-deb" "binary"
msg_info "Starting Service"

View File

@@ -0,0 +1,68 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: glabutis
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/bitfocus/companion
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y libusb-1.0-0
msg_ok "Installed Dependencies"
msg_info "Fetching Latest Bitfocus Companion Release"
RELEASE_JSON=$(curl -fsSL "https://api.bitfocus.io/v1/product/companion/packages?limit=20")
PACKAGE_JSON=$(echo "$RELEASE_JSON" | jq -c '(if type == "array" then . else .packages end) | [.[] | select(.target=="linux-tgz" and (.uri | contains("linux-x64")))] | first')
RELEASE=$(echo "$PACKAGE_JSON" | jq -r '.version // empty')
ASSET_URL=$(echo "$PACKAGE_JSON" | jq -r '.uri // empty')
if [[ -z "$RELEASE" || -z "$ASSET_URL" ]]; then
msg_error "Could not resolve a matching Linux x64 Companion package from the Bitfocus API."
exit 1
fi
msg_ok "Found Companion ${RELEASE}"
fetch_and_deploy_from_url "$ASSET_URL" "/opt/bitfocus-companion"
msg_info "Installing udev Rules"
if [[ -f /opt/bitfocus-companion/50-companion-headless.rules ]]; then
cp /opt/bitfocus-companion/50-companion-headless.rules /etc/udev/rules.d/
udevadm control --reload-rules
udevadm trigger
fi
msg_ok "Installed udev Rules"
mkdir -p /opt/bitfocus-companion-config
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/bitfocus-companion.service
[Unit]
Description=Bitfocus Companion
After=network.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/opt/bitfocus-companion/companion_headless.sh --config-dir /opt/bitfocus-companion-config
WorkingDirectory=/opt/bitfocus-companion
Restart=on-failure
RestartSec=5
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now bitfocus-companion
msg_ok "Created Service"
echo "${RELEASE}" >~/.bitfocus-companion
motd_ssh
customize
cleanup_lxc

View File

@@ -38,7 +38,7 @@ msg_info "Installing Python Dependencies with uv"
cd /opt/dispatcharr
$STD uv venv --clear
$STD uv sync
$STD uv pip install gunicorn gevent celery redis daphne
$STD uv pip install uwsgi gevent celery redis daphne
msg_ok "Installed Python Dependencies"
msg_info "Configuring Dispatcharr"
@@ -118,7 +118,7 @@ server {
proxy_set_header X-Forwarded-Proto \$scheme;
}
# All other requests proxy to Gunicorn
# All other requests proxy to uWSGI
location / {
include proxy_params;
proxy_pass http://127.0.0.1:5656;
@@ -131,20 +131,30 @@ systemctl restart nginx
msg_ok "Configured Nginx"
msg_info "Creating Services"
cat <<EOF >/opt/dispatcharr/start-gunicorn.sh
cat <<EOF >/opt/dispatcharr/start-uwsgi.sh
#!/usr/bin/env bash
cd /opt/dispatcharr
set -a
source .env
set +a
exec uv run gunicorn \\
exec .venv/bin/uwsgi \\
--chdir=/opt/dispatcharr \\
--module=dispatcharr.wsgi:application \\
--master \\
--workers=4 \\
--worker-class=gevent \\
--timeout=300 \\
--bind 0.0.0.0:5656 \\
dispatcharr.wsgi:application
--gevent=400 \\
--http=0.0.0.0:5656 \\
--http-keepalive=1 \\
--http-timeout=600 \\
--socket-timeout=600 \\
--buffer-size=65536 \\
--post-buffering=4096 \\
--lazy-apps \\
--thunder-lock \\
--die-on-term \\
--vacuum
EOF
chmod +x /opt/dispatcharr/start-gunicorn.sh
chmod +x /opt/dispatcharr/start-uwsgi.sh
cat <<EOF >/opt/dispatcharr/start-celery.sh
#!/usr/bin/env bash
@@ -184,7 +194,7 @@ After=network.target postgresql.service redis-server.service
[Service]
Type=simple
WorkingDirectory=/opt/dispatcharr
ExecStart=/opt/dispatcharr/start-gunicorn.sh
ExecStart=/opt/dispatcharr/start-uwsgi.sh
Restart=on-failure
RestartSec=10
User=root

View File

@@ -31,8 +31,8 @@ cd /opt/docmost
# included in GitHub tarballs. The community NoopAuditService exists but
# is only exported by CoreModule child modules such as UserModule cannot
# resolve it. Making CoreModule @Global() exposes the token app-wide.
if [[ ! -f /opt/docmost/apps/server/src/ee/ee.module.ts ]] \
&& ! grep -q '@Global()' /opt/docmost/apps/server/src/core/core.module.ts 2>/dev/null; then
if [[ ! -f /opt/docmost/apps/server/src/ee/ee.module.ts ]] &&
! grep -q '@Global()' /opt/docmost/apps/server/src/core/core.module.ts 2>/dev/null; then
sed -i '/^ Module,$/a\ Global,' /opt/docmost/apps/server/src/core/core.module.ts
sed -i '/^@Module({$/i @Global()' /opt/docmost/apps/server/src/core/core.module.ts
fi
@@ -45,6 +45,7 @@ sed -i -e "s|APP_SECRET=.*|APP_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z
-e "s|DRAWIO_URL=.*|DRAWIO_URL=https://embed.diagrams.net|" \
-e "s|DISABLE_TELEMETRY=.*|DISABLE_TELEMETRY=true|" \
-e "s|APP_URL=.*|APP_URL=http://$LOCAL_IP:3000|" \
-e "s|^STORAGE_DRIVER=azure|#STORAGE_DRIVER=azure|" \
/opt/docmost/.env
export NODE_OPTIONS="--max-old-space-size=2048"
$STD pnpm install

View File

@@ -20,7 +20,7 @@ $STD apt install -y \
msg_ok "Installed Dependencies"
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"
PROFILARR_VERSION=$(cat ~/.profilarr)

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

@@ -13,6 +13,7 @@ setting_up_container
network_check
update_os
NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "thelounge" "thelounge/thelounge-deb" "binary"
systemctl enable -q --now thelounge