diff --git a/cfg/jobs/beszel.run b/cfg/jobs/beszel.run new file mode 100755 index 0000000..9d532a2 --- /dev/null +++ b/cfg/jobs/beszel.run @@ -0,0 +1,68 @@ +#!/bin/env bash +# Upstream doc: https://beszel.dev/guide/hub-installation#binary +set -euxo pipefail + +IMAGE="ubuntu/24.04" +DIST="${IMAGE%%/*}" +VER="${IMAGE#*/}" +VER="${VER%/*}" +VER="${VER//./-}" +UPSTREAM_VER="0.9.1" +UPSTREAM_VER_DASH="${UPSTREAM_VER//./-}" +UPSTREAM_NAME="beszel" +SERIAL="1benoitjpnet" +CNAME="$UPSTREAM_NAME-$UPSTREAM_VER_DASH-$SERIAL-$DIST-$VER" +ALIAS="$UPSTREAM_NAME-$UPSTREAM_VER-$SERIAL" + +cd "$WORKSPACE" +incus launch images:$IMAGE "$CNAME" --quiet + +wait_network "$CNAME" + +incus config set "$CNAME" environment.DEBIAN_FRONTEND=noninteractive +incus config set "$CNAME" environment.DEBCONF_NONINTERACTIVE_SEEN=true +incus config set "$CNAME" environment.LC_ALL=C + +incus exec "$CNAME" -- apt-get update +incus exec "$CNAME" -- apt-get upgrade -y +incus exec "$CNAME" -- apt-get install -y --no-install-recommends wget + +incus exec "$CNAME" -- adduser \ + --shell /bin/bash \ + --gecos "Beszel Hub" \ + --disabled-password \ + --home /opt/beszel \ + beszel + +incus exec "$CNAME" -- wget --quiet \ + https://github.com/henrygd/beszel/releases/download/v"$UPSTREAM_VER"/beszel_linux_amd64.tar.gz \ + -O /tmp/ +incus exec "$CNAME" -- tar -xzf \ + /tmp/beszel_linux_amd64.tar.gz \ + -C /opt/beszel/ + +incus exec "$CNAME" -- bash -c 'cat > /etc/systemd/system/beszel.service << EOF +[Unit] +Description=Beszel Hub +After=network.target + +[Service] +Type=simple +Restart=always +RestartSec=3 +User=beszel +WorkingDirectory=/opt/beszel +ExecStart=/opt/beszel/beszel serve --http "0.0.0.0:8090" + +[Install] +WantedBy=multi-user.target +EOF' +incus exec "$CNAME" -- systemctl enable beszel.service + +laminarc run incus_publish \ + CNAME="$CNAME" \ + UPSTREAM_NAME=$UPSTREAM_NAME \ + UPSTREAM_VER=$UPSTREAM_VER \ + IMAGE=$IMAGE \ + SERIAL=$SERIAL \ + ALIAS=$ALIAS