2026-08-22 15:02:38 +02:00
|
|
|
#!/usr/bin/env bash
|
2026-08-22 15:23:33 +02:00
|
|
|
# bootstrap-install.sh — klona från Gitea och integrera i befintlig nextcloud-node-red
|
2026-08-22 15:02:38 +02:00
|
|
|
#
|
2026-08-22 15:23:33 +02:00
|
|
|
# Skapar INTE ny Node-RED-container. Patchar /home/ncdeploy/nextcloud-node-red och bygger om.
|
2026-08-22 15:02:38 +02:00
|
|
|
#
|
2026-08-22 15:23:33 +02:00
|
|
|
# One-liner:
|
2026-08-22 15:02:38 +02:00
|
|
|
# curl -fsSL https://git.domain.name/your-user/nextcloud-collabora-nodered/raw/branch/main/bootstrap-install.sh | bash
|
|
|
|
|
#
|
2026-08-22 15:23:33 +02:00
|
|
|
# Som ncdeploy (rekommenderat):
|
|
|
|
|
# curl -fsSL ... | sudo -u ncdeploy bash
|
2026-08-22 15:02:38 +02:00
|
|
|
#
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
|
|
VERSION="1.0.0"
|
|
|
|
|
GIT_REPO_URL="${GIT_REPO_URL:-https://git.domain.name/your-user/nextcloud-collabora-nodered.git}"
|
|
|
|
|
GIT_BRANCH="${GIT_BRANCH:-main}"
|
2026-08-22 15:23:33 +02:00
|
|
|
INSTALL_MODE="${INSTALL_MODE:-integrate}"
|
|
|
|
|
|
|
|
|
|
# Som root: använd ncdeploy-sökvägar (inte /root)
|
|
|
|
|
if [ "$(id -u)" -eq 0 ] && [ -d "/home/ncdeploy" ]; then
|
|
|
|
|
INSTALL_DIR="${INSTALL_DIR:-/home/ncdeploy/nextcloud-collabora-nodered}"
|
|
|
|
|
NODERED_DIR="${NODERED_DIR:-/home/ncdeploy/nextcloud-node-red}"
|
|
|
|
|
else
|
|
|
|
|
INSTALL_DIR="${INSTALL_DIR:-${HOME}/nextcloud-collabora-nodered}"
|
|
|
|
|
NODERED_DIR="${NODERED_DIR:-${HOME}/nextcloud-node-red}"
|
|
|
|
|
fi
|
|
|
|
|
|
2026-08-22 15:02:38 +02:00
|
|
|
NC_HOST="${NC_HOST:-cloud.domain.name}"
|
|
|
|
|
CODE_CONTAINER="${CODE_CONTAINER:-code}"
|
2026-08-22 15:23:33 +02:00
|
|
|
NODERED_CONTAINER="${NODERED_CONTAINER:-nextcloud-node-red}"
|
|
|
|
|
NODERED_PORT="${NODERED_PORT:-1880}"
|
2026-08-22 15:02:38 +02:00
|
|
|
SKIP_APT="${SKIP_APT:-0}"
|
2026-08-22 15:23:33 +02:00
|
|
|
SKIP_DOCKER_INSTALL="${SKIP_DOCKER_INSTALL:-1}"
|
2026-08-22 15:02:38 +02:00
|
|
|
|
|
|
|
|
log() { printf '[bootstrap] %s\n' "$*"; }
|
|
|
|
|
warn() { printf '[bootstrap] VARNING: %s\n' "$*" >&2; }
|
|
|
|
|
die() { printf '[bootstrap] FEL: %s\n' "$*" >&2; exit 1; }
|
|
|
|
|
|
|
|
|
|
run_as_root() {
|
2026-08-22 15:23:33 +02:00
|
|
|
if [ "$(id -u)" -eq 0 ]; then "$@"; elif command -v sudo >/dev/null 2>&1; then sudo "$@"; else die "sudo krävs"; fi
|
2026-08-22 15:02:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
install_apt_packages() {
|
|
|
|
|
[ "${SKIP_APT}" = "1" ] && return 0
|
2026-08-22 15:23:33 +02:00
|
|
|
command -v apt-get >/dev/null 2>&1 || return 0
|
|
|
|
|
log "Installerar git, curl, rsync..."
|
2026-08-22 15:02:38 +02:00
|
|
|
run_as_root apt-get update -qq
|
|
|
|
|
run_as_root apt-get install -y -qq git curl ca-certificates rsync
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
install_docker() {
|
2026-08-22 15:23:33 +02:00
|
|
|
[ "${SKIP_DOCKER_INSTALL}" = "1" ] && return 0
|
|
|
|
|
command -v docker >/dev/null 2>&1 && docker info >/dev/null 2>&1 && return 0
|
2026-08-22 15:02:38 +02:00
|
|
|
log "Installerar Docker..."
|
2026-08-22 15:23:33 +02:00
|
|
|
curl -fsSL https://get.docker.com | run_as_root sh
|
2026-08-22 15:02:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
clone_or_update_repo() {
|
|
|
|
|
if [ -d "${INSTALL_DIR}/.git" ]; then
|
2026-08-22 15:23:33 +02:00
|
|
|
log "Uppdaterar ${INSTALL_DIR}..."
|
2026-08-22 15:02:38 +02:00
|
|
|
git -C "${INSTALL_DIR}" fetch origin
|
|
|
|
|
git -C "${INSTALL_DIR}" checkout "${GIT_BRANCH}"
|
2026-08-22 15:23:33 +02:00
|
|
|
git -C "${INSTALL_DIR}" pull --ff-only origin "${GIT_BRANCH}" || warn "git pull misslyckades"
|
2026-08-22 15:02:38 +02:00
|
|
|
return 0
|
|
|
|
|
fi
|
|
|
|
|
log "Klonar ${GIT_REPO_URL} → ${INSTALL_DIR}"
|
|
|
|
|
mkdir -p "$(dirname "${INSTALL_DIR}")"
|
|
|
|
|
git clone --branch "${GIT_BRANCH}" --depth 1 "${GIT_REPO_URL}" "${INSTALL_DIR}"
|
2026-08-22 15:23:33 +02:00
|
|
|
if [ "$(id -u)" -eq 0 ] && [ -d "/home/ncdeploy" ]; then
|
|
|
|
|
chown -R ncdeploy:ncdeploy "${INSTALL_DIR}" 2>/dev/null || true
|
|
|
|
|
fi
|
2026-08-22 15:02:38 +02:00
|
|
|
}
|
|
|
|
|
|
2026-08-22 15:23:33 +02:00
|
|
|
preflight() {
|
|
|
|
|
command -v docker >/dev/null 2>&1 || die "Docker saknas"
|
|
|
|
|
docker ps --format '{{.Names}}' | grep -qx "${NODERED_CONTAINER}" \
|
|
|
|
|
|| die "'${NODERED_CONTAINER}' körs inte — detta skript integrerar i befintlig Node-RED, skapar ingen ny"
|
|
|
|
|
docker ps --format '{{.Names}}' | grep -qx "${CODE_CONTAINER}" \
|
|
|
|
|
|| die "'${CODE_CONTAINER}' (Collabora) körs inte"
|
|
|
|
|
[ -d "${NODERED_DIR}" ] || die "nextcloud-node-red-katalog saknas: ${NODERED_DIR}"
|
|
|
|
|
log "OK: ${NODERED_CONTAINER} + ${CODE_CONTAINER} körs"
|
2026-08-22 15:02:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
main() {
|
2026-08-22 15:23:33 +02:00
|
|
|
log "bootstrap v${VERSION} — läge: ${INSTALL_MODE} (befintlig Node-RED :${NODERED_PORT})"
|
|
|
|
|
log "Repo → ${INSTALL_DIR}"
|
|
|
|
|
log "Integrera → ${NODERED_DIR}"
|
2026-08-22 15:02:38 +02:00
|
|
|
|
|
|
|
|
if [ "$(id -u)" -eq 0 ] && [ -z "${SUDO_USER:-}" ]; then
|
2026-08-22 15:23:33 +02:00
|
|
|
warn "Körs som root — rekommenderat: curl ... | sudo -u ncdeploy bash"
|
2026-08-22 15:02:38 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
install_apt_packages
|
|
|
|
|
install_docker
|
|
|
|
|
clone_or_update_repo
|
2026-08-22 15:23:33 +02:00
|
|
|
preflight
|
2026-08-22 15:02:38 +02:00
|
|
|
|
2026-08-22 15:23:33 +02:00
|
|
|
chmod +x "${INSTALL_DIR}/install.sh" "${INSTALL_DIR}/scripts/integrate-into-nodered.sh"
|
2026-08-22 15:02:38 +02:00
|
|
|
INSTALL_DIR="${INSTALL_DIR}" \
|
2026-08-22 15:23:33 +02:00
|
|
|
INSTALL_MODE="${INSTALL_MODE}" \
|
|
|
|
|
NODERED_DIR="${NODERED_DIR}" \
|
2026-08-22 15:02:38 +02:00
|
|
|
CODE_CONTAINER="${CODE_CONTAINER}" \
|
|
|
|
|
bash "${INSTALL_DIR}/install.sh"
|
|
|
|
|
|
2026-08-22 15:23:33 +02:00
|
|
|
local host_ip
|
|
|
|
|
host_ip="$(hostname -I 2>/dev/null | awk '{print $1}' || echo "127.0.0.1")"
|
2026-08-22 15:02:38 +02:00
|
|
|
|
|
|
|
|
cat <<EOF
|
|
|
|
|
|
|
|
|
|
================================================================================
|
2026-08-22 15:23:33 +02:00
|
|
|
Klart — Collabora-noder i befintlig nextcloud-node-red
|
2026-08-22 15:02:38 +02:00
|
|
|
================================================================================
|
2026-08-22 15:23:33 +02:00
|
|
|
Node-RED: http://${host_ip}:${NODERED_PORT} (samma som förut)
|
|
|
|
|
Repo: ${INSTALL_DIR}
|
|
|
|
|
Patchad: ${NODERED_DIR}
|
2026-08-22 15:02:38 +02:00
|
|
|
|
|
|
|
|
Uppdatera senare:
|
|
|
|
|
cd ${INSTALL_DIR} && git pull && ./install.sh
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
main "$@"
|