New install scripts

This commit is contained in:
savinmax 2025-08-03 10:20:13 +02:00
parent 2b04f2766c
commit 43ed071ea4
4 changed files with 213 additions and 0 deletions

61
act-install.sh Executable file
View File

@ -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 <<EOF >/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

44
alertmanager-install.sh Executable file
View File

@ -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 <<EOF >/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

53
node-exporter-install.sh Executable file
View File

@ -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 <<EOF >/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 <<EOF >/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

55
webrelay-install.sh Executable file
View File

@ -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 <<EOF >/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 <<EOF >/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