359afb3a59
Infrastructure configs for GMKtec K11 (Docker, vLLM, LocalAI, ComfyUI, control-plane, gpu-fan agent, Server UI with CLI/file explorer/GPU fan curve). Co-authored-by: Cursor <cursoragent@cursor.com>
52 lines
1.4 KiB
Bash
Executable File
52 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Configure gpu-fan agent for localhost + ensure API key. UI is in Server UI :8091.
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
STACK_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
SERVER_UI_DIR="$(cd "${STACK_DIR}/../server-ui" && pwd)"
|
|
CONTROL_PLANE_ENV="/opt/control-plane/.env"
|
|
|
|
if [[ "${EUID}" -ne 0 ]]; then
|
|
echo "Run as root: sudo ${SCRIPT_DIR}/enable-lan.sh"
|
|
exit 1
|
|
fi
|
|
|
|
"${SCRIPT_DIR}/install.sh"
|
|
|
|
set_env_var() {
|
|
local file="$1" key="$2" val="$3"
|
|
if grep -q "^${key}=" "${file}"; then
|
|
sed -i "s|^${key}=.*|${key}=${val}|" "${file}"
|
|
else
|
|
echo "${key}=${val}" >> "${file}"
|
|
fi
|
|
}
|
|
|
|
for pair in "GPU_FAN_API_HOST=127.0.0.1" "GPU_FAN_API_PORT=18090"; do
|
|
set_env_var "${CONTROL_PLANE_ENV}" "${pair%%=*}" "${pair#*=}"
|
|
done
|
|
|
|
if ! grep -q '^API_KEY=.\{8,\}' "${CONTROL_PLANE_ENV}"; then
|
|
KEY="$(openssl rand -hex 16)"
|
|
set_env_var "${CONTROL_PLANE_ENV}" "API_KEY" "${KEY}"
|
|
echo "Generated new API_KEY in ${CONTROL_PLANE_ENV}"
|
|
else
|
|
echo "API_KEY already set in ${CONTROL_PLANE_ENV}"
|
|
fi
|
|
|
|
systemctl restart gpu-fan
|
|
sleep 2
|
|
|
|
LAN_IP="$(hostname -I 2>/dev/null | awk '{print $1}')"
|
|
|
|
echo ""
|
|
echo "gpu-fan agent: $(systemctl is-active gpu-fan)"
|
|
echo "Agent API: http://127.0.0.1:18090 (localhost only)"
|
|
echo ""
|
|
echo "GPU Fan panel (LAN):"
|
|
echo " http://${LAN_IP:-<server-ip>}:8091 → zakładka GPU Fan"
|
|
echo ""
|
|
echo "API key (Server UI + gpu-fan):"
|
|
echo " grep ^API_KEY= ${CONTROL_PLANE_ENV}"
|