66 lines
2.3 KiB
Bash
Executable File
66 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
||
set -eu
|
||
|
||
if [ "$(id -u)" -ne 0 ]; then
|
||
echo "Запустите команду установки от root." >&2
|
||
exit 1
|
||
fi
|
||
if [ -z "${DASHBOARD_URL:-}" ] || [ -z "${ENROLL_TOKEN:-}" ]; then
|
||
echo "Не заданы DASHBOARD_URL и ENROLL_TOKEN. Создайте команду в настройках Dashboard." >&2
|
||
exit 1
|
||
fi
|
||
|
||
GITEA_URL=${GITEA_URL:-https://git.myown.center}
|
||
GITEA_REPOSITORY=${GITEA_REPOSITORY:-maxim/ProxmoxDash}
|
||
VMID=${VMID:-0}
|
||
AGENT_NAME=${AGENT_NAME:-$(hostname)}
|
||
|
||
release_json=$(curl -fsSL "$GITEA_URL/api/v1/repos/$GITEA_REPOSITORY/releases/latest")
|
||
download_url=$(printf '%s' "$release_json" | sed -n 's/.*"browser_download_url":"\([^"]*\/proxmox-dashboard-linux-amd64\)".*/\1/p' | head -n 1)
|
||
if [ -z "$download_url" ]; then
|
||
echo "В последнем релизе не найден Linux-бинарник." >&2
|
||
exit 1
|
||
fi
|
||
|
||
install -d -m 0700 /var/lib/proxmox-dashboard-agent
|
||
temporary_binary=$(mktemp /tmp/proxmox-dashboard-agent.XXXXXX)
|
||
trap 'rm -f "$temporary_binary"' EXIT
|
||
curl -fsSL "$download_url" -o "$temporary_binary"
|
||
install -m 0755 "$temporary_binary" /var/lib/proxmox-dashboard-agent/proxmox-dashboard-agent
|
||
|
||
umask 077
|
||
{
|
||
printf 'DASHBOARD_URL=%s\n' "$DASHBOARD_URL"
|
||
printf 'ENROLL_TOKEN=%s\n' "$ENROLL_TOKEN"
|
||
printf 'AGENT_NAME=%s\n' "$AGENT_NAME"
|
||
printf 'VMID=%s\n' "$VMID"
|
||
} > /etc/proxmox-dashboard-agent.env
|
||
|
||
cat > /etc/systemd/system/proxmox-dashboard-agent.service <<'UNIT'
|
||
[Unit]
|
||
Description=Proxmox Dashboard read-only guest agent
|
||
After=network-online.target docker.service
|
||
Wants=network-online.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
EnvironmentFile=/etc/proxmox-dashboard-agent.env
|
||
ExecStart=/var/lib/proxmox-dashboard-agent/proxmox-dashboard-agent --agent --agent-server ${DASHBOARD_URL} --agent-enroll-token ${ENROLL_TOKEN} --agent-name ${AGENT_NAME} --agent-vmid ${VMID}
|
||
Restart=always
|
||
RestartSec=5
|
||
NoNewPrivileges=true
|
||
ProtectHome=true
|
||
PrivateTmp=true
|
||
ProtectSystem=strict
|
||
ReadWritePaths=/var/lib/proxmox-dashboard-agent
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
UNIT
|
||
|
||
systemctl daemon-reload
|
||
systemctl enable proxmox-dashboard-agent.service
|
||
systemctl restart proxmox-dashboard-agent.service
|
||
rm -f /usr/local/bin/proxmox-dashboard-agent
|
||
echo "Агент установлен. Через несколько секунд он появится в Dashboard."
|