docs(windows): add NSSM service option and gensiot native client

Document NSSM (fawno/nssm.cc rebuild) as an alternative to WinSW for
wrapping frpc/ser2net, with a WinSW-vs-NSSM recommendation. Add gensiot
as a native RFC 2217 client alongside pySerial, noting it is optional
for a server-only deployment. Update references.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-17 15:24:01 +08:00
co-authored by Claude Opus 4.8
parent f2f800ac7a
commit 14dcf97c08
4 changed files with 41 additions and 0 deletions
+10
View File
@@ -42,6 +42,16 @@ py -m serial.tools.miniterm "rfc2217://FRPS_HOST:2217" 9600
rfc2217://FRPS_HOST:2217?poll_modem rfc2217://FRPS_HOST:2217?poll_modem
``` ```
## 备选:gensio 原生客户端 gensiot
如果不想依赖 Python,也可以用 gensio 自带的命令行工具 [`gensiot`](https://man.archlinux.org/man/extra/gensio/gensiot.1.en)[gensio](https://github.com/cminyard/gensio) 项目的一部分,随 Windows 版 gensio 安装包一起提供)。它是原生的 RFC 2217 客户端,同样能控制波特率、停止位等串口参数:
```bash
gensiot 'telnet(rfc2217),tcp,FRPS_HOST,2217'
```
普通 `telnet` 命令不支持 RFC 2217,因此不能用来验证串口参数控制。本手册只部署服务器,客户端工具(pySerial 或 `gensiot`)仅用于验证链路,任选其一即可。
## 显式测试远程波特率修改 ## 显式测试远程波特率修改
保存并运行以下 Python 脚本: 保存并运行以下 Python 脚本:
+26
View File
@@ -301,6 +301,32 @@ sc.exe config frpc start= delayed-auto
`sc.exe` 要求 `start=` 后保留空格。`frpc` 可以先于本地 RFC 2217 服务启动并稍后重连,但在本地监听器就绪前,外部连接会失败。延迟自动启动和 WinSW 的失败重启策略有助于处理开机时 USB 枚举较慢的情况。 `sc.exe` 要求 `start=` 后保留空格。`frpc` 可以先于本地 RFC 2217 服务启动并稍后重连,但在本地监听器就绪前,外部连接会失败。延迟自动启动和 WinSW 的失败重启策略有助于处理开机时 USB 枚举较慢的情况。
### 4. 备选:使用 NSSM
[NSSM](https://nssm.cc/)Non-Sucking Service Manager)是另一个把控制台程序包装成 Windows 服务的常用工具,特点是命令行/GUI 都很简单。上游 NSSM 本体停在 2014 年的 2.24[fawno/nssm.cc](https://github.com/fawno/nssm.cc) 用 GitHub Actions 重新编译,提供较新的 32/64 位构建(如 `v2.24.1`2024 年)。
安装服务并注入与 `.env` 相同的三个变量:
```bat
nssm install frpc "C:\frp\frpc.exe" -c "C:\frp\frpc.toml"
nssm set frpc AppDirectory "C:\frp"
nssm set frpc AppEnvironmentExtra FRP_SERVER_ADDR=your-frps-host.example.com FRP_SERVER_PORT=21315 FRP_AUTH_TOKEN=your-frps-token
nssm set frpc AppStdout "C:\frp\logs\frpc.log"
nssm set frpc AppStderr "C:\frp\logs\frpc.log"
nssm set frpc AppRestartDelay 10000
nssm set frpc Start SERVICE_DELAYED_AUTO_START
nssm start frpc
```
NSSM 默认在被管进程异常退出时自动重启;`AppRestartDelay` 以毫秒为单位设置重启前延迟。令牌此时保存在服务配置(注册表)中,仅管理员可读,因此 `frpc.toml` 依旧只含模板。修改可用 `nssm edit frpc` 打开 GUI,或用 `nssm set` 逐项调整。
**推荐取舍**:两者都远优于直接用 `sc.exe create` 包装控制台程序。
- 若希望服务定义可版本化、随仓库走、便于复制到多台机器——**优先 WinSW**:其 XML(含 `<env>`)是纯文本,正好与本手册的 `{{ .Envs.* }}` 模板衔接。本手册默认使用 WinSW。
- 若偏好交互式一条条命令或 GUI、不打算把服务定义纳入版本管理——**用 NSSM** 更快。
同样的两种方式也适用于把原生 `ser2net.exe``hub4com` 包装为服务,只需替换可执行文件与参数。
## 四、暴露面、防火墙与安全边界 ## 四、暴露面、防火墙与安全边界
### 1. 回环监听与 Windows 防火墙 ### 1. 回环监听与 Windows 防火墙
+3
View File
@@ -15,6 +15,7 @@
- [gensio 3.0.2 Windows 版本](https://github.com/cminyard/gensio/releases/tag/v3.0.2) - [gensio 3.0.2 Windows 版本](https://github.com/cminyard/gensio/releases/tag/v3.0.2)
- [gensio Windows 构建说明](https://github.com/cminyard/gensio/blob/master/BUILDING.rst) - [gensio Windows 构建说明](https://github.com/cminyard/gensio/blob/master/BUILDING.rst)
- [gensio 协议与 Windows 串口设备文档](https://github.com/cminyard/gensio/blob/master/man/gensio.5) - [gensio 协议与 Windows 串口设备文档](https://github.com/cminyard/gensio/blob/master/man/gensio.5)
- [gensiot 命令行客户端手册](https://man.archlinux.org/man/extra/gensio/gensiot.1.en)
## FRP/RFC2217 clientFRP 转发与 RFC 2217 客户端) ## FRP/RFC2217 clientFRP 转发与 RFC 2217 客户端)
@@ -36,6 +37,8 @@
- [FabulaTech Serial Port Redirector](https://www.fabulatech.com/serial-port-redirector.html) - [FabulaTech Serial Port Redirector](https://www.fabulatech.com/serial-port-redirector.html)
- [FabulaTech 物理服务器端口文档](https://www.fabulatech.com/serial-port-redirector-help/creating-physical-server-port.html) - [FabulaTech 物理服务器端口文档](https://www.fabulatech.com/serial-port-redirector-help/creating-physical-server-port.html)
- [WinSW 服务包装器](https://github.com/winsw/winsw) - [WinSW 服务包装器](https://github.com/winsw/winsw)
- [NSSM 官网](https://nssm.cc/)
- [fawno/nssm.ccNSSM 重新构建版)](https://github.com/fawno/nssm.cc)
## Windows system/driver docsWindows 系统与驱动文档) ## Windows system/driver docsWindows 系统与驱动文档)
+2
View File
@@ -185,6 +185,8 @@ New-Item -ItemType Directory -Force C:\ProgramData\Ser2Net\logs
上述示例为简化部署而使用 WinSW 默认服务账户。生产环境应改用专用的最小权限服务身份,只授予必要的程序文件、配置文件和日志目录访问权限。 上述示例为简化部署而使用 WinSW 默认服务账户。生产环境应改用专用的最小权限服务身份,只授予必要的程序文件、配置文件和日志目录访问权限。
也可以用 NSSM 代替 WinSW 包装 `ser2net.exe`,命令模式与 [FRP 客户端部署指南的 NSSM 小节](frpc.md#4-备选使用-nssm) 一致,只需替换可执行文件与参数。
## 3. 方案 Bhub4com ## 3. 方案 Bhub4com
com0com 项目包含提供 RFC 2217 功能的 `hub4com` 包装器。若发布的是现有物理 COM 口,不需要创建 com0com 虚拟串口对。 com0com 项目包含提供 RFC 2217 功能的 `hub4com` 包装器。若发布的是现有物理 COM 口,不需要创建 com0com 虚拟串口对。