前提
- 你有一台Nas
- 你有一台有公网IP的服务器,服务器上安装了docker,docker-compose
- 你有一个路由器刷了openwrt,当然这个不是必须,nas上也可以部署openwrt
- 你有一个域名
前言
当我们在Nas上部署很多服务,比如Halo博客、dpanel、青龙等等很多好玩的服务,但是访问的时候都需要是内网访问并且都是IP+端口,然后你正好拥有一台闲置的服务器,那部署frp加上nginx-proxy-manager刚好可以解决。
效果
frp部署
首先下载frp服务端文件frp服务端,根据自己的服务器内核下载对应的版本,下载好以后根据文档直接安装即可,在frps.toml中配置以下内容即可,网上也有很多可以参考,因为我们后面用的客户端是openwrt安装好的,所以只需要在服务器上部署frps即可。
bindPort = 7000
auth.method = "token"
# token将用在客户端连接
auth.token = "woshitoken"
webServer.addr = "0.0.0.0"
webServer.port = 7500
# dashboard 用户名密码,可选,默认为空
webServer.user = "xxx"
webServer.password = "xxxxxx"
部署好以后直接启动,可以命令直接启动,也可以后台启动一般都是后台启动
nohup ./frps -c ./frps.toml &> /dev/null &
启动以后直接打开 http://IP:7500,用上面设置的webServer.user和password登陆,打开正常则表示启动成功
nginx-proxy-manager部署
nginx-proxy-manager是使用docker-compose部署的,首先要在服务器安装docker和docker-compose,
- 创建一个文件夹
mkdir -p docker/data/nginx_proxy_manager
- 进入文件夹,创建
vim docker-compose.yml
- docker-compose.yml文件内容如下:
version: '3.3'
services:
app:
image: 'chishin/nginx-proxy-manager-zh'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
- 我用的是中文版的镜像,正常也可以使用原版的镜像,image名称替换一下即可,保存文件后直接使用命令启动即可:
docker-compose up -d
- 容器启动后后,打开http://IP:81,登陆即可,默认的登陆信息如下,登陆后及时修改账号和密码
Email: admin@example.com
Password: changeme
- 如果你服务器之前安装过nginx,则需要卸载干净,并将相关的进程kill,不然容器启动会报端口冲突的错误
frp配置
配置frp客户端
登陆到openwrt,找到frp内网穿透,勾选已启动,设置以下内容,设置完成后保存并应用即可。
- 服务器:你的服务器IP
- 端口:7000,上面设置好的bindPort
- 令牌:woshitoken,上面设置好的auth.token
- 用户名:随意
- 其他保持默认
配置以后记得在openwrt的防火墙-端口转发中打开对应的端口转发,不然应该是访问不到的
配置代理服务
点击下方的添加
- 开启状态:启用
- Frp协议类型:根据自己需要,一般TCP即可
- 远程端口:就是到时候你服务器IP:端口要访问的这个端口
- 内网主机地址:选择你要代理的内网主机,这里我选择的是路由器的内网地址
- 内网主机端口:填写你要代理的服务的端口
- 服务备注名:自定义即可
- 其他保持默认即可
增加以后我们通过http://服务器IP:9999就能访问到我的路由器后台了
nginx-proxy-manager配置
登陆nginx-proxy-manager,点击ssl证书tab页面,点击添加证书,可以自己上传证书,也可以使用Let's Encrypt 的证书,这里我们使用Let's Encrypt的证书
- 域名:使用通配域名
- 输入自己的邮箱,
- 勾选使用DNS认证,我用的是阿里云的域名,所以DNS提供者使用Aliyun,证书的key根据自己实际情况添加,
- 填写后保存即可自动创建证书
点击主机-选择代理服务-新建代理服务
- 域名:即你要配置的子域名,
- 协议:http,或根据你在openwrt配置的frpc情况
- 转发主机:就是你的服务器IP,因为已经使用frp代理了
- 转发端口:就是你在frpc中配置远程访问端口
选择SSL,勾选你刚创建的那个ssl证书,保存即可
配置好以后,就可以用你的域名访问你的内网服务了
nginx-proxy-manager的作用其实就是将nginx的配置界面化,省去了很多麻烦,本质还在在修改nginx的配置文件。
结尾
通过上述的配置,就可以使用域名直接访问你的nas服务了,并且支持在任何地方访问,也可以根据自己的需求配置像mysql、mongo等这种数据库代理地址,访问的时候也可以大大的简化记端口的问题,当然在配置frpc的时候记得按需配置,不要暴露过多的端口。
评论区