Merge pull request #7 from outis1one/claude/cleanup-setup-webui-bCgPE
Claude/cleanup setup webui b cg pe
This commit is contained in:
+94
-55
@@ -225,25 +225,35 @@ if $INSTALL_AI; then
|
||||
echo -e " ${BOLD}[2/6] Where should Ollama models be stored?${NC}"
|
||||
echo " (Models are large — 5-50GB each. A fast SSD or large HDD is ideal.)"
|
||||
echo ""
|
||||
echo " Available mount points with >20GB free:"
|
||||
df -h --output=target,avail,fstype 2>/dev/null \
|
||||
| awk 'NR>1 && $2~/[0-9]/ {
|
||||
val=$2; unit=substr(val,length(val));
|
||||
num=substr(val,1,length(val)-1)+0;
|
||||
if ((unit=="G" && num>=20) || unit=="T") print " " $0
|
||||
}' | head -10
|
||||
mapfile -t _MPTS < <(
|
||||
df -h --output=target,avail,fstype 2>/dev/null \
|
||||
| awk 'NR>1 && $2~/[0-9]/ {
|
||||
val=$2; unit=substr(val,length(val));
|
||||
num=substr(val,1,length(val)-1)+0;
|
||||
if ((unit=="G" && num>=20) || unit=="T") print $0
|
||||
}' | head -10
|
||||
)
|
||||
echo " 0) Docker volume (default — /var/lib/docker/volumes/)"
|
||||
for _i in "${!_MPTS[@]}"; do
|
||||
printf " %d) %s\n" "$((_i+1))" "${_MPTS[$_i]}"
|
||||
done
|
||||
echo ""
|
||||
echo " 1) Docker volume (default — stored in /var/lib/docker/volumes/)"
|
||||
echo " 2) Custom path (e.g. /mnt/ssd/ollama or /data/ollama)"
|
||||
echo ""
|
||||
read -rp " Choice [1]: " STORAGE_CHOICE
|
||||
STORAGE_CHOICE="${STORAGE_CHOICE:-1}"
|
||||
if [[ "$STORAGE_CHOICE" == "2" ]]; then
|
||||
read -rp " Enter full path for Ollama models: " OLLAMA_HOST_PATH
|
||||
OLLAMA_HOST_PATH="${OLLAMA_HOST_PATH%/}" # strip trailing slash
|
||||
read -rp " Choice [0]: " STORAGE_CHOICE
|
||||
STORAGE_CHOICE="${STORAGE_CHOICE:-0}"
|
||||
if [[ "$STORAGE_CHOICE" == "0" ]]; then
|
||||
OLLAMA_STORAGE="volume"
|
||||
elif [[ "$STORAGE_CHOICE" =~ ^[0-9]+$ ]] && (( STORAGE_CHOICE >= 1 && STORAGE_CHOICE <= ${#_MPTS[@]} )); then
|
||||
_MP=$(awk '{print $1}' <<< "${_MPTS[$(( STORAGE_CHOICE-1 ))]}")
|
||||
OLLAMA_HOST_PATH="$_MP/ollama-models"
|
||||
OLLAMA_STORAGE="bind"
|
||||
ok "Ollama models → $OLLAMA_HOST_PATH"
|
||||
else
|
||||
# Fallback: treat input as a literal path
|
||||
OLLAMA_HOST_PATH="${STORAGE_CHOICE%/}"
|
||||
[[ -z "$OLLAMA_HOST_PATH" ]] && die "No path entered."
|
||||
OLLAMA_STORAGE="bind"
|
||||
fi
|
||||
unset _MPTS _MP _i
|
||||
fi
|
||||
|
||||
# ── Q3: Storage for Kiwix ZIMs ────────────────────────────────────────────────
|
||||
@@ -254,19 +264,30 @@ if $SVC_KIWIX; then
|
||||
echo -e " ${BOLD}[3/6] Where should Kiwix ZIM files be stored?${NC}"
|
||||
echo " (ZIMs are large — Wikipedia alone is ~46GB. Total collection ~130GB.)"
|
||||
echo ""
|
||||
echo " Available mount points with >50GB free:"
|
||||
df -h --output=target,avail,fstype 2>/dev/null \
|
||||
| awk 'NR>1 && $2~/[0-9]/ {
|
||||
val=$2; unit=substr(val,length(val));
|
||||
num=substr(val,1,length(val)-1)+0;
|
||||
if ((unit=="G" && num>=50) || unit=="T") print " " $0
|
||||
}' | head -10
|
||||
mapfile -t _MPTS < <(
|
||||
df -h --output=target,avail,fstype 2>/dev/null \
|
||||
| awk 'NR>1 && $2~/[0-9]/ {
|
||||
val=$2; unit=substr(val,length(val));
|
||||
num=substr(val,1,length(val)-1)+0;
|
||||
if ((unit=="G" && num>=50) || unit=="T") print $0
|
||||
}' | head -10
|
||||
)
|
||||
echo " 0) Default: $KIWIX_DIR"
|
||||
for _i in "${!_MPTS[@]}"; do
|
||||
printf " %d) %s\n" "$((_i+1))" "${_MPTS[$_i]}"
|
||||
done
|
||||
echo ""
|
||||
echo " Default: $KIWIX_DIR"
|
||||
read -rp " Press Enter to use default, or type a different path: " KIWIX_INPUT
|
||||
if [[ -n "$KIWIX_INPUT" ]]; then
|
||||
KIWIX_DIR="${KIWIX_INPUT%/}"
|
||||
read -rp " Choice [0]: " KIWIX_CHOICE
|
||||
KIWIX_CHOICE="${KIWIX_CHOICE:-0}"
|
||||
if [[ "$KIWIX_CHOICE" != "0" ]] && [[ "$KIWIX_CHOICE" =~ ^[0-9]+$ ]] && (( KIWIX_CHOICE >= 1 && KIWIX_CHOICE <= ${#_MPTS[@]} )); then
|
||||
_MP=$(awk '{print $1}' <<< "${_MPTS[$(( KIWIX_CHOICE-1 ))]}")
|
||||
KIWIX_DIR="$_MP/kiwix"
|
||||
ok "Kiwix ZIMs → $KIWIX_DIR"
|
||||
elif [[ "$KIWIX_CHOICE" != "0" ]] && [[ -n "$KIWIX_CHOICE" ]]; then
|
||||
# Fallback: treat as a literal path
|
||||
KIWIX_DIR="${KIWIX_CHOICE%/}"
|
||||
fi
|
||||
unset _MPTS _MP _i _KIWIX_CHOICE
|
||||
|
||||
# ── Q4: Download ZIMs now? ─────────────────────────────────────────────────
|
||||
echo ""
|
||||
@@ -333,33 +354,6 @@ if $INSTALL_AI; then
|
||||
MODEL_PREF="${MODEL_PREF:-1}"
|
||||
|
||||
# Q4 approximate sizes in GB: 7B=4, 13-15B=9, 22B=13, 32B=19, 70-72B=41
|
||||
echo ""
|
||||
echo " Size tier — estimated speed on your ${VRAM_GB}GB GPU:"
|
||||
echo " (No hard limits — Ollama uses all available VRAM automatically)"
|
||||
echo ""
|
||||
printf " %-8s %-42s %s\n" "Tier" "Models" "Speed on your system"
|
||||
printf " %-8s %-42s %s\n" "--------" "------------------------------------------" "--------------------"
|
||||
|
||||
case "$MODEL_PREF" in
|
||||
1) # Western
|
||||
printf " %-8s %-42s %s\n" "7B" "mistral:7b + codellama:7b" "$(speed_label 4)"
|
||||
printf " %-8s %-42s %s\n" "14B" "phi4:14b + starcoder2:15b" "$(speed_label 9)"
|
||||
printf " %-8s %-42s %s\n" "22B" "phi4:14b + codestral:22b" "$(speed_label 13)"
|
||||
printf " %-8s %-42s %s\n" "70B" "llama3.3:70b + codestral:22b" "$(speed_label 41)"
|
||||
;;
|
||||
2) # Performance
|
||||
printf " %-8s %-42s %s\n" "7B" "qwen2.5:7b + qwen2.5-coder:7b" "$(speed_label 4)"
|
||||
printf " %-8s %-42s %s\n" "14B" "qwen2.5:14b + qwen2.5-coder:14b" "$(speed_label 9)"
|
||||
printf " %-8s %-42s %s\n" "32B" "qwen2.5:14b + qwen2.5-coder:32b" "$(speed_label 19)"
|
||||
printf " %-8s %-42s %s\n" "72B" "qwen2.5:72b + qwen2.5-coder:32b" "$(speed_label 41)"
|
||||
;;
|
||||
3) # Mixed
|
||||
printf " %-8s %-42s %s\n" "7B" "mistral:7b + qwen2.5-coder:7b" "$(speed_label 4)"
|
||||
printf " %-8s %-42s %s\n" "14B" "phi4:14b + qwen2.5-coder:14b" "$(speed_label 9)"
|
||||
printf " %-8s %-42s %s\n" "32B" "phi4:14b + qwen2.5-coder:32b" "$(speed_label 19)"
|
||||
printf " %-8s %-42s %s\n" "70B" "llama3.3:70b + qwen2.5-coder:32b" "$(speed_label 41)"
|
||||
;;
|
||||
esac
|
||||
|
||||
# VRAM-based recommendation (soft — shown as suggestion only)
|
||||
if [[ "$VRAM_GB" -ge 20 ]]; then REC_TIER="32B"
|
||||
@@ -370,6 +364,44 @@ if $INSTALL_AI; then
|
||||
# performance pref has no 22B tier
|
||||
[[ "$MODEL_PREF" == "2" && "$REC_TIER" == "22B" ]] && REC_TIER="32B"
|
||||
|
||||
echo ""
|
||||
echo " Size tier — estimated speed on your ${VRAM_GB}GB GPU:"
|
||||
echo " (No hard limits — Ollama uses all available VRAM automatically)"
|
||||
echo ""
|
||||
printf " %-4s %-8s %-42s %s\n" "#" "Tier" "Models" "Speed on your system"
|
||||
printf " %-4s %-8s %-42s %s\n" "----" "--------" "------------------------------------------" "--------------------"
|
||||
|
||||
declare -a _TIER_NAMES
|
||||
case "$MODEL_PREF" in
|
||||
1) # Western
|
||||
_TIER_NAMES=(7B 14B 22B 70B)
|
||||
printf " %-4s %-8s %-42s %s\n" "1)" "7B" "mistral:7b + codellama:7b" "$(speed_label 4)"
|
||||
printf " %-4s %-8s %-42s %s\n" "2)" "14B" "phi4:14b + starcoder2:15b" "$(speed_label 9)"
|
||||
printf " %-4s %-8s %-42s %s\n" "3)" "22B" "phi4:14b + codestral:22b" "$(speed_label 13)"
|
||||
printf " %-4s %-8s %-42s %s\n" "4)" "70B" "llama3.3:70b + codestral:22b" "$(speed_label 41)"
|
||||
;;
|
||||
2) # Performance
|
||||
_TIER_NAMES=(7B 14B 32B 72B)
|
||||
printf " %-4s %-8s %-42s %s\n" "1)" "7B" "qwen2.5:7b + qwen2.5-coder:7b" "$(speed_label 4)"
|
||||
printf " %-4s %-8s %-42s %s\n" "2)" "14B" "qwen2.5:14b + qwen2.5-coder:14b" "$(speed_label 9)"
|
||||
printf " %-4s %-8s %-42s %s\n" "3)" "32B" "qwen2.5:14b + qwen2.5-coder:32b" "$(speed_label 19)"
|
||||
printf " %-4s %-8s %-42s %s\n" "4)" "72B" "qwen2.5:72b + qwen2.5-coder:32b" "$(speed_label 41)"
|
||||
;;
|
||||
3) # Mixed
|
||||
_TIER_NAMES=(7B 14B 32B 70B)
|
||||
printf " %-4s %-8s %-42s %s\n" "1)" "7B" "mistral:7b + qwen2.5-coder:7b" "$(speed_label 4)"
|
||||
printf " %-4s %-8s %-42s %s\n" "2)" "14B" "phi4:14b + qwen2.5-coder:14b" "$(speed_label 9)"
|
||||
printf " %-4s %-8s %-42s %s\n" "3)" "32B" "phi4:14b + qwen2.5-coder:32b" "$(speed_label 19)"
|
||||
printf " %-4s %-8s %-42s %s\n" "4)" "70B" "llama3.3:70b + qwen2.5-coder:32b" "$(speed_label 41)"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Figure out recommended number from REC_TIER
|
||||
REC_NUM=2
|
||||
for i in "${!_TIER_NAMES[@]}"; do
|
||||
[[ "${_TIER_NAMES[$i]}" == "$REC_TIER" ]] && REC_NUM=$((i+1))
|
||||
done
|
||||
|
||||
echo ""
|
||||
|
||||
if [[ "$MODEL_PREF" == "4" ]]; then
|
||||
@@ -382,8 +414,15 @@ if $INSTALL_AI; then
|
||||
read -rp " Code model [$CODE_MODEL]: " _in; CODE_MODEL="${_in:-$CODE_MODEL}"
|
||||
read -rp " Reasoning model (Enter to skip): " REASON_MODEL
|
||||
else
|
||||
read -rp " Choose tier [$REC_TIER]: " TIER_PICK
|
||||
TIER_PICK="${TIER_PICK:-$REC_TIER}"
|
||||
read -rp " Choose tier [$REC_NUM]: " _TIER_INPUT
|
||||
_TIER_INPUT="${_TIER_INPUT:-$REC_NUM}"
|
||||
# Accept either a number (1-4) or the tier name directly
|
||||
if [[ "$_TIER_INPUT" =~ ^[1-4]$ ]]; then
|
||||
TIER_PICK="${_TIER_NAMES[$((_TIER_INPUT-1))]}"
|
||||
else
|
||||
TIER_PICK="$_TIER_INPUT"
|
||||
fi
|
||||
unset _TIER_NAMES _TIER_INPUT REC_NUM
|
||||
|
||||
case "${MODEL_PREF}:${TIER_PICK}" in
|
||||
# Western
|
||||
|
||||
Reference in New Issue
Block a user