diff --git a/act-install.sh b/act-install.sh new file mode 100755 index 0000000..3ab3871 --- /dev/null +++ b/act-install.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +set -ex + +token=$REGISTRATION_TOKEN +instance=$INSTANCE + +[ -z "$token" ] && 2>&1 echo "REGISTRATION_TOKEN env var must be provided" && exit 1 +[ -z "$instance" ] && 2>&1 echo "INSTANCE env var is not provided" && exit 1 +[ $UID -ne 0 ] && 2>&1 echo "Run as root please, we are going to install stuff" && exit 1 + +mkdir -p /tmp/actrunner + +trap "rm -rf /tmp/actrunner" EXIT + +pushd /tmp/actrunner + +VERSION=$(curl -s https://gitea.com/api/v1/repos/gitea/act_runner/releases | python3 -c 'import json,sys;print(json.load(sys.stdin)[0]["tag_name"])' | sed 's/v//') +OS=$(uname -s | tr '[:upper:]' '[:lower:]') +ARCH=$(uname -m | sed 's/x86_/amd/') + +echo "Downloading version ${VERSION} ${OS} ${ARCH}..." +curl --progress-bar -L -o act_runner https://gitea.com/gitea/act_runner/releases/download/v${VERSION}/act_runner-${VERSION}-${OS}-${ARCH} +chmod +x act_runner + +./act_runner register --no-interactive --instance $instance --token $token --name $(hostname) --labels ${OS},${ARCH} + +cat </etc/systemd/system/act_runner.service +[Unit] +Description=Gitea Actions runner +Documentation=https://gitea.com/gitea/act_runner +After=docker.service + +[Service] +ExecStart=/usr/sbin/act_runner daemon --config /etc/act_runner/config.yaml +ExecReload=/bin/kill -s HUP $MAINPID +WorkingDirectory=/var/lib/act_runner +TimeoutSec=0 +RestartSec=10 +Restart=always +User=act_runner + +[Install] +WantedBy=multi-user.target +EOF + +mkdir -p /etc/act_runner +mkdir -p /var/lib/act_runner +./act_runner generate-config > /etc/act_runner/config.yaml +mv act_runner /usr/sbin/ +mv .runner /var/lib/act_runner/ + +useradd -r -m act_runner +usermod -aG docker act_runner +chown -R act_runner:act_runner /etc/act_runner +chown -R act_runner:act_runner /var/lib/act_runner + +systemctl enable act_runner.service +systemctl start act_runner.service + +popd diff --git a/alertmanager-install.sh b/alertmanager-install.sh new file mode 100755 index 0000000..e416c3b --- /dev/null +++ b/alertmanager-install.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +set -e + +VERSION=$(curl -s https://api.github.com/repos/prometheus/alertmanager/releases | python3 -c 'import json,sys;print(json.load(sys.stdin)[0]["tag_name"])' | sed 's/v//') +OS=$(uname -s | tr '[:upper:]' '[:lower:]') +ARCH=$(uname -m | sed 's/x86_/amd/') + +trap "rm -rf alertmanager*" EXIT + +pushd /tmp +filename="alertmanager-${VERSION}.${OS}-${ARCH}.tar.gz" +echo "Downloading version ${filename}" +wget https://github.com/prometheus/alertmanager/releases/download/v${VERSION}/$filename +tar xvfz $filename +cd alertmanager-*/ +chmod +x ./alertmanager +mv ./alertmanager /usr/sbin/ +mkdir -p /etc/alertmanager +cp alertmanager.yml /etc/alertmanager/ +cat </etc/systemd/system/alertmanager.service +[Unit] +Description=Alertmanager +Wants=network-online.target +After=network-online.target + +[Service] +User=alertmanager +Group=alertmanager +Type=simple +WorkingDirectory=/etc/alertmanager/ +ExecStart=/usr/sbin/alertmanager --config.file=/etc/alertmanager/alertmanager.yml --web.external-url http://0.0.0.0:9093 + +[Install] +WantedBy=multi-user.target +EOF + +useradd -r alertmanager +chown -R alertmanager:alertmanager /etc/alertmanager + +systemctl enable alertmanager.service +systemctl start alertmanager.service + +popd diff --git a/node-exporter-install.sh b/node-exporter-install.sh new file mode 100755 index 0000000..709ddd3 --- /dev/null +++ b/node-exporter-install.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +set -e + +VERSION=$(curl -s https://api.github.com/repos/prometheus/node_exporter/releases | python3 -c 'import json,sys;print(json.load(sys.stdin)[0]["tag_name"])' | sed 's/v//') +OS=$(uname -s | tr '[:upper:]' '[:lower:]') +ARCH=$(uname -m | sed 's/x86_/amd/') + +trap "rm -rf node_exporter-*" EXIT + +pushd /tmp +filename="node_exporter-${VERSION}.${OS}-${ARCH}.tar.gz" +echo "Downloading version ${filename}" +wget https://github.com/prometheus/node_exporter/releases/download/v${VERSION}/$filename +tar xvfz $filename +cd node_exporter-*/ +chmod +x ./node_exporter +mv ./node_exporter /usr/sbin/ +cat </etc/systemd/system/node_exporter.service +[Unit] +Description=Node Exporter +Requires=node_exporter.socket + +[Service] +User=node_exporter +Environment=OPTIONS= +EnvironmentFile=-/etc/sysconfig/node_exporter +ExecStart=/usr/sbin/node_exporter --web.systemd-socket $OPTIONS + +[Install] +WantedBy=multi-user.target +EOF +cat </etc/systemd/system/node_exporter.socket +[Unit] +Description=Node Exporter + +[Socket] +ListenStream=9100 + +[Install] +WantedBy=sockets.target +EOF + +useradd -r node_exporter +mkdir -p /var/lib/node_exporter/textfile_collector +chown -R node_exporter:node_exporter /var/lib/node_exporter + +echo 'OPTIONS="--collector.textfile.directory /var/lib/node_exporter/textfile_collector"' > /etc/node_exporter.env + +systemctl enable node_exporter.service +systemctl start node_exporter.service + +popd diff --git a/webrelay-install.sh b/webrelay-install.sh new file mode 100755 index 0000000..a9d4e3f --- /dev/null +++ b/webrelay-install.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +set -e + +VERSION=$(curl -s https://git.savin.bio/api/v1/repos/savinmax/websocket-relay/releases | python3 -c 'import json,sys;print(json.load(sys.stdin)[0]["tag_name"])' | sed 's/v//') +OS=$(uname -s | tr '[:upper:]' '[:lower:]') +ARCH=$(uname -m | sed 's/x86_/amd/') + +[ $UID -ne 0 ] && 2>&1 echo "Run as root please, we are going to install stuff" && exit 1 + +trap "rm -rf websocket-relay*" EXIT + +pushd /tmp +filename="websocket-relay-${OS}-${ARCH}" +echo "Downloading version ${filename}" +curl -s -L -o ./websocket-relay https://git.savin.bio/savinmax/websocket-relay/releases/download/v${VERSION}/$filename +chmod +x ./websocket-relay +mv websocket-relay /usr/sbin/websocket-relay +cat </etc/websocket-relay.yaml +server: + port: 8888 + tls: + enabled: false + cert_file: cert.pem + key_file: key.pem + +metrics: + enabled: true + port: 9090 +EOF + +cat </etc/systemd/system/websocket-relay.service +[Unit] +Description=websocket-relay +Wants=network-online.target +After=network-online.target + +[Service] +User=websocket-relay +Group=websocket-relay +Type=simple +WorkingDirectory=/etc/websocket-relay/ +ExecStart=/usr/sbin/websocket-relay --config-file=/etc/websocket-relay.yaml + +[Install] +WantedBy=multi-user.target +EOF + +useradd -r websocket-relay +chown -R websocket-relay:websocket-relay /etc/websocket-relay.yaml + +systemctl enable websocket-relay.service +systemctl start websocket-relay.service + +popd