diff --git a/supplemental/scripts/install-agent.sh b/supplemental/scripts/install-agent.sh index fa2f7fdf..ab9630ea 100755 --- a/supplemental/scripts/install-agent.sh +++ b/supplemental/scripts/install-agent.sh @@ -374,7 +374,7 @@ else fi # Stop existing service if it exists (for upgrades) -if [ -f "$BIN_PATH" ]; then +if [ "$UNINSTALL" != true ] && [ -f "$BIN_PATH" ]; then echo "Existing installation detected. Stopping service for upgrade..." if is_alpine; then rc-service beszel-agent stop 2>/dev/null || true @@ -451,7 +451,7 @@ if [ "$UNINSTALL" = true ]; then else echo "Stopping and disabling the agent service..." systemctl stop beszel-agent.service - systemctl disable beszel-agent.service + systemctl disable beszel-agent.service >/dev/null 2>&1 echo "Removing the systemd service file..." rm /etc/systemd/system/beszel-agent.service @@ -459,7 +459,7 @@ if [ "$UNINSTALL" = true ]; then # Remove the update timer and service if they exist echo "Removing the daily update service and timer..." systemctl stop beszel-agent-update.timer 2>/dev/null - systemctl disable beszel-agent-update.timer 2>/dev/null + systemctl disable beszel-agent-update.timer >/dev/null 2>&1 rm -f /etc/systemd/system/beszel-agent-update.service rm -f /etc/systemd/system/beszel-agent-update.timer @@ -549,14 +549,14 @@ else fi # Create a dedicated user for the service if it doesn't exist -echo "Creating a dedicated user for the Beszel Agent service..." +echo "Configuring the dedicated user for the Beszel Agent service..." if is_alpine; then if ! id -u beszel >/dev/null 2>&1; then addgroup beszel adduser -S -D -H -s /sbin/nologin -G beszel beszel fi # Add the user to the docker group to allow access to the Docker socket if group docker exists - if getent group docker; then + if getent group docker >/dev/null 2>&1; then echo "Adding beszel to docker group" addgroup beszel docker fi @@ -604,12 +604,12 @@ else useradd --system --home-dir /nonexistent --shell /bin/false beszel fi # Add the user to the docker group to allow access to the Docker socket if group docker exists - if getent group docker; then + if getent group docker >/dev/null 2>&1; then echo "Adding beszel to docker group" usermod -aG docker beszel fi # Add the user to the disk group to allow access to disk devices if group disk exists - if getent group disk; then + if getent group disk >/dev/null 2>&1; then echo "Adding beszel to disk group" usermod -aG disk beszel fi @@ -629,7 +629,6 @@ if [ ! -d "$BIN_DIR" ]; then fi # Download and install the Beszel Agent -echo "Downloading and installing the agent..." OS=$(uname -s | sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/') ARCH=$(detect_architecture) @@ -656,19 +655,29 @@ else INSTALL_VERSION=$(echo "$INSTALL_VERSION" | sed 's/^v//') fi -echo "Downloading and installing agent version ${INSTALL_VERSION} from ${GITHUB_URL} ..." +echo "Downloading beszel-agent v${INSTALL_VERSION}..." # Download checksums file TEMP_DIR=$(mktemp -d) cd "$TEMP_DIR" || exit 1 -CHECKSUM=$(curl -sL "$GITHUB_URL/henrygd/beszel/releases/download/v${INSTALL_VERSION}/beszel_${INSTALL_VERSION}_checksums.txt" | grep "$FILE_NAME" | cut -d' ' -f1) +CHECKSUM=$(curl -fsSL "$GITHUB_URL/henrygd/beszel/releases/download/v${INSTALL_VERSION}/beszel_${INSTALL_VERSION}_checksums.txt" | grep "$FILE_NAME" | cut -d' ' -f1) if [ -z "$CHECKSUM" ] || ! echo "$CHECKSUM" | grep -qE "^[a-fA-F0-9]{64}$"; then echo "Failed to get checksum or invalid checksum format" + echo "Try again with --mirror (or --mirror ) if GitHub is not reachable." + rm -rf "$TEMP_DIR" exit 1 fi -if ! curl -#L "$GITHUB_URL/henrygd/beszel/releases/download/v${INSTALL_VERSION}/$FILE_NAME" -o "$FILE_NAME"; then - echo "Failed to download the agent from ""$GITHUB_URL/henrygd/beszel/releases/download/v${INSTALL_VERSION}/$FILE_NAME" +if ! curl -fL# --retry 3 --retry-delay 2 --connect-timeout 10 "$GITHUB_URL/henrygd/beszel/releases/download/v${INSTALL_VERSION}/$FILE_NAME" -o "$FILE_NAME"; then + echo "Failed to download the agent from $GITHUB_URL/henrygd/beszel/releases/download/v${INSTALL_VERSION}/$FILE_NAME" + echo "Try again with --mirror (or --mirror ) if GitHub is not reachable." + rm -rf "$TEMP_DIR" + exit 1 +fi + +if ! tar -tzf "$FILE_NAME" >/dev/null 2>&1; then + echo "Downloaded archive is invalid or incomplete (possible network/proxy issue)." + echo "Try again with --mirror (or --mirror ) if the download path is unstable." rm -rf "$TEMP_DIR" exit 1 fi @@ -685,6 +694,12 @@ if ! tar -xzf "$FILE_NAME" beszel-agent; then exit 1 fi +if [ ! -s "$TEMP_DIR/beszel-agent" ]; then + echo "Downloaded binary is missing or empty." + rm -rf "$TEMP_DIR" + exit 1 +fi + if [ -f "$BIN_PATH" ]; then echo "Backing up existing binary..." cp "$BIN_PATH" "$BIN_PATH.bak" @@ -991,7 +1006,7 @@ EOF # Load and start the service printf "\nLoading and starting the agent service...\n" systemctl daemon-reload - systemctl enable beszel-agent.service + systemctl enable beszel-agent.service >/dev/null 2>&1 systemctl restart beszel-agent.service @@ -1037,7 +1052,7 @@ WantedBy=timers.target EOF systemctl daemon-reload - systemctl enable --now beszel-agent-update.timer + systemctl enable --now beszel-agent-update.timer >/dev/null 2>&1 printf "\nDaily updates have been enabled.\n" ;; diff --git a/supplemental/scripts/install-hub.sh b/supplemental/scripts/install-hub.sh index 86c8515a..de6889c3 100755 --- a/supplemental/scripts/install-hub.sh +++ b/supplemental/scripts/install-hub.sh @@ -156,7 +156,7 @@ fi # Define default values PORT=8090 -GITHUB_PROXY_URL="https://ghfast.top/" +GITHUB_URL="https://github.com" AUTO_UPDATE_FLAG="false" UNINSTALL=false @@ -173,7 +173,7 @@ while [ $# -gt 0 ]; do printf "Options: \n" printf " -u : Uninstall the Beszel Hub\n" printf " -p : Specify a port number (default: 8090)\n" - printf " -c : Use a custom GitHub mirror URL (e.g., https://ghfast.top/)\n" + printf " -c, --mirror [URL] : Use a GitHub mirror/proxy URL (default: https://gh.beszel.dev)\n" printf " --auto-update : Enable automatic daily updates (disabled by default)\n" printf " -h, --help : Display this help message\n" exit 0 @@ -183,10 +183,14 @@ while [ $# -gt 0 ]; do PORT="$1" shift ;; - -c) - shift - GITHUB_PROXY_URL=$(ensure_trailing_slash "$1") + -c | --mirror) shift + if [ -n "$1" ] && ! echo "$1" | grep -q '^-'; then + GITHUB_URL="$(ensure_trailing_slash "$1")https://github.com" + shift + else + GITHUB_URL="https://gh.beszel.dev" + fi ;; --auto-update) AUTO_UPDATE_FLAG="true" @@ -199,9 +203,6 @@ while [ $# -gt 0 ]; do esac done -# Ensure the proxy URL ends with a / -GITHUB_PROXY_URL=$(ensure_trailing_slash "$GITHUB_PROXY_URL") - # Set paths based on operating system if is_freebsd; then HUB_DIR="/usr/local/etc/beszel" @@ -323,10 +324,41 @@ OS=$(uname -s | tr '[:upper:]' '[:lower:]') ARCH=$(detect_architecture) FILE_NAME="beszel_${OS}_${ARCH}.tar.gz" -curl -sL "${GITHUB_PROXY_URL}https://github.com/henrygd/beszel/releases/latest/download/$FILE_NAME" | tar -xz -O beszel | tee ./beszel >/dev/null -chmod +x ./beszel -mv ./beszel "$BIN_PATH" +TEMP_DIR=$(mktemp -d) +ARCHIVE_PATH="$TEMP_DIR/$FILE_NAME" +DOWNLOAD_URL="$GITHUB_URL/henrygd/beszel/releases/latest/download/$FILE_NAME" + +if ! curl -fL# --retry 3 --retry-delay 2 --connect-timeout 10 "$DOWNLOAD_URL" -o "$ARCHIVE_PATH"; then + echo "Failed to download the Beszel Hub from:" + echo "$DOWNLOAD_URL" + echo "Try again with --mirror (or --mirror ) if GitHub is not reachable." + rm -rf "$TEMP_DIR" + exit 1 +fi + +if ! tar -tzf "$ARCHIVE_PATH" >/dev/null 2>&1; then + echo "Downloaded archive is invalid or incomplete (possible network/proxy issue)." + echo "Try again with --mirror (or --mirror ) if the download path is unstable." + rm -rf "$TEMP_DIR" + exit 1 +fi + +if ! tar -xzf "$ARCHIVE_PATH" -C "$TEMP_DIR" beszel; then + echo "Failed to extract beszel from archive." + rm -rf "$TEMP_DIR" + exit 1 +fi + +if [ ! -s "$TEMP_DIR/beszel" ]; then + echo "Downloaded binary is missing or empty." + rm -rf "$TEMP_DIR" + exit 1 +fi + +chmod +x "$TEMP_DIR/beszel" +mv "$TEMP_DIR/beszel" "$BIN_PATH" chown beszel:beszel "$BIN_PATH" +rm -rf "$TEMP_DIR" if is_freebsd; then echo "Creating FreeBSD rc service..." @@ -375,8 +407,8 @@ EOF else # Original systemd service installation code - printf "Creating the systemd service for the Beszel Hub...\n\n" - tee /etc/systemd/system/beszel-hub.service </etc/systemd/system/beszel-hub.service <