56 lines
1.8 KiB
Bash
Executable File
56 lines
1.8 KiB
Bash
Executable File
#!/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 連線"
|