阿里云 VPS + Mac mini 低成本内网穿透与家用服务器实践
利用阿里云 VPS 和 Mac mini,通过 FRP + Docker 实现多域名内网穿透,打造低成本家用服务器。
杭州
为什么这么设计
- 成本考虑:高性能 VPS 价格较高,不如充分利用现有资源。
- 硬件资源:
- 家中已有一台 Mac mini
- 性能充足,适合同时承担其他服务。
- 单核性能在小型主机中表现优秀。
- 现有一台 阿里云 VPS:
- 配置:2 核 2G 内存,理论带宽最高 200 Mbps。
- 家中已有一台 Mac mini
概览
VPS
Nginx
- 流量转发:通过 443/80 端口接收外部流量,并转发至本地 8090(FRPS 服务)。
server {
listen 443 ssl http2; # 监听443端口(HTTPS)并启用SSL和HTTP/2
...
# 代理配置 - 将请求转发到本地8090端口
location / {
proxy_pass http://localhost:8090; # 将请求转发到本地8090端口
...
}
}
FRPS
一个快速反向代理,帮助你将 NAT 或防火墙后的本地服务器暴露到互联网。
- 流量桥接:接收 8090 端口的 HTTP 流量,通过 7100 端口与客户端建立隧道连接
bindPort = 7100 # frp FRPS(服务端)与 FRPC(客户端)建立隧道通信的主要端口。
auth.token = "******" # FRP 客户端和服务端之间的 认证 Token。
vhostHTTPPort = 8090 # 这是 FRPS 用于对外暴露 HTTP 服务的端口
# 管理面板(Dashboard)
webServer.port = 7500 # 可选,管理面板端口
webServer.user = "admin"
webServer.password = "******" # 管理面板的用户名和密码
webServer.addr = "0.0.0.0" # 允许所有 IP 访问(公网可访问)。
Mac Mini
FRPC 客户端
Mac mini 通过 FRPC 客户端与 VPS 建立隧道,并通过 [[proxies]] 配置实现多域名分流。
- 隧道连接:与 VPS 上的 FRPS 服务建立稳定连接
- 多域名代理:通过
[[proxies]]配置实现不同域名 → 本地端口的映射。
[[proxies]]
name = "blog"
type = "http"
localPort = 4321 # 个人博客服务
customDomains = ["blog.example.com"]
[[proxies]]
name = "api"
type = "http"
localPort = 4322 # API 服务
customDomains = ["api.example.com"]
[[proxies]]
name = "dashboard"
type = "http"
localPort = 4323 # 管理面板
customDomains = ["admin.example.com"]
这里的 localPort 对应的并不一定是 Mac mini 本机的实际端口,大多数情况下是运行在 Docker 容器中的应用服务。
例如:
4321 → API 服务容器(如 FastAPI、Node.js);
4322 → → Nginx 容器,用于个人博客或静态站点;
换句话说,FRPC 就像“公网入口”,而 Docker 是“本地 App 商店”:你在 Mac mini 上随时可以用 Docker 启动一个新服务,分配一个本地端口,然后只需在 FRPC 配置中增加一个 [[proxies]],几秒钟就能让它通过独立域名对外提供访问。