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.
forgejo-runner register writes .runner config to the current working
directory. The install script runs in a temp directory (via build.func),
so the config was lost on cleanup. The systemd service expects it in
/root (WorkingDirectory=/root), so cd there before registering.
core.func overwrites $HOSTNAME with a formatted emoji string for display
purposes, causing runner registration to send garbled ANSI codes as the
runner name. Use $(hostname) to get the actual system hostname.
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)
- Add --ignore-engines to yarn install (web/ requires Node 18 exactly,
but works fine with Node 22 + --openssl-legacy-provider)
- Fix prompt formatting: use read -r -p inline instead of echo + read
- Apply same prompt fix to mongo-express addon
Move AI contribution guidelines from docs/AI.md to repo root AGENTS.md
following the open AGENTS.md standard (https://agents.md).
Most AI coding agents (Copilot, Codex, Cursor, etc.) automatically
discover and use AGENTS.md at the repo root.
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>
Add NEXT_PUBLIC_ALLOW_CREDENTIALS=true to .env and export it during
build. Without this, only magic-link login is available which requires
SMTP configuration. Email+password auth allows registration without
any mail server.
Fleet requires Redis for live queries, async jobs, and distributed
locking. Without it the fleet serve process fails on startup.
- Install redis-server package
- Add FLEET_REDIS_ADDRESS=127.0.0.1:6379 to .env
- Add redis-server.service to systemd After/Requires
- Enable redis-server alongside fleet service
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.
Puter requires services.database.engine in config.json. When the
config file is auto-generated it includes this, but our custom config
was missing it, causing: 'Must specify engine for service database'
and cascade failure of all services depending on the DB.
Next.js pre-renders pages during build. With POSTGRES_URL exported,
Server Components try to query DB tables that don't exist yet
(migrations run after build), causing the build to hang indefinitely.
Docker build does NOT set POSTGRES_URL and sets CI=true to skip env
validation. Match that behavior.