install.sh 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #!/bin/bash
  2. cd src/server
  3. printf "==========================\n"
  4. printf "|| OASIS Installer v0.5 ||\n"
  5. printf "==========================\n"
  6. sudo apt-get install -y git curl tar
  7. curl -sL http://deb.nodesource.com/setup_22.x | sudo bash -
  8. sudo apt-get install -y nodejs
  9. GREEN=$'\e[32m'
  10. DIM=$'\e[2m'
  11. RESET=$'\e[0m'
  12. echo ""
  13. echo "Installing Node.js packages..."
  14. echo ""
  15. NPM_LOG=$(mktemp)
  16. if ! npm install . --silent --no-audit --no-fund --no-progress --loglevel=error >"$NPM_LOG" 2>&1; then
  17. echo "npm install failed. Output:"
  18. cat "$NPM_LOG"
  19. rm -f "$NPM_LOG"
  20. exit 1
  21. fi
  22. rm -f "$NPM_LOG"
  23. DEPS=$(node -e "const p=require('./package.json'); console.log(Object.keys({...(p.dependencies||{}), ...(p.devDependencies||{})}).sort().join('\n'))" 2>/dev/null)
  24. for dep in $DEPS; do
  25. if [ -d "node_modules/$dep" ]; then
  26. printf " ${GREEN}[✓]${RESET} %s\n" "$dep"
  27. fi
  28. done
  29. echo ""
  30. npm audit fix --silent --no-fund --no-progress >/dev/null 2>&1 || true
  31. MODEL_DIR="../AI"
  32. LLM_FILE="oasis-42-1-chat.Q4_K_M.gguf"
  33. LLM_TAR="$LLM_FILE.tar.gz"
  34. LLM_URL="https://solarnethub.com/code/models/$LLM_TAR"
  35. EMB_DIR="$MODEL_DIR/embeddings"
  36. EMB_TAR="oasis-embeddings.tar.gz"
  37. EMB_URL="https://solarnethub.com/code/models/$EMB_TAR"
  38. EMB_FILE="$EMB_DIR/onnx/model_quantized.onnx"
  39. CONFIG_PATH="../configs/oasis-config.json"
  40. CHOICE="${OASIS_AI:-}"
  41. if [ -z "$CHOICE" ] && [ -t 0 ]; then
  42. echo ""
  43. echo "Do you want to enable AI features in Oasis?"
  44. echo ""
  45. echo " [1] Full AI: chat assistant (42) + smart navigation prompt (~3.9 GB)"
  46. echo " [2] Smart navigation only (~150 MB)"
  47. echo " [3] No AI features (no downloads, AI tabs hidden)"
  48. echo ""
  49. read -p "Choose [1/2/3] (default 3): " ANS
  50. case "$ANS" in
  51. 1) CHOICE="full" ;;
  52. 2) CHOICE="nav" ;;
  53. *) CHOICE="none" ;;
  54. esac
  55. fi
  56. if [ -z "$CHOICE" ]; then
  57. CHOICE="none"
  58. fi
  59. case "$CHOICE" in
  60. full)
  61. WANT_LLM=1
  62. WANT_EMB=1
  63. ;;
  64. nav)
  65. WANT_LLM=0
  66. WANT_EMB=1
  67. ;;
  68. *)
  69. WANT_LLM=0
  70. WANT_EMB=0
  71. ;;
  72. esac
  73. if [ "$WANT_LLM" = "1" ] && [ ! -f "$MODEL_DIR/$LLM_FILE" ]; then
  74. echo ""
  75. echo "downloading AI model [size: 3,8 GiB (4.081.004.224 bytes)] ..."
  76. curl -L -o "$MODEL_DIR/$LLM_TAR" "$LLM_URL"
  77. echo ""
  78. echo "extracting package: $LLM_TAR..."
  79. echo ""
  80. tar -xzf "$MODEL_DIR/$LLM_TAR" -C "$MODEL_DIR"
  81. rm "$MODEL_DIR/$LLM_TAR"
  82. fi
  83. if [ "$WANT_EMB" = "1" ] && [ ! -f "$EMB_FILE" ]; then
  84. echo ""
  85. echo "downloading embeddings model [size: ~60 MiB] ..."
  86. curl -L -o "$MODEL_DIR/$EMB_TAR" "$EMB_URL"
  87. echo ""
  88. echo "extracting package: $EMB_TAR..."
  89. echo ""
  90. tar -xzf "$MODEL_DIR/$EMB_TAR" -C "$MODEL_DIR"
  91. rm "$MODEL_DIR/$EMB_TAR"
  92. fi
  93. if [ -f "$CONFIG_PATH" ]; then
  94. AI_VAL="off"; NAV_VAL="off"
  95. [ "$WANT_LLM" = "1" ] && AI_VAL="on"
  96. [ "$WANT_EMB" = "1" ] && NAV_VAL="on"
  97. node -e "
  98. const fs = require('fs');
  99. const p = '$CONFIG_PATH';
  100. const cfg = JSON.parse(fs.readFileSync(p, 'utf8'));
  101. cfg.modules = cfg.modules || {};
  102. cfg.modules.aiMod = '$AI_VAL';
  103. cfg.modules.aiNavMod = '$NAV_VAL';
  104. fs.writeFileSync(p, JSON.stringify(cfg, null, 2) + '\n');
  105. "
  106. fi
  107. printf "==========================\n"
  108. printf "\nOASIS has been correctly deployed! ;)\n\n"
  109. printf "Run: 'sh oasis.sh' to start ...\n\n"