Files
telemtPanel/deploy/install-agent.sh
T
Denozordec b5f31c1083
Build and Push Telemt Panel Docker Image / build-and-push (push) Failing after 38s
Build and Push Telemt Panel Docker Image / create-release (push) Skipped
Init
2026-08-04 18:33:48 +07:00

64 lines
1.6 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
PANEL_URL=""
TOKEN=""
TELEMT_URL="${TELEMT_API_URL:-http://127.0.0.1:9091}"
STATE_DIR="/var/lib/telemt-panel-agent"
BIN_PATH="/usr/local/bin/telemt-panel-agent"
while [[ $# -gt 0 ]]; do
case "$1" in
--panel-url) PANEL_URL="$2"; shift 2 ;;
--token) TOKEN="$2"; shift 2 ;;
--telemt-url) TELEMT_URL="$2"; shift 2 ;;
*) echo "Unknown arg: $1"; exit 1 ;;
esac
done
if [[ -z "$PANEL_URL" || -z "$TOKEN" ]]; then
echo "Usage: install-agent.sh --panel-url URL --token TOKEN"
exit 1
fi
mkdir -p "$STATE_DIR"
# Prefer shipping binary from panel releases; fallback: build if go present
if command -v curl >/dev/null; then
ARCH=$(uname -m)
case "$ARCH" in
x86_64|amd64) ARCH=amd64 ;;
aarch64|arm64) ARCH=arm64 ;;
esac
TMP=$(mktemp)
if curl -fsSL "${PANEL_URL}/releases/download/latest/telemt-panel-agent-linux-${ARCH}" -o "$TMP" 2>/dev/null; then
install -m 755 "$TMP" "$BIN_PATH"
rm -f "$TMP"
fi
fi
if [[ ! -x "$BIN_PATH" ]]; then
echo "Agent binary not found at $BIN_PATH — place telemt-panel-agent there or build apps/agent"
exit 1
fi
cat > /etc/systemd/system/telemt-panel-agent.service <<EOF
[Unit]
Description=Telemt Panel Agent
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=${BIN_PATH} -panel-url ${PANEL_URL} -token ${TOKEN} -state ${STATE_DIR}/state.json -telemt-url ${TELEMT_URL}
Restart=always
RestartSec=5
StateDirectory=telemt-panel-agent
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now telemt-panel-agent
echo "Agent installed and started."