使用Apisix打造家庭NAS网关,免公网IP访问
使用Apisix打造家庭NAS网关
本文使用apisix打造家庭NAS网关,并通过cloudflare进行穿透,可免公网IP访问。首先你的NAS支持Docker,没有NAS也没有关系,只要你的电脑支持Docker同样可以参照该教程。
1 依赖资源准备
- 准备域名:
- 免费域名注册: https://www.freenom.com/
- 或者在云厂商(阿里云/腾讯云/华为云等)注册一个,新用户最低1
- cloudflare账户,注册很简单,这里我就不演示,请提前准备好
- 依赖镜像
- alpine:3.17
- bitnami/etcd:latest
- apache/apisix:latest
- apache/apisix-dashboard:latest
- vcyang/cloudflared:1.0.0 如果是arm芯片请选择 vcyang/cloudflared:1.0.0-arm64
2 镜像配置
2.1 设置docker官方镜像源
打开docker -> 镜像 -> 仓库 -> 设置 -> 添加
仓库名称:Docker Hub
库地址: https://hub.docker.com/
2.2 请依次下载上述依赖的镜像
3 安装镜像
3.1 NAS中新建挂载所需目录
请在nas中建立docker需要挂载的目录,目录如下:
- 我的文件/docker/
- 我的文件/docker/etcd/
- 我的文件/docker/apisix/apisix/
- 我的文件/docker/apisix/apisix/conf/
- 我的文件/docker/apisix/apisix/logs/
- 我的文件/docker/apisix/dashboard/
3.2 NAS中添加apisix所需的配置文件
文件目录: /我的文件/docker/apisix/apisix/conf/config.yaml
apisix:node_listen: 9080 # APISIX listening portenable_ipv6: true # 开启ipv6支持enable_control: truecontrol:port: 9092deployment:admin:allow_admin:- 0.0.0.0/0- ::0/0admin_key:- name: "admin"key: edd1c9f034335f136f87ad84b625c8f1role: admin # admin: manage all configuration data- name: "viewer"key: 4054f7cf07e344346cd3f287985e76a2role: vieweretcd:host:- "http://NAS的ip地址:12379" # etcd的地址prefix: "/apisix" # apisix configurations prefixtimeout: 30 # 30 seconds
3.3 NAS中添加apisix dashboard所需的配置文件
文件目录: /我的文件/docker/apisix/dashboard/conf.yaml
conf:listen:port: 9000 # `manager api` listening portallow_list: # If we don't set any IP list, then any IP access is allowed by default.- 0.0.0.0/0- ::0/0etcd:endpoints: # supports defining multiple etcd host addresses for an etcd cluster- "http://NAS的ip地址:12379" # etcd的地址mtls:enable: falsekey_file: "" # Path of your self-signed client side keycert_file: "" # Path of your self-signed client side certca_file: "" # Path of your self-signed ca cert, the CA is used to sign callers'prefix: /apisix # apisix config's prefix in etcd, /apisix by defaultlog:error_log:level: warn # supports levels, lower to higher: debug, info, warn, error, panic, fatalfile_path:logs/error.log # supports relative path, absolute path, standard output# such as: logs/error.log, /tmp/logs/error.log, /dev/stdout, /dev/stderraccess_log:file_path:logs/access.log # supports relative path, absolute path, standard outputauthentication:secret:secret # secret for jwt token generation.# NOTE: Highly recommended to modify this value to protect `manager api`.# if it's default value, when `manager api` start, it will generate a random string to replace it.expire_time: 3600 # jwt token expire time, in secondusers: # yamllint enable rule:comments-indentation- username: admin # username and password for login `manager api`password: 这里是你的登录密码 # 这里是dashboard登录的密码,请尽量设置复杂一点- username: userpassword: 这里是你的登录密码 # 这里是dashboard普通用户登录的密码,请尽量设置复杂一点plugins: # plugin list (sorted in alphabetical order)- api-breaker- authz-keycloak- basic-auth- batch-requests- consumer-restriction- cors# - dubbo-proxy- echo# - error-log-logger# - example-plugin- fault-injection- grpc-transcode- hmac-auth- http-logger- ip-restriction- jwt-auth- kafka-logger- key-auth- limit-conn- limit-count- limit-req# - log-rotate# - node-status- openid-connect- prometheus- proxy-cache- proxy-mirror- proxy-rewrite- redirect- referer-restriction- request-id- request-validation- response-rewrite- serverless-post-function- serverless-pre-function# - skywalking- sls-logger- syslog- tcp-logger- udp-logger- uri-blocker- wolf-rbac- zipkin- server-info- traffic-split
3.4 新建alpine容器
a. 挂载目录: 我的文件/docker/
b. 设置启动命令:
sleep inf
c. 容器创建成功后,连接ssh进去执行
# 给etcd挂载的目录读写权限
chmod -R 777 /data/etcd# 然后退出
exit
3.5 创建etcd容器
a. 设置挂载目录
挂载目录: 我的文件/docker/etcd/
容器内目录: /bitnami/etcd
如图:
b. 设置端口
本地端口
- 12379
- 12380
如图:
c. 设置环境变量
ALLOW_NONE_AUTHENTICATION: "yes"
ETCD_ADVERTISE_CLIENT_URLS: "http://NAS的ip地址:12379"
如图:
d. 看进程,看到如图说明etcd容器安装成:
c. 在浏览器访问: http://NAS的ip地址:12379/version
返回如下信息说明正常访问:
{"etcdserver":"3.5.6","etcdcluster":"3.5.0"}
3.6 创建apisix容器
a. 挂载目录
挂载文件: 我的文件/docker/apisix/apisix/conf/config.yaml
容器内目录: /usr/local/apisix/conf/config.yaml
挂载日志目录: 我的文件/docker/apisix/apisix/logs/
容器内目录: /usr/local/apisix/logs
如图:
b. 开放端口
- 19080
- 19443
- 19180
如图:
c. 查看进程,如图说明启动成功
d. 验证服务
浏览器中访问:http://NAS的IP地址:19180/apisix/admin/services/
返回如下信息说明服务正常:
{"error_msg":"failed to check token"}
3.7 创建apisix-dashboard
a. 设置挂载目录
挂载配置文件: /我的文件/docker/apisix/dashboard/conf.yaml
容器内目录文件: /usr/local/apisix-dashboard/conf/conf.yaml
如图:
b. 设置端口
- 19000
如图:
c. 查看进程,如图说明运行正常:
d. 验证服务
浏览器中访问:http://NAS的IP地址:19000/
显示如下说明服务正常:
然后使用配置中的账户和密码登录。
4 设置域名
4.1登录cloudflare
地址:https://dash.cloudflare.com/login
4.2 添加你的域名站点
4.3 设置你的域名DNS服务器为cloudflare的DNS服务
a. 复制红框的地址,然后修改你的域名的DNS
b. 这里以阿里云域名举例:
然后确定提交
5 通过cloudflare穿透
5.1 创建穿透服务容器,新建容器vcyang/cloudflared
不用做任何设置,直接应用
5.2 容器启动后连接ssh进入容器
5.3 配置cloudflared
ssh中执行
cloudflared tunnel login
复制红框中的地址到浏览器中访问,登录cloudflare账号进行域名授权,然后选择如下图中域名进行授权
然后关闭页面
5.4 创建隧道名
a. ssh中执行
cloudflared tunnel create 隧道名,请使用字母或者拼音
b. 绑定域名,并执行:
cloudflared tunnel route dns 隧道名 你的域名
cloudflared tunnel run --url http://你nas的IP地址:19080 隧道名 &
d. 浏览中输入https://你的域名 ,显示如下说明网关穿透成功
6 配置网关
6.1 登录;apisix dashboard访问路由
地址: http://你nas地址:19000
账户和密码参考上面dashboard的配置文件
6.2 配置上游服务器
配置内容按图中填写,然后下一步,然后提交
6.2 创建服务
6.2 创建路由
按照图中填写,其他默认,下一步,提交
6.3 访问NAS 地址: http://你的域名/home/
7 结束语
喜欢的小伙伴欢迎收藏+关注,我会不定时的分享一些干货,你们的支持就是我最大的动力。
使用Apisix打造家庭NAS网关,免公网IP访问相关推荐
- 如何访问部署在家里的服务器(家庭宽带能够申请公网IP)
使用场景: 家庭影音库 个人电子图书馆 私人网盘 个人博客.网站 家用NAS 代码仓库 1.动态域名解析DDNS.动态公网IP地址概念 公网IP是有限的网络资源,宽带运营商一般只给用户分配动态的内网I ...
- 内网、网关、公网IP的关系
https://blog.csdn.net/u010020099/article/details/82148798 内网.网关.公网IP 1. 内网 内网:自己的单位或者家庭.小区内部有 ...
- 服务器ip直接访问php怎么写,php - 如何实现用公网ip访问到服务器上的网页?
服务器系统是Windows Server 2012 R2,已经部署了IIS.PHP和MySQL,能够在云服务器上通过localhost打开php网页,(放在服务器wwwroot上的index.php) ...
- 关于腾讯云服务器不能用公网ip访问的解决方案
关于腾讯云服务器不能用公网ip访问的解决方案 参考文章: (1)关于腾讯云服务器不能用公网ip访问的解决方案 (2)https://www.cnblogs.com/cxsabc/p/10627645. ...
- 阿里云服务器的公网ip访问不到的问题
原因分析 今天搭载了一台阿里云服务器,迅速搭载了一套LAMP,但是使用给定的公网ip并不能直接访问到自己的服务器页面,四处检查确认配置没有问题,且ICAM在本机可以ping通服务器,最终找到了原因 进 ...
- 内网用户通过域名或公网IP访问内部服务器的解决办法
内网用户通过域名或公网IP访问内部服务器的解决办法 原因-路由回流 组网图 解决方案 内部NAT方案 内网用户与服务器不同网段 E0/0和E0/2都需要做nat server 内网用户与服务器相同网段 ...
- 【计网】DNS解析 DDNS解决动态公网IP访问
DNS服务与DDNS 前言 一.DNS服务 二.DNS域名解析 1.解析过程 2.DNS污染 三.DDNS解决动态公网IP访问 总结 前言 本篇主要记录一下DNS域名解析在我们平时上网时的使用,与DN ...
- flask部署阿里云服务器,公网ip访问不了(一些问题及解答)
flask部署阿里云服务器,公网ip访问不了(新手踩坑之路) 好朋友,你是不是一个后端初学者?相信到目前为止,你已经拥有一定的后端基础,在发现单机本地的后端开发已经无法满足你,于是你刚买一个云服务器. ...
- 内外网通过公网IP访问DMZ主机
需求: 公司DMZ区域Web服务器对内外提供Web服务,要求必须内外网使用公网IP访问,这样做到内外网透明: 准备: 防火墙外网接口IP 2.2.2.2/29,内网接口IP 10.2.255.253/ ...
最新文章
- angular_ui-router ——依赖注入
- rpm -e --nodeps_微课 | rpm的思维导图
- parrot linux 安装grub,parrotsec 和 kali安装系统的时候出现“executing grub-install dummy”的解决方案...
- OC语言中的便利初始化函数和便利构造器
- Aveva Marine 新建项目001
- 计算机辅助园林设计常用软件,计算机辅助园林设计应用探讨.doc
- CSS基础汇总——点击标题跳转详细博客【学习笔记】
- 论文查重算法 python_论文查重降重绝密方法
- [转]2015年数学建模C题–基于无线通信基站的室内三维定位问题
- m 文件 dll matlab 中调用_《淫巧系列二》MATLAB中直接调用Python
- 如何利用SPSS进行秩和检验
- python返回类型为anytype_python - Zeep的SOAP请求(Python) - 堆栈内存溢出
- crontab布置定时任务
- c#物联网_毕业季我与你招聘信息中移物联网
- hive卡在最后一个reduce过不去_数据倾斜
- 分赛区决赛见!2021eBay全国跨境电商创新创业大赛分赛区决赛晋级名单
- polybezier
- 西工大计算机考研最全的报名和各方向解析,含导师介绍
- 库 家庭组 计算机 网络,Windows 8家庭组网络连接功能详解
- Deep Learning(1)