feat: add uptime runner agent
This commit is contained in:
Executable
+96
@@ -0,0 +1,96 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
SHOW_HELP=0
|
||||
SPECIFIED_VERSION=""
|
||||
INSTALL_DIR="/opt/uptimerunner"
|
||||
GITEA_BASE_URL="https://code.foss.global"
|
||||
GITEA_REPO="uptime.link/uptimerunner"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
SHOW_HELP=1
|
||||
shift
|
||||
;;
|
||||
--version)
|
||||
SPECIFIED_VERSION="$2"
|
||||
shift 2
|
||||
;;
|
||||
--install-dir)
|
||||
INSTALL_DIR="$2"
|
||||
shift 2
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $1"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ $SHOW_HELP -eq 1 ]; then
|
||||
echo "uptimerunner installer"
|
||||
echo ""
|
||||
echo "Usage: curl -sSL https://code.foss.global/uptime.link/uptimerunner/raw/branch/main/install.sh | sudo bash"
|
||||
echo "Options: --version VERSION --install-dir DIR"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "Please run as root."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
detect_platform() {
|
||||
local os=$(uname -s)
|
||||
local arch=$(uname -m)
|
||||
|
||||
case "$os" in
|
||||
Linux) os_name="linux" ;;
|
||||
Darwin) os_name="macos" ;;
|
||||
MINGW*|MSYS*|CYGWIN*) os_name="windows" ;;
|
||||
*) echo "Unsupported operating system: $os"; exit 1 ;;
|
||||
esac
|
||||
|
||||
case "$arch" in
|
||||
x86_64|amd64) arch_name="x64" ;;
|
||||
aarch64|arm64) arch_name="arm64" ;;
|
||||
*) echo "Unsupported architecture: $arch"; exit 1 ;;
|
||||
esac
|
||||
|
||||
if [ "$os_name" = "windows" ]; then
|
||||
echo "uptimerunner-${os_name}-${arch_name}.exe"
|
||||
else
|
||||
echo "uptimerunner-${os_name}-${arch_name}"
|
||||
fi
|
||||
}
|
||||
|
||||
get_latest_version() {
|
||||
local response=$(curl -sSL "${GITEA_BASE_URL}/api/v1/repos/${GITEA_REPO}/releases/latest")
|
||||
local version=$(echo "$response" | grep -o '"tag_name":"[^"]*"' | cut -d'"' -f4)
|
||||
if [ -z "$version" ]; then
|
||||
echo "Could not determine latest release version" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "$version"
|
||||
}
|
||||
|
||||
echo "Installing uptime.link runner..."
|
||||
BINARY_NAME=$(detect_platform)
|
||||
VERSION=${SPECIFIED_VERSION:-$(get_latest_version)}
|
||||
DOWNLOAD_URL="${GITEA_BASE_URL}/${GITEA_REPO}/releases/download/${VERSION}/${BINARY_NAME}"
|
||||
|
||||
if systemctl is-active --quiet uptimerunner 2>/dev/null; then
|
||||
systemctl stop uptimerunner
|
||||
fi
|
||||
|
||||
rm -rf "$INSTALL_DIR"
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
curl -sSL "$DOWNLOAD_URL" -o "$INSTALL_DIR/uptimerunner"
|
||||
chmod +x "$INSTALL_DIR/uptimerunner"
|
||||
ln -sf "$INSTALL_DIR/uptimerunner" /usr/local/bin/uptimerunner
|
||||
|
||||
echo "Installed /usr/local/bin/uptimerunner"
|
||||
echo "Configure with: sudo uptimerunner config write --url https://uptime.link --runner-id edge-1 --token <token>"
|
||||
echo "Install service with: sudo uptimerunner service install && sudo uptimerunner service start"
|
||||
Reference in New Issue
Block a user