#!/bin/bash set -euo pipefail sudo mkdir -p /srv/beszel sudo chown -R peon:peon /srv/beszel sudo -u peon -s mkdir -p "$XDG_RUNTIME_DIR/beszel_socket" # https://beszel.dev/guide/getting-started # https://beszel.dev/guide/hub-installation podman run -ti -d \ --name beszel \ --restart=unless-stopped \ --cpus=1.0 \ --memory=2g \ -v /srv/beszel:/beszel_data \ -v $XDG_RUNTIME_DIR/beszel_socket:/beszel_socket \ -p 8090:8090 \ docker.io/henrygd/beszel:latest # https://beszel.dev/guide/agent-installation read -p "Agent public key: " pub_key podman run -ti -d \ --name beszel-agent \ --userns=keep-id \ --network host \ --cpus=1.0 \ --memory=2g \ --restart unless-stopped \ -v $XDG_RUNTIME_DIR/podman/podman.sock:$XDG_RUNTIME_DIR/podman/podman.sock:ro \ -v $XDG_RUNTIME_DIR/beszel_socket:/beszel_socket \ -e KEY="$pub_key" \ -e LISTEN=/beszel_socket/beszel.sock \ docker.io/henrygd/beszel-agent:latest mkdir -p "$HOME/.config/systemd/user" cd "$HOME/.config/systemd/user" # TODO probably want to use quadlet instead podman generate systemd --restart-policy=always --new --files --name beszel podman generate systemd --restart-policy=always --new --files --name beszel-agent podman stop beszel podman stop beszel-agent echo "You should make sure systemd creates RuntimeDirectory for socket" echo "[Service]" echo "RuntimeDirectory=beszel_socket" echo "RuntimeDirectoryPreserve=yes" read -p "Open services in vim? [Y/n]: " prompt if [[ $prompt != "n" ]]; then vim container-beszel.service vim container-beszel-agent.service fi systemctl --user start container-beszel systemctl --user start container-beszel-agent systemctl --user status container-beszel systemctl --user status container-beszel-agent systemctl --user enable container-beszel systemctl --user enable container-beszel-agent exit