#!/bin/bash # Install/update homelab-mcp on LXC 105 (apps). Idempotent. # Triggered by the gitea webhook or run by hand. set -euo pipefail REPO_DIR=${REPO_DIR:-/opt/homelab-mcp} cd "$REPO_DIR" echo "[deploy] git pull" git pull --ff-only echo "[deploy] ensure python venv + deps" if [ ! -d /opt/homelab-mcp/.venv ]; then python3 -m venv /opt/homelab-mcp/.venv fi /opt/homelab-mcp/.venv/bin/pip install --quiet --upgrade pip /opt/homelab-mcp/.venv/bin/pip install --quiet "mcp[cli]" pyyaml echo "[deploy] install systemd units" install -m 644 mcp/deploy/homelab-mcp.service \ /etc/systemd/system/homelab-mcp.service install -m 644 mcp/deploy/webhook/homelab-mcp-deploy.service \ /etc/systemd/system/homelab-mcp-deploy.service echo "[deploy] context clone for the MCP server" # The MCP server reads from a local clone of Homelab-Docs at /opt/homelab-context # (the same path every client uses). Bootstrap should already have created this; # if not, fail loudly. if [ ! -d /opt/homelab-context/.git ]; then echo " /opt/homelab-context is not a git clone — run bootstrap.sh first." >&2 exit 1 fi systemctl daemon-reload if systemctl is-active --quiet homelab-mcp.service; then systemctl restart homelab-mcp.service fi if systemctl is-active --quiet homelab-mcp-deploy.service; then systemctl restart homelab-mcp-deploy.service fi echo "[deploy] done" echo "First-time enable:" echo " systemctl enable --now homelab-mcp.service homelab-mcp-deploy.service" echo "Webhook first-time setup (generates secret):" echo " $REPO_DIR/mcp/deploy/webhook/install.sh"