不用 Tailscale:3 步把 Mac mini 通过 FRP 暴露到公网(稳定开机自启)

张开发
2026/4/13 8:37:26 15 分钟阅读

分享文章

不用 Tailscale:3 步把 Mac mini 通过 FRP 暴露到公网(稳定开机自启)
很多折腾 NAS 和 Mac mini 的朋友都绕不开一个痛点人在外面怎么优雅地连回家里的设备之前我一直用 Tailscale虽然小白友好但缺点也很要命——每台设备都得装客户端。而且SSH反向代理动不动就掉线这让人很很不方便。最近被我摸索出了一套更完美的终极方案FRP 内网穿透。只需一台带公网IP的云服务器就能在各个设备间建立稳定的私有隧道。SSH、VNC远程桌面、Samba文件共享、甚至OpenClaw控制台全部一网打尽。今天这篇保姆级实操教程手把手教你搭建建议先收藏再看以防找不到”这是一个手把手的教程涉及的内容比较多我先给你列一个纲让你有个大概。大致原理它的的底层实现还是基于 SSH 反向代理 只是做了一些封装运行更稳定配置也更简单。用通俗的话说你的云服务器带公网IP就是个“中转站”frps你家里的 Mac mini 是“寄件人”frpc。寄件人主动和中转站建立了一条秘密通道。你在外面拿笔记本访问中转站的某个端口中转站就会把数据顺着通道送回你家里的 Mac。对了 FRP 也是一个开源项目在 github 上已经有接近11W 的星标。今天应用这种方式来试一下。不废话开干前提条件你需要一台公有云的服务器并且还需要一个公网地址FRPS就绑定在这台服务器上。需要需要穿透的服务就运行 FRPC。本文演示的是公有去服务器是一台阿里云ECS服务器为了文章理解公有云地址我写一个 mock 地址。在阿里云服务器上安装与设置 frps第一步下载并安装frpswget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gz解压并安装到系统tar -zxvf frp_0.61.0_linux_amd64.tar.gzcd frp_0.61.0_linux_amd64cp frps /usr/local/bin/mkdir -p /etc/frpcp frps.toml /etc/frp/第二步配置编辑配置文件vim /etc/frp/frps.toml将内容修改为最简配置建议设置一个 token 增加安全性bindPort 7000 # 服务端监听端口Mac 上的 frpc 会连这个# 强烈建议添加安全密钥防止别人蹭你的服务器auth.token 设置一个你自己的复杂密码---第三步设置 Ubuntu 开机自启 (Systemd)为了让 frps 在服务器重启后自动运行我们需要创建一个服务文件1.创建服务文件vim /etc/systemd/system/frps.service2.粘贴以下内容[Unit]DescriptionFrp Server ServiceAfternetwork.target[Service]TypesimpleUserrootExecStart/usr/local/bin/frps -c /etc/frp/frps.tomlRestarton-failure[Install]WantedBymulti-user.target3.启动并设置自启systemctl daemon-reloadsystemctl enable frpssystemctl start frps4.检查状态Bashsystemctl status frps看到 active (running) 说明服务器端已就绪。在Macmini上安装与设置frpc第一步安装brew install frpc几兆的东西很快就下载完。frpc -v能正常打印版本就安装成功了。第二步配置在M芯片里面Homebrew 安装的 frp 配置文件通常位于/opt/homebrew/etc/frp/frpc.toml。1. 使用终端打开配置文件vim /opt/homebrew/etc/frp/frpc.toml2. 参考以下模板进行修改请根据你的阿里云服务器信息替换内容# 基础连接配置serverAddr 你的阿里云服务器IPserverPort 7000 # 需与阿里云 frps.toml 中的 bindPort 一致auth.token 你的连接密钥 # 如果服务端设置了 token这里必须填[[proxies]]name mac-mini-sshtype tcplocalIP 127.0.0.1localPort 22remotePort 6000 # 远程服务器映射出的端口记得在阿里云安全组开放此端口注意阿里云服务器的防火墙安全组必须手动开启 7000连接端口和 6000映射后的访问端口。3. 设置 macOS 开机启动Homebrew 提供了非常简便的服务管理工具 brew services。启动并设置为开机自启brew services start frpc检查运行状态brew services list如果看到 frpc 状态为 started绿色则表示大功告成。在Ubuntu 服务器上安装与设置 frpc我还有一台本地的 ubuntu 开发服务器主要用于 Android开发也需要把里面的服务 ssh 和 samba 服务开放给外网这样我能在任何时间和地址只要有网就能访问。设置与 Macmini 设置类似我简单过一下第一步下载并安装 frpc1.登录你的这台 Ubuntu 客户端2.下载软件包与服务端相同包含 frpc 和 frpsBashwget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gztar -zxvf frp_0.61.0_linux_amd64.tar.gzcd frp_0.61.0_linux_amd643.安装二进制文件Bashsudo cp frpc /usr/local/bin/sudo mkdir -p /etc/frp---第二步配置 frpc.toml创建并编辑配置文件sudo vim /etc/frp/frpc.toml粘贴以下配置注意修改name以免和 Mac mini 冲突serverAddr 111.111.111.111serverPort 7000auth.token 你之前在阿里云设置的那个密码[[proxies]]name ubtu-smbtype tcplocalIP 127.0.0.1localPort 445remotePort 4450---第三步设置开机自启 (Systemd)这是在 Linux 上实现“开机启动”的标准做法1.创建服务文件sudo nano /etc/systemd/system/frpc.service2.粘贴以下内容[Unit]DescriptionFrp Client ServiceAfternetwork.target[Service]TypesimpleUserrootExecStart/usr/local/bin/frpc -c /etc/frp/frpc.tomlRestarton-failureRestartSec5s[Install]WantedBymulti-user.target3.启动并启用服务sudo systemctl daemon-reloadsudo systemctl enable frpcsudo systemctl start frpc4.检查是否成功sudo systemctl status frpc测试在前面的示例中我们把 macmini 的 ssh 服务在公网暴露出来了现在来测试一下你 macmini 的 ssh 服务在任何一台可以上网的电脑上使用以下命令即可穿透到你的 Mac Minissh -p 6000 [Mac用户名]阿里云的地址如果你要访问 Ubuntu 服务器的 ssh 服务或者 samba 服务也通过公网地址加对应的端口同样也非常方便的访问。添加其他服务我们在 macmini 上已经把 ssh 服务开放出去我这边台 macmini 上还跑了 openclaw同时我也需要把远程桌面服务暴露到公网这样方便远程桌面连接现在我们把openclaw的服务和vnc服务添加进去。 vim /opt/homebrew/etc/frp/frpc.toml大致如下# ---- VNC 远程桌面配置 ----[[proxies]]name macmini-vnctype tcplocalIP 127.0.0.1localPort 5900 # macOS VNC 默认端口remotePort 5900 # 映射到阿里云的端口建议设为相同方便记忆# ---- OpenClaw / Web 控制台配置 ----[[proxies]]name macmini-openclawtype tcplocalIP 127.0.0.1localPort 18789 # 请确认你 OpenClash 控制面板的本地端口通常是 9090 或 7892remotePort 18789 # 映射到阿里云的端口你可以自定义然后重启服务在 Mac 终端执行brew services restart frpc 在 Ubuntu 上就执行sudo systemctl restart frpc这样我远程都访问成功了。后面需要添加其他服务就直接添加各个平台的 frpc.toml文件即可非常方便。最后的话我在之前的《 Untitled 》文章中也提到就是我的macmini与阿里云服务器建立一条ssh的通道我其他电脑如macbook远程访问阿里云的这个公网IP对应的端口就可以把相应的流量转到macmini上实现远程方式。至此你的跨平台无缝远程工作流就彻底打通了无论是 Mac 还是 Ubuntu只要有网随时待命。很多人觉得内网穿透难其实理顺了服务端frps和客户端frpc的端口映射关系就像搭积木一样简单。你是用什么方式实现内网打通欢迎交流。

更多文章