Files
awoooi/scripts/ops/ollama188-localhost-containment.sh
Your Name f88a3a846b
All checks were successful
Code Review / ai-code-review (push) Successful in 10s
fix(ops): contain 188 ollama gateway exposure
2026-05-06 15:18:28 +08:00

59 lines
1.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# 188 Ollama 緊急封口。
# 不需要 root把目前對外開放的 ollama serve 換成只綁 127.0.0.1:11434 的同使用者進程。
# 這是臨時手段;永久修法仍必須用 root 修改 systemd override。
set -euo pipefail
LEGACY_SSH="${LEGACY_SSH:-ollama@192.168.0.188}"
ssh -o BatchMode=yes -o ConnectTimeout=5 "$LEGACY_SSH" 'cat > ~/awoooi-ops/ollama-localhost-containment.sh <<'"'"'REMOTE_SH'"'"'
#!/usr/bin/env bash
set -euo pipefail
LOG="$HOME/awoooi-ops/ollama-localhost-containment.log"
SERVE_LOG="$HOME/awoooi-ops/ollama-localhost-serve.log"
{
echo "=== containment start $(date) ==="
echo "before:"
ss -lntp | grep 11434 || true
for i in $(seq 1 20); do
pkill -u ollama -f "/usr/local/bin/ollama serve" 2>/dev/null || true
sleep 0.2
nohup env \
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" \
OLLAMA_HOST="127.0.0.1:11434" \
OLLAMA_KEEP_ALIVE="30m" \
OLLAMA_MAX_LOADED_MODELS="2" \
OLLAMA_NUM_THREAD="14" \
OLLAMA_NUM_PARALLEL="4" \
OLLAMA_FLASH_ATTENTION="1" \
OLLAMA_RUNNERS_DIR="/tmp/ollama_runners" \
/usr/local/bin/ollama serve >> "$SERVE_LOG" 2>&1 &
sleep 1
if ss -lntp | grep -q "127.0.0.1:11434"; then
echo "contained on attempt $i"
break
fi
done
echo "after:"
ss -lntp | grep 11434 || true
echo "local test:"
curl -sS --max-time 3 http://127.0.0.1:11434/api/tags >/dev/null && echo LOCAL_OK || echo LOCAL_FAIL
echo "=== containment end $(date) ==="
} | tee -a "$LOG"
REMOTE_SH
chmod +x ~/awoooi-ops/ollama-localhost-containment.sh
~/awoooi-ops/ollama-localhost-containment.sh'
echo "=== 驗證 LAN 入口 ==="
if curl -sS --max-time 3 http://192.168.0.188:11434/api/tags >/dev/null 2>&1; then
echo "FAIL: 192.168.0.188:11434 仍可從 LAN 連線"
exit 1
fi
echo "PASS: 192.168.0.188:11434 已拒絕 LAN 連線"