From cf1b13e5fbf659f2c08fde9c0a66e469a67afe1f Mon Sep 17 00:00:00 2001 From: "push-app-to-main[bot]" <203845782+push-app-to-main[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 15:18:29 +0200 Subject: [PATCH] alpine-gatus (#4442) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 'Add new script' * Update ct/alpine-gatus.sh --------- Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com> Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com> --- ct/alpine-gatus.sh | 62 +++++++++++++++++++++++++++++ ct/headers/alpine-gatus | 6 +++ frontend/public/json/gatus.json | 46 ++++++++++++++++++++++ install/alpine-gatus-install.sh | 70 +++++++++++++++++++++++++++++++++ 4 files changed, 184 insertions(+) create mode 100644 ct/alpine-gatus.sh create mode 100644 ct/headers/alpine-gatus create mode 100644 frontend/public/json/gatus.json create mode 100644 install/alpine-gatus-install.sh diff --git a/ct/alpine-gatus.sh b/ct/alpine-gatus.sh new file mode 100644 index 000000000..abbbc6f54 --- /dev/null +++ b/ct/alpine-gatus.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/TwiN/gatus + +APP="Alpine-gatus" +var_tags="${var_tags:-alpine;monitoring}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-256}" +var_disk="${var_disk:-3}" +var_os="${var_os:-alpine}" +var_version="${var_version:-3.21}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + + if [[ ! -d /opt/gatus ]]; then + msg_error "No ${APP} Installation Found!" + exit 1 + fi + RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [ "${RELEASE}" != "$(cat /opt/gatus_version.txt)" ] || [ ! -f /opt/gatus_version.txt ]; then + msg_info "Updating ${APP} LXC" + $STD apk -U upgrade + $STD service gatus stop + mv /opt/gatus/config/config.yaml /opt + rm -rf /opt/gatus/* + temp_file=$(mktemp) + curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file" + tar zxf "$temp_file" --strip-components=1 -C /opt/gatus + cd /opt/gatus + $STD go mod tidy + CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus . + setcap CAP_NET_RAW+ep gatus + mv /opt/config.yaml config + rm -f "$temp_file" + echo "${RELEASE}" >/opt/gatus_version.txt + $STD service gatus start + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + + exit 0 +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following IP:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" diff --git a/ct/headers/alpine-gatus b/ct/headers/alpine-gatus new file mode 100644 index 000000000..0eb5bc4e4 --- /dev/null +++ b/ct/headers/alpine-gatus @@ -0,0 +1,6 @@ + ___ __ _ __ + / | / /___ (_)___ ___ ____ _____ _/ /___ _______ + / /| | / / __ \/ / __ \/ _ \______/ __ `/ __ `/ __/ / / / ___/ + / ___ |/ / /_/ / / / / / __/_____/ /_/ / /_/ / /_/ /_/ (__ ) +/_/ |_/_/ .___/_/_/ /_/\___/ \__, /\__,_/\__/\__,_/____/ + /_/ /____/ diff --git a/frontend/public/json/gatus.json b/frontend/public/json/gatus.json new file mode 100644 index 000000000..3d021331b --- /dev/null +++ b/frontend/public/json/gatus.json @@ -0,0 +1,46 @@ +{ + "name": "Alpine-gatus", + "slug": "alpine-gatus", + "categories": [ + 9 + ], + "date_created": "2025-05-06", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 8080, + "documentation": "https://gatus.io/docs", + "website": "https://gatus.io/", + "logo": "https://raw.githubusercontent.com/TwiN/gatus/refs/heads/master/web/static/img/logo.svg", + "config_path": "/opt/gatus/config/config.yaml", + "description": "Gatus is a developer-oriented health dashboard that gives you the ability to monitor your services using HTTP, ICMP, TCP, and even DNS queries as well as evaluate the result of said queries by using a list of conditions on values like the status code, the response time, the certificate expiration, the body and many others. The icing on top is that each of these health checks can be paired with alerting via Slack, Teams, PagerDuty, Discord, Twilio and many more.", + "install_methods": [ + { + "type": "default", + "script": "ct/gatus.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 4, + "os": "debian", + "version": "12" + } + }, + { + "type": "alpine", + "script": "ct/alpine-gatus.sh", + "resources": { + "cpu": 1, + "ram": 256, + "hdd": 3, + "os": "alpine", + "version": "3.21" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} diff --git a/install/alpine-gatus-install.sh b/install/alpine-gatus-install.sh new file mode 100644 index 000000000..9e479d813 --- /dev/null +++ b/install/alpine-gatus-install.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/TwiN/gatus + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing dependencies" +$STD apk add --no-cache \ + ca-certificates \ + libcap-setcap +$STD apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community go +msg_ok "Installed dependencies" + +RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +msg_info "Installing gatus v${RELEASE}" +temp_file=$(mktemp) +mkdir -p /opt/gatus +curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file" +tar zxf "$temp_file" --strip-components=1 -C /opt/gatus +cd /opt/gatus +$STD go mod tidy +CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus . +setcap CAP_NET_RAW+ep gatus +mv config.yaml config +echo "${RELEASE}" >/opt/gatus_version.txt +msg_ok "Installed gatus v${RELEASE}" + +msg_info "Enabling gatus Service" +cat </etc/init.d/gatus +#!/sbin/openrc-run +description="gatus Service" +directory="/opt/gatus" +command="/opt/gatus/gatus" +command_args="" +command_background="true" +command_user="root" +pidfile="/var/run/gatus.pid" + +export GATUS_CONFIG_PATH="" +export GATUS_LOG_LEVEL="INFO" +export PORT="8080" + +depend() { + use net +} +EOF +chmod +x /etc/init.d/gatus +$STD rc-update add gatus default +msg_ok "Enabled gatus Service" + +msg_info "Starting gatus" +$STD service gatus start +msg_ok "Started gatus" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -f "$temp_file" +$STD apk cache clean +msg_ok "Cleaned"