Init
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
#!/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."
|
||||
Reference in New Issue
Block a user