保持 TranNAP 运行
虽然 TranNAP 可以通过命令行界面直接运行,但使用服务管理器来保持它运行有诸多优势,例如确保系统重启时自动启动,以及捕获 stdout/stderr 日志。
我们提供两种方式实现这个目标,即自动(推荐)和手动。
自动
这是推荐的方法。你只需运行一条命令,trannap 会自动完成其余工作——将自身注册为系统服务并启动。它支持 Windows、macOS 和 Linux 等主流操作系统。如果你使用的 Linux 发行版不包含 systemctl(例如使用了不常见的 init 方案),则可能需要
手动配置
。
要求
- 你已
下载
的
trannap二进制文件,以.zip压缩包形式提供,文件名随操作系统与架构而不同(例如trannap-v3.0.2-linux-arm64.zip)。需先解压。 - 在 Linux 上,
systemctl --version应返回 232 或更高版本。 - 能够使用当前操作系统的命令行(部分命令需要管理员/root 权限)。
首先解压压缩包,切换到包含 trannap 的目录,然后运行以下安装命令。
YOUR_DEVICE_TOKEN 替换为你之前复制的令牌。在控制台创建设备后即可获得(见
复制设备令牌
)。trannap start。如果一切顺利,配置即已完成。手动
Linux 服务
在带有 systemd 的 Linux 发行版上运行 TranNAP 的推荐方式是使用我们官方的 systemd 单元文件。
要求:
- 您
下载
的
trannap二进制文件 systemctl --version232 或更高版本sudo权限或root用户
步骤
将 trannap 二进制文件移动到您的 $PATH 中,例如:
测试是否正常:
创建并保存 systemd 单元文件
仔细检查 ExecStart 和 ExecReload 指令。 确保二进制文件的位置和命令行参数与您的安装相匹配!例如:将 --device-token 更改为您的实际设备令牌。
# trannap.service
#
# 用于运行 TranNAP。
[Unit]
Description=TranNAP
After=network.target network-online.target
Requires=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/trannap run --device-token your_device_token
TimeoutStopSec=10s
LimitNOFILE=1048576
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target首次启动服务
验证服务正在运行
使用服务
验证服务是否正在运行:
状态命令还会显示当前运行的服务文件的位置。
使用我们官方的服务文件运行时,TranNAP 的输出将重定向到 journalctl。要读取完整日志并避免行被截断:
您可以使用以下命令停止服务:
覆盖配置
覆盖服务文件各方面的最佳方式是使用此命令:
这将在您的默认终端文本编辑器中打开一个空白文件,您可以在其中覆盖或添加单元定义的指令。这被称为"插入"文件。
崩溃时重启
如果您希望 trannap 在意外崩溃后 5 秒自动重启:
[Service]
# 如果 trannap 崩溃则自动重启,除非退出代码为 1
RestartPreventExitStatus=1
Restart=on-failure
RestartSec=5s然后,保存文件并退出文本编辑器,重启服务以使其生效:
Windows 服务
在 Windows 上有两种运行 TranNAP 服务的方式: sc.exe 或 WinSW 。
sc.exe
创建服务,运行:
sc.exe create trannap start=auto binPath="YOURPATH\trannap.exe run --device-token YOUR_DEVICE_TOKEN"(将 YOURPATH 替换为 trannap.exe 的实际路径,将 YOUR_DEVICE_TOKEN 替换为您的实际设备令牌)
启动:
停止:
WinSW
按照以下说明将 TranNAP 安装为 Windows 服务。
要求:
步骤
将所有文件放入服务目录。在以下示例中,我们使用 C:\trannap。
将 WinSW-x64.exe 文件重命名为 trannap-service.exe。
在同一目录中添加 trannap-service.xml:
<service>
<id>trannap</id>
<!-- 服务显示名称 -->
<name>TranNAP (powered by WinSW)</name>
<!-- 服务描述 -->
<description>TranNAP (https://trannap.com/)</description>
<executable>%BASE%\trannap.exe</executable>
<arguments>run --device-token YOUR_DEVICE_TOKEN</arguments>
<log mode="roll-by-time">
<pattern>yyyy-MM-dd</pattern>
</log>
</service>现在您可以使用以下命令安装服务:
您可能需要打开 Windows 服务控制台来查看服务是否正常运行:
有关自定义服务包装器,请参阅 WinSW 文档