| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #!/bin/bash
- INSTALL_DIR="${PWD}"
- # Check system requirements: Git, Node & NPM
- EXC_GIT="$(/usr/bin/which git)"
- if [ -z "$EXC_GIT" ]; then
- echo "[ERROR] Missing required system dependency 'git'." >&2
- echo "Please install using \"apt install git\"" >&2
- exit 1
- fi
- EXC_DOCKER="$(/usr/bin/which docker)"
- if [ -z "$EXC_DOCKER" ]; then
- echo "[ERROR] Missing required system dependency 'docker'." >&2
- echo "Please install using the official documentation." >&2
- exit 1
- fi
- GCC_CONFIG_DIR="${INSTALL_DIR}/google-cloud"
- FCM_ACCOUNT_JSON="${GCC_CONFIG_DIR}/firebase-adminsdk.json"
- if [ ! -d "$GCC_CONFIG_DIR" ]; then
- echo "[ERROR] Missing required google cloud key files. Please prepare directory 'google-cloud' in install directory." >&2
- exit 1
- fi
- if [ ! -f "$FCM_ACCOUNT_JSON" ]; then
- echo "[ERROR] Missing required Firebase Admin SDK key file. Please provide this file as 'google-cloud/firebase-adminsdk.json' in order to install." >&2
- exit 1
- fi
- # exit on error exit codes
- set -e
- TMPFOLDER="/tmp/hbbq/monitoring/$(date +'%Y%m%d%H%M%S')"
- echo "[INSTALL] Cloning entire project into temp folder $TMPFOLDER"
- mkdir -p "$TMPFOLDER"
- git clone https://gogs.hostbbq.com/hostbbq/hostbbq-monitoring.git "$TMPFOLDER"
- cd "$TMPFOLDER"
- echo "[INSTALL] Cloning submodules ..."
- git submodule init
- git submodule update
- if [[ -f "$INSTALL_DIR/.env" ]]; then
- export $(cat "$INSTALL_DIR/.env" | xargs)
- else
- export $(cat "$TMPFOLDER/server/.env.default" | xargs)
- fi
- echo "Checking data volume directory $INSTALL_DIR/$DB_DIR"
- if [[ ! -d "$INSTALL_DIR/$DB_DIR" ]]; then
- mkdir "$INSTALL_DIR/$DB_DIR"
- fi
- if [ -f "$INSTALL_DIR/.env" ]; then
- cp "$INSTALL_DIR/.env" ./
- else
- cp "$TMPFOLDER/server/.env.default" ./.env
- fi
- cp -r "$GCC_CONFIG_DIR" ./server/
- docker compose -f server.docker-compose.yml build
- echo "[INSTALL] Installing server application"
- if [ -d "$INSTALL_DIR/dist" ]; then
- rm -rf "$INSTALL_DIR/dist"
- fi
- if [ ! -f "$INSTALL_DIR/.env" ]; then
- cp -v "$TMPFOLDER/server/.env.default" "$INSTALL_DIR/.env"
- fi
- echo "[INSTALL] Creating docker-compose.yml"
- . "$INSTALL_DIR/.env"
- envsubst < "$TMPFOLDER/server.docker-compose.yml" > "$INSTALL_DIR/docker-compose.yml"
- cd "$INSTALL_DIR"
- DOCKER_NETWORK_NAME=hostbbq-monitoring-vlan
- if ! docker network inspect ${DOCKER_NETWORK_NAME} > /dev/null 2>&1; then
- if [[ "${COMMAND}" == "up" ]]; then
- echo "⭐ Creating network '${DOCKER_NETWORK_NAME}'..."
- docker network create --subnet=172.20.5.0/24 "${DOCKER_NETWORK_NAME}"
- fi
- else
- if [[ "${COMMAND}" == "up" ]]; then
- echo "✔ Network '${DOCKER_NETWORK_NAME}' exists."
- fi
- fi
- COMPOSE_PROJECT_NAME="monitoring-server" \
- docker compose up -d --force-recreate
- echo "[CLEANUP] Removing temp folder $TMPFOLDER"
- rm -rf "$TMPFOLDER"
- echo "[SUCCESS] HostBBQ Monitoring Server installed and activated successfully"
|