ChmlFrp 客户端部署文档

Debian GNU/Linux 12 (bookworm) ARM 架构 (armv7l / aarch64) Systemd 服务 + 自动重启

1. 环境与前置条件

2. 文件上传与解压

2.1 上传文件到 NAS

任选一种方式:

2.2 解压压缩包

Shell tar -xzvf ChmlFrp-0.51.2_251023_linux_arm.tar.gz

解压后文件包含 frpc(主程序)、frpc.ini(配置文件模板)等。

2.3 添加执行权限

Shell chmod +x frpc

3. 临时后台运行(使用 nohup)

此方式使程序在 SSH 断开后继续运行,但 重启后不会自动启动。适合短期测试。

Shell nohup ./frpc -u 你的用户ID -p 你的隧道ID > frpc.log 2>&1 &

查看实时日志:

Shell tail -f frpc.log

Ctrl+C 退出日志查看。

4. 配置为 Systemd 服务(开机自启 + 崩溃自动重启)

将程序托管给系统服务管理器,实现 开机自启异常退出后自动重启

4.1 创建服务文件

服务文件位于 /etc/systemd/system/frpc.service,需使用 sudo 权限创建。

A
使用 nano 编辑器(若已安装)
Shell sudo nano /etc/systemd/system/frpc.service

输入内容后按 Ctrl+O 保存,Ctrl+X 退出。

B
使用 vim 编辑器(系统自带)
Shell sudo vim /etc/systemd/system/frpc.service

i 进入插入模式,输入内容。完成后按 Esc,输入 :wq 保存退出。

4.2 服务文件内容

ini [Unit] Description=ChmlFrp Client After=network.target [Service] Type=simple ExecStart=/home/用户名/frpc -u 你的用户ID -p 你的隧道ID Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
⚠️ 重要
/home/用户名/ 替换为 frpc 文件的实际绝对路径。可使用 pwd 查看当前路径,并用 ls -l 确认文件位置。

4.3 重载系统服务配置

Shell sudo systemctl daemon-reload

4.4 设置开机自启并立即启动

Shell sudo systemctl enable frpc.service
sudo systemctl start frpc.service

4.5 查看服务运行状态

Shell sudo systemctl status frpc.service

正常状态应显示 Active: active (running)

5. 服务管理与日志查看

操作 命令
查看服务状态 sudo systemctl status frpc.service
手动启动服务 sudo systemctl start frpc.service
手动停止服务 sudo systemctl stop frpc.service
手动重启服务 sudo systemctl restart frpc.service
查看实时日志(滚动) sudo journalctl -u frpc.service -f
查看最近 100 行日志 sudo journalctl -u frpc.service -n 100 --no-pager
查看全部日志(分页) sudo journalctl -u frpc.service

Ctrl+C 可退出 -f 模式的日志跟踪。

5.1 进程管理(非 Systemd 方式)

若使用 nohup 临时运行,可通过以下方式管理进程。

查找进程 ID:

Shell ps aux | grep frpc | grep -v grep

输出第二列即为 PID。

终止进程:

Shell kill PID

或按名称杀死:

Shell pkill -f "frpc -u"

5.2 移除开机自启并删除服务

若不再需要开机自启,按顺序执行:

Shell sudo systemctl stop frpc.service
sudo systemctl disable frpc.service
sudo rm /etc/systemd/system/frpc.service
sudo systemctl daemon-reload

6. 常见错误及解决方法

6.1 服务启动失败:status=203/EXEC

❌ 现象

Active: activating (auto-restart) (Result: exit-code)
code=exited, status=203/EXEC

可能原因:

排查步骤:

  1. 确认文件存在且路径正确:

    Shell ls -l /home/用户名/frpc
  2. 添加执行权限:

    Shell chmod +x /home/用户名/frpc
  3. 检查程序依赖:

    Shell ldd /home/用户名/frpc

    若显示 not found,安装对应库(如 libfuse2):

    Shell sudo apt update && sudo apt install libfuse2
  4. 尝试直接运行看具体错误:

    Shell /home/用户名/frpc -u xxx -p xxx

6.2 服务运行但日志显示 connection refused

ℹ️ 说明

frpc 已成功连接远程服务器,但无法连接到内网的目标服务(如 192.168.110.42:8090)。

检查项:

6.3 修改服务文件后不生效

执行重载和重启:

Shell sudo systemctl daemon-reload
sudo systemctl restart frpc.service

6.4 忘记使用 sudo 打开服务文件导致无法保存

退出后重新用 sudo vimsudo nano 打开。

附录:vim 编辑器常用操作(针对无 nano 环境)

操作 按键 / 命令
打开文件 sudo vim 文件路径
进入插入模式(开始编辑) i
退出插入模式 Esc
保存并退出 :wq
不保存强制退出 :q!
删除当前行 dd
撤销上一步 u
查找关键词 /关键词(按 n 下一个)
替换整个文件内容 :%s/旧/新/g

安全提醒

🔒 安全建议
  • 命令行中的 -u-p 参数会被所有用户通过 ps aux 看到,建议改用配置文件 frpc.ini 存放认证信息,并将 ExecStart 改为 ExecStart=/路径/frpc -c /路径/frpc.ini
  • 服务文件中的路径和参数应使用绝对路径,避免使用 ~ 等相对符号。
  • 定期检查日志文件大小,可配置日志轮转(logrotate)。

本文档覆盖了从零开始部署 ChmlFrp 客户端的全部流程。
若遇到未列出的问题,可通过 journalctl -u frpc.service -n 50 查看详细日志进一步排查。