我有一台Ubuntu24.04系统的家庭服务器,并在服务器上安装了nextcloud云盘服务,通过配置frp内网穿透服务,在外网通过域名随时查看本地文件。

TailscaleZeroTier相比,此方式无需安装客户端,可以通过域名直接访问内网服务。
需要有一个公网ip的服务器,连接速度取决于公网服务器的网速。

公网服务器安装frps服务

[!NOTE] 说明
1Panel 是一个 Web 图形界面的 Linux 服务器管理工具,应用商店内容丰富,以下操作均以1panel为例。

  1. 应用商店中搜索并安装frps应用,并进入安装目录

  1. 编辑.env文件

CONTAINER_NAME="1Panel-frps-Nzx7"
CPUS=0
MEMORY_LIMIT=0
PANEL_APP_PORT_HTTP=7500   #后台端口
PANEL_APP_PORT_SERVICE=7000  #服务端口
PASSWORD="后台密码"
USER_NAME="后台用户名"
  1. 编辑frps.toml文件

bindAddr = "0.0.0.0"
bindPort = 7000

auth.method = "token"
auth.token = "token123456"

webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "用户名"
webServer.password = "密码"

本地服务器安装frpc服务

  1. 应用商店中搜索并安装frpc应用,并打开后台

  1. 后台配置需要穿透的服务

[!NOTE] 配置
以ssh服务和nextcloud服务为例,本地端口分别是22和2380

serverAddr = "168.138.215.235" #公网服务器ip
serverPort = 7000

auth.method = "token"
auth.token = "token123456"

webServer.addr = "0.0.0.0"
webServer.port = 7400
webServer.user = "后台用户名"
webServer.password = "密码"
webServer.pprofEnable = false

[[proxies]]
name = "ssh"   #ssh服务
type = "tcp"
localIP = "127.0.0.1"  #本地ip
localPort = 22  #本地端口
remotePort = 222  #远程端口

[[proxies]]
name = "nextcloud"  #nextcloud服务
type = "tcp"
localIP = "127.0.0.1"
localPort = 2380   #本地端口
remotePort = 6001   #远程端口

[[proxies]]
name = "onlyoffice"
type = "tcp"
localIP = "127.0.0.1"
localPort = 2280
remotePort = 6002

[[proxies]]
name = "joplin"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22300
remotePort = 6003
  1. 重启frp服务,查看运行情况

frpc端

frps端

  1. 公网ip+远程端口访问本地服务

配置反向代理实现域名访问本地服务

  1. 将公网ip解析到域名上

  1. 公网服务器安装nginx-proxy-manager

  2. 配置反向代理

4.申请ssl证书


5. 配置完成,通过域名访问服务

效果如下