当前位置: 首页 > news >正文

不用 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

第一步,下载并安装frps

wget 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.gz
cd frp_0.61.0_linux_amd64
cp frps /usr/local/bin/
mkdir -p /etc/frp
cp 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.service`
2.粘贴以下内容:

[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.toml
Restart=on-failure
[Install]
WantedBy=multi-user.target

3.启动并设置自启:

systemctl daemon-reload
systemctl enable frps
systemctl start frps

4.检查状态:Bash
`systemctl 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.toml`
2. 参考以下模板进行修改(请根据你的阿里云服务器信息替换内容):

# 基础连接配置
serverAddr = "你的阿里云服务器IP"
serverPort = 7000 # 需与阿里云 frps.toml 中的 bindPort 一致
auth.token = "你的连接密钥" # 如果服务端设置了 token,这里必须填
[[proxies]]
name = "mac-mini-ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000 # 远程服务器映射出的端口,记得在阿里云安全组开放此端口`
注意:阿里云服务器的防火墙(安全组)必须手动开启 `7000`(连接端口)和 `6000`(映射后的访问端口)。

3. 设置 macOS 开机启动
Homebrew 提供了非常简便的服务管理工具 `brew services`。

启动并设置为开机自启`brew services start frpc`

检查运行状态:`brew services list`

如果看到 `frpc` 状态为 `started`(绿色),则表示大功告成。

在Ubuntu 服务器上安装与设置 frpc

我还有一台本地的 ubuntu 开发服务器,主要用于 Android开发,也需要把里面的服务 ssh 和 samba 服务开放给外网,这样我能在任何时间和地址,只要有网就能访问。设置与 Macmini 设置类似,我简单过一下

第一步:下载并安装 frpc

1.登录你的这台 Ubuntu 客户端:
2.下载软件包(与服务端相同,包含 frpc 和 frps):Bash

wget 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.gz
cd frp_0.61.0_linux_amd64

3.安装二进制文件:Bash

sudo 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.111"
serverPort = 7000
auth.token = "你之前在阿里云设置的那个密码"
[[proxies]]
name = "ubtu-smb"
type = "tcp"
localIP = "127.0.0.1"
localPort = 445
remotePort = 4450

---

第三步:设置开机自启 (Systemd)

这是在 Linux 上实现“开机启动”的标准做法:

1.创建服务文件:`sudo nano /etc/systemd/system/frpc.service`
2.粘贴以下内容:

