frpc技术文档.html

## 在 ARM 架构 Debian 12 NAS 上部署 ChmlFrp 客户端技术文档

本文档汇总了从文件上传、解压、临时运行、到配置为 Systemd 服务实现开机自启及自动重启的完整操作步骤。所有命令均在 SSH 终端中执行,适用于无图形界面的 NAS 环境。

---

### 1. 环境与前置条件

- 操作系统:Debian GNU/Linux 12 (bookworm)

- CPU 架构:ARM(32 位,对应 armv7l;若为 64 位 aarch64 需下载 arm64 版本)

- 软件包ChmlFrp-0.51.2_251023_linux_arm.tar.gz

- SSH 连接:已通过 SSH 登录 NAS,具有 sudo 权限

---

### 2. 文件上传与解压

#### 2.1 上传文件到 NAS(任选一种)

- 使用 WinSCP(图形化):协议选 SFTP,主机填 NAS IP,端口 22,拖拽上传。

- 使用 SCP 命令(Windows 命令提示符)

```bash

scp -P 22 C:\本地路径\ChmlFrp-*.tar.gz 用户名@NAS_IP:/home/用户名/

```

- 使用 SMB 共享:在 Windows 运行 \\NAS_IP,复制粘贴到共享文件夹,再通过 SSH 移动到目标目录。

#### 2.2 解压压缩包

```bash

tar -xzvf ChmlFrp-0.51.2_251023_linux_arm.tar.gz

```

解压后文件位于当前目录,包含 frpc(主程序)、frpc.ini(配置文件模板)等。

#### 2.3 添加执行权限

```bash

chmod +x frpc

```

---

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

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

```bash

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

```

- -u-p 参数请替换为实际值。

- 日志输出到当前目录的 frpc.log 文件。

查看实时日志:

```bash

tail -f frpc.log

```

Ctrl+C 退出日志查看。

---

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

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

#### 4.1 创建服务文件

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

方法一:使用 nano 编辑器(如果已安装)

```bash

sudo nano /etc/systemd/system/frpc.service

```

方法二:使用 vim 编辑器(系统自带)

```bash

sudo vim /etc/systemd/system/frpc.service

```

- 在 vim 中按 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 重载系统服务配置

```bash

sudo systemctl daemon-reload

```

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

```bash

sudo systemctl enable frpc.service

sudo systemctl start frpc.service

```

#### 4.5 查看服务运行状态

```bash

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 模式的日志跟踪。

---

### 6. 进程管理(非 Systemd 方式)

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

#### 6.1 查找进程 ID

```bash

ps aux | grep frpc | grep -v grep

```

输出第二列即为 PID。

#### 6.2 终止进程

```bash

kill PID

```

或按名称杀死:

```bash

pkill -f "frpc -u"

```

---

### 7. 移除开机自启并删除服务

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

停止服务

```bash

sudo systemctl stop frpc.service

```

取消开机自启

```bash

sudo systemctl disable frpc.service

```

(可选)删除服务文件

```bash

sudo rm /etc/systemd/system/frpc.service

sudo systemctl daemon-reload

```

---

### 8. 常见错误及解决方法

#### 8.1 服务启动失败,状态为 Active: activating (auto-restart) (Result: exit-code)code=exited, status=203/EXEC

可能原因

- ExecStart= 路径错误或文件不存在。

- 文件没有可执行权限。

- 程序依赖库缺失。

排查步骤

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

```bash

ls -l /home/用户名/frpc

```

2. 添加执行权限:

```bash

chmod +x /home/用户名/frpc

```

3. 检查程序依赖:

```bash

ldd /home/用户名/frpc

```

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

```bash

sudo apt update && sudo apt install libfuse2

```

4. 尝试直接运行看具体错误:

```bash

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

```

#### 8.2 服务运行但日志显示 connection refused

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

- 内网服务是否已启动。

- 目标 IP 和端口是否正确。

- 若服务就在本机,建议目标地址改为 127.0.0.1:端口

#### 8.3 修改服务文件后不生效

执行重载和重启:

```bash

sudo systemctl daemon-reload

sudo systemctl restart frpc.service

```

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

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

---

### 9. 安全提醒

- 命令行中的 -u-p 参数会被所有用户通过 ps aux 看到,建议改用配置文件 frpc.ini 存放认证信息,并将 ExecStart 改为 ExecStart=/路径/frpc -c /路径/frpc.ini

- 服务文件中的路径和参数应使用绝对路径,避免使用 ~ 等相对符号。

- 定期检查日志文件大小,可配置日志轮转(logrotate)。

---

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

| 操作 | 按键 |

| :--- | :--- |

| 打开文件 | sudo vim 文件路径 |

| 进入插入模式(开始编辑) | 按 i |

| 退出插入模式 | 按 Esc |

| 保存并退出 | :wq |

| 不保存强制退出 | :q! |

| 删除当前行 | dd |

| 撤销上一步 | u |

| 查找关键词 | /关键词(按 n 下一个) |

| 替换整个文件内容 | :%s/旧/新/g |

---

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