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.
- openthread-br: add socat dep for TCP adapters, add --vendor-name/--model-name
(mandatory), bind REST API to 0.0.0.0:8081, configure otbr-web to listen on
all interfaces, update TCP example with socat forkpty pattern
- kan: export BETTER_AUTH_SECRET and POSTGRES_URL before build (required by
@t3-oss/env-nextjs zod validation at build time)
- mysql: remove MariaDB-on-trixie workaround (MySQL repo now has trixie packages),
update GPG key from RPM-GPG-KEY-mysql-2023 to RPM-GPG-KEY-mysql-2025
- Set ADMIN_EMAIL/ADMIN_PASSWORD so admin user is created on first boot
- Generate JWT keypair for authentication to work
- Run doctrine:migrations:migrate for DB schema
- Save credentials to ~/slink.creds
- Build from source via git clone + cmake/ninja
- Privileged container for network admin (iptables/ipset/tun)
- Web GUI on port 80, REST API, mDNS service discovery
- Configurable RCP device path in /etc/default/otbr-agent
- Git-based update with shallow fetch + rebuild
Raise default resources for DrawDB container: update ct/drawdb.sh to set var_ram from 2048 to 6144 and var_disk from 4 to 5 to allocate more memory and disk. Also adjust json/homelable.json formatting by expanding the categories array to multiple lines for readability; no functional metadata changes.
- Add hardcoded OTT (123456) for all emails in museum.yaml so users
don't need to search logs for verification codes
- Replace separate helper scripts with single 'ente-setup' command
that handles: admin whitelisting (user_id from DB), CLI account
add, and subscription upgrade in one guided flow
- Simplify JSON notes to single first-start instruction
The admin CLI requires the user to be whitelisted via their numeric
user_id in museum.yaml's internal.admin field. The helper script
ente-upgrade-subscription now:
1. Looks up user_id from PostgreSQL by email
2. Adds internal.admin to museum.yaml if not present
3. Restarts museum
4. Runs the subscription upgrade
This replaces the previous approach that incorrectly assumed the
first user was auto-admin (that fallback only works when internal
section is completely absent AND was unreliable).
The 'internal.admins' field expects user IDs, not emails. Setting it
to an empty array explicitly disables admin access. Without the field,
museum falls back to treating the first registered user as admin,
which is the correct behavior for self-hosted instances.
- Add 'internal: admins: []' section to museum.yaml so admin CLI
commands work after adding email to the list
- Fix --no-limit flag in helper script (requires 'True' argument)
- Add admin setup step to JSON first-start notes
Without these steps the setup cannot be completed:
1. Create account via web UI
2. Get verification code from museum logs
3. Remove subscription limit via CLI
Delete duplicated frontend/public/json/surrealdb.json and update the canonical json/surrealdb.json file: restore original date_created, adjust description, normalize website URL, change default_credentials.password to null, and add notes about web UI and saved creds. Also include a tiny EOF/newline normalization in json/cliproxyapi.json.
Replace author attribution with "MickLesk (CanbiZ)" in ct/coredns.sh and install/coredns-install.sh. Reformat the categories array in json/coredns.json to a multiline style and adjust trailing newline/whitespace. These are non-functional metadata/formatting changes.