
opensoho v0.15.2
轻量级的OpenWRT设备管理平台,适用于小型网络。针对2–20台设备提供集中配置、监控和WiFi管理,部署简单且兼容OpenWISP。
警告:这是早期版本,请阅读截至目前所有版本的发布说明
OpenSOHO
感谢您考虑支持本项目!
OpenSOHO 旨在管理少量基于 OpenWRT 的网络设备。因此得名 SOHO,即小型办公室/家庭办公室(SOHO)网络。
- 支持 2 到 20 台设备(没有硬性限制)
- 不支持多租户
- 兼容 openwisp-config 和 openwisp-monitoring
- 部署简单
它受 OpenWISP 启发,但面向规模太小、无法用 OpenWISP 维护的网络。 正如 OpenWisp 所述:
然而,OpenWISP 可能并不最适合非常小的网络(少于 20 台设备)、缺乏 IT 专业知识的组织,或仅出于节省成本目的而寻求开源替代方案的企业。
以下版本已测试
- OpenWRT 24.10.x DSA(旧版支持)
- OpenWRT 25.12.x DSA
OpenSOHO 入门指南
概述
设置 OpenSOHO 需要几个简单步骤,每个步骤都在下面的章节中详细说明:
- 在您的服务器上安装 OpenSOHO。
- 在您的 OpenWRT 设备上安装 OpenWisp 软件包。
- 在每台 OpenWRT 设备上配置 OpenWisp 以连接到 OpenSOHO。
- 开始在 OpenSOHO 中进行配置!
安装 OpenSOHO
-
下载最新的 OpenSOHO 版本(或使用 docker 容器)
-
启动 OpenSOHO
首先,选择一个共享密钥,使 OpenWRT 设备(使用 openwisp-config)能够向 OpenSOHO 注册。
为获得最佳安全性,请选择一个较长的随机字符串。
它应与您在后续步骤中于 LuCI 中配置的内容一致。
OPENSOHO_SHARED_SECRET=randompassphrase ./opensoho serve --http 0.0.0.0:8090
现在,OpenSOHO 会在命令行输出一个 URL,允许你创建管理员账户。 只需在浏览器中打开该 URL 即可。
或者,通过命令行创建管理员账户:
./opensoho superuser upsert EMAIL PASS
配置(采用)OpenWRT 设备
安装 OpenWISP 软件包
opkg install openwisp-config openwisp-monitoring luci-app-openwisp # OpenWRT 24.10
apk add openwisp-config openwisp-monitoring luci-app-openwisp # OpenWRT 25.12+
如果你想使用 802.11v 客户端引导功能,则需要完整的 wpad-mbedtls。
在 OpenWRT 24.10 上
opkg remove wpad-basic-mbedtls && \
opkg install wpad-mbedtls && \
service wpad restart
在 OpenWRT 25.12+ 上
apk del wpad-basic-mbedtls && \
apk add wpad-mbedtls && \
service wpad restart
安装 wpad-mbedtls 后,请先尝试 service restart wpad,否则可能需要重启才能切换到新的 wpad 二进制文件。如果不这样做,你可能会遇到类似 daemon.notice netifd: radio1 (28210): WARNING (wireless_add_process): executable path /usr/sbin/wpad does not match process 1842 path (/usr/sbin/wpad (deleted)) 的错误。
(请注意,802.11v 客户端引导功能仍在开发中)
在 LuCI 中配置 OpenWISP:
- 仅设置
Server URL和Shared secret。- 请不要在
Server URL末尾添加斜杠。示例 URL:http://192.168.1.1:8090 - 共享密钥是你之前选择的值(
OPENSOHO_SHARED_SECRET)。
- 请不要在
- 可选:将
Update Interval降低到 30 秒以获得更快的更新。(如果你不设置,OpenSOHO 会为你完成此操作) - OpenSOHO 还会启用监控,并将监控间隔降低到 15 秒,以便更快地更新网络状态。
强烈建议启用监控,因为 OpenSOHO 会推断出大量当前的 OpenWRT 设置并自动填入,以便于配置。
配置 OpenSOHO
- 等待 OpenWrt 设备使用共享密钥自行注册。
- 将设备的
Enabled标志设置为 true。 - 将
numradios设置为正确的值。例如,对于 2.4 + 5GHz 设备,该值为 2。 - 设置一个 Wifi 接入点(SSID+KEY)。此过程允许 OpenSOHO 在设备注册时正确检测无线电配置。
- 将配置好的 Wifi 接入点附加到设备以进行配置。
- 目前每个网络都会自动在所有无线电上配置(使用
numradios配置)。 - 可选:LED 也可以打开或关闭(目前仅支持静态配置)。
- 现在支持配置无线电频率。OpenSOHO 会读取一次当前无线电配置,并使其在无线电配置下可用。无线电配置可能需要一两分钟才会出现(配置和监控步骤需要一些时间才能完成)。
仪表盘
OpenSOHO 附带一个基础仪表盘。可通过最左侧边栏中 OpenSOHO 标志正下方的按钮访问。
请注意,这并非旨在替代更高级的图表工具,它是有意保持基础功能的。
配置
现在可以通过 http://ipaddress:8090/_/ 访问 OpenSoho
有几个配置集合:
客户端
这些是连接到 Wifi 的客户端。此表为只读,别名除外。 它可用于为设备提供人类可读的名称。仅当客户端不随机化其 mac 地址时,此功能才能正常工作。
已连接客户端
包含当前连接到你的 wifi 的客户端列表。为了显示设备的 IP 地址,OpenSOHO 需要访问你的 DHCP 租约。为此,你需要在包含 DHCP 服务器的设备上运行 openwisp 监控守护进程。使用静态 IP 的设备将不会获得 IP。这是 0.12.0 版本的已知限制。
设备
这些是已连接的设备。
- 使用启用/禁用来禁用配置更新。这对于避免一次性更新所有设备很有用。监控保持活动状态。
- 健康状态是只读字段。
healthy表示设备在过去一分钟内进行了通信。如果没有,健康状态将变为unhealthy,设备或其连接可能存在问题。 - Leds 允许选择 LED 配置
- Numradios 允许设置设备上的无线电数量。OpenWisp 最初不会发送此信息,因此需要由用户设置。
- Wifis 允许选择要应用于此设备的 SSID。
DHCP 预留
创建一个包含主机名、MAC 地址、IPv4 地址以及一个或多个 DHCP 服务器的保留项。OpenSOHO 会在每个选定的服务器上向 /etc/config/dhcp 添加相同的命名 config host 段。清除 DHCP 服务器选择即可禁用该保留项而不删除它。主机名、MAC 地址和 IP 地址在保留项列表中必须唯一。
Leds
- 基本 LED 配置(目前更偏向于 POC)
Radios
- 允许设置每个 radio 的频率。
- 不应修改频段,因为这使 OpenSOHO 能够验证频率配置。由于 PocketBase 内部的限制,这是必要的。
Wifi
- 允许设置各种 SSID。目前加密模式的选择有限。WEP 或 Open 在设计上不受支持。
Monitoring
Device monitoring
验证设备健康状态是否为 healthy。
Connected clients
此视图显示在过去 30 秒内仍保持连接的所有 wifi 客户端。
Home Assistant integration
OpenSOHO 监控可与 Home Assistant 集成。(更多信息) 此 REST API 专为与 Home Assistant 配合使用而设计,但也可以与其他工具集成。
Troubleshooting
Reregister a device
在 LuCI 中更改 OpenWISP Server URL 时,似乎无法正确地向新控制器注册。
要解决此问题:
uci delete openwisp.http.uuid
uci delete openwisp.http.key
/etc/init.d/openwisp-config restart
第一个 SSID 未被启用
OpenWRT 中似乎存在一个问题:WiFi 设备上第一个配置的 SSID 不会自动启用。 变通方法:在 LuCI 中点击启用按钮。
开发者
- 安装依赖项
go mod tidy
- 启动 OpenSOHO
该共享密钥由 openwisp-config 用于注册。为获得最佳安全性,请选择一个较长的随机字符串。
运行单元测试:
go test -cover -v -coverprofile=coverage.out
go tool cover -html=coverage.out
范围
功能
以下部分 OpenWISP 功能(目前)被视为 OpenSOHO 范围之外
- 固件更新:OpenWRT 不需要频繁更新;请手动在每台设备上使用 Attended sysupgrade 功能。
- 多租户
- 模板:OpenWISP 拥有强大且多功能的模板机制,此处由一组更具倾向性的功能子集替代,以提供更简单的配置体验。
开发
目标是最大限度地利用 pocketbase。由于 pocketbase 后端目前缺少插件系统,因此可以进行小幅修改。但目标并不是创建 pocketbase 的分支,因此合并上游更改仍然保持简单直接。
发布
GITHUB_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa goreleaser release