[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.toml
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target

3.启动并启用服务:
`sudo systemctl daemon-reload
sudo systemctl enable frpc
sudo systemctl start frpc`

4.检查是否成功:
`sudo systemctl status frpc`

测试

在前面的示例中,我们把 macmini 的 ssh 服务在公网暴露出来了,现在来测试一下你 macmini 的 ssh 服务,在任何一台可以上网的电脑上,使用以下命令即可穿透到你的 Mac Mini:`ssh -p 6000 [Mac用户名]@阿里云的地址`

如果你要访问 Ubuntu 服务器的 ssh 服务,或者 samba 服务,也通过公网地址加对应的端口,同样也非常方便的访问。

添加其他服务

我们在 macmini 上已经把 ssh 服务开放出去,我这边台 macmini 上还跑了 openclaw,同时我也需要把远程桌面服务暴露到公网,这样方便远程桌面连接,现在我们把openclaw的服务和vnc服务添加进去。` vim /opt/homebrew/etc/frp/frpc.toml`

大致如下:

# ---- VNC 远程桌面配置 ----
[[proxies]]
name = "macmini-vnc"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5900 # macOS VNC 默认端口
remotePort = 5900 # 映射到阿里云的端口(建议设为相同,方便记忆)
# ---- OpenClaw / Web 控制台配置 ----
[[proxies]]
name = "macmini-openclaw"
type = "tcp"
localIP = "127.0.0.1"
localPort = 18789 # 请确认你 OpenClash 控制面板的本地端口,通常是 9090 或 7892
remotePort = 18789 # 映射到阿里云的端口,你可以自定义

然后重启服务:

在 Mac 终端执行:`brew services restart frpc` ,在 Ubuntu 上就执行`sudo systemctl restart frpc`

这样我远程都访问成功了。后面需要添加其他服务,就直接添加各个平台的 frpc.toml文件即可,非常方便。

最后的话

我在之前的《 Untitled 》文章中也提到,就是我的macmini与阿里云服务器建立一条ssh的通道,我其他电脑如macbook远程访问阿里云的这个公网IP对应的端口,就可以把相应的流量转到macmini上,实现远程方式。

至此,你的跨平台无缝远程工作流就彻底打通了!无论是 Mac 还是 Ubuntu,只要有网,随时待命。很多人觉得内网穿透难,其实理顺了服务端(frps)和客户端(frpc)的端口映射关系,就像搭积木一样简单。

你是用什么方式实现内网打通,欢迎交流。

http://www.jsqmd.com/news/633204/

相关文章:

  • 一套代码搞定微信+支付宝全端支付:元点Admin 支付系统设计
  • 美胸-年美-造相Z-Turbo新手指南:避开这些坑,让你的AI绘画更顺利
  • 终极Noto Emoji定制指南:3步打造专属个性化emoji字体
  • STM32F103C8T6最小系统板开发入门:Phi-4-mini-reasoning辅助外设驱动编写
  • 手把手教你5分钟部署Nunchaku FLUX.1-dev,小白也能生成惊艳AI图片
  • 辅助驾驶场景应用:如何用视觉定位模型理解道路目标
  • 软件敏捷教练管理中的过程引导者
  • 宝丰堂冲刺港股:年营收1.76亿,净利降5% 赵芝强卖老股,套现5000万
  • 终极PhotoEditor架构解析:从绘图系统到触摸交互的完整指南
  • 终极Dockertest安全测试指南:TLS加密连接与远程Docker环境配置详解
  • 如何使用Flutter-WebRTC构建高效可靠的点对点数据传输通道
  • 终极Python抢票指南:3个技巧帮你轻松抢到热门演出门票 [特殊字符]
  • JS Bin安全最佳实践:保护代码与数据隐私的终极指南
  • SenseVoice-Small ONNX微调入门:长尾样本修复与领域适配实战
  • 西德利化工售后有保障吗,探寻其在广东地区的口碑情况 - 工业设备
  • Phi-4-mini-reasoning行业落地:金融风控规则链路验证与异常逻辑识别
  • 如何快速掌握Vue-framework-wz权限系统:动态路由与角色控制完整指南
  • RexUniNLU商业应用:为ToB语音助手提供零标注、高泛化、低延迟的NLU底座
  • 终极Go依赖注入指南:深入理解Dig工具包的核心原理
  • Qwen3-14B部署教程:JupyterLab集成环境与交互式推理演示
  • 终极简单!3步快速解密网易云NCM音乐文件,免费享受自由播放
  • Heygem数字人系统作品展示:看AI如何让静态视频“开口说话”
  • DeepChat一文详解:DeepChat与Llama3:70b模型替换兼容性验证与性能衰减分析
  • 像素史诗·智识终端WSL2开发环境配置:在Windows上无缝进行AI开发
  • ClawdBot个人AI助手快速部署:3步获取Token访问控制台
  • 解读山东氢氧化铝企业,哪家产品好用且价格合理? - 工业推荐榜
  • 一键部署Phi-4-mini-reasoning:VSCode Codex级智能编程助手体验
  • 京东完成100亿元票据发行 部分用于偿还现有债务及支付利息
  • 魔兽争霸3现代化改造指南:如何用开源插件解决20年老游戏的兼容性问题
  • 如何在React、Vue和Angular中集成node-apn:现代前端框架推送通知最佳实践