Compare commits

...

14 Commits

Author SHA1 Message Date
push-app-to-main[bot]
06303778d2 Add honcho (ct) 2026-10-25 12:05:12 +00:00
community-scripts-pr-app[bot]
6d12437258 Update CHANGELOG.md (#18163)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-25 11:18:17 +00:00
community-scripts-pr-app[bot]
1dd8bb590d Update CHANGELOG.md (#18162)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-25 11:17:56 +00:00
Marcel
c6200d0889 FIX: missing index (#18142)
Updated directory structure for paperless data to include 'index'.
2026-10-25 12:17:50 +01:00
CanbiZ (MickLesk)
b656e99820 post-pve-install: hide the mobile subscription nag in every UI language (#18143)
The mobile UI patch removed the dialog and card only when their text
contained "subscription", so translated UIs (de: "Subskription", fr:
"Abonnement", ...) kept the nag. It also deleted DOM nodes Yew still
owns and polled every 300 ms for good.

The helper now injects a fetch wrapper into the mobile index template
that fills the empty subscription level of each node in the /nodes
response, so the app never shows the alert or card. The API response
itself is unchanged; the node list shows "-" instead of "No
subscription". The mobile UI package is reinstalled alongside the widget
toolkit so old blocks are dropped, and "no" also removes the helper.
2026-10-25 12:17:28 +01:00
community-scripts-pr-app[bot]
bfd9cb9c92 Update CHANGELOG.md (#18161)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-25 11:12:27 +00:00
CanbiZ (MickLesk)
d6ff47a71c Anytype Server: keep the .env across updates and recreate a lost one (#18155) 2026-10-25 12:11:59 +01:00
community-scripts-pr-app[bot]
9a1cefc8a9 Update CHANGELOG.md (#18160)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-25 11:11:38 +00:00
CanbiZ (MickLesk)
21834f3a95 changedetection: build Browserless from its lockfile on update (#18157) 2026-10-25 12:11:15 +01:00
community-scripts-pr-app[bot]
106aeccbea Update CHANGELOG.md (#18159)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-25 11:10:23 +00:00
community-scripts-pr-app[bot]
4901369c5b Update CHANGELOG.md (#18154)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-25 11:00:22 +00:00
CanbiZ (MickLesk)
911c84574e Gramps-Web: run the Celery task queue with Redis (#18141) 2026-10-25 11:59:56 +01:00
community-scripts-pr-app[bot]
782281728d Update CHANGELOG.md (#18153)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-25 10:59:25 +00:00
CanbiZ (MickLesk)
bb8b00f422 Zitadel: identify the machine by hostname when it has no private IPv4 (#18139) 2026-10-25 11:58:58 +01:00
10 changed files with 375 additions and 43 deletions

View File

@@ -574,8 +574,28 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
- #### 🐞 Bug Fixes
- paperless-ngx: fix missing index folder [@Segelzwerg](https://github.com/Segelzwerg) ([#18142](https://github.com/community-scripts/ProxmoxVE/pull/18142))
- Anytype Server: keep the .env across updates and recreate a lost one [@MickLesk](https://github.com/MickLesk) ([#18155](https://github.com/community-scripts/ProxmoxVE/pull/18155))
- changedetection: build Browserless from its lockfile on update [@MickLesk](https://github.com/MickLesk) ([#18157](https://github.com/community-scripts/ProxmoxVE/pull/18157))
- Zitadel: identify the machine by hostname when it has no private IPv4 [@MickLesk](https://github.com/MickLesk) ([#18139](https://github.com/community-scripts/ProxmoxVE/pull/18139))
- fix(bar-assistant): publish starter media catalog so new bars provision [@och29](https://github.com/och29) ([#18130](https://github.com/community-scripts/ProxmoxVE/pull/18130))
- #### ✨ New Features
- Gramps-Web: run the Celery task queue with Redis [@MickLesk](https://github.com/MickLesk) ([#18141](https://github.com/community-scripts/ProxmoxVE/pull/18141))
### 💾 Core
- alpine: fix uv release url [@mfelipe](https://github.com/mfelipe) ([core#168](https://github.com/community-scripts/core/pull/168))
- Set npm's script and git policy for root too, so --prefix keeps it [@MickLesk](https://github.com/MickLesk) ([core#170](https://github.com/community-scripts/core/pull/170))
- Upgrade Node.js in place when an app package depends on it [@MickLesk](https://github.com/MickLesk) ([core#169](https://github.com/community-scripts/core/pull/169))
### 🧰 Tools
- #### ✨ New Features
- post-pve-install: hide the mobile subscription nag in every UI language [@MickLesk](https://github.com/MickLesk) ([#18143](https://github.com/community-scripts/ProxmoxVE/pull/18143))
## 2026-10-24
### 🚀 Updated Scripts

View File

@@ -37,13 +37,25 @@ function update_script() {
systemctl stop anytype
msg_ok "Stopped Service"
create_backup /opt/anytype/data
create_backup /opt/anytype/data /opt/anytype/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "anytype" "grishy/any-sync-bundle" "prebuild" "latest" "/opt/anytype" "any-sync-bundle_*_linux_$(arch_resolve).tar.gz"
chmod +x /opt/anytype/any-sync-bundle
restore_backup
if [[ ! -f /opt/anytype/.env ]]; then
cat <<EOF >/opt/anytype/.env
ANY_SYNC_BUNDLE_CONFIG=/opt/anytype/data/bundle-config.yml
ANY_SYNC_BUNDLE_CLIENT_CONFIG=/opt/anytype/data/client-config.yml
ANY_SYNC_BUNDLE_INIT_STORAGE=/opt/anytype/data/storage/
ANY_SYNC_BUNDLE_INIT_EXTERNAL_ADDRS=$(hostname -I | awk '{print $1}')
ANY_SYNC_BUNDLE_INIT_MONGO_URI=mongodb://127.0.0.1:27017/
ANY_SYNC_BUNDLE_INIT_REDIS_URI=redis://127.0.0.1:6379/
ANY_SYNC_BUNDLE_LOG_LEVEL=info
EOF
fi
msg_info "Starting Service"
systemctl start anytype
msg_ok "Started Service"

View File

@@ -77,7 +77,6 @@ function update_script() {
msg_info "Updating Browserless (Patience)"
$STD git -C /opt/browserless/ fetch --all
$STD git -C /opt/browserless/ reset --hard origin/main
$STD npm update --prefix /opt/browserless
$STD npm ci --include=optional --include=dev --prefix /opt/browserless
$STD npm install --save-exact playwright-core@1.62.1 --prefix /opt/browserless
$STD /opt/browserless/node_modules/playwright-core/cli.js install --with-deps

View File

@@ -34,9 +34,43 @@ function update_script() {
PYTHON_VERSION="3.12" setup_uv
NODE_VERSION="22" NODE_MODULE="corepack" setup_nodejs
if ! grep -q '^CELERY_CONFIG=' /opt/gramps-web/config/config.cfg; then
msg_info "Setting up Celery Task Queue"
ensure_dependencies redis-server
cat <<EOF >>/opt/gramps-web/config/config.cfg
CELERY_CONFIG={"broker_url":"redis://127.0.0.1:6379/0","result_backend":"redis://127.0.0.1:6379/0"}
RATELIMIT_STORAGE_URI="redis://127.0.0.1:6379/1"
EOF
cat <<EOF >/etc/systemd/system/gramps-web-celery.service
[Unit]
Description=Gramps Web Celery Worker
After=network.target redis-server.service
Wants=redis-server.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/gramps-web-api
Environment=GRAMPS_API_CONFIG=/opt/gramps-web/config/config.cfg
Environment=GRAMPSHOME=/opt/gramps-web/data
Environment=GRAMPS_DATABASE_PATH=/opt/gramps-web/data/gramps/grampsdb
Environment=PATH=/opt/gramps-web/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ExecStart=/opt/gramps-web/venv/bin/celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable -q --now redis-server gramps-web-celery
systemctl restart gramps-web
msg_ok "Set up Celery Task Queue"
fi
if check_for_gh_release "gramps-web-api" "gramps-project/gramps-web-api"; then
msg_info "Stopping Service"
systemctl stop gramps-web
systemctl stop gramps-web gramps-web-celery
msg_ok "Stopped Service"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gramps-web-api" "gramps-project/gramps-web-api" "tarball" "latest" "/opt/gramps-web-api"
@@ -71,7 +105,7 @@ function update_script() {
msg_ok "Updated Gramps Addons"
msg_info "Starting Service"
systemctl start gramps-web
systemctl start gramps-web gramps-web-celery
msg_ok "Started Service"
fi

81
ct/honcho.sh Normal file
View File

@@ -0,0 +1,81 @@
#!/usr/bin/env bash
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/plastic-labs/honcho
APP="Honcho"
var_tags="${var_tags:-ai;memory;agents}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-6}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}"
var_unprivileged="${var_unprivileged:-1}"
export var_honcho_provider="${var_honcho_provider:-}"
export var_honcho_api_key="${var_honcho_api_key:-}"
export var_honcho_base_url="${var_honcho_base_url:-}"
export var_honcho_model="${var_honcho_model:-}"
export var_honcho_embedding_key="${var_honcho_embedding_key:-}"
export var_honcho_embedding_model="${var_honcho_embedding_model:-}"
export var_honcho_embedding_dims="${var_honcho_embedding_dims:-}"
header_info "$APP"
variables
color
catch_errors
if [[ -n "${var_honcho_provider}" && ! "${var_honcho_provider}" =~ ^(openai|anthropic|gemini)$ ]]; then
msg_error "var_honcho_provider must be openai, anthropic or gemini"
exit 1
fi
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/honcho ]]; then
msg_error "No Honcho Installation Found!"
exit
fi
if check_for_gh_release "honcho" "plastic-labs/honcho" "" "" "v"; then
msg_info "Stopping Honcho"
systemctl stop honcho-deriver honcho
msg_ok "Stopped Honcho"
PYTHON_VERSION="3.13" setup_uv
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP=".env" fetch_and_deploy_gh_release "honcho" "plastic-labs/honcho" "tarball" "latest" "/opt/honcho" "" "v"
msg_info "Updating Honcho"
cd /opt/honcho
$STD uv sync --frozen --no-dev
$STD .venv/bin/python scripts/provision_db.py
msg_ok "Updated Honcho"
if systemctl is-enabled -q honcho; then
msg_info "Starting Honcho"
systemctl start honcho honcho-deriver
msg_ok "Started Honcho"
fi
msg_ok "Updated successfully!"
fi
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 the API (interactive docs at /docs) using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:8000${CL}"
echo -e "${INFO}${YW}Admin key, sent as Authorization: Bearer <key> (more with: cd /opt/honcho && .venv/bin/python scripts/generate_jwt.py --admin):${CL}"
echo -e "${TAB}${DGN}$(pct exec "$CTID" -- bash -c 'cd /opt/honcho && .venv/bin/python scripts/generate_jwt.py --admin --print-only')${CL}"
echo -e "${INFO}${YW}Without an LLM provider key Honcho stays stopped: set one in /opt/honcho_data/.env, then run: systemctl enable --now honcho honcho-deriver${CL}"

View File

@@ -34,6 +34,7 @@ $STD apt install -y \
pkg-config \
poppler-utils \
python3-dev \
redis-server \
tesseract-ocr
msg_ok "Installed Dependencies"
@@ -70,6 +71,8 @@ REQUEST_CACHE_CONFIG={"CACHE_TYPE":"FileSystemCache","CACHE_DIR":"/opt/gramps-we
PERSISTENT_CACHE_CONFIG={"CACHE_TYPE":"FileSystemCache","CACHE_DIR":"/opt/gramps-web/data/cache/persistent","CACHE_THRESHOLD":0,"CACHE_DEFAULT_TIMEOUT":0}
REPORT_DIR="/opt/gramps-web/data/cache/report"
EXPORT_DIR="/opt/gramps-web/data/cache/export"
CELERY_CONFIG={"broker_url":"redis://127.0.0.1:6379/0","result_backend":"redis://127.0.0.1:6379/0"}
RATELIMIT_STORAGE_URI="redis://127.0.0.1:6379/1"
EOF
$STD uv venv -c -p python3.12 /opt/gramps-web/venv
source /opt/gramps-web/venv/bin/activate
@@ -107,7 +110,8 @@ msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/gramps-web.service
[Unit]
Description=Gramps Web Service
After=network.target
After=network.target redis-server.service
Wants=redis-server.service
[Service]
Type=simple
@@ -124,7 +128,28 @@ RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now gramps-web
cat <<EOF >/etc/systemd/system/gramps-web-celery.service
[Unit]
Description=Gramps Web Celery Worker
After=network.target redis-server.service
Wants=redis-server.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/gramps-web-api
Environment=GRAMPS_API_CONFIG=/opt/gramps-web/config/config.cfg
Environment=GRAMPSHOME=/opt/gramps-web/data
Environment=GRAMPS_DATABASE_PATH=/opt/gramps-web/data/gramps/grampsdb
Environment=PATH=/opt/gramps-web/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ExecStart=/opt/gramps-web/venv/bin/celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now gramps-web gramps-web-celery
msg_ok "Created Service"
motd_ssh

172
install/honcho-install.sh Normal file
View File

@@ -0,0 +1,172 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/plastic-labs/honcho
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 redis-server
msg_ok "Installed Dependencies"
PG_VERSION="17" PG_MODULES="pgvector" setup_postgresql
PG_DB_NAME="honcho" PG_DB_USER="honcho" PG_DB_EXTENSIONS="vector,pg_trgm" setup_postgresql_db
PYTHON_VERSION="3.13" setup_uv
fetch_and_deploy_gh_release "honcho" "plastic-labs/honcho" "tarball" "latest" "/opt/honcho" "" "v"
msg_info "Installing Honcho"
cd /opt/honcho
# Like upstream's Dockerfile: exactly what uv.lock pins
$STD uv sync --frozen --no-dev
msg_ok "Installed Honcho"
if [[ -t 0 && -z "${var_honcho_provider:-}${var_honcho_api_key:-}${var_honcho_base_url:-}" ]]; then
echo -e "${INFO}${YW} Honcho needs an LLM provider for memory, embeddings and chat; without a key it is installed but not started.${CL}"
read -t 300 -rsp "${TAB3}OpenAI API key (Enter to set up a provider later): " var_honcho_api_key || true
echo
fi
declare -A HONCHO_KEY=([openai]="" [anthropic]="" [gemini]="")
case "${var_honcho_provider:-openai}" in
anthropic)
HONCHO_TRANSPORT="anthropic" HONCHO_MODEL="${var_honcho_model:-claude-haiku-4-5}"
HONCHO_EMBEDDING="openai" HONCHO_EMBEDDING_MODEL="${var_honcho_embedding_model:-text-embedding-3-small}"
HONCHO_KEY[anthropic]="${var_honcho_api_key:-}"
HONCHO_KEY[openai]="${var_honcho_embedding_key:-}"
;;
gemini)
HONCHO_TRANSPORT="gemini" HONCHO_MODEL="${var_honcho_model:-gemini-2.5-flash}"
HONCHO_EMBEDDING="gemini" HONCHO_EMBEDDING_MODEL="${var_honcho_embedding_model:-gemini-embedding-001}"
HONCHO_KEY[gemini]="${var_honcho_api_key:-}"
;;
*)
HONCHO_TRANSPORT="openai" HONCHO_MODEL="${var_honcho_model:-gpt-5.4-mini}"
HONCHO_EMBEDDING="openai" HONCHO_EMBEDDING_MODEL="${var_honcho_embedding_model:-text-embedding-3-small}"
# Honcho only builds a client when the key is set; local endpoints such as Ollama ignore its value
HONCHO_KEY[openai]="${var_honcho_api_key:-${var_honcho_base_url:+not-needed}}"
;;
esac
msg_info "Configuring Honcho"
mkdir -p /opt/honcho_data
cat <<EOF >/opt/honcho_data/.env
DB_CONNECTION_URI=postgresql+psycopg://honcho:${PG_DB_PASS}@localhost:5432/honcho
CACHE_ENABLED=true
CACHE_URL=redis://localhost:6379/0?suppress=true
# Every /v3 API request needs a JWT signed with this secret. Mint one with:
# cd /opt/honcho && .venv/bin/python scripts/generate_jwt.py --admin
AUTH_USE_AUTH=true
AUTH_JWT_SECRET=$(openssl rand -hex 32)
WEBHOOK_SECRET=$(openssl rand -hex 32)
# Transports: openai (OpenAI or any OpenAI-compatible endpoint), anthropic, gemini.
# Embeddings run on openai or gemini only. Apply changes with: systemctl restart honcho honcho-deriver
LLM_OPENAI_API_KEY=${HONCHO_KEY[openai]}
LLM_ANTHROPIC_API_KEY=${HONCHO_KEY[anthropic]}
LLM_GEMINI_API_KEY=${HONCHO_KEY[gemini]}
# An OpenAI-compatible endpoint (OpenRouter, Ollama, vLLM, LiteLLM) replaces api.openai.com through both lines:
#LLM_OPENAI_BASE_URL=http://192.168.1.50:11434/v1
#EMBEDDING_MODEL_CONFIG__OVERRIDES__BASE_URL=http://192.168.1.50:11434/v1
# Endpoints without OpenAI Structured Outputs need:
#DERIVER_MODEL_CONFIG__STRUCTURED_OUTPUT_MODE=json_object
EMBEDDING_MODEL_CONFIG__TRANSPORT=${HONCHO_EMBEDDING}
EMBEDDING_MODEL_CONFIG__MODEL=${HONCHO_EMBEDDING_MODEL}
# A model with another vector size works only while nothing is embedded yet: set it here, then run
# cd /opt/honcho && .venv/bin/python scripts/configure_embeddings.py --yes
#EMBEDDING_VECTOR_DIMENSIONS=1536
# The deriver waits for about 512 new tokens per peer, or 30 minutes, before it calls the LLM
#DERIVER_FLUSH_ENABLED=true
# Models for the deriver, summaries, dreams and dialectic chat; they must support tool calling
EOF
for prefix in DERIVER SUMMARY DREAM_DEDUCTION DREAM_INDUCTION DIALECTIC_LEVELS__{minimal,low,medium,high,max}_; do
cat <<EOF >>/opt/honcho_data/.env
${prefix}_MODEL_CONFIG__TRANSPORT=${HONCHO_TRANSPORT}
${prefix}_MODEL_CONFIG__MODEL=${HONCHO_MODEL}
EOF
done
if [[ -n "${var_honcho_base_url:-}" ]]; then
cat <<EOF >>/opt/honcho_data/.env
LLM_OPENAI_BASE_URL=${var_honcho_base_url}
EMBEDDING_MODEL_CONFIG__OVERRIDES__BASE_URL=${var_honcho_base_url}
EOF
fi
if [[ -n "${var_honcho_embedding_dims:-}" ]]; then
cat <<EOF >>/opt/honcho_data/.env
EMBEDDING_VECTOR_DIMENSIONS=${var_honcho_embedding_dims}
EOF
fi
chmod 600 /opt/honcho_data/.env
# Honcho and its scripts load .env from /opt/honcho, which updates empty; only the link lives there
ln -sf /opt/honcho_data/.env /opt/honcho/.env
msg_ok "Configured Honcho"
msg_info "Migrating Honcho Database"
$STD .venv/bin/python scripts/provision_db.py
$STD .venv/bin/python scripts/configure_embeddings.py --yes
msg_ok "Migrated Honcho Database"
msg_info "Creating Honcho Services"
cat <<EOF >/etc/systemd/system/honcho.service
[Unit]
Description=Honcho API
After=network.target postgresql.service redis-server.service
Requires=postgresql.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/honcho
Environment=PYTHONUNBUFFERED=1
ExecStart=/opt/honcho/.venv/bin/fastapi run --host 0.0.0.0 --port 8000 src/main.py
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/honcho-deriver.service
[Unit]
Description=Honcho Deriver
After=network.target postgresql.service redis-server.service honcho.service
Requires=postgresql.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/honcho
Environment=PYTHONUNBUFFERED=1
ExecStart=/opt/honcho/.venv/bin/python -m src.deriver
# The deriver exits 0 after an unhandled error, which Restart=on-failure would leave stopped
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
msg_ok "Created Honcho Services"
if [[ -n "${HONCHO_KEY[$HONCHO_TRANSPORT]}" && -n "${HONCHO_KEY[$HONCHO_EMBEDDING]}" ]]; then
msg_info "Starting Honcho"
systemctl enable -q --now honcho honcho-deriver
msg_ok "Started Honcho"
else
msg_warn "No LLM provider key (with Anthropic also an OpenAI key for embeddings): Honcho stays stopped until it is set in /opt/honcho_data/.env"
fi
motd_ssh
customize
cleanup_lxc

View File

@@ -52,7 +52,7 @@ msg_info "Setup Paperless-ngx"
cd /opt/paperless
rm -rf /opt/paperless/docker
$STD uv sync --all-extras
mkdir -p /opt/paperless_data/{consume,data,media,trash}
mkdir -p /opt/paperless_data/{consume,data,index,media,trash}
mkdir -p /opt/paperless/static
SECRET_KEY="$(random_password 32)"
cat <<EOF >~/paperless-ngx.creds
@@ -80,6 +80,7 @@ set -a
. /opt/paperless/paperless.conf
set +a
$STD uv run -- python manage.py migrate
$STD uv run -- python manage.py reindex
msg_ok "Setup Paperless-ngx"
msg_info "Setting up admin Paperless-ngx User & Password"

View File

@@ -38,6 +38,10 @@ Database:
Password: ${PG_DB_PASS}
SSL:
Mode: disable
Machine:
Identification:
Hostname:
Enabled: true
EOF
if [[ "$var_zitadel_login" == "v1" ]]; then
cat <<EOF >>/opt/zitadel/config.yaml

View File

@@ -565,42 +565,23 @@ if [ -s "$WEB_JS" ] && ! grep -q NoMoreNagging "$WEB_JS"; then
fi
MOBILE_TPL=/usr/share/pve-yew-mobile-gui/index.html.tpl
MARKER="<!-- MANAGED BLOCK FOR MOBILE NAG -->"
if [ -f "$MOBILE_TPL" ] && ! grep -q "$MARKER" "$MOBILE_TPL"; then
if [ -s "$MOBILE_TPL" ] && ! grep -q NoMoreNagging "$MOBILE_TPL"; then
echo "Patching Mobile UI nag..."
printf "%s\n" \
"$MARKER" \
"<script>" \
" function removeSubscriptionElements() {" \
" // --- Remove subscription dialogs ---" \
" const dialogs = document.querySelectorAll('dialog.pwt-outer-dialog');" \
" dialogs.forEach(dialog => {" \
" const text = (dialog.textContent || '').toLowerCase();" \
" if (text.includes('subscription')) {" \
" dialog.remove();" \
" console.log('Removed subscription dialog');" \
" }" \
" });" \
"" \
" // --- Remove subscription cards, but keep Reboot/Shutdown/Console ---" \
" const cards = document.querySelectorAll('.pwt-card.pwt-p-2.pwt-d-flex.pwt-interactive.pwt-justify-content-center');" \
" cards.forEach(card => {" \
" const text = (card.textContent || '').toLowerCase();" \
" const hasButton = card.querySelector('button');" \
" if (!hasButton && text.includes('subscription')) {" \
" card.remove();" \
" console.log('Removed subscription card');" \
" }" \
" });" \
" }" \
"" \
" const observer = new MutationObserver(removeSubscriptionElements);" \
" observer.observe(document.body, { childList: true, subtree: true });" \
" removeSubscriptionElements();" \
" setInterval(removeSubscriptionElements, 300);" \
" setTimeout(() => {observer.disconnect();}, 10000);" \
"</script>" \
"" >> "$MOBILE_TPL"
sed -i '/<head>/r /dev/stdin' "$MOBILE_TPL" <<'HTML'
<script>
// NoMoreNagging
const nativeFetch = window.fetch.bind(window);
window.fetch = async (...args) => {
const res = await nativeFetch(...args);
const path = new URL(String(args[0]?.url ?? args[0]), location.href).pathname;
if (!['/api2/json/nodes', '/api2/extjs/nodes'].includes(path)) return res;
const body = await res.clone().json().catch(() => null);
if (!Array.isArray(body?.data)) return res;
body.data.forEach((node) => { if (!node.level) node.level = 'NoMoreNagging'; });
return new Response(JSON.stringify(body), { status: res.status, headers: res.headers });
};
</script>
HTML
fi
EOF
chmod 755 /usr/local/bin/pve-remove-nag.sh
@@ -615,10 +596,13 @@ EOF
no)
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. Check their official website's Support Subscriptions for pricing. Without their dedicated work, we wouldn't have this exceptional software." 10 58
msg_error "Selected no to Disabling subscription nag"
[[ -f /etc/apt/apt.conf.d/no-nag-script ]] && rm /etc/apt/apt.conf.d/no-nag-script
rm -f /etc/apt/apt.conf.d/no-nag-script /usr/local/bin/pve-remove-nag.sh
;;
esac
apt --reinstall install proxmox-widget-toolkit &>/dev/null || msg_error "Widget toolkit reinstall failed"
if dpkg -s pve-yew-mobile-gui &>/dev/null; then
apt --reinstall install pve-yew-mobile-gui &>/dev/null || msg_error "Mobile UI reinstall failed"
fi
if ! systemctl is-active --quiet pve-ha-lrm; then
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "HIGH AVAILABILITY" --menu "Enable high availability?" 10 58 2 \
"yes" " " \