# Script Reference ## Root Scripts - `start-dev.sh` - Interactive setup for local development stack (`docker-compose.yml`). - `start-devprod.sh` - Interactive setup for dev-prod stacks (`docker-compose.devprod*.yml`). - `recreate-devprod.sh` - Rebuild/recreate dev-prod services after code/env changes. - Use `--qortal` to include `qortal_node` recreation. - Use `--qortal-branch ` (or `--qortal=`) to rebuild Qortal from a specific upstream branch for that run. - Use `--full` to force no-cache rebuild of all buildable services and refresh `QORTAL_NODE_CONTEXT` from primary upstream (`https://github.com/Qortal/qortal.git`) before rebuild. - Use `--nc34` or `--nextcloud-image ` to override `NEXTCLOUD_IMAGE` for that run. `--nc33` remains a legacy fallback. - Use `--extauth` to force external-auth profile recreation. - `--extauth` alone now recreates `external_auth` without recreating `qortal_node` dependencies. - Re-syncs public env URLs, re-validates Nextcloud URL config, validates Talk backends, and ensures CustomPWA push/VAPID config when applicable. - `upgrade-devprod-nextcloud.sh` - Safe Nextcloud Docker upgrade flow for dev-prod stacks. - Runs status precheck, optional backup, maintenance mode on/off, container recreate, `occ upgrade`, and post-repair tasks. - Detects Nextcloud DB backend from env (`mysql`/`postgres`) for backup, with optional `--db-engine` override. - Use `--nc34` for `nextcloud:34-apache` or `--nextcloud-image ` for pinned tags. `--nc33` remains available as a legacy fallback. - Supports `--ssl`/`--nossl`, `--backup-dir`, `--skip-backup`, `--skip-precheck`, and `--no-pull`. - `docker-qortal-restart.sh` - Restarts `qortal_node` only (plus optional `--restart-external-auth`). ## `scripts/` Helpers - `scripts/discover-cloud-topology.sh` - Topology detector for setup planning. - Outputs JSON by default, `--text` for operator-readable summary. - Recommends an install profile command for current environment. - `scripts/apply-topology-profile.sh` - Applies a detected/setup profile. - `repo-devprod-bootstrap`: runs env key sync + recreate + finish setup. - `host-nextcloud-hybrid`: runs the host-hybrid installer and lifecycle wiring. - `scripts/install-host-nextcloud-hybrid.sh` - Boots the host-hybrid broker/app stack for an existing Nextcloud host. - `scripts/update-host-nextcloud-hybrid.sh` - Refreshes bundled contexts and reapplies the host-hybrid installer. - `scripts/restart-host-nextcloud-hybrid.sh` - Recreates the active host-hybrid sidecar services. - `scripts/stop-host-nextcloud-hybrid.sh` - Stops the active host-hybrid sidecar services without removing volumes. - `scripts/topology/*` - Internal grouped implementation for topology-aware setup logic. - `scripts/nextcloud-occ.sh ` - Wrapper for running Nextcloud `occ` inside Docker app container. - `scripts/ensure-compose-project-name.sh` - Pins `COMPOSE_PROJECT_NAME` in `.env.devprod` so folder renames do not attach the cloud to new named volumes. - Use `--project-name ` when migrating an existing instance. - Use `--write-if-missing` for fresh installs/checkouts that do not have a pinned project name yet. - When `COMPOSE_PROJECT_NAME` is unset, the runtime scripts still fall back to the env file directory name for backward compatibility with older installs. - `scripts/select-qortal-p2p-port.sh ` - Chooses an available Qortal API host port and sets P2P to API+1 and QDN to API+3. - `scripts/ensure-qortal-settings.sh` - Initializes `qortal/data/settings.json` from default template when missing. - Ensures `autoUpdateEnabled` is set to `false` in `settings.json`. - `scripts/ensure-qortal-start-args.sh` - Initializes `qortal/data/start-arguments.txt` with auto-sized JVM args when missing. - Auto-managed files are refreshed on restart so the heap follows host RAM. - Optional argument: `` to override sizing with `QORTAL_JVM_MEMORY_ARGS`. - `scripts/ensure-broker-internal-token.sh ` - Ensures `BROKER_INTERNAL_API_TOKEN` exists (auto-generates when missing). - Sets `BROKER_CORS_ALLOWED_ORIGINS` from `NEXTCLOUD_PUBLIC_URL` when empty. - `scripts/ensure-oidc-signing-key.sh ` - Ensures the broker has a stable OIDC signing key. - Validates existing `OIDC_PRIVATE_KEY_PEM` or `OIDC_PRIVATE_KEY_PEM_B64`. - Generates `OIDC_PRIVATE_KEY_PEM_B64` when no stable key is configured. - `scripts/evaluate-set-size-defaults.sh` - Evaluates host RAM and recommends env-backed upload/publish size defaults. - Can optionally write `BROKER_REQUEST_BODY_LIMIT`, `NEXTCLOUD_PHP_UPLOAD_MAX_FILESIZE`, `NEXTCLOUD_PHP_POST_MAX_SIZE`, `NEXTCLOUD_PHP_MEMORY_LIMIT`, and blank `QORTAL_FILES_PUBLISH_MAX_SIZE`. - Keeps Nextcloud PHP upload/post capacity decoupled from QDN publish limits; upload/post defaults are 5G. - Targets the repo's Apache-based Nextcloud image; does not tune PHP-FPM `pool.d`. - `scripts/ensure-nextcloud-apps-writable.sh` - Ensures `/var/www/html/apps` and `/var/www/html/custom_apps` are writable by Nextcloud web user. - Called automatically by install/recreate/finish/start-devprod flows. - `scripts/ensure-nextcloud-url-config.sh` - Aligns Nextcloud URL/proxy config with env and runtime topology. - Sets `trusted_domains`, `trusted_proxies`, `forwarded_for_headers`, and `overwrite*` values. - Detects host->container gateway proxy IP for no-SSL external reverse-proxy layouts. - `scripts/register-global-caddy-proxy.sh` - Writes one cloud's site fragment into a shared/global Caddy config directory. - Supports containerized shared Caddy via `host.docker.internal`. - Publishes optional Qortal gateway proxy blocks when `QORTAL_PUBLIC_GATEWAY_URL` (or alias) is set. - `scripts/validate-proxy-alignment.sh` - Validates Apache `remoteip`, Nextcloud trusted proxy headers, and no-SSL proxy expectations. - Uses `EXTERNAL_PROXY_MODE` to distinguish bundled SSL, manual external proxy, and shared/global Caddy expectations. - `scripts/ensure-nextcloud-talk-config.sh` - Ensures and verifies Nextcloud Talk HPB/STUN/TURN/recording config from env values. - Used to catch cases where env is correct but Talk backends were not actually registered inside the cloud. - `scripts/ensure-custom-pwa-push-config.sh` - Ensures CustomPWA VAPID env values exist, auto-generates missing keypairs, enables/install `custom_pwa` when configured, and syncs push settings into Nextcloud app config. - `scripts/setup-shared-host-global-caddy.sh` - Multi-instance helper for switching repo-based clouds into no-SSL shared-Caddy mode on one host. - Updates bind hosts and `PUBLIC_HTTPS_PORT`, recreates no-SSL stacks, registers each cloud in shared Caddy, syncs Nextcloud proxy config, and validates Talk backend wiring. - `scripts/nextcloud-vm-install.sh` - VM/non-container oriented installation helper. - `scripts/analyze-existing-nextcloud-instance.sh` - Read-only host/environment analyzer for planning adoption of an existing Nextcloud installation into the NuQloud/Qortal stack. - `scripts/finish-initial-setup.sh` - Finalizes first-run OIDC/app wiring and syncs identity-provider runtime plus billing/CHD values into `qortal_integration`. - Enables bundled custom apps including `nuqloud_scrum`. - Supports rebrand env aliases with precedence: `NUQLOUD_*` → `SOVEREIGN_*` → `SC_*` for CHD/billing-related keys. - `scripts/ensure-qortal-integration-runtime-config.sh` - Syncs env-backed broker, External Auth, Qortal node, gateway, and identity-provider settings into `qortal_integration`. - Also syncs broker OIDC email-requirement policy through the internal broker token. - `scripts/migrate-nuqloud-branding.sh` - One-time migration helper for existing pre-NuQloud dev clouds. - Backs up env, seeds missing `NUQLOUD_*` aliases from `SOVEREIGN_*`/`SC_*`, and can optionally switch `NEXTCLOUD_SERVICE_USER` to `nuqloud_oidc_service`. - Default behavior keeps existing service user (legacy `sovereign_oidc_service` remains valid). - Can run finish/auth repair steps to apply settings and verify broker service auth. - `scripts/install-production-docker.sh` - Production-oriented Docker installer baseline. - Fresh env creation now pins `COMPOSE_PROJECT_NAME` automatically so instance identity is stable across folder renames. - Ensures bundled `QORTAL_NODE_CONTEXT` is cloned from primary upstream (`https://github.com/Qortal/qortal.git`). - For direct repo refresh/branch pinning, use `scripts/ensure-qortal-core-repo.sh --refresh [--branch ]`. - `--one-click` runs non-interactive auto-configuration, starts services, and auto-runs first-run finish steps. - Feature flags: `--with-office`, `--with-signaling` (auto-enables talk + turn + janus + recording), `--with-talk-signaling` (Talk HPB profile only). - Recording override flags: `--with-recording`, `--without-recording`. - Domain inputs: `--nextcloud-domain`, `--broker-domain`, `--office-domain`, `--signaling-domain`. - Guided mode prompts for Nextcloud image selection (`nextcloud:34-apache` default, `nextcloud:33-apache` fallback, or custom tag with warning). - `scripts/setup-appstore-mimic.sh` - Switches env to isolated `NEXTCLOUD_CUSTOM_APPS_PATH` and seeds packaged-style app copies for marketplace-flow simulation. ## Recommended Baseline Flows ### Dev-prod no-SSL (external reverse proxy) 1. `./start-devprod.sh` 2. `./recreate-devprod.sh` 3. `make logs-devprod-nossl` ### Dev-prod SSL (internal Caddy) 1. `./start-devprod.sh` 2. `./recreate-devprod.sh --ssl` 3. `make logs-devprod` ### Production-oriented Docker bootstrap (new) 1. `./scripts/install-production-docker.sh --mode nossl --with-external-auth` 2. Optional media/collaboration stack: `--with-office --with-signaling` 3. Optional HPB-only variant: `--with-talk-signaling` (then add `--with-turn` / `--with-janus` as needed) 4. Validate service health and OIDC setup. 5. Move secrets from templates into managed secret store as needed. For Talk HPB, `TALK_SIGNALING_PORT` is the host/public port and `TALK_SIGNALING_CONTAINER_PORT` is the container listen port. Keep the container port at `8081` unless the upstream Talk image changes. ### One-click bootstrap (non-interactive) 1. `./scripts/install-production-docker.sh --one-click --mode nossl` 2. Validate service health and broker/external-auth wiring. ### Topology-aware bootstrap (new) 1. `./scripts/discover-cloud-topology.sh --text` 2. Run recommended command from detector output, or: 3. `./scripts/apply-topology-profile.sh --profile repo-devprod-bootstrap` 4. For an existing host Nextcloud, use `./scripts/install-host-nextcloud-hybrid.sh --occ-path ` and then the lifecycle wrappers above. ### App Store mimic (isolated custom_apps mount) 1. `./scripts/setup-appstore-mimic.sh --env-file .env.devprod` 2. `./scripts/install-production-docker.sh --mode nossl --with-external-auth --env-file .env.devprod` 3. Validate with `occ app:list` and OIDC provider commands. ### One-time NuQloud rebrand migration (existing cloud) 1. `./scripts/migrate-nuqloud-branding.sh --env-file .env.devprod --mode nossl` 2. Optional service user migration: `./scripts/migrate-nuqloud-branding.sh --env-file .env.devprod --mode nossl --switch-service-user`