Lets a *multi-instance-capable* app run as several fully isolated instances on one box (e.g. two Bookstack/WordPress sites, or a "family" + "work" Nextcloud) — distinct data, DB, subdomain, backups and update cadence. Design: an instance is just another app. It gets its own slug (<type>_<id>), its own CFG_<SLUG>_* namespace, deployed dir, DB row, IP/port allocation and host, so the entire existing pipeline (scan, install, services, routing, updater, backups) treats it like any app with zero changes. All instance-specific rewriting is confined to a clone of the type's template; the shipped template and the core engine are untouched. Gating: opt-in per app via CFG_<TYPE>_MULTI_INSTANCE=true. Only Bookstack carries it for now (the validated reference). The other 31 apps are unaffected — the feature is invisible unless the flag is present. - scripts/instance/instance_create.sh — clone + re-namespace config, rewrite compose identity (container_name / Traefik routers / backup labels) and per-app tools, set a hostname-safe subdomain (PORT field 10), then hand off to dockerInstallApp. Plus instanceList / instanceRemove. - libreportal instance create|remove|list — new CLI category; mutations route through the task system (no new mutating API endpoint). - WebUI: "instance of <type>" badge + a "New instance" card action on capable apps, and a create modal (name + domain# + subdomain, live host preview) that dispatches the standard task. Capability/instance-of read straight off the already-exposed app config. Known follow-ups (documented): flip the flag on more apps after a compose identity check (Nextcloud next); per-app tools are best-effort isolated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: librelad <librelad@digitalangels.vip>
39 lines
1.3 KiB
Bash
Executable File
39 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This file is auto-generated by generate_arrays.sh
|
|
# Do not edit manually - run './scripts/source/files/generate_arrays.sh run' to regenerate
|
|
|
|
source_scripts=(
|
|
"source/artifacts.sh"
|
|
"source/fetch.sh"
|
|
"source/files/arrays/files_app.sh"
|
|
"source/files/arrays/files_backup.sh"
|
|
"source/files/arrays/files_checks.sh"
|
|
"source/files/arrays/files_cli.sh"
|
|
"source/files/arrays/files_config.sh"
|
|
"source/files/arrays/files_crontab.sh"
|
|
"source/files/arrays/files_database.sh"
|
|
"source/files/arrays/files_docker.sh"
|
|
"source/files/arrays/files_function.sh"
|
|
"source/files/arrays/files_install.sh"
|
|
"source/files/arrays/files_instance.sh"
|
|
"source/files/arrays/files_logs.sh"
|
|
"source/files/arrays/files_menu.sh"
|
|
"source/files/arrays/files_migrate.sh"
|
|
"source/files/arrays/files_network.sh"
|
|
"source/files/arrays/files_os.sh"
|
|
"source/files/arrays/files_peer.sh"
|
|
"source/files/arrays/files_restore.sh"
|
|
"source/files/arrays/files_setup.sh"
|
|
"source/files/arrays/files_source.sh"
|
|
"source/files/arrays/files_ssh.sh"
|
|
"source/files/arrays/files_start.sh"
|
|
"source/files/arrays/files_task.sh"
|
|
"source/files/arrays/files_update.sh"
|
|
"source/files/arrays/files_webui.sh"
|
|
"source/files/arrays/function_manifest.sh"
|
|
"source/files/generate_function_manifest.sh"
|
|
"source/verify.sh"
|
|
|
|
)
|