在OpenWrt上手动部署Beszel Agent服务指南

OpenWrt系统默认不使用systemd​,因此不支持systemctl​命令。本文将详细介绍如何通过手动方式在OpenWrt上创建和管理Beszel Agent服务。

准备工作

  1. 确保你的OpenWrt设备已联网
  2. 通过SSH连接到OpenWrt设备
  3. 确认设备架构(一般会自动检测,但建议了解)

安装步骤

1. 下载二进制文件

使用以下命令自动下载适合你设备架构的最新版本:

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 -O beszel-agent | tee ./beszel-agent >/dev/null && chmod +x beszel-agent

命令说明:

  • curl -sL​:静默下载文件
  • uname -s​:获取系统类型(Linux等)
  • uname -m​:获取机器架构
  • sed​命令:将常见架构名称转换为Go语言使用的标准名称
  • chmod +x​:赋予可执行权限

2. 安装到系统目录

mv beszel-agent /usr/bin/

3. 创建init脚本

OpenWrt使用自己的初始化系统procd​,我们需要创建对应的服务脚本:

vi /etc/init.d/beszel

将以下内容粘贴到文件中:

#!/bin/sh /etc/rc.common

USE_PROCD=1
START=95
STOP=01

APP_NAME="beszel-agent"
APP_PATH="/usr/bin/beszel-agent"
APP_PIDFILE="/var/run/beszel.pid"

start_service() {
    procd_open_instance
    procd_set_param command "$APP_PATH" -listen "45876" -key ""
    procd_set_param respawn  # 进程崩溃后自动重启
    procd_set_param pidfile "$APP_PIDFILE"
    procd_set_param stdout 1  # 重定向标准输出到日志
    procd_set_param stderr 1  # 重定向错误输出到日志
    procd_close_instance
}

stop_service() {
    killall "$APP_NAME"
}

参数说明:

  • START=95​:设置服务启动顺序(数字越大启动越晚)
  • STOP=01​:设置服务停止顺序(数字越小停止越早)
  • respawn​:进程意外终止时自动重启
  • stdout/stderr​:将输出重定向到系统日志

4. 设置权限并启用服务

chmod +x /etc/init.d/beszel  # 添加可执行权限
/etc/init.d/beszel enable    # 启用开机自启
/etc/init.d/beszel start     # 立即启动服务

5. 验证服务状态

检查服务是否正常运行:

ps | grep beszel

预期应该能看到类似这样的输出:

 1234 root      1234 S    /usr/bin/beszel-agent -listen 45876 -key 

6. 查看服务日志(可选)

logread | grep beszel

管理服务

  • 启动服务/etc/init.d/beszel start
  • 停止服务/etc/init.d/beszel stop
  • 重启服务/etc/init.d/beszel restart
  • 查看状态/etc/init.d/beszel status
  • 禁用开机启动/etc/init.d/beszel disable

常见问题

  1. 端口冲突:如果45876端口已被占用,请修改脚本中的端口号
  2. 权限问题:确保/usr/bin/beszel-agent​有可执行权限
  3. 启动失败:检查日志logread​获取详细错误信息
  4. 架构不匹配:如果自动检测的架构不正确,可以手动下载对应版本

升级方法

  1. 停止旧服务:/etc/init.d/beszel stop
  2. 下载新版本(同安装步骤)
  3. 启动服务:/etc/init.d/beszel start

通过以上步骤,你的Beszel Agent应该已经在OpenWrt上正常运行并设置了开机自启。