mirror of
https://github.com/henrygd/beszel.git
synced 2026-03-24 06:26:17 +01:00
Compare commits
5 Commits
v0.11.1
...
3a977a8e1f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3a977a8e1f | ||
|
|
081979de24 | ||
|
|
23fe189797 | ||
|
|
e9d429b9b8 | ||
|
|
99202c85b6 |
2
.github/workflows/docker-images.yml
vendored
2
.github/workflows/docker-images.yml
vendored
@@ -3,7 +3,7 @@ name: Make docker images
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
tags:
|
tags:
|
||||||
- 'xv*'
|
- 'v*'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ builds:
|
|||||||
|
|
||||||
archives:
|
archives:
|
||||||
- id: beszel-agent
|
- id: beszel-agent
|
||||||
format: tar.gz
|
formats: [tar.gz]
|
||||||
builds:
|
builds:
|
||||||
- beszel-agent
|
- beszel-agent
|
||||||
name_template: >-
|
name_template: >-
|
||||||
@@ -60,10 +60,10 @@ archives:
|
|||||||
{{- .Arch }}
|
{{- .Arch }}
|
||||||
format_overrides:
|
format_overrides:
|
||||||
- goos: windows
|
- goos: windows
|
||||||
format: zip
|
formats: [zip]
|
||||||
|
|
||||||
- id: beszel
|
- id: beszel
|
||||||
format: tar.gz
|
formats: [tar.gz]
|
||||||
builds:
|
builds:
|
||||||
- beszel
|
- beszel
|
||||||
name_template: >-
|
name_template: >-
|
||||||
@@ -87,9 +87,6 @@ nfpms:
|
|||||||
- beszel-agent
|
- beszel-agent
|
||||||
formats:
|
formats:
|
||||||
- deb
|
- deb
|
||||||
# don't think this is needed with CGO_ENABLED=0
|
|
||||||
# dependencies:
|
|
||||||
# - libc6
|
|
||||||
contents:
|
contents:
|
||||||
- src: ../supplemental/debian/beszel-agent.service
|
- src: ../supplemental/debian/beszel-agent.service
|
||||||
dst: lib/systemd/system/beszel-agent.service
|
dst: lib/systemd/system/beszel-agent.service
|
||||||
@@ -173,6 +170,41 @@ brews:
|
|||||||
error_log_path "#{Dir.home}/.cache/beszel/beszel-agent.log"
|
error_log_path "#{Dir.home}/.cache/beszel/beszel-agent.log"
|
||||||
keep_alive true
|
keep_alive true
|
||||||
|
|
||||||
|
winget:
|
||||||
|
- ids: [beszel-agent]
|
||||||
|
name: beszel-agent
|
||||||
|
package_identifier: henrygd.beszel-agent
|
||||||
|
publisher: henrygd
|
||||||
|
license: MIT
|
||||||
|
license_url: 'https://github.com/henrygd/beszel/blob/main/LICENSE'
|
||||||
|
copyright: '2025 henrygd'
|
||||||
|
homepage: 'https://beszel.dev'
|
||||||
|
release_notes_url: 'https://github.com/henrygd/beszel/releases/tag/v{{ .Version }}'
|
||||||
|
publisher_support_url: 'https://github.com/henrygd/beszel/issues'
|
||||||
|
short_description: 'Agent for Beszel, a lightweight server monitoring platform.'
|
||||||
|
skip_upload: auto
|
||||||
|
description: |
|
||||||
|
Beszel is a lightweight server monitoring platform that includes Docker
|
||||||
|
statistics, historical data, and alert functions. It has a friendly web
|
||||||
|
interface, simple configuration, and is ready to use out of the box.
|
||||||
|
It supports automatic backup, multi-user, OAuth authentication, and
|
||||||
|
API access.
|
||||||
|
tags:
|
||||||
|
- homelab
|
||||||
|
- monitoring
|
||||||
|
- self-hosted
|
||||||
|
repository:
|
||||||
|
owner: henrygd
|
||||||
|
name: beszel-winget
|
||||||
|
branch: henrygd.beszel-agent-{{ .Version }}
|
||||||
|
pull_request:
|
||||||
|
enabled: false
|
||||||
|
draft: false
|
||||||
|
base:
|
||||||
|
owner: microsoft
|
||||||
|
name: winget-pkgs
|
||||||
|
branch: master
|
||||||
|
|
||||||
release:
|
release:
|
||||||
draft: true
|
draft: true
|
||||||
|
|
||||||
|
|||||||
@@ -157,19 +157,44 @@ try {
|
|||||||
|
|
||||||
Write-Host "Starting beszel-agent service..."
|
Write-Host "Starting beszel-agent service..."
|
||||||
nssm start beszel-agent
|
nssm start beszel-agent
|
||||||
if ($LASTEXITCODE -ne 0) {
|
$startResult = $LASTEXITCODE
|
||||||
throw "Failed to start beszel-agent service"
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "Checking beszel-agent service status..."
|
# Only enter the status check loop if the NSSM start command failed
|
||||||
Start-Sleep -Seconds 5 # Allow time to start before checking status
|
if ($startResult -ne 0) {
|
||||||
$serviceStatus = nssm status beszel-agent
|
Write-Host "NSSM start command returned error code: $startResult" -ForegroundColor Yellow
|
||||||
|
Write-Host "This could be due to 'SERVICE_START_PENDING' state. Checking service status..."
|
||||||
if ($serviceStatus -eq "SERVICE_RUNNING") {
|
|
||||||
Write-Host "Success! The beszel-agent service is running properly." -ForegroundColor Green
|
# Allow up to 20 seconds for the service to start, checking every 2 seconds
|
||||||
|
$maxWaitTime = 20 # seconds
|
||||||
|
$elapsedTime = 0
|
||||||
|
$serviceStarted = $false
|
||||||
|
|
||||||
|
while (-not $serviceStarted -and $elapsedTime -lt $maxWaitTime) {
|
||||||
|
$serviceStatus = nssm status beszel-agent
|
||||||
|
|
||||||
|
if ($serviceStatus -eq "SERVICE_RUNNING") {
|
||||||
|
$serviceStarted = $true
|
||||||
|
Write-Host "Success! The beszel-agent service is now running properly." -ForegroundColor Green
|
||||||
|
}
|
||||||
|
elseif ($serviceStatus -like "*PENDING*") {
|
||||||
|
Write-Host "Service is still starting (status: $serviceStatus)... waiting" -ForegroundColor Yellow
|
||||||
|
Start-Sleep -Seconds 2
|
||||||
|
$elapsedTime += 2
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Host "Warning: The service status is '$serviceStatus' instead of 'SERVICE_RUNNING'." -ForegroundColor Yellow
|
||||||
|
Write-Host "You may need to troubleshoot the service installation." -ForegroundColor Yellow
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not $serviceStarted) {
|
||||||
|
Write-Host "Service did not reach running state within $maxWaitTime seconds." -ForegroundColor Yellow
|
||||||
|
Write-Host "You can check status manually with 'nssm status beszel-agent'" -ForegroundColor Yellow
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Write-Host "Warning: The service status is '$serviceStatus' instead of 'SERVICE_RUNNING'." -ForegroundColor Yellow
|
# NSSM start command was successful
|
||||||
Write-Host "You may need to troubleshoot the service installation." -ForegroundColor Yellow
|
Write-Host "Success! The beszel-agent service is running properly." -ForegroundColor Green
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
|
|||||||
@@ -8,7 +8,53 @@ is_openwrt() {
|
|||||||
cat /etc/os-release | grep -q "OpenWrt"
|
cat /etc/os-release | grep -q "OpenWrt"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to ensure the proxy URL ends with a /
|
# If SELinux is enabled, set the context of the binary
|
||||||
|
set_selinux_context() {
|
||||||
|
# Check if SELinux is enabled and in enforcing or permissive mode
|
||||||
|
if command -v getenforce >/dev/null 2>&1; then
|
||||||
|
SELINUX_MODE=$(getenforce)
|
||||||
|
if [ "$SELINUX_MODE" != "Disabled" ]; then
|
||||||
|
echo "SELinux is enabled (${SELINUX_MODE} mode). Setting appropriate context..."
|
||||||
|
|
||||||
|
# First try to set persistent context if semanage is available
|
||||||
|
if command -v semanage >/dev/null 2>&1; then
|
||||||
|
echo "Attempting to set persistent SELinux context..."
|
||||||
|
if semanage fcontext -a -t bin_t "/opt/beszel-agent/beszel-agent" >/dev/null 2>&1; then
|
||||||
|
restorecon -v /opt/beszel-agent/beszel-agent >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
echo "Warning: Failed to set persistent context, falling back to temporary context."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Fall back to chcon if semanage failed or isn't available
|
||||||
|
if command -v chcon >/dev/null 2>&1; then
|
||||||
|
# Set context for both the directory and binary
|
||||||
|
chcon -t bin_t /opt/beszel-agent/beszel-agent || echo "Warning: Failed to set SELinux context for binary."
|
||||||
|
chcon -R -t bin_t /opt/beszel-agent || echo "Warning: Failed to set SELinux context for directory."
|
||||||
|
else
|
||||||
|
if [ "$SELINUX_MODE" = "Enforcing" ]; then
|
||||||
|
echo "Warning: SELinux is in enforcing mode but chcon command not found. The service may fail to start."
|
||||||
|
echo "Consider installing the policycoreutils package or temporarily setting SELinux to permissive mode."
|
||||||
|
else
|
||||||
|
echo "Warning: SELinux is in permissive mode but chcon command not found."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Clean up SELinux contexts if they were set
|
||||||
|
cleanup_selinux_context() {
|
||||||
|
if command -v getenforce >/dev/null 2>&1 && [ "$(getenforce)" != "Disabled" ]; then
|
||||||
|
echo "Cleaning up SELinux contexts..."
|
||||||
|
# Remove persistent context if semanage is available
|
||||||
|
if command -v semanage >/dev/null 2>&1; then
|
||||||
|
semanage fcontext -d "/opt/beszel-agent/beszel-agent" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ensure the proxy URL ends with a /
|
||||||
ensure_trailing_slash() {
|
ensure_trailing_slash() {
|
||||||
if [ -n "$1" ]; then
|
if [ -n "$1" ]; then
|
||||||
case "$1" in
|
case "$1" in
|
||||||
@@ -20,7 +66,7 @@ ensure_trailing_slash() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Define default values
|
# Default values
|
||||||
PORT=45876
|
PORT=45876
|
||||||
UNINSTALL=false
|
UNINSTALL=false
|
||||||
GITHUB_URL="https://github.com"
|
GITHUB_URL="https://github.com"
|
||||||
@@ -141,6 +187,9 @@ done
|
|||||||
|
|
||||||
# Uninstall process
|
# Uninstall process
|
||||||
if [ "$UNINSTALL" = true ]; then
|
if [ "$UNINSTALL" = true ]; then
|
||||||
|
# Clean up SELinux contexts before removing files
|
||||||
|
cleanup_selinux_context
|
||||||
|
|
||||||
if is_alpine; then
|
if is_alpine; then
|
||||||
echo "Stopping and disabling the agent service..."
|
echo "Stopping and disabling the agent service..."
|
||||||
rc-service beszel-agent stop
|
rc-service beszel-agent stop
|
||||||
@@ -334,6 +383,9 @@ mv beszel-agent /opt/beszel-agent/beszel-agent
|
|||||||
chown beszel:beszel /opt/beszel-agent/beszel-agent
|
chown beszel:beszel /opt/beszel-agent/beszel-agent
|
||||||
chmod 755 /opt/beszel-agent/beszel-agent
|
chmod 755 /opt/beszel-agent/beszel-agent
|
||||||
|
|
||||||
|
# Set SELinux context if needed
|
||||||
|
set_selinux_context
|
||||||
|
|
||||||
# Cleanup
|
# Cleanup
|
||||||
rm -rf "$TEMP_DIR"
|
rm -rf "$TEMP_DIR"
|
||||||
|
|
||||||
@@ -548,6 +600,37 @@ EOF
|
|||||||
systemctl enable beszel-agent.service
|
systemctl enable beszel-agent.service
|
||||||
systemctl start beszel-agent.service
|
systemctl start beszel-agent.service
|
||||||
|
|
||||||
|
# Create the update script
|
||||||
|
echo "Creating the update script..."
|
||||||
|
cat >/opt/beszel-agent/run-update.sh <<'EOF'
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if /opt/beszel-agent/beszel-agent update | grep -q "Successfully updated"; then
|
||||||
|
echo "Update found, checking SELinux context."
|
||||||
|
if command -v getenforce >/dev/null 2>&1 && [ "$(getenforce)" != "Disabled" ]; then
|
||||||
|
echo "SELinux enabled, applying context..."
|
||||||
|
if command -v chcon >/dev/null 2>&1; then
|
||||||
|
chcon -t bin_t /opt/beszel-agent/beszel-agent || echo "Warning: chcon command failed to apply context."
|
||||||
|
fi
|
||||||
|
if command -v restorecon >/dev/null 2>&1; then
|
||||||
|
restorecon -v /opt/beszel-agent/beszel-agent >/dev/null 2>&1 || echo "Warning: restorecon command failed to apply context."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo "Restarting beszel-agent service..."
|
||||||
|
systemctl restart beszel-agent
|
||||||
|
echo "Update process finished."
|
||||||
|
else
|
||||||
|
echo "No updates found or applied."
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chown root:root /opt/beszel-agent/run-update.sh
|
||||||
|
chmod +x /opt/beszel-agent/run-update.sh
|
||||||
|
|
||||||
# Prompt for auto-update setup
|
# Prompt for auto-update setup
|
||||||
if [ "$AUTO_UPDATE_FLAG" = "true" ]; then
|
if [ "$AUTO_UPDATE_FLAG" = "true" ]; then
|
||||||
AUTO_UPDATE="y"
|
AUTO_UPDATE="y"
|
||||||
@@ -571,7 +654,7 @@ Wants=beszel-agent.service
|
|||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
ExecStart=/bin/sh -c '/opt/beszel-agent/beszel-agent update | grep -q "Successfully updated" && (echo "Update found, restarting beszel-agent" && systemctl restart beszel-agent) || echo "No updates found"'
|
ExecStart=/opt/beszel-agent/run-update.sh
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Create systemd timer for the daily update
|
# Create systemd timer for the daily update
|
||||||
|
|||||||
Reference in New Issue
Block a user