isCustomDomain() in middleware.ts treats any non-localhost/papermark.*/vercel
host as a custom domain in production, causing DomainMiddleware to redirect
/ to https://www.papermark.com when no Redis entry exists.
Fix: patch middleware.ts before build to exclude IP addresses from custom
domain detection.
- HANKO_API_KEY and NEXT_PUBLIC_HANKO_TENANT_ID are required at build time
(module throws hard error if unset during page data collection)
- QSTASH_TOKEN, NEXT_PRIVATE_DOCUMENT_PASSWORD_KEY, NEXT_PRIVATE_VERIFICATION_SECRET
added as placeholders/random values
- NODE_OPTIONS=--max-old-space-size=3584 for npm run build (Next.js OOM fix)
- RAM raised from 2048 to 4096 (Next.js build requires ~3.5GB heap)
- matomo: move creds to /root/matomo.creds (out of webroot), keep tests/ dir,
block dotfiles in Caddy (@blocked /.* pattern)
- papermark: add NEXT_PUBLIC_APP_BASE_HOST and NEXT_PUBLIC_WEBHOOK_BASE_HOST
placeholder env vars to prevent undefined 'value' in has:host routes
causing Next.js build failure
- slink: replace doctrine:database:create with touch for SQLite (getCreateDatabaseSQL
not supported by SQLitePlatform)
Replace the generic ${APP} placeholder with explicit, consistently capitalized application names in install scripts to produce clearer log output. Affected scripts: install/{akaunting,blinko,dagu,gogs,invoiceshelf,matomo,papermark,rss-bridge,solidtime}-install.sh. Changes update msg_info and msg_ok messages only.
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.