install.sh 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #!/bin/bash
  2. INSTALL_DIR="${PWD}"
  3. # Check system requirements: Git, Node & NPM
  4. EXC_GIT="$(/usr/bin/which git)"
  5. if [ -z "$EXC_GIT" ]; then
  6. echo "[ERROR] Missing required system dependency 'git'." >&2
  7. echo "Please install using \"apt install git\"" >&2
  8. exit 1
  9. fi
  10. EXC_DOCKER="$(/usr/bin/which docker)"
  11. if [ -z "$EXC_DOCKER" ]; then
  12. echo "[ERROR] Missing required system dependency 'docker'." >&2
  13. echo "Please install using the official documentation." >&2
  14. exit 1
  15. fi
  16. GCC_CONFIG_DIR="${INSTALL_DIR}/google-cloud"
  17. FCM_ACCOUNT_JSON="${GCC_CONFIG_DIR}/firebase-adminsdk.json"
  18. if [ ! -d "$GCC_CONFIG_DIR" ]; then
  19. echo "[ERROR] Missing required google cloud key files. Please prepare directory 'google-cloud' in install directory." >&2
  20. exit 1
  21. fi
  22. if [ ! -f "$FCM_ACCOUNT_JSON" ]; then
  23. echo "[ERROR] Missing required Firebase Admin SDK key file. Please provide this file as 'google-cloud/firebase-adminsdk.json' in order to install." >&2
  24. exit 1
  25. fi
  26. # exit on error exit codes
  27. set -e
  28. TMPFOLDER="/tmp/hbbq/monitoring/$(date +'%Y%m%d%H%M%S')"
  29. echo "[INSTALL] Cloning entire project into temp folder $TMPFOLDER"
  30. mkdir -p "$TMPFOLDER"
  31. git clone https://gogs.hostbbq.com/hostbbq/hostbbq-monitoring.git "$TMPFOLDER"
  32. cd "$TMPFOLDER"
  33. echo "[INSTALL] Cloning submodules ..."
  34. git submodule init
  35. git submodule update
  36. if [[ -f "$INSTALL_DIR/.env" ]]; then
  37. export $(cat "$INSTALL_DIR/.env" | xargs)
  38. else
  39. export $(cat "$TMPFOLDER/server/.env.default" | xargs)
  40. fi
  41. echo "Checking data volume directory $INSTALL_DIR/$DATA_DIR"
  42. if [[ ! -d "$INSTALL_DIR/$DATA_DIR" ]]; then
  43. mkdir "$INSTALL_DIR/$DATA_DIR"
  44. fi
  45. echo "Checking data volume directory $INSTALL_DIR/$DB_DIR"
  46. if [[ ! -d "$INSTALL_DIR/$DB_DIR" ]]; then
  47. mkdir "$INSTALL_DIR/$DB_DIR"
  48. fi
  49. if [ -f "$INSTALL_DIR/.env" ]; then
  50. cp "$INSTALL_DIR/.env" ./
  51. else
  52. cp "$TMPFOLDER/server/.env.default" ./.env
  53. fi
  54. cp -r "$GCC_CONFIG_DIR" ./server/
  55. docker compose -f server.docker-compose.yml build
  56. echo "[INSTALL] Installing server application"
  57. if [ -d "$INSTALL_DIR/dist" ]; then
  58. rm -rf "$INSTALL_DIR/dist"
  59. fi
  60. if [ ! -f "$INSTALL_DIR/.env" ]; then
  61. cp -v "$TMPFOLDER/server/.env.default" "$INSTALL_DIR/.env"
  62. fi
  63. echo "[INSTALL] Creating docker-compose.yml"
  64. . "$INSTALL_DIR/.env"
  65. envsubst < "$TMPFOLDER/server.docker-compose.yml" > "$INSTALL_DIR/docker-compose.yml"
  66. cd "$INSTALL_DIR"
  67. COMPOSE_PROJECT_NAME="monitoring-server" \
  68. docker compose up -d --force-recreate
  69. echo "[CLEANUP] Removing temp folder $TMPFOLDER"
  70. rm -rf "$TMPFOLDER"
  71. echo "[SUCCESS] HostBBQ Monitoring Server installed and activated successfully"