### Enable and Start Systemd Service Source: https://beszel.dev/guide/hub-installation Reloads the systemd daemon, enables the Beszel service to start on boot, and then starts the service immediately. This is done after creating the beszel.service file. ```bash sudo systemctl daemon-reload sudo systemctl enable beszel.service sudo systemctl start beszel.service ``` -------------------------------- ### Gotify Usage with Subpath Example Source: https://beszel.dev/guide/notifications/gotify An example demonstrating the Gotify URL format when a subpath is used on the server. ```url gotify://example.com:443/path/to/gotify/AzyoeNS.D4iJLVa/?priority=0 ``` -------------------------------- ### Enable and Start Beszel Agent Service Source: https://beszel.dev/guide/agent-installation Use these commands to reload the systemd daemon, enable the agent to start on boot, and start the agent immediately. ```bash sudo systemctl daemon-reload sudo systemctl enable beszel-agent.service sudo systemctl start beszel-agent.service ``` -------------------------------- ### Manual Homebrew Installation Source: https://beszel.dev/guide/agent-installation Manually installs the Beszel agent using Homebrew. This involves creating configuration directories, setting an SSH key in an environment file, tapping the Beszel repository, installing the agent, and starting the service. ```bash mkdir -p ~/.config/beszel ~/.cache/beszel echo 'KEY="ssh-ed25519 AAAA..."' > ~/.config/beszel/beszel-agent.env brew tap henrygd/beszel brew install beszel-agent brew services start beszel-agent ``` -------------------------------- ### Start Development Processes Source: https://beszel.dev/guide/developer-guide Start the hub, agent, and web UI processes individually using make commands. Ensure you have the necessary environment variables for the agent. ```bash # Start the hub make dev-hub # Start the agent make dev-agent KEY="..." TOKEN="..." HUB_URL="..." # Start the web UI make dev-server ``` -------------------------------- ### Common Gotify Usage Example Source: https://beszel.dev/guide/notifications/gotify An example of a Gotify URL for common usage, including host, port, token, and priority. ```url gotify://gotify.example.com:443/AzyoeNS.D4iJLVa/?priority=1 ``` -------------------------------- ### Run Install Script (Linux, FreeBSD) Source: https://beszel.dev/guide/agent-installation Execute this script with root privileges to install the latest Beszel agent binary and set up a service. It can also configure automatic daily updates. ```bash curl -sL https://get.beszel.dev -o /tmp/install-agent.sh && chmod +x /tmp/install-agent.sh && /tmp/install-agent.sh ``` -------------------------------- ### Install smartmontools on FreeBSD Source: https://beszel.dev/guide/smart-data Installs the smartmontools package on FreeBSD systems. This is a prerequisite for S.M.A.R.T. data monitoring. ```bash pkg install smartmontools ``` -------------------------------- ### Install Beszel Hub using Script Source: https://beszel.dev/guide/hub-installation Downloads and executes the install script for the latest Beszel Hub binary and sets up a systemd service. Supports options for port specification, custom mirrors, and auto-updates. ```bash curl -sL https://get.beszel.dev/hub -o /tmp/install-hub.sh && chmod +x /tmp/install-hub.sh && /tmp/install-hub.sh ``` -------------------------------- ### Install smartmontools on Fedora Source: https://beszel.dev/guide/smart-data Installs the smartmontools package on Fedora systems. This is a prerequisite for S.M.A.R.T. data monitoring. ```bash sudo dnf install smartmontools ``` -------------------------------- ### Start All Development Processes Source: https://beszel.dev/guide/developer-guide Start all Beszel development processes simultaneously with a single make command for convenience. This command combines the output of all processes. ```bash make -j dev KEY="..." TOKEN="..." HUB_URL="..." ``` -------------------------------- ### OpsGenie API Key Example Source: https://beszel.dev/guide/notifications/opsgenie Illustrates the OpsGenie service URL with a specific host and API key. ```URL opsgenie://api.opsgenie.com/eb243592-faa2-4ba2-a551q-1afdf565c889 └───────────────────────────────────┘ token ``` -------------------------------- ### Check smartctl version Source: https://beszel.dev/guide/smart-data Checks the installed version of smartctl. Requires smartmontools to be installed. ```bash smartctl -v | head -1 ``` -------------------------------- ### Install smartmontools on Debian/Ubuntu Source: https://beszel.dev/guide/smart-data Installs the smartmontools package on Debian or Ubuntu-based systems. This is a prerequisite for S.M.A.R.T. data monitoring. ```bash sudo apt install smartmontools ``` -------------------------------- ### Enable and Start Podman API Service Source: https://beszel.dev/guide/podman Enables and starts the Podman API service for the current user. This is a prerequisite for API access. ```bash systemctl --user enable podman.socket systemctl --user start podman.socket ``` -------------------------------- ### Install Intel GPU Tools on Debian/Ubuntu Source: https://beszel.dev/guide/gpu Install the 'intel-gpu-tools' package on Debian or Ubuntu systems to enable Intel GPU monitoring with Beszel. ```bash sudo apt install intel-gpu-tools ``` -------------------------------- ### Start Beszel Hub Source: https://beszel.dev/guide/hub-installation Starts the Beszel Hub server, listening on all interfaces on port 8090. This command is used for both manual downloads and manual compilation. ```bash ./beszel serve --http "0.0.0.0:8090" ``` -------------------------------- ### Start Beszel Agent Manually Source: https://beszel.dev/guide/agent-installation Start the Beszel agent after manual download. Ensure you provide your public key, token, and hub URL. Use -h for a full list of options. ```bash ./beszel-agent -key "" -token "" -url "" ``` -------------------------------- ### Install Intel GPU Tools on Arch Linux Source: https://beszel.dev/guide/gpu Install the 'intel-gpu-tools' package on Arch Linux systems to enable Intel GPU monitoring with Beszel. ```bash sudo pacman -S intel-gpu-tools ``` -------------------------------- ### Install smartmontools on Arch Linux Source: https://beszel.dev/guide/smart-data Installs the smartmontools package on Arch Linux systems. This is a prerequisite for S.M.A.R.T. data monitoring. ```bash sudo pacman -S smartmontools ``` -------------------------------- ### Install BeszelBar via Homebrew Source: https://beszel.dev/guide/third-party-integrations/desktop-apps Install BeszelBar on macOS using the Homebrew package manager. Ensure Homebrew is installed on your system. ```bash brew install --cask loriage/tap/beszelbar ``` -------------------------------- ### Add Users to Systems using JS SDK Source: https://beszel.dev/guide/rest-api This example demonstrates how to add multiple users to multiple systems. It involves authenticating as an admin, retrieving user and system IDs, and updating system records. Ensure environment variables for admin credentials are set. ```typescript import PocketBase from 'pocketbase' const pb = new PocketBase('http://localhost:8090') // users we will add to systems const userEmails = ['user1@example.com', 'user2@example.com'] // system names we will add users to const systemNames = ['localhost', 'kagemusha'] // authenticate as admin await pb.admins.authWithPassword(process.env.EMAIL, process.env.PASSWORD) // get user ids const userIds = await pb .collection('users') .getFullList({ fields: 'id', filter: `email='${userEmails.join(`'||email='`)}'`, }) .then((records) => records.map(({ id }) => id)) // get id and current users for systems const systemsData = await pb.collection('systems').getFullList({ fields: 'id,users', filter: `name='${systemNames.join(`'||name='`)}'`, }) // loop through systems and add users to them for (const system of systemsData) { const updatedUsers = Array.from(new Set([...system.users, ...userIds])) await pb.collection('systems').update(system.id, { users: updatedUsers }) } ``` -------------------------------- ### Verifying smartmontools Installation on Windows Source: https://beszel.dev/guide/smart-data Checks if the smartctl executable is accessible from the command line after installing smartmontools on Windows. ```cmd smartctl --version ``` -------------------------------- ### View Superuser Options (Binary) Source: https://beszel.dev/guide/user-accounts Displays all available options for managing PocketBase superusers when Beszel is installed as a binary. ```bash ./beszel superuser --help ``` -------------------------------- ### Install smartmontools on macOS Source: https://beszel.dev/guide/smart-data Installs the smartmontools package on macOS systems using Homebrew. This is a prerequisite for S.M.A.R.T. data monitoring. ```bash brew install smartmontools ``` -------------------------------- ### Install macmon for Apple Silicon GPU Monitoring Source: https://beszel.dev/guide/gpu Install the macmon tool using Homebrew, which is recommended for monitoring Apple Silicon GPUs without requiring root privileges. ```bash brew install macmon ``` -------------------------------- ### Install Beszel Agent via Homebrew Script Source: https://beszel.dev/guide/agent-installation Installs the Beszel agent using a curl script. This method is suitable for macOS and Linux systems with Homebrew. The script downloads, makes executable, and runs the installer. ```bash curl -sL https://get.beszel.dev/brew -o /tmp/install-agent.sh && chmod +x /tmp/install-agent.sh && /tmp/install-agent.sh ``` -------------------------------- ### Install Beszel Agent via PowerShell Script Source: https://beszel.dev/guide/agent-installation Installs the Beszel agent on Windows using PowerShell. This script attempts to use Scoop, then WinGet, or installs both if neither are present. It also sets up NSSM for service management and optionally configures the firewall. ```powershell & iwr -useb https://get.beszel.dev -OutFile "$env:TEMP\install-agent.ps1"; & Powershell -ExecutionPolicy Bypass -File "$env:TEMP\install-agent.ps1" ``` -------------------------------- ### Slack Bot API Example URL Source: https://beszel.dev/guide/notifications/slack Example URL for sending notifications via the Slack Bot API. Includes common parameters like color, title, icon, and bot name. ```url slack://xoxb:123456789012-1234567890123-4mt0t4l1YL3g1T5L4cK70k3N@C001CH4NN3L?color=good&title=Great+News&icon=man-scientist&botname=Shoutrrrbot ``` -------------------------------- ### MQTT Notification for Home Assistant Source: https://beszel.dev/guide/notifications/mqtt Example URL for sending notifications to a Home Assistant MQTT broker. ```url mqtt://homeassistant.local:1883/homeassistant/notification ``` -------------------------------- ### Start Beszel Agent with Docker Compose Source: https://beszel.dev/guide/getting-started This command starts the Beszel agent service in detached mode. Ensure your docker-compose.yml is correctly configured. ```bash docker compose up -d ``` -------------------------------- ### Slack Webhook Example URL Source: https://beszel.dev/guide/notifications/slack Example URL for sending notifications via Slack Webhooks. Similar parameters to the Bot API are supported. ```url slack://hook:WNA3PBYV6-F20DUQND3RQ-Webc4MAvoacrpPakR8phF0zi@webhook?color=good&title=Great+News&icon=man-scientist&botname=Shoutrrrbot ``` -------------------------------- ### Full MQTT Notification Configuration Source: https://beszel.dev/guide/notifications/mqtt A comprehensive example including authentication, custom port, client ID, QoS level (1), retained messages, and disabling clean session. ```url mqtts://admin:secret@mqtt.example.com:8883/production/alerts?clientid=prod-shoutrrr&qos=1&retained=yes&cleansession=no ``` -------------------------------- ### Zulip Notification Example Source: https://beszel.dev/guide/notifications/zulip An example of a complete Zulip notification URL. Note the URL-escaped '@' symbol in the bot email address. ```text zulip://my-bot%40zulipchat.com:correcthorsebatterystable@example.zulipchat.com?stream=foo&topic=bar ``` -------------------------------- ### Test intel_gpu_top Command Source: https://beszel.dev/guide/gpu Independently test the 'intel_gpu_top' command to verify its functionality and ensure it's working correctly before or during Beszel agent setup. ```bash intel_gpu_top ``` -------------------------------- ### Custom Headers Example Source: https://beszel.dev/guide/notifications/generic Demonstrates how to add custom HTTP headers to a generic webhook request using query parameters prefixed with '@'. ```url generic://example.com?@acceptLanguage=tlh-Piqd ``` -------------------------------- ### Adding smartmontools to Windows PATH Source: https://beszel.dev/guide/smart-data Adds the smartmontools installation directory to the system's PATH environment variable on Windows, allowing smartctl to be found from any command prompt. ```cmd C:\Program Files\smartmontools\bin ``` -------------------------------- ### Mattermost URL with User and Channel Source: https://beszel.dev/guide/notifications/mattermost Example of configuring a Mattermost service URL to post as a specific user to a specific channel. ```text mattermost://shoutrrrUser@your-domain.com/bywsw8zt5jgpte3nm65qjiru6h/shoutrrrChannel └──────────┘ └────────────────────────┘ └─────────────┘ user token channel ``` -------------------------------- ### Basic Mattermost Webhook URL Source: https://beszel.dev/guide/notifications/mattermost Example of formatting a Mattermost webhook URL after obtaining the token. ```text https://your-domain.com/hooks/bywsw8zt5jgpte3nm65qjiru6h └────────────────────────┘ token mattermost://your-domain.com/bywsw8zt5jgpte3nm65qjiru6h └────────────────────────┘ token ``` -------------------------------- ### Update and Start Beszel Agent Service Source: https://beszel.dev/guide/upgrade-winget After finding the correct path, update the NSSM service configuration and restart the Beszel Agent service. This resolves issues where the service fails to start due to an incorrect path. ```powershell nssm set beszel-agent Application "C:\correct\path\to\beszel-agent.exe" nssm start beszel-agent ``` -------------------------------- ### Create Beszel Hub Systemd Service (Manual Compile) Source: https://beszel.dev/guide/hub-installation Defines a systemd service file for the Beszel Hub, similar to the script installation but with a different RestartSec value. This configuration is for systems using systemd and when the hub is manually compiled. ```ini [Unit] Description=Beszel Hub After=network.target [Service] Type=simple Restart=always RestartSec=5 User=root WorkingDirectory={/path/to/working/directory} ExecStart={/path/to/working/directory}/beszel serve --http "0.0.0.0:8090" [Install] WantedBy=multi-user.target ``` -------------------------------- ### Podman Run Command for Beszel Agent Source: https://beszel.dev/guide/agent-installation This command installs and runs the Beszel agent using Podman. It configures essential environment variables and network settings. Replace placeholder values for KEY, HUB_URL, and TOKEN. ```bash podman run -d \ --name beszel-agent \ --network host \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -e KEY="" \ -e HUB_URL="" \ -e TOKEN="" \ -e LISTEN=45876 \ henrygd/beszel-agent:latest ``` -------------------------------- ### Configure Beszel Agent Systemd Service Source: https://beszel.dev/guide/agent-installation Example systemd service file configuration for Beszel agent. Replace placeholders with your actual paths and credentials. Secrets can also be loaded from files using KEY_FILE and TOKEN_FILE. ```ini [Unit] Description=Beszel Agent Service After=network-online.target Wants=network-online.target [Service] ExecStart=/beszel-agent Environment="LISTEN=45876" Environment="KEY=" Environment="TOKEN=" Environment="HUB_URL=" ``` -------------------------------- ### Verifying smartctl Permissions for Agent User Source: https://beszel.dev/guide/smart-data Tests if the 'beszel' user can run smartctl commands without sudo, confirming successful permission setup for S.M.A.R.T. data parsing. ```bash sudo -u beszel smartctl -H /dev/sda sudo -u beszel smartctl -H /dev/nvme0 ``` -------------------------------- ### Run Beszel Agent with Memory Calculation Argument Source: https://beszel.dev/guide/environment-variables Include environment variables as command-line arguments when executing the Beszel agent directly. This example sets the MEM_CALC variable. ```bash MEM_CALC=htop ./beszel-agent ``` -------------------------------- ### Binary Agent: Set EXTRA_FILESYSTEMS Environment Variable Source: https://beszel.dev/guide/additional-disks Configure the EXTRA_FILESYSTEMS environment variable for the Beszel binary agent to monitor specified devices, partitions, or mount points. This example shows direct command-line execution. ```bash EXTRA_FILESYSTEMS="sdb,sdc1,mmcblk0,/mnt/network-share" KEY="..." ./beszel-agent ``` -------------------------------- ### Reset Superuser Password (Binary) Source: https://beszel.dev/guide/user-accounts Use this command to reset a PocketBase superuser password when Beszel is installed as a binary. Replace 'name@example.com' and 'password' with your desired credentials. ```bash ./beszel superuser upsert name@example.com password ``` -------------------------------- ### Dockerfile for Beszel with Shell Source: https://beszel.dev/guide/docker-shell This Dockerfile creates a new image based on Alpine Linux, installs debugging tools, and copies the Beszel binary. Use this when you need shell access to the main Beszel service. ```dockerfile FROM henrygd/beszel:latest as beszel # Define the new base image FROM alpine:latest # Add tools (curl, telnet, traceroute, netstat, host, nslookup, dig, delv) RUN apk add --no-cache bash curl busybox-extras bind-tools # Copy the binary into the new image COPY --from=beszel /beszel /beszel ENTRYPOINT [ "/beszel" ] CMD ["serve", "--http=0.0.0.0:8090"] ``` -------------------------------- ### Docker Run Command for Beszel Agent Source: https://beszel.dev/guide/agent-installation This command installs and runs the Beszel agent using Docker. It configures essential environment variables and network settings. Replace placeholder values for KEY, HUB_URL, and TOKEN. ```bash docker run -d \ --name beszel-agent \ --network host \ --restart unless-stopped \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -e KEY="" \ -e HUB_URL="" \ -e TOKEN="" \ -e LISTEN=45876 \ henrygd/beszel-agent:latest ``` -------------------------------- ### Build Windows Agent Dependencies Source: https://beszel.dev/guide/compiling For Windows builds, first build the .NET wrapper for LibreHardwareMonitorLib. ```bash dotnet build -c Release ./agent/lhm/beszel_lhm.csproj ``` -------------------------------- ### Docker Compose Configuration for Beszel Source: https://beszel.dev/guide/hub-installation This is the basic docker-compose.yml configuration to start the Beszel service. It defines the image, container name, restart policy, environment variables, port mapping, and volume for persistent storage. ```yaml services: beszel: image: henrygd/beszel container_name: beszel restart: unless-stopped environment: - APP_URL=http://localhost:8090 ports: - 8090:8090 volumes: - ./beszel_data:/beszel_data ``` -------------------------------- ### Build Beszel using Makefile Source: https://beszel.dev/guide/compiling Use the Makefile for convenient building of the agent and hub. The 'make' command creates a 'build' directory with the binaries. ```bash # Builds both the agent and hub make # Builds the agent only make build-agent # Builds the hub only (requires Node or Bun) make build-hub ``` -------------------------------- ### Build Hub Web UI Source: https://beszel.dev/guide/compiling Before building the hub binary, build the embedded web UI. Bun is used here, but Node.js is also an option. ```bash cd src/site bun install bun run build ``` -------------------------------- ### Rocket.chat Webhook URL Example Source: https://beszel.dev/guide/notifications/rocketchat An example of a formatted Rocket.chat webhook URL. The token is a long string of characters. ```text rocketchat://your-domain.com/8eGdRzc9r4YYNyvge/2XYQcX9NBwJBKfQnphpebPcnXZcPEi32Nt4NKJfrnbhsbRfX └────────────────────────────────────────────────────────────────┘ token ``` -------------------------------- ### Prepare Go Dependencies Source: https://beszel.dev/guide/compiling Ensure all project dependencies are downloaded and updated using 'go mod tidy'. ```bash go mod tidy ``` -------------------------------- ### View Superuser Options (Docker) Source: https://beszel.dev/guide/user-accounts Displays all available options for managing PocketBase superusers when Beszel is running in Docker. ```bash docker exec beszel /beszel superuser --help ``` -------------------------------- ### Run intel_gpu_top as a binary Source: https://beszel.dev/guide/gpu Execute intel_gpu_top directly on the system as the 'beszel' user. This command runs the tool with a sampling interval of 3000ms and logs the output. ```bash sudo -u beszel intel_gpu_top -s 3000 -l ``` -------------------------------- ### Create and Configure Podman Socket Proxy Service Source: https://beszel.dev/guide/podman Sets up a proxy socket for the Beszel agent to access the Podman socket with specific group permissions. This involves creating a group, adding users, and defining a systemd service for socat. ```bash sudo groupadd podman-socket sudo usermod -aG podman-socket-proxy $USER sudo usermod -aG podman-socket-proxy beszel cat > ~/.config/systemd/user/podman-socket-proxy.service << 'EOF' [Unit] Description=Podman socket proxy for beszel After=network.target podman.socket Wants=podman.socket Requires=podman.socket [Service] Type=simple ExecStartPre=/usr/bin/mkdir -p /run/podman-socket-proxy ExecStartPre=/usr/bin/chown %u:podman-socket-proxy /run/podman-socket-proxy ExecStart=/usr/bin/socat UNIX-LISTEN:/run/podman-socket-proxy/podman.sock,fork,user=%u,group=podman-socket-proxy,mode=0660 UNIX-CONNECT:%t/podman/podman.sock Restart=always RestartSec=5 [Install] WantedBy=multi-user.target EOF systemctl --user daemon-reload systemctl --user enable --now podman-socket-proxy.service ``` -------------------------------- ### Run Beszel Agent Container with Podman Socket Mount Source: https://beszel.dev/guide/podman Launches the Beszel agent as a container, mounting the Podman socket for read-only access. Ensure to replace '1000' with your actual user ID. ```bash podman run -d \ --name beszel-agent \ --user 1000 \ --network host \ --restart unless-stopped \ -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro \ -e KEY="" \ -e LISTEN=45876 \ docker.io/henrygd/beszel-agent:latest ``` -------------------------------- ### Checking Device Permissions on Linux Source: https://beszel.dev/guide/smart-data Lists the permissions for device files like /dev/sda and /dev/nvme0 to diagnose access issues when smartctl still requires sudo. ```bash ls -l /dev/sda /dev/nvme0 ``` -------------------------------- ### Enable Apache2 Modules Source: https://beszel.dev/guide/reverse-proxy Enable necessary Apache2 modules for reverse proxying and WebSocket support. ```bash a2enmod proxy proxy_http proxy_wstunnel rewrite ``` -------------------------------- ### Send Signal Notification to a Group Source: https://beszel.dev/guide/notifications/signal Example of a Signal notification URL targeting a specific Signal group ID. ```url signal://localhost:8080/+1234567890/group.abcdefghijklmnop= ``` -------------------------------- ### OpsGenie Alert with Query Parameters Source: https://beszel.dev/guide/notifications/opsgenie Demonstrates how to send an OpsGenie alert with various details specified through URL query parameters. ```URL opsgenie://api.opsgenie.com/eb243592-faa2-4ba2-a551q-1afdf565c889?alias=Life+is+too+short+for+no+alias&description=Every+alert+needs+a+description&actions=An+action&tags=["tag1","tag2"]&entity=An+example+entity&source=The+source&priority=P1&user=Dracula¬e=Here+is+a+note ``` -------------------------------- ### Scanning for Devices on Windows Source: https://beszel.dev/guide/smart-data Scans for available disk devices on a Windows system using smartctl, after ensuring it is installed and accessible. ```cmd smartctl --scan ``` -------------------------------- ### Run Beszel Agent with Podman Source: https://beszel.dev/guide/agent-installation Use this command to run the Beszel agent directly with Podman. Ensure to replace placeholders like '', '', and '' with your actual values. The agent requires host network mode to access network interface stats. ```bash podman run -d \ --name beszel-agent \ --user 1000 \ --network host \ --restart unless-stopped \ -v /run/user/1000/podman/podman.sock:/run/user/1000/podman.sock:ro \ -e KEY="" \ -e HUB_URL="" \ -e TOKEN="" \ -e LISTEN=45876 \ docker.io/henrygd/beszel-agent:latest ``` -------------------------------- ### Beszel Hub Docker Healthcheck Source: https://beszel.dev/guide/healthchecks Configure the hub healthcheck to test the /api/health endpoint. Includes a start period and recommended interval. ```yaml services: beszel-hub: healthcheck: # The URL is relative to the container, not the host test: ['CMD', '/beszel', 'health', '--url', 'http://localhost:8090'] start_period: 5s # Check 5 seconds after the container starts interval: 120s # Then check every 120 seconds after that ``` -------------------------------- ### Send Signal Notification with Basic Authentication Source: https://beszel.dev/guide/notifications/signal Example of a Signal notification URL including username and password for HTTP Basic Authentication. ```url signal://user:password@localhost:8080/+1234567890/+0987654321 ``` -------------------------------- ### Send Signal Notification to Multiple Recipients Source: https://beszel.dev/guide/notifications/signal Example of a Signal notification URL targeting multiple phone numbers and a group ID. ```url signal://localhost:8080/+1234567890/+0987654321/+1123456789/group.testgroup ``` -------------------------------- ### Send Signal Notification to Single Phone Number Source: https://beszel.dev/guide/notifications/signal Example of a Signal notification URL targeting a single recipient phone number. ```url signal://localhost:8080/+1234567890/+0987654321 ``` -------------------------------- ### Download Beszel Hub Binary Source: https://beszel.dev/guide/hub-installation Downloads the latest Beszel Hub binary for the current system architecture. The downloaded binary is made executable and saved as './beszel'. ```bash curl -sL "https://github.com/henrygd/beszel/releases/latest/download/beszel_$(uname -s)_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/armv6l/arm/' -e 's/armv7l/arm/' -e 's/aarch64/arm64/').tar.gz" | tar -xz -O beszel | tee ./beszel >/dev/null && chmod +x beszel ``` -------------------------------- ### Telegram URL with Optional Parameters Source: https://beszel.dev/guide/notifications/telegram Example of a Telegram notification URL including optional query parameters for notification, preview, and parse mode. ```text telegram://token@telegram/?channels=channel&**`notification`**=no &**`preview`**=false &**`parsemode`**=html ``` -------------------------------- ### Set file capabilities on smartctl binary Source: https://beszel.dev/guide/smart-data Sets file capabilities on the smartctl binary to allow it to run with elevated privileges without requiring the entire agent process to run as root. This is an alternative to systemd capabilities. ```bash sudo setcap cap_sys_rawio,cap_sys_admin+ep /usr/sbin/smartctl ``` -------------------------------- ### Upgrade Beszel Agent with Scoop Source: https://beszel.dev/guide/agent-installation Stops the beszel-agent service, updates the agent using Scoop, and then restarts the service. This is for Windows installations managed by Scoop. ```powershell nssm stop beszel-agent; & scoop update beszel-agent; & nssm start beszel-agent ``` -------------------------------- ### Generate Telegram URL with Docker Source: https://beszel.dev/guide/notifications/telegram Use the 'containrrr/shoutrrr' Docker image to run the 'shoutrrr generate telegram' command without installing the Shoutrrr CLI. ```bash docker run --rm -it containrrr/shoutrrr generate telegram ``` -------------------------------- ### Exclude Containers by Pattern Source: https://beszel.dev/guide/environment-variables Use shell variables to define patterns for excluding containers. These examples show how to exclude containers based on specific naming conventions. ```shell EXCLUDE_CONTAINERS="*-staging" ``` ```shell EXCLUDE_CONTAINERS="*-temp-*" ``` ```shell EXCLUDE_CONTAINERS="test-*,*-staging,dev-*" ``` -------------------------------- ### Run intel_gpu_top in Docker Source: https://beszel.dev/guide/gpu Execute intel_gpu_top within a Docker container. This command runs the tool with a sampling interval of 3000ms and logs the output. ```bash docker exec -it beszel-agent intel_gpu_top -s 3000 -l ``` -------------------------------- ### Custom Dockerfile for NVIDIA Jetson Source: https://beszel.dev/guide/gpu Create a custom Dockerfile for the Beszel agent on NVIDIA Jetson devices, copying the agent binary and setting it as the entrypoint. This is used in conjunction with a custom Docker Compose configuration. ```dockerfile FROM frolvlad/alpine-glibc:latest COPY --from=henrygd/beszel-agent:latest /agent /agent RUN chmod +x /agent ENTRYPOINT ["/agent"] ``` -------------------------------- ### List Systems with Filtered Data using JS SDK Source: https://beszel.dev/guide/rest-api Use this snippet to fetch a list of records from the 'systems' collection, applying filters for status and creation date. Requires authentication with PocketBase. ```typescript import PocketBase from 'pocketbase' const pb = new PocketBase('http://localhost:8090') // authenticate as regular user const userData = await pb.collection('users').authWithPassword('test@example.com', '123456') // list and filter system records const systems = await pb.collection('systems').getList(1, 20, { filter: 'status = "up" && created > "2024-06-01 10:00:00"', }) console.log(systems) ``` -------------------------------- ### Open docker-compose.yml with VS Code Source: https://beszel.dev/guide/getting-started This command opens the docker-compose.yml file for editing using Visual Studio Code. Ensure VS Code is installed and its command-line tools are in your PATH. ```bash code docker-compose.yml ``` -------------------------------- ### Download Beszel Agent Binary Source: https://beszel.dev/guide/agent-installation Manually download the latest Beszel agent binary matching your server's OS and architecture. This command automatically detects your OS and architecture. ```bash curl -sL "https://github.com/henrygd/beszel/releases/latest/download/beszel-agent_$(uname -s)_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/armv6l/arm/' -e 's/armv7l/arm/' -e 's/aarch64/arm64/').tar.gz" | tar -xz beszel-agent ``` -------------------------------- ### Send Signal Notification using HTTP Source: https://beszel.dev/guide/notifications/signal Example of a Signal notification URL forcing HTTP instead of HTTPS using the `disabletls=yes` parameter. This is insecure and recommended only for local testing. ```url signal://localhost:8080/+1234567890/+0987654321?disabletls=yes ``` -------------------------------- ### Configure Beszel Agent Binary with Same User Source: https://beszel.dev/guide/podman Sets the user for the Beszel agent's systemd service to match the user running Podman. This grants the agent access to the Podman socket. ```ini [Service] User=1000 ``` -------------------------------- ### Create Beszel Directory Source: https://beszel.dev/guide/getting-started This command creates a new directory for Beszel configuration and navigates into it. This is a prerequisite for setting up the docker-compose.yml file. ```bash mkdir beszel cd beszel ``` -------------------------------- ### Open docker-compose.yml with Vim Source: https://beszel.dev/guide/getting-started This command opens the docker-compose.yml file for editing using the vim text editor. Save changes by typing :wq and pressing Enter. ```bash vim docker-compose.yml ``` -------------------------------- ### Docker Compose for NVIDIA GPUs Source: https://beszel.dev/guide/gpu Configure Docker Compose to use the NVIDIA Container Toolkit for GPU access with the Beszel agent. Ensure NVIDIA Container Toolkit is installed on the host. ```yaml beszel-agent: image: henrygd/beszel-agent-nvidia deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: - utility ``` -------------------------------- ### Send Signal Notification with API Token (Bearer Auth) Source: https://beszel.dev/guide/notifications/signal Example of a Signal notification URL using an API token for Bearer authentication. This method takes precedence over basic authentication. ```url signal://localhost:8080/+1234567890/+0987654321?token=YOUR_API_TOKEN ``` -------------------------------- ### Windows Agent: Set EXTRA_FILESYSTEMS Environment Variable (dotenv) Source: https://beszel.dev/guide/additional-disks Set the EXTRA_FILESYSTEMS environment variable for the Windows agent to monitor specified drive letters. This example uses dotenv format. ```dotenv EXTRA_FILESYSTEMS="D:,E:,F:" ``` -------------------------------- ### Clone Beszel Repository Source: https://beszel.dev/guide/developer-guide Clone the Beszel repository to your local machine to begin development. Ensure you fork the repository first. ```bash git clone https://github.com/your_username/beszel.git ``` -------------------------------- ### Example Heartbeat POST Payload Source: https://beszel.dev/guide/heartbeat This JSON payload is sent when Beszel uses the POST method for heartbeat pings. It includes system status, triggered alerts, and Beszel version information. ```json { "status": "error", "timestamp": "2026-02-20T14:30:00Z", "msg": "1 system(s) down: Production-DB", "systems": { "total": 5, "up": 3, "down": 1, "paused": 1, "pending": 0 }, "down_systems": [ { "id": "abc123def456", "name": "Production DB", "host": "db.example.com" } ], "triggered_alerts": [ { "system_id": "xyz789ghi012", "system_name": "Web Server 01", "alert_name": "CPU", "threshold": 80 } ], "beszel_version": "0.18.4" } ``` -------------------------------- ### Check Systemd Version Source: https://beszel.dev/guide/systemd Verify your systemd version using this command. Beszel requires systemd 243 or later for full functionality, specifically for the `ListUnitsByPatterns` method. ```bash systemctl --version ``` -------------------------------- ### Get Beszel Agent Service Application Path Source: https://beszel.dev/guide/upgrade-winget Retrieve the current application path configured for the Beszel Agent service using NSSM. This is useful for troubleshooting service startup issues. ```powershell nssm get beszel-agent Application ``` -------------------------------- ### NVMe partition mapping for S.M.A.R.T. data Source: https://beszel.dev/guide/smart-data Example configuration for mapping an NVMe partition to the controller name when direct device mapping fails. This is sometimes required for specific NVMe drive manufacturers. ```yaml devices: - /dev/nvme0n1:/dev/nvme0 ``` -------------------------------- ### List Devices in /dev/dri Source: https://beszel.dev/guide/gpu List the contents of the /dev/dri directory to identify the correct device name for your Intel GPU when configuring the Docker agent. ```bash ls /dev/dri ```