Compare commits

..
Author SHA1 Message Date
MickLesk a8ac0ee84f SnapOtter: recreate the AI venv with --clear
The venv lives in the data directory and is recreated on every update; uv now refuses a non-empty path.
2026-10-23 20:11:25 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 500a860faf Update CHANGELOG.md (#18113)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 13:50:36 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] f7dcae32a8 Update CHANGELOG.md (#18112)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 13:50:10 +00:00
CanbiZ (MickLesk) 4f88fba713 InvoiceShelf: run the Laravel scheduler (#18079)
Without the schedule:run cron job, recurring invoices and other scheduled tasks never ran (#18072). Update adds it to existing installs.
2026-10-23 15:50:05 +02:00
CanbiZ (MickLesk) 5a5b0b4a2e podman-homeassistant: require Debian 13 (#18095)
Quadlet needs Podman 4.4; Debian 12 ships 4.3.1, so no unit was
generated and systemctl start failed with 5.
2026-10-23 15:49:35 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] e40e1c3f9e Update CHANGELOG.md (#18111)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 13:48:30 +00:00
CanbiZ (MickLesk) 2d68523f89 proxcenter: skip the type check and lower the build heap (#18090)
Upstream added PROXCENTER_SKIP_TYPECHECK for builds from a released tag;
the type check alone needs about 3 GB. A 4.6 GB heap on 6 GB of RAM got
the build killed.
2026-10-23 15:48:07 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 507ccb85c2 Update CHANGELOG.md (#18110)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 13:48:00 +00:00
CanbiZ (MickLesk) e3bcb63608 hermesagent: retry the installer download, fall back to GitHub (#18091)
The Vercel host answered 4xx/5xx 21 times a week; a plain curl gave up
at once.
2026-10-23 15:47:47 +02:00
CanbiZ (MickLesk) 363de2146c zabbix: use the arm64 repository for 7.0 (#18089)
7.0's debian repository carries no arm64 packages; they live under
debian-arm64. The ct sets var_arm64=yes, so the install failed at the
package step.
2026-10-23 15:47:31 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] cc868ffba3 Update CHANGELOG.md (#18109)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 13:46:40 +00:00
CanbiZ (MickLesk) 1385f9eb71 postgresql: default the version prompt and match Alpine's packages (#18093)
An empty answer, or no TTY, ended the install with 64. The prompt now
defaults to 17 and takes var_postgresql_version; the Alpine list is
16/17/18, which is what 3.24 ships.
2026-10-23 15:46:07 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 8360169273 Update CHANGELOG.md (#18108)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 13:46:03 +00:00
CanbiZ (MickLesk) 5a065790a8 kasm: survive a failed release lookup and answer the installer with flags (#18092)
The lookup ran under pipefail with no timeout: a page without the link
ended the install at `head -1`, a stalled connection hung it for half an
hour, and the fallback version never ran. The installer takes
--accept-eula, --no-swap-check and --no-check-disk; piped answers
shifted with the prompts, and a "y" to the swap question tried swapon
inside the container.
2026-10-23 15:45:32 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 20b0caf260 Update CHANGELOG.md (#18107)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 13:42:28 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 0ab4ff9187 Update CHANGELOG.md (#18106)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 13:42:05 +00:00
CanbiZ (MickLesk) fab965b3c7 apache-guacamole: require Debian 13 (#18094)
freerdp3-dev exists from Trixie on; a Debian 12 override failed at the
dependency install.
2026-10-23 15:42:03 +02:00
CanbiZ (MickLesk) c2a4db2c7f unifi-os-server: require Debian 13 (#18096)
Every failed install this week ran on Debian 12, where the installer
rejects the Podman that ships there. The default is 13; an override now
fails before the 785 MB download.
2026-10-23 15:41:53 +02:00
CanbiZ (MickLesk) 8df4381b7c openwebui: drop the Intel oneAPI Base Toolkit (#18098)
The Ollama release binaries carry no SYCL build, so the 2.8 GB download
was never used. Its handled failure was also what later systemctl
failures were reported as.
2026-10-23 15:41:37 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] f9baff39a7 Update CHANGELOG.md (#18105)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 13:41:16 +00:00
CanbiZ (MickLesk) 449c3d4997 ollama: drop the Intel oneAPI Base Toolkit (#18097)
The Ollama release binaries carry no SYCL build, so the 2.8 GB download
(14.6 GB installed) was never used; 13 installs a week failed on it.
2026-10-23 15:40:41 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] a6367da0c3 Update CHANGELOG.md (#18104)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 13:27:47 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] dcc593947d Update CHANGELOG.md (#18103)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 13:27:34 +00:00
CanbiZ (MickLesk) 1588926a1e Storyteller: build the runtime like upstream's Dockerfile (#18083)
* Storyteller: build the runtime like upstream's Dockerfile

Only the Next.js app was built before. The standalone server now also gets the worker and file-write-worker bundles, the native align prebuilds, the icu-segmentation wasm, @parcel/watcher and kuromoji, plus the env vars that point at them, and whisper.cpp with the tiny.en model is installed through ghost-story's CLI. Packages and the readium version follow upstream (#16628).

Update still used the pre-monorepo paths, and CLEAN_INSTALL wiped /opt/storyteller including the data directory; it now keeps data/, rebuilds the same way and rewrites the unit, so existing installs move over.

* Storyteller: follow the script conventions

python3 ships with the template, update uses ensure_dependencies, no comments.

* Refactor storyteller.sh for improved deployment process
2026-10-23 15:27:13 +02:00
CanbiZ (MickLesk) 39f0920ac7 tdarr: do not let a failed or slow updater block the service start (#18100)
ExecStartPre ran Tdarr_Updater without the - prefix under the default
90 s start timeout, so no route to tdarr.io or a slow download failed
`systemctl enable --now` at the end of the install.
2026-10-23 15:27:08 +02:00
CanbiZ (MickLesk) cedc440446 immich: install mise from its GitHub release, retry jellyfin-ffmpeg, default the ML prompt (#18099)
The mise apt repository keeps one version and caches its index for a
day; with near-daily mise releases the index points at a deleted deb
and the install ends with 100 (18 a week). The binary comes from the
release instead, on new containers and on updates that have none yet.
jellyfin-ffmpeg7 failed on mirror hiccups; it goes through the retrying
installer. The machine-learning prompt ended the install without a TTY.
2026-10-23 15:27:06 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 8692f16e80 Update CHANGELOG.md (#18102)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 11:57:01 +00:00
CanbiZ (MickLesk) 41b51b121d Refactor: pimox-haos-vm (#18077)
Updated copyright information and improved script structure. Added error handling and enhanced variable management.
2026-10-23 13:56:31 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] a4eb27013c Update CHANGELOG.md (#18088)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 10:05:44 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 7785082d60 Update CHANGELOG.md (#18087)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 10:04:02 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 65e08ee708 Update CHANGELOG.md (#18084)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 09:30:48 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 7d20051744 Update CHANGELOG.md (#18082)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 08:31:27 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 8bff513bb7 Update CHANGELOG.md (#18081)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 08:30:59 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] f64f069841 Update CHANGELOG.md (#18080)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 08:29:14 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] f43ba1fc12 Update CHANGELOG.md (#18078)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-23 08:07:36 +00:00
21 changed files with 205 additions and 91 deletions

No files matched your search

+40
View File
@@ -565,6 +565,46 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details>
## 2026-10-23
### 🚀 Updated Scripts
- postgresql: default the version prompt and match Alpine's packages [@MickLesk](https://github.com/MickLesk) ([#18093](https://github.com/community-scripts/ProxmoxVE/pull/18093))
- Storyteller: build the runtime like upstream's Dockerfile [@MickLesk](https://github.com/MickLesk) ([#18083](https://github.com/community-scripts/ProxmoxVE/pull/18083))
- #### 🐞 Bug Fixes
- proxcenter: skip the type check and lower the build heap [@MickLesk](https://github.com/MickLesk) ([#18090](https://github.com/community-scripts/ProxmoxVE/pull/18090))
- hermesagent: retry the installer download, fall back to GitHub [@MickLesk](https://github.com/MickLesk) ([#18091](https://github.com/community-scripts/ProxmoxVE/pull/18091))
- zabbix: use the arm64 repository for 7.0 [@MickLesk](https://github.com/MickLesk) ([#18089](https://github.com/community-scripts/ProxmoxVE/pull/18089))
- kasm: survive a failed release lookup and answer the installer with flags [@MickLesk](https://github.com/MickLesk) ([#18092](https://github.com/community-scripts/ProxmoxVE/pull/18092))
- #### ✨ New Features
- InvoiceShelf: run the Laravel scheduler [@MickLesk](https://github.com/MickLesk) ([#18079](https://github.com/community-scripts/ProxmoxVE/pull/18079))
- #### 🔧 Refactor
- podman-homeassistant: require Debian 13 [@MickLesk](https://github.com/MickLesk) ([#18095](https://github.com/community-scripts/ProxmoxVE/pull/18095))
- apache-guacamole: require Debian 13 [@MickLesk](https://github.com/MickLesk) ([#18094](https://github.com/community-scripts/ProxmoxVE/pull/18094))
- unifi-os-server: require Debian 13 [@MickLesk](https://github.com/MickLesk) ([#18096](https://github.com/community-scripts/ProxmoxVE/pull/18096))
- openwebui: drop the Intel oneAPI Base Toolkit [@MickLesk](https://github.com/MickLesk) ([#18098](https://github.com/community-scripts/ProxmoxVE/pull/18098))
- ollama: drop the Intel oneAPI Base Toolkit [@MickLesk](https://github.com/MickLesk) ([#18097](https://github.com/community-scripts/ProxmoxVE/pull/18097))
- tdarr: do not let a failed or slow updater block the service start [@MickLesk](https://github.com/MickLesk) ([#18100](https://github.com/community-scripts/ProxmoxVE/pull/18100))
- immich: install mise from its GitHub release, retry jellyfin-ffmpeg, default the ML prompt [@MickLesk](https://github.com/MickLesk) ([#18099](https://github.com/community-scripts/ProxmoxVE/pull/18099))
- Refactor: pimox-haos-vm [@MickLesk](https://github.com/MickLesk) ([#18077](https://github.com/community-scripts/ProxmoxVE/pull/18077))
### 💾 Core
- Telemetry: explain and categorize by the command that failed [@MickLesk](https://github.com/MickLesk) ([core#166](https://github.com/community-scripts/core/pull/166))
- error-handler: report a handled silent failure only on its own line [@MickLesk](https://github.com/MickLesk) ([core#165](https://github.com/community-scripts/core/pull/165))
- VM silent: return the failure instead of exiting [@MickLesk](https://github.com/MickLesk) ([core#164](https://github.com/community-scripts/core/pull/164))
- error-handler: keep the start explanation and the final IP lookup from failing the run [@MickLesk](https://github.com/MickLesk) ([core#163](https://github.com/community-scripts/core/pull/163))
- error output: report a failure inside a subshell once [@MickLesk](https://github.com/MickLesk) ([core#162](https://github.com/community-scripts/core/pull/162))
- general: allow Composer as root in every script [@MickLesk](https://github.com/MickLesk) ([core#161](https://github.com/community-scripts/core/pull/161))
- lxc-updater: skip the resource check when the container cannot read its RAM [@MickLesk](https://github.com/MickLesk) ([core#160](https://github.com/community-scripts/core/pull/160))
- vm-core: let vm_timezone_default survive a host without /etc/timezone [@MickLesk](https://github.com/MickLesk) ([core#159](https://github.com/community-scripts/core/pull/159))
## 2026-10-22
### 🚀 Updated Scripts
+4 -6
View File
@@ -65,12 +65,10 @@ EOF
msg_ok "Installed/upgraded Testing repo packages"
fi
if [[ ! -f /etc/apt/sources.list.d/mise.list ]]; then
msg_info "Installing Mise"
curl -fSs https://mise.jdx.dev/gpg-key.pub | tee /etc/apt/keyrings/mise-archive-keyring.pub 1>/dev/null
echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.pub arch=$(arch_resolve)] https://mise.jdx.dev/deb stable main" >/etc/apt/sources.list.d/mise.list
ensure_dependencies mise
msg_ok "Installed Mise"
if ! command -v mise >/dev/null 2>&1; then
MISE_ARCH="x64"
[[ "$(arch_resolve)" == "arm64" ]] && MISE_ARCH="arm64"
fetch_and_deploy_gh_release "mise" "jdx/mise" "singlefile" "latest" "/usr/local/bin" "mise-v*-linux-${MISE_ARCH}"
fi
STAGING_DIR=/opt/staging
+8
View File
@@ -31,6 +31,14 @@ function update_script() {
exit
fi
if [[ ! -f /etc/cron.d/invoiceshelf ]]; then
msg_info "Adding the Laravel scheduler"
cat <<'EOF' >/etc/cron.d/invoiceshelf
* * * * * www-data cd /opt/invoiceshelf && php artisan schedule:run >> /dev/null 2>&1
EOF
msg_ok "Added the Laravel scheduler"
fi
if check_for_gh_release "invoiceshelf" "InvoiceShelf/InvoiceShelf"; then
msg_info "Stopping Services"
systemctl stop caddy
+1 -1
View File
@@ -44,7 +44,7 @@ function update_script() {
$STD npm ci --legacy-peer-deps --ignore-scripts
$STD npm run build:icons
$STD npx prisma generate
NODE_OPTIONS="--max-old-space-size=4608" $STD npm run build
PROXCENTER_SKIP_TYPECHECK=1 NODE_OPTIONS="--max-old-space-size=3072" $STD npm run build
msg_ok "Built ProxCenter"
msg_info "Migrating Database"
+1 -1
View File
@@ -86,7 +86,7 @@ EOF
msg_info "Updating SnapOtter"
$STD uv python install 3.11
$STD uv venv --seed --python 3.11 /opt/snapotter_data/ai/venv
$STD uv venv --clear --seed --python 3.11 /opt/snapotter_data/ai/venv
if [[ "$(arch_resolve)" == "arm64" ]]; then
$STD uv pip install --python /opt/snapotter_data/ai/venv/bin/python \
numpy==1.26.4 Pillow==12.3.0 opencv-python-headless==4.10.0.84 fonttools \
+54 -22
View File
@@ -31,42 +31,75 @@ function update_script() {
exit
fi
NODE_VERSION="24" NODE_MODULE="corepack,yarn" setup_nodejs
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
if check_for_gl_release "storyteller" "storyteller-platform/storyteller" "" "" "web-v2"; then
msg_info "Stopping Service"
systemctl stop storyteller
msg_ok "Stopped Service"
ensure_dependencies cmake argon2 libcurl4t64 libxml2
fetch_and_deploy_gh_release "readium" "readium/cli" "prebuild" "v0.9.1" "/opt/readium" "readium_linux_$(arch_resolve "x86_64" "arm64").tar.gz"
create_backup /opt/storyteller/.env
CLEAN_INSTALL=1 fetch_and_deploy_gl_release "storyteller" "storyteller-platform/storyteller" "tarball" "latest" "/opt/storyteller" "" "web-v2"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gl_release "storyteller" "storyteller-platform/storyteller" "tarball" "latest" "/opt/storyteller" "" "web-v2"
restore_backup
msg_info "Rebuilding Storyteller"
msg_info "Building Storyteller (Patience)"
cd /opt/storyteller
export NODE_OPTIONS="--max-old-space-size=4096"
$STD corepack yarn install --network-timeout 600000
$STD gcc -g -fPIC -rdynamic -shared web/sqlite/uuid.c -o web/sqlite/uuid.c.so
export CI=1
$STD corepack yarn install
export NODE_ENV=production
export NEXT_TELEMETRY_DISABLED=1
export SQLITE_NATIVE_BINDING=/opt/storyteller/node_modules/better-sqlite3/build/Release/better_sqlite3.node
$STD corepack yarn workspaces foreach -Rpt --from @storyteller-platform/web --exclude @storyteller-platform/eslint run build
mkdir -p /opt/storyteller/web/.next/standalone/web/.next/static
cp -rT /opt/storyteller/web/.next/static /opt/storyteller/web/.next/standalone/web/.next/static
if [[ -d /opt/storyteller/web/public ]]; then
mkdir -p /opt/storyteller/web/.next/standalone/web/public
cp -rT /opt/storyteller/web/public /opt/storyteller/web/.next/standalone/web/public
STANDALONE=/opt/storyteller/applications/web/.next/standalone
WEB_DIR="$STANDALONE/applications/web"
mkdir -p "$WEB_DIR"/{public,.next/static,.next/cache,migrations,sqlite,scripts}
cp -rT applications/web/public "$WEB_DIR/public"
cp -rT applications/web/.next/static "$WEB_DIR/.next/static"
cp -rT applications/web/migrations "$WEB_DIR/migrations"
cp applications/web/sqlite/uuid.c.so "$WEB_DIR/sqlite/"
cp docker-scripts/reset-password.sh "$WEB_DIR/scripts/"
cp -r applications/web/work-dist applications/web/file-write-dist "$WEB_DIR/"
mkdir -p "$WEB_DIR/work-dist/@storyteller-platform/align/prebuilds"
cp -r "libraries/align/prebuilds/linux-$(arch_resolve "x64" "arm64")" "$WEB_DIR/work-dist/@storyteller-platform/align/prebuilds/"
cp node_modules/@echogarden/icu-segmentation-wasm/wasm/*.wasm "$WEB_DIR/work-dist/"
cp -rT node_modules/@parcel "$STANDALONE/node_modules/@parcel"
cp -rT node_modules/kuromoji "$STANDALONE/node_modules/kuromoji"
ln -sf /opt/storyteller/.env "$WEB_DIR/.env"
msg_ok "Built Storyteller"
msg_info "Updating Whisper"
WHISPER_VARIANT="linux-$(arch_resolve "x64" "arm64")-cpu"
$STD node /opt/storyteller/libraries/ghost-story/dist/cli/bin.js install binary "$WHISPER_VARIANT"
$STD node /opt/storyteller/libraries/ghost-story/dist/cli/bin.js install model tiny.en
if [[ "$WHISPER_VARIANT" == "linux-x64-cpu" ]]; then
$STD node /opt/storyteller/libraries/ghost-story/dist/cli/bin.js install binary linux-x64-cpu-legacy
fi
mkdir -p /opt/storyteller/web/.next/standalone/web/migrations
cp -rT /opt/storyteller/web/migrations /opt/storyteller/web/.next/standalone/web/migrations
mkdir -p /opt/storyteller/web/.next/standalone/web/sqlite
cp -rT /opt/storyteller/web/sqlite /opt/storyteller/web/.next/standalone/web/sqlite
ln -sf /opt/storyteller/.env /opt/storyteller/web/.next/standalone/web/.env
msg_ok "Rebuilt Storyteller"
msg_ok "Updated Whisper"
cat <<EOF >/etc/systemd/system/storyteller.service
[Unit]
Description=Storyteller
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=${WEB_DIR}
EnvironmentFile=/opt/storyteller/.env
Environment=SQLITE_NATIVE_BINDING=${STANDALONE}/node_modules/better-sqlite3/build/Release/better_sqlite3.node
Environment=ERROR_ALIGN_NATIVE_BINDING=${WEB_DIR}/work-dist/@storyteller-platform/align/
Environment=STORYTELLER_WORKER=worker.mjs
Environment=STORYTELLER_FILE_WRITE_WORKER=fileWriteWorker.mjs
ExecStart=/usr/bin/node --enable-source-maps server.js
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
msg_info "Starting Service"
systemctl start storyteller
@@ -75,7 +108,6 @@ function update_script() {
fi
exit
}
start
build_container
description
+3 -1
View File
@@ -85,8 +85,10 @@ function update_script() {
rm -Rf /etc/apt/sources.list.d/zabbix.list
cd /tmp
ZABBIX_REPO_DIR="debian"
[[ "$ZABBIX_VERSION" == "7.0" && "$(arch_resolve)" == "arm64" ]] && ZABBIX_REPO_DIR="debian-arm64"
if [[ "$ZABBIX_VERSION" == "7.0" ]]; then
ZABBIX_DEB_URL="https://repo.zabbix.com/zabbix/${ZABBIX_VERSION}/debian/pool/main/z/zabbix-release/zabbix-release_latest_${ZABBIX_VERSION}+debian13_all.deb"
ZABBIX_DEB_URL="https://repo.zabbix.com/zabbix/${ZABBIX_VERSION}/${ZABBIX_REPO_DIR}/pool/main/z/zabbix-release/zabbix-release_latest_${ZABBIX_VERSION}+debian13_all.deb"
ZABBIX_DEB_FILE="zabbix-release_latest_${ZABBIX_VERSION}+debian13_all.deb"
else
ZABBIX_DEB_URL="https://repo.zabbix.com/zabbix/${ZABBIX_VERSION}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb"
+5
View File
@@ -12,6 +12,11 @@ setting_up_container
network_check
update_os
if is_debian && [[ "$(get_os_version_major)" -lt 13 ]]; then
msg_error "Apache Guacamole needs Debian 13: freerdp3-dev is not available on Debian 12."
exit 238
fi
msg_info "Installing Dependencies"
$STD apt install -y \
build-essential \
+2 -1
View File
@@ -36,7 +36,8 @@ msg_ok "Configured Service Environment"
confirm_external_installer "https://hermes-agent.nousresearch.com/" "https://hermes-agent.nousresearch.com/install.sh"
msg_info "Installing Hermes Agent"
curl -fsSL https://hermes-agent.nousresearch.com/install.sh -o /tmp/hermes-install.sh
curl_with_retry "https://hermes-agent.nousresearch.com/install.sh" /tmp/hermes-install.sh ||
curl_with_retry "https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh" /tmp/hermes-install.sh
$STD setsid --wait bash -c '
set -a; source /etc/default/hermes; set +a
export npm_config_yes=true
+5 -8
View File
@@ -25,7 +25,7 @@ if lscpu | grep -q 'GenuineIntel'; then
echo " 2) **NEW** Intel OpenVINO CPU or iGPU"
echo ""
read -r -p "${TAB3}Select machine-learning type [1]: " ML_TYPE
read -r -p "${TAB3}Select machine-learning type [1]: " ML_TYPE || true
ML_TYPE="${ML_TYPE:-1}"
if [[ "$ML_TYPE" == "2" ]]; then
touch ~/.openvino
@@ -110,7 +110,7 @@ setup_deb822_repo \
"https://repo.jellyfin.org/jellyfin_team.gpg.key" \
"https://repo.jellyfin.org/debian" \
"$(get_os_info codename)"
$STD apt install -y jellyfin-ffmpeg7
install_packages_with_retry jellyfin-ffmpeg7
ln -sf /usr/lib/jellyfin-ffmpeg/ffmpeg /usr/bin/ffmpeg
ln -sf /usr/lib/jellyfin-ffmpeg/ffprobe /usr/bin/ffprobe
@@ -124,12 +124,9 @@ if [[ "$CTTYPE" == "0" && -d /dev/dri ]]; then
fi
msg_ok "Dependencies Installed"
msg_info "Installing Mise"
curl -fSs https://mise.jdx.dev/gpg-key.pub | tee /etc/apt/keyrings/mise-archive-keyring.pub 1>/dev/null
echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.pub arch=$(arch_resolve)] https://mise.jdx.dev/deb stable main" >/etc/apt/sources.list.d/mise.list
apt_update_safe
$STD apt install -y mise
msg_ok "Installed Mise"
MISE_ARCH="x64"
[[ "$(arch_resolve)" == "arm64" ]] && MISE_ARCH="arm64"
fetch_and_deploy_gh_release "mise" "jdx/mise" "singlefile" "latest" "/usr/local/bin" "mise-v*-linux-${MISE_ARCH}"
msg_info "Configuring Debian Testing Repo"
if [[ -f /etc/apt/sources.list.d/debian.sources ]]; then
+3
View File
@@ -52,6 +52,9 @@ chown -R www-data:www-data /opt/invoiceshelf
chmod -R 775 storage bootstrap/cache
$STD php artisan migrate --force
$STD php artisan storage:link
cat <<'EOF' >/etc/cron.d/invoiceshelf
* * * * * www-data cd /opt/invoiceshelf && php artisan schedule:run >> /dev/null 2>&1
EOF
msg_ok "Set up InvoiceShelf"
msg_info "Configuring Caddy"
+4 -4
View File
@@ -37,10 +37,10 @@ fi
msg_ok "Installed Docker"
msg_info "Detecting latest Kasm Workspaces release"
KASM_URL=$(curl -s https://kasm.com/downloads \
KASM_URL=$(curl -s --max-time 30 https://kasm.com/downloads \
| grep -oP 'https://kasm-static-content\.s3\.amazonaws\.com/kasm_release_\d+\.\d+\.\d+-latest\.tar\.gz' \
| head -1)
KASM_VERSION=$(echo "$KASM_URL" | grep -oP '\d+\.\d+\.\d+(?=-latest)')
| head -1 || true)
KASM_VERSION=$(echo "$KASM_URL" | grep -oP '\d+\.\d+\.\d+(?=-latest)' || true)
# Fallback to predefined version if online lookup failed.
if [[ -z "$KASM_VERSION" ]] || [[ -z "$KASM_URL" ]]; then
@@ -63,7 +63,7 @@ curl_download "/opt/kasm_release_${KASM_VERSION}.tar.gz" "$KASM_URL"
cd /opt
tar -xf "kasm_release_${KASM_VERSION}.tar.gz"
chmod +x /opt/kasm_release/install.sh
printf 'y\ny\ny\n4\n' | bash /opt/kasm_release/install.sh --ignore-dep-failures >~/kasm-install.output 2>&1
bash /opt/kasm_release/install.sh --accept-eula --no-swap-check --no-check-disk --ignore-dep-failures >~/kasm-install.output 2>&1
awk '
/^Kasm UI Login Credentials$/ {capture=1}
capture {print}
-4
View File
@@ -57,10 +57,6 @@ else
}
fi
msg_ok "Installed Intel® Level Zero"
msg_info "Installing Intel® oneAPI Base Toolkit (Patience)"
$STD apt install -y --no-install-recommends intel-basekit-2024.1
msg_ok "Installed Intel® oneAPI Base Toolkit"
fi
msg_info "Installing Ollama (Patience)"
-4
View File
@@ -96,10 +96,6 @@ EOF
}
fi
msg_ok "Installed Intel® Level Zero"
msg_info "Installing Intel® oneAPI Base Toolkit (Patience)"
$STD apt install -y --no-install-recommends intel-basekit-2024.1 2>/dev/null || true
msg_ok "Installed Intel® oneAPI Base Toolkit"
fi
msg_info "Installing Ollama"
+5
View File
@@ -13,6 +13,11 @@ setting_up_container
network_check
update_os
if is_debian && [[ "$(get_os_version_major)" -lt 13 ]]; then
msg_error "Podman Home Assistant needs Debian 13: its Quadlet units require Podman 4.4 or newer."
exit 238
fi
PORTAINER_LATEST_VERSION=$(get_latest_github_release "portainer/portainer")
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_github_release "portainer/agent")
+11 -4
View File
@@ -14,9 +14,11 @@ network_check
update_os
setup_deb_based() {
read -r -p "${TAB3}Enter PostgreSQL version (15/16/17/18): " ver
ver="${var_postgresql_version:-}"
[[ -n "$ver" ]] || read -r -p "${TAB3}Enter PostgreSQL version (15/16/17/18) [17]: " ver || true
ver="${ver:-17}"
[[ $ver =~ ^(15|16|17|18)$ ]] || {
echo "Invalid version"
msg_error "Invalid PostgreSQL version: ${ver} (expected 15, 16, 17 or 18)"
exit 64
}
PG_VERSION=$ver setup_postgresql
@@ -136,8 +138,13 @@ EOF
}
setup_alpine() {
read -r -p "${TAB3}Enter PostgreSQL version (15/16/17): " ver
[[ $ver =~ ^(15|16|17)$ ]] || { echo "Invalid version"; exit 64; }
ver="${var_postgresql_version:-}"
[[ -n "$ver" ]] || read -r -p "${TAB3}Enter PostgreSQL version (16/17/18) [17]: " ver || true
ver="${ver:-17}"
[[ $ver =~ ^(16|17|18)$ ]] || {
msg_error "Invalid PostgreSQL version: ${ver} (expected 16, 17 or 18)"
exit 64
}
msg_info "Installing PostgreSQL ${ver}"
$STD apk add --no-cache postgresql${ver} postgresql${ver}-contrib postgresql${ver}-openrc sudo
+1 -1
View File
@@ -24,7 +24,7 @@ cd /opt/proxcenter/frontend
$STD npm ci --legacy-peer-deps --ignore-scripts
$STD npm run build:icons
$STD npx prisma generate
NODE_OPTIONS="--max-old-space-size=4608" $STD npm run build
PROXCENTER_SKIP_TYPECHECK=1 NODE_OPTIONS="--max-old-space-size=3072" $STD npm run build
msg_ok "Built ProxCenter"
msg_info "Configuring ProxCenter"
+48 -32
View File
@@ -17,24 +17,55 @@ msg_info "Installing Dependencies"
$STD apt install -y \
build-essential \
git \
pkg-config \
libsqlite3-dev \
cmake \
sqlite3 \
python3-setuptools \
ffmpeg
libsqlite3-dev \
argon2 \
ffmpeg \
libcurl4t64 \
libxml2
msg_ok "Installed Dependencies"
NODE_VERSION="24" NODE_MODULE="corepack,yarn" setup_nodejs
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
fetch_and_deploy_gh_release "readium" "readium/cli" "prebuild" "latest" "/opt/readium" "readium_linux_$(arch_resolve "x86_64" "arm64").tar.gz"
fetch_and_deploy_gh_release "readium" "readium/cli" "prebuild" "v0.9.1" "/opt/readium" "readium_linux_$(arch_resolve "x86_64" "arm64").tar.gz"
ln -sf /opt/readium/readium /usr/local/bin/readium
fetch_and_deploy_gl_release "storyteller" "storyteller-platform/storyteller" "tarball" "latest" "/opt/storyteller" "" "web-v2"
msg_info "Setting up Storyteller"
msg_info "Building Storyteller (Patience)"
cd /opt/storyteller
$STD corepack yarn install
export NODE_ENV=production
export NEXT_TELEMETRY_DISABLED=1
export SQLITE_NATIVE_BINDING=/opt/storyteller/node_modules/better-sqlite3/build/Release/better_sqlite3.node
$STD corepack yarn workspaces foreach -Rpt --from @storyteller-platform/web --exclude @storyteller-platform/eslint run build
STANDALONE=/opt/storyteller/applications/web/.next/standalone
WEB_DIR="$STANDALONE/applications/web"
mkdir -p "$WEB_DIR"/{public,.next/static,.next/cache,migrations,sqlite,scripts}
cp -rT applications/web/public "$WEB_DIR/public"
cp -rT applications/web/.next/static "$WEB_DIR/.next/static"
cp -rT applications/web/migrations "$WEB_DIR/migrations"
cp applications/web/sqlite/uuid.c.so "$WEB_DIR/sqlite/"
cp docker-scripts/reset-password.sh "$WEB_DIR/scripts/"
cp -r applications/web/work-dist applications/web/file-write-dist "$WEB_DIR/"
mkdir -p "$WEB_DIR/work-dist/@storyteller-platform/align/prebuilds"
cp -r "libraries/align/prebuilds/linux-$(arch_resolve "x64" "arm64")" "$WEB_DIR/work-dist/@storyteller-platform/align/prebuilds/"
cp node_modules/@echogarden/icu-segmentation-wasm/wasm/*.wasm "$WEB_DIR/work-dist/"
cp -rT node_modules/@parcel "$STANDALONE/node_modules/@parcel"
cp -rT node_modules/kuromoji "$STANDALONE/node_modules/kuromoji"
msg_ok "Built Storyteller"
$STD corepack yarn install --network-timeout 600000
$STD gcc -g -fPIC -rdynamic -shared applications/web/sqlite/uuid.c -o applications/web/sqlite/uuid.c.so
msg_info "Installing Whisper"
WHISPER_VARIANT="linux-$(arch_resolve "x64" "arm64")-cpu"
$STD node /opt/storyteller/libraries/ghost-story/dist/cli/bin.js install binary "$WHISPER_VARIANT"
$STD node /opt/storyteller/libraries/ghost-story/dist/cli/bin.js install model tiny.en
if [[ "$WHISPER_VARIANT" == "linux-x64-cpu" ]]; then
$STD node /opt/storyteller/libraries/ghost-story/dist/cli/bin.js install binary linux-x64-cpu-legacy
fi
msg_ok "Installed Whisper"
msg_info "Configuring Storyteller"
mkdir -p /opt/storyteller/data
STORYTELLER_SECRET_KEY=$(openssl rand -base64 32)
cat <<EOF >/opt/storyteller/.env
STORYTELLER_SECRET_KEY=${STORYTELLER_SECRET_KEY}
@@ -45,33 +76,14 @@ READIUM_PORT=9000
NODE_ENV=production
NEXT_TELEMETRY_DISABLED=1
EOF
mkdir -p /opt/storyteller/data
chmod 600 /opt/storyteller/.env
ln -sf /opt/storyteller/.env "$WEB_DIR/.env"
cat <<EOF >~/storyteller.creds
Storyteller Credentials
=======================
Secret Key: ${STORYTELLER_SECRET_KEY}
EOF
msg_ok "Set up Storyteller"
msg_info "Building Storyteller"
cd /opt/storyteller
export CI=1
export NODE_ENV=production
export NEXT_TELEMETRY_DISABLED=1
export SQLITE_NATIVE_BINDING=/opt/storyteller/node_modules/better-sqlite3/build/Release/better_sqlite3.node
$STD corepack yarn workspaces foreach -Rpt --from @storyteller-platform/web --exclude @storyteller-platform/eslint run build
mkdir -p /opt/storyteller/applications/web/.next/standalone/applications/web/.next/static
cp -rT /opt/storyteller/applications/web/.next/static /opt/storyteller/applications/web/.next/standalone/applications/web/.next/static
if [[ -d /opt/storyteller/applications/web/public ]]; then
mkdir -p /opt/storyteller/applications/web/.next/standalone/applications/web/public
cp -rT /opt/storyteller/applications/web/public /opt/storyteller/applications/web/.next/standalone/applications/web/public
fi
mkdir -p /opt/storyteller/applications/web/.next/standalone/applications/web/migrations
cp -rT /opt/storyteller/applications/web/migrations /opt/storyteller/applications/web/.next/standalone/applications/web/migrations
mkdir -p /opt/storyteller/applications/web/.next/standalone/applications/web/sqlite
cp -rT /opt/storyteller/applications/web/sqlite /opt/storyteller/applications/web/.next/standalone/applications/web/sqlite
ln -sf /opt/storyteller/.env /opt/storyteller/applications/web/.next/standalone/applications/web/.env
msg_ok "Built Storyteller"
msg_ok "Configured Storyteller"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/storyteller.service
@@ -82,8 +94,12 @@ After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/storyteller/applications/web/.next/standalone/applications/web
WorkingDirectory=${WEB_DIR}
EnvironmentFile=/opt/storyteller/.env
Environment=SQLITE_NATIVE_BINDING=${STANDALONE}/node_modules/better-sqlite3/build/Release/better_sqlite3.node
Environment=ERROR_ALIGN_NATIVE_BINDING=${WEB_DIR}/work-dist/@storyteller-platform/align/
Environment=STORYTELLER_WORKER=worker.mjs
Environment=STORYTELLER_FILE_WRITE_WORKER=fileWriteWorker.mjs
ExecStart=/usr/bin/node --enable-source-maps server.js
Restart=on-failure
RestartSec=5
+2 -1
View File
@@ -47,8 +47,9 @@ User=root
Group=root
Type=simple
WorkingDirectory=/opt/tdarr/Tdarr_Server
ExecStartPre=/opt/tdarr/Tdarr_Updater
ExecStartPre=-/opt/tdarr/Tdarr_Updater
ExecStart=/opt/tdarr/Tdarr_Server/Tdarr_Server
TimeoutStartSec=600
TimeoutStopSec=20
KillMode=process
Restart=on-failure
+5
View File
@@ -13,6 +13,11 @@ setting_up_container
network_check
update_os
if is_debian && [[ "$(get_os_version_major)" -lt 13 ]]; then
msg_error "UniFi OS Server needs Debian 13: its installer requires a newer Podman than Debian 12 ships."
exit 238
fi
if [[ "${CTTYPE:-1}" != "0" ]]; then
msg_error "UniFi OS Server requires a privileged LXC container."
msg_error "Recreate the container with unprivileged=0."
+3 -1
View File
@@ -32,8 +32,10 @@ esac
msg_info "Installing Zabbix $ZABBIX_VERSION"
cd /tmp
ZABBIX_REPO_DIR="debian"
[[ "$ZABBIX_VERSION" == "7.0" && "$(arch_resolve)" == "arm64" ]] && ZABBIX_REPO_DIR="debian-arm64"
if [[ "$ZABBIX_VERSION" == "7.0" ]]; then
ZABBIX_DEB_URL="https://repo.zabbix.com/zabbix/${ZABBIX_VERSION}/debian/pool/main/z/zabbix-release/zabbix-release_latest_${ZABBIX_VERSION}+debian13_all.deb"
ZABBIX_DEB_URL="https://repo.zabbix.com/zabbix/${ZABBIX_VERSION}/${ZABBIX_REPO_DIR}/pool/main/z/zabbix-release/zabbix-release_latest_${ZABBIX_VERSION}+debian13_all.deb"
ZABBIX_DEB_FILE="zabbix-release_latest_${ZABBIX_VERSION}+debian13_all.deb"
else
ZABBIX_DEB_URL="https://repo.zabbix.com/zabbix/${ZABBIX_VERSION}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb"