Delete container templates and installer scripts for BentoPDF and YOURLS. Removed ct/bentopdf.sh, ct/yourls.sh, install/bentopdf-install.sh, and install/yourls-install.sh which contained container build/install logic (nginx, Node/PNPM steps for BentoPDF and PHP/MariaDB/nginx setup for YOURLS). This cleans up deprecated or duplicated setup scripts.
Introduce an optional ClickStack observability install (HyperDX UI + OTel Collector + MongoDB). Adds a Whiptail prompt to enable ClickStack and adjusts default resource suggestions when selected. Updates ct/clickhouse.sh to include observability tag, author, update logic to auto-update HyperDX and the OTel Collector, and prints appropriate access URLs. Extends install/clickhouse-install.sh to install dependencies, initialize ClickHouse schemas for logs/traces/sessions, deploy the OTel Collector with a ClickHouse exporter, clone/build HyperDX, create systemd services (clickstack-otel, clickstack-api, clickstack-app), and enable them. Updates json/clickhouse.json to include an informational note about the optional ClickStack requirements and usage.
Introduce ClickHouse support by adding a container template (ct/clickhouse.sh), an installer script (install/clickhouse-install.sh) and app metadata (json/clickhouse.json). The installer configures ClickHouse to listen on 0.0.0.0, restarts the service, and performs OS update, networking checks, MOTD/customization and cleanup. Metadata declares default resources (2 CPU, 4GB RAM, 10GB disk), interface port 8123, documentation/website links, and a warning about the default user having no password.
Replace Node.js usage with bun across install and control scripts: run /opt/blinko/dist/seed.js with bun during install and update, and start the service with bun using --env-file. Also remove the hardcoded PORT from the generated .env. These changes unify the runtime, ensure migrations and seeding use bun, and load environment variables directly when starting the service.
Switch development builds to production and harden install/update steps across several apps.
- Akaunting: use `npm run production` instead of `npm run dev` in both install and update scripts to produce production assets.
- Blinko: make bun installs run with `--unsafe-perm`, run `bun run build:web` and `bun run build:seed`, copy built public assets into `/opt/blinko/server/public`, run prisma migrations, and execute the generated seed script. Add PORT and NEXT_PUBLIC_BASE_URL to the .env. Update the systemd service to use WorkingDirectory `/opt/blinko/server` and start the app with `node /opt/blinko/dist/index.js`.
- InvoiceShelf & SolidTime: stop capturing APP_KEY via `php artisan key:generate --show` + sed; instead run `php artisan key:generate` during install after composer install. SolidTime also runs `php artisan storage:link` after build. These changes simplify key generation and ensure proper storage linking.
Overall these updates ensure production-ready builds, proper artifact placement, and correct runtime configuration for services.
Install Bun during setup and replace npm/npx calls with bun/bunx. Added Bun install (sets BUN_INSTALL, runs bun install script, and symlinks bun and bunx to /usr/local/bin) in install/blinko-install.sh. Updated ct/blinko.sh and install/blinko-install.sh to use `bun install`, `bunx prisma ...`, and `bun run build` instead of npm/npx commands for dependency install, Prisma generate/migrate, and build steps.
Add new ProxmoxVED container templates (ct/*.sh), install scripts (install/*.sh) and metadata (json/*.json) for multiple applications: Akaunting, Blinko, Certimate, Dagu, Gogs, InvoiceShelf, Matomo, Papermark, RSS-Bridge, SolidTime and WhoDB. Each ct script includes update logic and deployment helpers; install scripts handle dependency installation, service creation (systemd), DB setup, and Caddy/PHP/Node/Postgres configuration where applicable. JSON entries provide UI metadata, resource defaults and access ports for each app.
Introduce Neko container template with installer and metadata. Adds ct/neko.sh (container install entrypoint and update routine), install/neko-install.sh (detailed install/build steps: fetch GitHub release m1k1o/neko, build client/server, configure supervisord, systemd service, runtime users, plugins, and default neko.yaml), and json/neko.json (app metadata, resources, port 8080, default credentials and notes). Enables automated provisioning of the Neko WebRTC virtual browser on Debian 12 with default CPU/RAM/disk values.
Add a new .github agent (pve-script-creator.agent.md) with workflow and strict rules for generating CT/install/json files. Remove legacy CT/install/json artifacts for alpine-ironclaw and openthread-br (ct/, install/, json/ entries deleted). Also adjust mqttx update logic: set CLEAN_INSTALL=1 and move the update msg_info after fetch_and_deploy_gh_release to ensure a clean deployment before reporting/updating and then run yarn build in the app web dir.
mode is only set when the user is automating (e.g. mode=default with
var_* overrides). The default bash -c curl invocation leaves mode empty
and shows the whiptail menu, so this check won't affect interactive use.
Check for missing token/URL only when mode is set AND there's no TTY,
so mode=default with a terminal still allows interactive prompts inside
the container.
Abort before build_container if mode is set (unattended) but no
runner registration token was provided. Avoids a 20+ minute container
build only to fail at the registration step.
CT script hardcoded the upstream URL for build.func, so the install
script was always fetched from upstream — ignoring fork/branch fixes.
Now respects COMMUNITY_SCRIPTS_URL override, consistent with how
build.func already handles this for all other resource fetching.
- Export app-specific variables (var_forgejo_instance, var_forgejo_runner_token,
var_runner_labels) in ct script so they survive lxc-attach into the container
- Replace nonexistent prompt_input_required/show_missing_values_warning calls
with standard read prompts that skip when variables are pre-set
- Add hard error when no runner token is provided
- Make runner labels configurable via var_runner_labels instead of hardcoded
- Update default runner image from node:20-bookworm to node:22-bookworm (Node 22 LTS)
MQTTX Web is a static browser-based MQTT client with no backend.
Makes more sense as an addon installable into any existing container
than as a dedicated LXC.
Addon installs into /opt/mqttx, builds web/ with yarn, serves via
Nginx on configurable port (default 8095). Supports install/update/uninstall.
Add bare-metal installation script for qdm12/ddns-updater with web UI
on port 8000, supporting 60+ DNS providers.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Puter: protocol was missing from config.json, causing origin to be
computed as 'undefined://IP:4100'. All API/WebSocket URLs inherited
this broken value, making the frontend unable to load.
Fleet: MySQL APT repo requires Debian 12 (Bookworm), not 13.
- nginx: add exact-match location for /uploads (no trailing slash)
to handle S3 presigned POST URLs from Plane's storage backend
- ct: fix curl -s to curl -fsSL for consistency with other scripts