保持 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 --version 232 或更高版本
  • sudo 权限或 root 用户

步骤

trannap 二进制文件移动到您的 $PATH 中,例如:
sudo mv trannap /usr/local/bin/

测试是否正常:

trannap version
创建并保存 systemd 单元文件

仔细检查 ExecStartExecReload 指令。 确保二进制文件的位置和命令行参数与您的安装相匹配!例如:将 --device-token 更改为您的实际设备令牌。

/etc/systemd/system/trannap.service
# 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
首次启动服务
sudo systemctl daemon-reload
sudo systemctl enable --now trannap
验证服务正在运行
systemctl status trannap
现在您已准备好 使用服务

使用服务

验证服务是否正在运行:

systemctl status trannap

状态命令还会显示当前运行的服务文件的位置。

使用我们官方的服务文件运行时,TranNAP 的输出将重定向到 journalctl。要读取完整日志并避免行被截断:

journalctl -u trannap --no-pager | less +G

您可以使用以下命令停止服务:

sudo systemctl stop trannap

覆盖配置

覆盖服务文件各方面的最佳方式是使用此命令:

sudo systemctl edit trannap

这将在您的默认终端文本编辑器中打开一个空白文件,您可以在其中覆盖或添加单元定义的指令。这被称为"插入"文件。

崩溃时重启

如果您希望 trannap 在意外崩溃后 5 秒自动重启:

[Service]
# 如果 trannap 崩溃则自动重启,除非退出代码为 1
RestartPreventExitStatus=1
Restart=on-failure
RestartSec=5s

然后,保存文件并退出文本编辑器,重启服务以使其生效:

sudo systemctl restart trannap

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 替换为您的实际设备令牌)

启动:

sc.exe start trannap

停止:

sc.exe stop trannap

WinSW

按照以下说明将 TranNAP 安装为 Windows 服务。

要求:
  • 下载 trannap.exe 二进制文件
  • WinSW 服务包装器最新版本中的任何 .exe(以下服务配置针对 v2.x 版本编写)

步骤

将所有文件放入服务目录。在以下示例中,我们使用 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>
现在您可以使用以下命令安装服务:
trannap-service install

您可能需要打开 Windows 服务控制台来查看服务是否正常运行:

services.msc
可以通过正常的 Windows 服务命令重启,例如通过任务管理器的"服务"选项卡。

有关自定义服务包装器,请参阅 WinSW 文档