阿里云 VPS + Mac mini 低成本内网穿透与家用服务器实践

利用阿里云 VPS 和 Mac mini,通过 FRP + Docker 实现多域名内网穿透,打造低成本家用服务器。
杭州
阿里云 VPS + Mac mini 低成本内网穿透与家用服务器实践

为什么这么设计

  1. 成本考虑:高性能 VPS 价格较高,不如充分利用现有资源。
  2. 硬件资源
    • 家中已有一台 Mac mini
      • 性能充足,适合同时承担其他服务。
      • 单核性能在小型主机中表现优秀。
    • 现有一台 阿里云 VPS:
      • 配置:2 核 2G 内存,理论带宽最高 200 Mbps。

概览

阿里云 VPS + 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]],几秒钟就能让它通过独立域名对外提供访问。