#!/usr/bin/env bash set -euo pipefail # shellcheck disable=SC1091 source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/lib/runtime-env.sh" app_source_dir="$repo_root/apps/nextcloud-app" nextcloud_occ() { compose exec -T --user www-data --workdir /var/www/html nextcloud php occ "$@" } nextcloud_is_installed() { nextcloud_occ status --output=json 2>/dev/null | grep -q '"installed":true' } compose up -d --build compose exec -T --user root nextcloud sh -lc ' mkdir -p /var/www/html/custom_apps/betternascontrolplane chown -R www-data:www-data /var/www/html/custom_apps ' compose cp "$app_source_dir/." nextcloud:/var/www/html/custom_apps/betternascontrolplane compose exec -T --user root nextcloud sh -lc ' chown -R www-data:www-data /var/www/html/custom_apps/betternascontrolplane ' echo "Waiting for Nextcloud command interface..." ready=0 for _ in {1..60}; do if nextcloud_occ status --output=json >/dev/null 2>&1; then ready=1 break fi sleep 2 done if [[ "$ready" -ne 1 ]]; then echo "Nextcloud command interface did not become ready in time." >&2 exit 1 fi if ! nextcloud_is_installed; then echo "Nextcloud is not installed yet. Running CLI install..." nextcloud_occ maintenance:install \ --database pgsql \ --database-name nextcloud \ --database-host db \ --database-user nextcloud \ --database-pass nextcloud \ --admin-user admin \ --admin-pass admin \ --data-dir /var/www/html/data if ! nextcloud_is_installed; then echo "Nextcloud did not report an installed state after CLI install." >&2 exit 1 fi fi nextcloud_occ app:enable --force betternascontrolplane >/dev/null echo "Clone: $BETTERNAS_CLONE_NAME" echo "Nextcloud: $NEXTCLOUD_BASE_URL" echo "betterNAS control plane: http://localhost:$BETTERNAS_CONTROL_PLANE_PORT" echo "betterNAS node agent: http://localhost:$BETTERNAS_NODE_AGENT_PORT" echo "WebDAV mount URL: $BETTERNAS_EXAMPLE_MOUNT_URL"