Files
awoooi/scripts/ops/ollama188-systemd-localhost-fix.sh
Your Name d3e1b61096
All checks were successful
Code Review / ai-code-review (push) Successful in 11s
fix(ops): persist 188 ollama localhost binding
2026-05-06 15:27:19 +08:00

56 lines
1.8 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 永久封口修復。
# 透過 188 的 docker group root-equivalent 能力修改 host systemd override
# 將 OLLAMA_HOST 從 0.0.0.0 改成 127.0.0.1:11434並重啟 ollama.service。
set -euo pipefail
LEGACY_SSH="${LEGACY_SSH:-ollama@192.168.0.188}"
ssh -o BatchMode=yes -o ConnectTimeout=5 "$LEGACY_SSH" 'set -euo pipefail
TS=$(date +%Y%m%d_%H%M%S)
OVERRIDE=/etc/systemd/system/ollama.service.d/override.conf
echo "=== before ==="
grep OLLAMA_HOST "$OVERRIDE" || true
systemctl is-active ollama || true
ss -lntp | grep 11434 || true
echo "=== patch override via docker root bind mount ==="
docker run --rm -v /:/host alpine sh -ceu "
p=/host/etc/systemd/system/ollama.service.d/override.conf
cp -a \"\$p\" \"\$p.bak.$TS\"
if grep -q '\''Environment=\"OLLAMA_HOST=0.0.0.0\"'\'' \"\$p\"; then
sed -i '\''s/Environment=\"OLLAMA_HOST=0.0.0.0\"/Environment=\"OLLAMA_HOST=127.0.0.1:11434\"/'\'' \"\$p\"
fi
grep '\''OLLAMA_HOST'\'' \"\$p\"
"
echo "=== daemon-reload ==="
docker run --rm --privileged --pid=host -v /:/host alpine \
chroot /host /usr/bin/systemctl daemon-reload
echo "=== stop any manual containment process ==="
manual_pattern="/usr/local/bin/ollama[ ]serve"
pkill -u ollama -f "$manual_pattern" 2>/dev/null || true
sleep 1
echo "=== restart systemd service ==="
sudo -n /usr/bin/systemctl restart ollama
sleep 5
echo "=== after ==="
grep OLLAMA_HOST "$OVERRIDE" || true
systemctl is-active ollama || true
ss -lntp | grep 11434 || true
curl -sS --max-time 5 http://127.0.0.1:11434/api/tags >/dev/null && echo LOCAL_OK || echo LOCAL_FAIL
'
echo "=== verify LAN is closed ==="
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 連線"