在日常使用NAS时,相信大家通过外部网络访问NAS也是必备需求。但又苦于没有公网IP,向运营商申请又比较困难,所以在这里分享一个Nginx+Frp的内网穿透解决方案(网上也有很多介绍,这里详细写下个人的配置流程,尽量避免踩坑)
配置前准备:
必须:NAS、云服务器(这里示例华为云云曜云服务器)、ssh工具(推荐finalshell)
非必须:域名(可以不用,这里未介绍,国内域名需要备案)
购买云服务器后打开控制台操作(由于我购买时间较早,这里示例使用的是云耀云服务器HECS)
首次登陆会有安装系统选项,这里我已经安装过,点击重装系统
选择的系统镜像是ubuntu18.04,输入密码,确定,就可以开始安装了
云服务器安装ubuntu系统成功后通过finalshell工具ssh连接,端口22登录,用户名:root 密码:安装时输入的内容
sudo apt-get update
sudo apt-get install
apt-transport-https
ca-certificates
curl
gnupg
lsb-release
curl -fsSL []() | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli [containerd.io]()
sudo docker run hello-world
curl -fsSL []() | bash -s docker --mirror Aliyunsudo sh get-docker.sh
或
curl -fsSL []() -o [get-docker.sh]()sudo sh get-docker.sh
systemctl enable docker # 设置开机自动启动
以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘
1 2 3 4 5 6 7 8 9 10 11 12 13 | cat > /etc/docker/daemon.json <<EOF {"log-driver": "json-file","log-opts": {"max-size": "20m","max-file": "3"},"ipv6": true,"fixed-cidr-v6": "fd00:dead:beef:c0::/80","experimental":true,"ip6tables":true } EOF |
依次执行以下命令
a.
curl -L "[.29.2/docker-compose-](.29.2/docker-compose-)$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
b.
chmod +x /usr/local/bin/docker-compose
c.
docker-compose --version
ssh连接到华为云服务器的ubuntu系统
sudo -i
mkdir -p /root/data/docker_data/npm
cd /root/data/docker_data/npm
l(里面内容要对齐)
英文输入法下,按 i 输入如下内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | version: '3' services:app:image: 'jc21/nginx-proxy-manager:latest'restart: unless-stoppedports:- '80:80' # 冒号左边可以改成自己服务器未被占用的端口- '81:81' # 冒号左边可以改成自己服务器未被占用的端口- '443:443' # 冒号左边可以改成自己服务器未被占用的端口volumes:- ./data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中- ./letsencrypt:/etc/letsencrypt # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中 |
按一下 esc,然后:wq 保存退出
进入控制台,点击华为云服务器的名字
跳转到新页面,点击安全组→配置规则
跳转新页面后点击入方向规则→添加规则→优先级1,端口81
回到云服务器控制台:lsof -i:81 #查看 81 端口是否被占用,如果被占用,重新自定义一个端口
如果啥也没出现,表示端口未被占用,我们可以继续下面的操作了~
注:由于后续会用到很多端口,一一打开有点麻烦,可以用添加81端口的方法全部开启端口
cd /root/data/docker_data/npm # 来到 dockercompose 文件所在的文件夹下 docker-compose up -d
理论上我们就可以输入 ip:81 访问了
默认登陆名和密码:
Email:admin@examplePassword: changeme
注意:
1、不知道服务器 IP,可以直接在命令行输入:curl ip.sb,会显示当前服务器的 IP。
2、遇到访问不了的情况,请再次检查在宝塔面板的防火墙和华为云的后台防火墙是否打开对应了端口。
cd /root/data/docker_data/npm docker-compose down cp -r /root/data/docker_data/npm /root/data/docker_data/npm.archive # 万事先备份,以防万一 docker-compose pull docker-compose up -d # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。 docker image prune # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像
cd /root/data/docker_data/npm docker-compose down rm -rf /root/data/docker_data/npm # 完全删除映射到本地的数据
可以卸载得很干净。
创建一下安装的目录:
sudo -imkdir -p /root/data/docker_data/frpscd /root/data/docker_data/frps
简单起见,直接用docker命令安装
Docker方法安装:
cd /root/data/docker_data/frps
touch frps.ini
l
1 2 3 4 5 6 7 8 9 | version: '3.3' services:frps:restart: alwaysnetwork_mode: hostvolumes:- './frps.ini:/etc/frp/frps.ini'container_name: frpsimage: snowdreamtech/frps |
docker-compose up -d
这样我们就搭建好了frp的服务端了,不过,现在我们frps.ini
里面啥也没有,需要我们来配置一下,这边贴一个配置文件给大家参考,满足基本使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | [common]#frp 监听端口,与客户端绑定端口bind_port= 5443 kcp_bind_port = 5443#dashboard用户名dashboard_user= xxxx#dashboard密码dashboard_pwd= xxxx#dashboard端口,启动成功后可通过浏览器访问如ip:9527dashboard_port= 9527#设置客户端token,对应客户端有页需要配置一定要记住,如果客户端不填写你连不上服务端token = 8ad3d1x429a2d |
重启容器
docker-compose restart
云服务器添加9527与5443端口
ip:9527 可以访问frp网址,账号:xxxx 密码:xxxx
接下来要去云服务器,打开防火墙。
cd /root/data/docker_data/frpsdocker-compose down cp -r /root/data/docker_data/frps /root/data/docker_data/frps.archive # 其实就是备份一下frps.ini这个文件docker-compose pulldocker-compose up -d docker image prune # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像
docker stop frpsdocker rm -f frps # 停止容器,此时不会删除映射到本地的数据rm -rf /root/data/docker_data/frps # 完全删除映射到本地的数据可以卸载得很干净。
ssh登录NAS,进入root模式
sudo -imkdir /root/data/docker_data/frpc
a.下载frp安装包(官网下载)
frp官网:
b.命令下载frp安装包
1 | wget .36.2_linux_ |
tar -zxvf frp_0.36.2_linux_ #解压
cd frp_0.36.2_linux_amd64 #进入目录
rm -f frps frps_full.ini frps.ini frpc_full.ini #删除无关文件
配置frpc.ini
vim frpc.ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | # frpc.ini [common] server_addr = 43.132.202.152 server_port = 5443 token = 8ad3d1x429a2d[ssh] type = tcp local_ip = 127.0.0.1 local_port = 222 # 这个自定义,之后再ssh连接的时候要用 remote_port = 6000 [qb] type = tcp local_ip = 127.0.0.1 local_port = 8092 remote_port = 6001[jellyfin] type = tcp local_ip = 127.0.0.1 local_port = 32771 remote_port = 6002[NAS] type = tcp local_ip = 127.0.0.1 local_port = 5000 remote_port = 6003[nextcloud] type = tcp local_ip = 127.0.0.1 local_port = 4433 remote_port = 6004[RDP] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 7001[vnc] type = tcp local_ip = 127.0.0.1 local_port = 5900 remote_port = 5900 use_encryption = true use_compression = true |
cd ..mv frp_0.36.2_linux_amd64 frpcnohup ./frpc -c ./frpc.ini & frpc.ini #后台启动
这时已经可以通过外网访问NAS了,IP:6003
vi /usr/syno/etc.defaults/rc.sysv/frpc.sh
英文输入法下,按 i 输入如下内容
1 2 3 4 | #/bin/bash sudo su cd /root/data/docker_data/frpc/frpc nohup ./frpc -c ./frpc.ini & |
按一下 esc,然后:wq 保存退出
增加脚本文件执行权限
chmod +x frpc.sh
查看进程
ps -aux|grep frpc|grep -v grep
接下来将脚本文件关联到开机自启动,在NAS中打开 控制面板–>任务计划–>新增–>触发的任务–>用户定义的脚本
创建任务→常规→任务名称:frpc,勾选√已启动,如下图:
创建任务→用户定义的脚本:
/usr/syno/etc.defaults/rc.sysv/frpc.sh
配置完成后可重启群晖系统一次,判断脚本文件是否启动成功。
重启系统命令:
reboot
查看进程是否正常启动:
ps -aux|grep frpc|grep -v grep
到这里内网穿透功能基本基本就实现啦,祝大家玩得开心。
NAS设置内网穿透 | Nginx反向代理 | 外网访问 | 配置华为云服务器 | 山不在高 (shanbuzaigao)
【好玩儿的Docker项目】家里没有公网IP?FRP+NPM+VPS = 随时随地用域名访问家里的任何设备!内网穿透,从未如此简单! | 我不是咕咕鸽
本文发布于:2024-02-02 04:23:44,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170681902341336.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |