2024-10-23更新:更安全的方式请看浅析Frp的https转发
去年英特尔发布了基于12代酷睿小核的N系列处理器,其中的N100、N305被奉为nas神U,今年我也搞了一台N100小主机当家庭服务器用,自己插一根16G内存加上一个6盘位硬盘笼这不比云服务器性价比高啊
但是由于当地运营商政策,我把光猫改桥接后没几天就来电话了,导致我连公网v6都没有,所以只好走内网穿透的路子了
一、准备工作
内网穿透自然少不了一台带公网IP的服务器了,由于我所有nas相关的服务只在内网供我自己使用,暴露到公网的只有一些建站需求,所以从省钱的角度考虑我需要一台低延迟、低带宽的服务器,当然CPU内存硬盘什么的也尽可能低,网穿+反代+小水管带宽根本废不了多少性能。
以上介绍了适合我的情况,小伙伴们要根据适合自己的情况选服务器哦
根据不同的内存,我会分别推荐以下几种搭建方式:
- 内存>=1G:搭建1Panel面板,使用里面的OpenResty和frps应用
- 内存≈512M:宿主机部署frps,安装docker部署nginx proxy manager
- 内存≈256M:宿主机部署frps和nginx,自己手搓配置
二、客户端搭建
客户端(也就是家里的服务器)我们使用frp来进行内网穿透
下面介绍frp的两种搭建方式:Docker安装和直接部署
1、Docker安装frpc(以Rocky linux为例)
首先输入下面的命令安装docker,已经装好的可以跳过
成功安装后输入docker --version
可以看到输出的版本信息
然后安装docker-compose
如果下载缓慢可以尝试国内的代理
赋予文件运行权限
链接docker-compose文件
至此就算安装完成了,输入docker-compose --version
会输出版本信息
然后安装frpc
cd到你想安装的路径下,创建docker-compose.yml文件
然后创建frpc.toml文件,输入下面的配置
完成后输入docker-compose up -d
就会拉取镜像创建容器
完成后浏览器访问你的ip:frp客户端面板端口
进入面板,在Configure处你就能看到刚才编写的配置
在下面添加你需要内网穿透的端口,内容如下
每个端口都要写一份这个配置,完成后点击上方Upload
更新配置
2、直接部署frpc
到项目的releases页面下载适合自己系统的压缩包并解压到安装目录
打开其中的frpc.toml文件修改配置如下
输入./frpc -c ./frpc.toml
尝试运行
此时用内网的其他设备访问你的ip:frp客户端面板端口
,可进入面板说明配置正确
回到客户端停止frpc,下面要将frpc注册为systemd服务,输入下面的命令编写
wq保存后即可使用systemd管理frpc
完成后浏览器访问你的ip:frp客户端面板端口
进入面板,在Configure处你就能看到刚才编写的配置
在下面添加你需要内网穿透的端口,内容如下
每个端口都要写一份这个配置,完成后点击上方Upload
更新配置
三、服务端搭建
1、1Panel面板+OpenResty、Frps(内存至少1G)
使用ssh登录你的云服务器,输入下面命令安装1Panel面板(以Rocky linux为例)
根据提示完成安装后访问你的ip:端口/安全入口
即可访问面板
在左侧应用商店内安装OpenResty和Frp服务端,记得Frp服务端设置的端口和账号密码,记得勾选外部访问
如果你上面的frpc配置正确,那么登录到后台就能发现刚才建立的隧道
此时输入你的ip:端口
就可以访问到家里的服务器了
如果你还想通过域名访问,请继续往下看
在1Panel面板左侧点击网站
,点击创建网站
,类型选择反向代理
主域名处填写你的域名,代理地址处填写127.0.0.1:隧道公网端口
(这里填docker的虚拟网卡会更好)
然后在你的dns提供商把域名解析到你的云服务器就可以通过域名访问了
如果你还想使用https访问,请继续看(以cloudflare为例)
登录cloudflare,点击我的账户资料
在左边点击API令牌,选择API 令牌
行对应的创建令牌按钮
进入后选择编辑区域 DNS
,在区域资源
最后一栏选择自己的域名
选择继续以显示摘要
->创建令牌
一定要牢记你的令牌,如果泄露一定要及时删除令牌
在1Panel面板网站栏里点击证书
首先创建DNS账户
名称随便填,类型选择Cloudflare
,email填写注册cloudflare的邮箱,API Token填写刚才获取的令牌
然后创建Acme 账户
邮箱填你的邮箱,类型选Let's Encrypt,加密算法建议不要选太简单的
完成后点击申请证书,填入你的域名,DNS和Acme 账户选你刚刚创建的,点击确认
等待一会就会在日志里看到申请成功的提示
回到网站页面,点击你刚刚创建的反向代理的配置
选项
进入https,启用HTTPS
选择访问HTTP自动跳转到HTTPS
,Acme 账户选择你刚刚创建的,证书就会弹出来
点击保存,再访问你的网站就会看到代表https的锁已经出现了,OpenResty会自动帮你续签证书
2、直接部署frps,安装docker部署nginx proxy manager(0.5G内存左右)
直接部署frps的步骤和frpc大同小异,这里直接给出docker-compose.yml和frps.toml
重点是nginx proxy manager的配置,下面是nginx proxy manager的docker-compose
同样输入docker-compose up -d
拉取镜像创建容器
完成后浏览器输入ip:81(你设置的端口)
进入管理面板,默认账号密码如下
- Email: admin@example.com
- Password: changeme
在添加反向代理之前,确保你已经完成了域名解析(见第一种方式)
在nginx proxy manager里点击Add Proxy
在Domain Names
中填写你的域名,下方填写访问方式,ip(127.0.0.1)和端口
点击Save
就可以了,此时你就可以使用域名访问你的网站了
如果你需要https访问,请继续看
选择刚才创建的反向代理,右边三个点点击Edit
上方找到SSL
进入
第一栏选择Request a new SSL Certificate
,勾选Force SSL
下方输入你的邮箱,勾选最后的同意,点击Save
然后你就可以使用https访问你的网站啦,nginx proxy manager会自动帮你续签证书
3、直接部署frps和nginx(内存大约256M)
直接部署frps可见第二步
下面安装nginx(以Rocky linux为例)
导入nginx库
安装dnf-utils
安装nginx
系统自动注册相关服务,此时可用systemd控制nginx
下面配置反向代理
cd到/usr/local/nginx/conf
目录下,打开nginx.conf
修改配置如下
然后输入systemctl reload nginx.service
重启nginx,此时你就可以使用域名访问你的网站了
如果你想用https访问,请继续看
首先安装Certbot,Certbot可以帮你申请免费证书
安装后开始申请证书(yourdomain.com
替换为你的域名)
然后打开刚刚的nginx配置文件,修改如下
然后输入systemctl reload nginx.service
重启nginx,此时你就可以使用https访问你的网站了