frpc 基本使用指南
提示
SakuraFrp 核心服务已原生支持在 Linux 上运行,推荐您 使用启动器 而非直接运行 frpc
本文档中给出的命令大多需要 root
权限才能运行,请确保您现在已经处于有 root
权限的环境下。
如果您现在没有切换到 root
账户下,那么请使用 su
或者 sudo -s
命令来进行切换。
确认处理器架构
下载 frpc 前,请先确认您的处理器架构。执行下面的命令,根据输出结果查表:
uname -m
输出 | 架构 |
---|---|
i386 , i686 | i386 |
x86_64 | amd64 |
arm , armel | arm_garbage |
armv7l , armhf | armv7* |
aarch64 , armv8l | arm64 |
mips | mips* |
mips64 | mips64* |
- 如果您使用
armv7
版时出现Illegal instruction
报错,请下载arm_garbage
版本重试 - mips/mips64 架构还需要确认字节序,请参考 下一节 进行操作,其他架构无需执行此操作
- 如果您使用 Termux+PRoot 运行其他发行版,或使用某 "开源手机 AI 开发框架",可能会碰到
Segmentation fault
报错。这是一个已知的 UPX 与 PRoot 及部分 Linux 内核协作的 Bug,请使用upx -d
解压程序使用,或在下载地址后加_noupx
下载已解压的版本
确认处理器字节序 (mips/mips64)
# 一般来说只需要使用这条命令:
echo -n I | hexdump -o | awk '{print substr($2,6,1); exit}'
# 如果上面的命令报错,请尝试这条:
echo -n I | od -to2 | awk '{print substr($2,6,1); exit}'
输出 | 架构 |
---|---|
0 | mips / mips64 |
1 | mipsle / mips64le |
安装 frpc
登录管理面板,转到 “软件下载” :
选择 frpc,然后选择正确的系统和架构,复制下载链接:
使用下面的命令进入
/usr/local/bin
目录并下载文件:cd /usr/local/bin # 一般来说只需要使用这条命令: wget -O frpc <下载地址> # 如果上面的命令报错,请尝试这条: curl -Lo frpc <下载地址> # Linux frpc 通常已经过 UPX 压缩,如需下载未压缩的版本请在下载地址尾部加上 _noupx
然后设置权限并校验文件是否有损坏:
chmod 755 frpc ls -ls frpc md5sum frpc
此时 frpc 就安装完成并可以正常使用了。您可以用此命令查看 frpc 版本号:
frpc -v
使用 frpc
请查看 启动隧道 一节了解如何启动 frpc 并连接到您的隧道。
通过本文档中介绍的方法安装后,您应该可以在任何目录直接输入 frpc <参数>
运行 frpc ,不需要 输入完整路径
简易后台运行
注意
不推荐采用 &
将 frpc 放到后台运行,建议参考下面的 配置开机自启 一节将 frpc 注册为系统服务
如果要临时将 frpc 放到后台运行,可以在运行命令的后面加 &
,例如:
frpc -f wdnmdtoken666666:12345 &
配置开机自启
提示
本文档暂未覆盖到 Upstart 和 SysV-Init,如果您熟悉这些初始化系统,欢迎提交 PR
本文档提供下列初始化系统的自启配置指南:
- systemd
- Upstart
- SysV
以及下列发行版的服务配置指南:
如果您不清楚您的 Linux 系统使用的 初始化系统 是什么,请执行下面的命令然后查看输出:
if [[ `/sbin/init --version` =~ upstart ]]; then echo Upstart; elif [[ `systemctl` =~ -\.mount ]]; then echo systemd; elif [[ -f /etc/init.d/cron && ! -h /etc/init.d/cron ]]; then echo SysVinit; else echo Unknown; fi
注意
我们不推荐在 macOS 系统上直接使用 frpc,除非您有特殊需求,否则请 使用启动器
在 macOS 安装 frpc 需要在 终端 (Terminal.app
) 下执行一些命令。
如果您对 macOS 的命令行操作不熟悉,请严格按照文档进行操作避免出现意外。
打开终端并提升到 root 权限
按下键盘上的
⌘ + 空格
调出聚焦搜索并键入终端
,双击终端图标您应该会看到类似下图的窗口
执行下面的命令
sudo -s
输入您当前账户的密码并按下回车
提示
您会发现终端并没有显示您输入的密码,不用担心,“摸黑”输入密码后按下回车即可,退格按键同样可用
如果您看到和图里一样的输出(出现
#
),说明您已成功提升到root
权限
安装 frpc
登录管理面板,转到 “软件下载”:
选择 frpc,然后选择正确的系统和架构,复制下载链接:
注意
我们建议您复制链接并使用命令下载 frpc,如果您用浏览器下载可能会出现无法运行的问题
如果出现上述问题,您可以参考 此 FAQ 解决使用下面的命令进入
/usr/local/bin
文件夹:mkdir -p -m 755 /usr/local/bin && cd /usr/local/bin
然后,使用下面的命令下载 frpc:
curl -Lo frpc <刚才复制的下载链接>
使用下面的命令设置权限并检查输出:
chmod 755 frpc ls -ls frpc
如果您看到和图中红框标记匹配的输出,说明 frpc 已完成安装并准备就绪
您可以执行下面的命令再次确认以及查看 frpc 版本号
frpc -v
使用 frpc
请查看 启动隧道 一节了解如何启动 frpc 并连接到您的隧道。
通过本文档中介绍的方法安装后,您应该可以在任何目录直接输入 frpc <参数>
运行 frpc,不需要 输入完整路径
注意
我们不推荐在 Windows 系统上直接使用 frpc,除非您有特殊需求,否则请 使用启动器
确认系统架构
下载 frpc 前,请先确认您的处理器架构。按 Win+R
打开运行窗口:
输入 msinfo32
然后点确定,找到 系统类型 一栏显示的 基于 XXX 的电脑
:
然后根据下表确认您的系统架构:
系统类型 | 架构 |
---|---|
x86 | i386 |
x64 | amd64 |
ARM64 | ARM64 |
下载 frpc
登录管理面板,转到 “软件下载”:
选择 frpc,然后选择正确的系统和架构,点击下载按钮:
使用 frpc
请查看 启动隧道 一节了解如何启动 frpc 并连接到您的隧道。
这里提供一个简单的命令行启动示例:
首先找到您之前下载的 frpc,在本示例中,文件名为
frpc_windows_amd64.exe
按住 Shift 然后 右键 点击空白区域,选择
在此处打开 Powershell 窗口
或者在此处打开命令窗口
:然后按下图中的说明输入您下载的 frpc 文件名和启动参数,按回车启动 frpc:
使用 frpc 前,请先 查看您的访问密钥。您可以通过下列方式启动 frpc:
启动方式 | 说明 |
---|---|
TUI | 易于上手,适合不熟悉命令行的新手用户 |
命令行 | 支持更复杂的配置,适合高级用户 |
查看访问密钥
本文档所提到的 访问密钥(有时也叫 Token)是专门用于客户端(启动器、frpc)登录的一个 专用密码,与您的账户登录密码 不同。
安全警告
请妥善保管您的访问密钥,截图时注意打码。若访问密钥不慎泄露,请尽快到 用户信息 界面进行重置
您可以在 管理面板 点击 查看访问密钥 按钮查看并复制访问密钥:
本文档通常使用 wdnmdtoken6666666
作为示例密钥,实际操作时请将其替换为您自己的访问密钥。
通过 TUI 启动隧道
在 frpc.ini
不存在的情况下,不带参数直接运行 frpc 会打开 TUI(文本图形界面)。
在 Token 后面的文本框内输入访问密钥,然后使用 Tab
键切换到 Login 按钮并按 回车
键登录 (若终端支持也可使用鼠标进行操作):
登录成功后 TUI 会显示当前账户下的隧道列表,使用方向键选中想要启动的隧道,按空格标为绿色 (或使用鼠标直接点击隧道):
提示
可以一次性启用多个隧道,您也可以直接选中节点来启用该节点下的所有隧道
选择完毕后,按 Ctrl-C
即可启动隧道,相关启动参数会被保存到配置文件 frpc.ini
中,下次不带参数直接运行 frpc 时不再显示 TUI 而是直接启动隧道:
提示
自 v0.42.0-sakura-3
版本起,启动时若不带参数 且 frpc.ini
存在,您会看到 正在使用配置文件运行,在 3 秒内按任意键进入配置模式
的提示。按下任意按键即可进入配置界面,否则 frpc 会自动加载 frpc.ini
并启动里面保存的隧道
通过命令行启动隧道
从面板获取启动参数
要获取启动参数,最简单的方法就是在管理面板中直接查看了。点击隧道操作中的 配置文件 选项即可进行查看:
如果要同时启动多条隧道,先勾选要启动的隧道再点击 批量操作 中的 配置文件 选项:
弹出对话框后,如图所示复制启动参数并粘贴到 frpc
命令后面即可,注意中间要用空格分开。
在上面这个例子中,我们启动隧道的命令就是:
frpc -f wdnmdtoken6666666:114514,114516
# ^
# 注意这里有一个空格
启动参数格式
注意
如果您没有按照 基本使用指南 安装 frpc,或您使用的是 Windows 系统,启动时要把 "frpc" 换成下载到的的文件名,例如 frpc_windows_386.exe
、./frpc_linux_amd64
frpc 支持通过 ID 启动单条或多条隧道,也可以直接开启位于某个节点的所有隧道。旧版 frpc 同时启动多条隧道时,这些隧道必须位于同一节点,新版 frpc 无此限制,详见 常见问题-一个 frpc 可以连接多条隧道吗。
启动参数的格式如下:
frpc -f <访问密钥>:<隧道ID 1>[,隧道ID 2[,隧道ID 3...]]
多个 隧道ID 使用半角逗号 "," 分开,中间不能有空格或其他字符。
使用举例
假设您使用的是 Linux 系统,且已跟随文档正确安装了 frpc,您的隧道列表如下图所示:
启动第一条 隧道 ID 为
114514
的隧道:frpc -f wdnmdtoken666666:114514
启动图中的所有隧道
# 输入用逗号分开的所有隧道 ID frpc -f wdnmdtoken666666:114514,114515,114516
进阶使用
这是一篇适合绝大多数用户的简明使用教程,因此文中省略了很多特性和配置说明。
如果您是高级用户,您还可以在 用户手册 获取更多关于 frpc 的信息,例如命令行开关和配置文件细则。
SakuraFrp 提供 frpc 镜像 (Docker Hub, GitHub Packages) 以便您借助 Docker 运行 frpc。
此页内容很可能不适合您
如果您不是资深用户,我们建议您总是使用 Docker 部署启动器,易用性更高。
关于镜像源
我们的镜像目前在官方仓库 natfrp.com/frpc
发布,您也可以使用下面的镜像源,
镜像源可能存在拉取较慢或无法拉取的问题,请尽量优先使用官方仓库拉取。
natfrp/frpc
ghcr.io/natfrp/frpc
registry.cn-hongkong.aliyuncs.com/natfrp/frpc
部分位于中国大陆的镜像源缓存了一个有问题的 frpc 且一直没更新,如果您碰到 exec: "infocmp": executable file not found in $PATH
的错误,请使用上面列出的镜像源或官方源
图形用户界面
本教程只介绍命令行操作,如果您使用以下平台,点击链接可查看对应的 GUI 操作说明:
设置隧道的本地 IP
因为默认的 bridge
网桥模式对不了解 docker 但是坚持使用 docker 的用户造成了许多困惑,下面的教程使用 host 网络,此方案可能有安全疑虑,请了解的用户自行考虑。
和其他运行方式设置本地 IP 方式一致,如对于本机服务 (部署在 NAS 上时为 本 NAS 服务,不是你在用的电脑)设置为 127.0.0.1
。
初始设置有误的,您可以在 隧道列表 中编辑要启动的隧道,将 本地IP 修改为正确的内容:
创建容器并启动 frpc
注意
切记不要创建不同名字、相同启动参数的容器,这会造成严重的冲突,隧道将无法正常启动
可以用 docker ps
查看已启动的容器
执行下面的命令就能创建一个容器并启动 frpc:
docker run \
-d \
--restart=on-failure:5 \
--network=host \
--pull=always \
--name=sakura1 \
natfrp.com/frpc \
--disable_log_color \
-f <启动参数>
请注意每行(除了最后一行)末尾都有一个 \
,并且 \
后面没有任何东西(包括空格)。
下面是对各行参数的说明:
参数 | 说明 |
---|---|
-d | 在后台运行 |
--restart=on-failure:5 | 系统重启或隧道崩溃时自动重启 frpc |
--network=host | 使用主机网络模式,这样 frpc 就可以直接访问本机的服务 |
--pull=always | 总是检查镜像更新 |
--name=sakura1 | 为容器设定一个名字,这里以 sakura1 为例 |
natfrp.com/frpc | 从官方源拉取镜像 |
--disable_log_color | 禁用日志输出中的颜色 |
-f <启动参数> | 从面板直接复制的启动参数,用于指定要启动的隧道 |
如果一切顺利,Docker 会为我们下载并启动镜像,您会看到一行 Hash 输出,这就是容器的 ID。
如果您更倾向于使用 Docker Compose,此处也提供了一个 compose.yaml
的简单示例,通过 docker compose up -d
来启动。
version: "3"
services:
# 在这里给容器起一个名字, 例如 sakura1
sakura1:
image: natfrp.com/frpc
restart: on-failure:5
network_mode: host
command: --disable_log_color -f <启动参数>
获取连接信息
连接信息在容器的日志中会输出,执行 docker logs <容器名字|容器ID>
即可查看。
在上面的示例命令中容器名是 sakura1
,因此您应该执行 docker logs sakura1
进行查看。
停止、删除与更新容器
停止:docker stop <容器名字|容器ID>
删除:docker rm <容器名字|容器ID>
更新:停止并删除当前容器,然后使用带有 --pull=always
的启动指令重新启动。
挂载文件到容器内
提示
Docker 镜像的工作目录默认为 /run/frpc/
如果您需要挂载文件到容器内(例如为自动 HTTPS 配置自定义证书),您可以在启动命令中加入 -v
参数,语法为 -v <容器外文件>:<容器内路径>:ro
。
下面的例子将容器外的 /root/my.{crt,key}
挂载到容器内的 /run/frpc/example.com.{crt,key}
,并且设置为只读:
docker run \
-d \
--restart=on-failure:5 \
--pull=always \
--name=sakura1 \
--network=host \
-v /root/my.crt:/run/frpc/example.com.crt:ro \
-v /root/my.key:/run/frpc/example.com.key:ro \
natfrp.com/frpc \
--disable_log_color \
-f <启动参数>