diff --git a/beszel/.goreleaser.yml b/beszel/.goreleaser.yml index 7aa4050..0692ecb 100644 --- a/beszel/.goreleaser.yml +++ b/beszel/.goreleaser.yml @@ -123,10 +123,32 @@ scoops: homepage: 'https://beszel.dev' description: 'Lightweight server monitoring hub with historical data, docker stats, and alerts.' license: MIT - # pre_install: - # - TODO: make sure nssm is installed - # post_install: - # - TODO: add commands to automatically set up w/ nssm + +brews: + - ids: [beszel-agent] + name: beszel-agent + repository: + owner: henrygd + name: homebrew-beszel + homepage: 'https://beszel.dev' + description: 'Lightweight server monitoring hub with historical data, docker stats, and alerts.' + license: MIT + extra_install: | + (bin/"beszel-agent-launcher").write <<~EOS + #!/bin/bash + set -a + if [ -f "$HOME/.config/beszel/beszel-agent.env" ]; then + source "$HOME/.config/beszel/beszel-agent.env" + fi + set +a + exec #{bin}/beszel-agent "$@" + EOS + (bin/"beszel-agent-launcher").chmod 0755 + service: | + run ["#{bin}/beszel-agent-launcher"] + log_path "#{Dir.home}/.cache/beszel/beszel-agent.log" + error_log_path "#{Dir.home}/.cache/beszel/beszel-agent.log" + keep_alive true release: draft: true diff --git a/supplemental/scripts/install-agent-brew.sh b/supplemental/scripts/install-agent-brew.sh new file mode 100755 index 0000000..34971de --- /dev/null +++ b/supplemental/scripts/install-agent-brew.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +PORT=45876 +KEY="" + +usage() { + printf "Beszel Agent homebrew installation script\n\n" + printf "Usage: ./install-agent-brew.sh [options]\n\n" + printf "Options: \n" + printf " -k SSH key (required, or interactive if not provided)\n" + printf " -p Port (default: $PORT)\n" + printf " -h, --help Display this help message\n" + exit 0 +} + +# Handle --help explicitly since getopts doesn't handle long options +if [ "$1" = "--help" ]; then + usage +fi + +# Parse arguments with getopts +while getopts "k:p:h" opt; do + case ${opt} in + k) + KEY="$OPTARG" + ;; + p) + PORT="$OPTARG" + ;; + h) + usage + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + usage + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + usage + ;; + esac +done + +# Exit if brew is not installed +if ! command -v brew &>/dev/null; then + echo "Homebrew is not installed. Please install Homebrew and try again." + exit 1 +fi + +if [ -z "$KEY" ]; then + read -p "Enter SSH key: " KEY +fi + +mkdir -p ~/.config/beszel ~/.cache/beszel + +echo "KEY=\"$KEY\"" >~/.config/beszel/beszel-agent.env +echo "PORT=$PORT" >>~/.config/beszel/beszel-agent.env + +brew tap henrygd/beszel +brew install beszel-agent +brew services start beszel-agent + +printf "\nCheck status: brew services info beszel-agent\n" +echo "Stop: brew services stop beszel-agent" +echo "Start: brew services start beszel-agent" +echo "Restart: brew services restart beszel-agent" +echo "Upgrade: brew upgrade beszel-agent" +echo "Uninstall: brew uninstall beszel-agent" +echo "View logs in ~/.cache/beszel/beszel-agent.log" +echo "Change environment variables in ~/.config/beszel/beszel-agent.env"