NAS星球 篇十五:DDNS-Go插入Docker,IP冲突?那都不是事!
做为NAS用户,少不了在外边的时候需要用到家中NAS服务的情况,无论是同步笔记、书签、照片,还是离线下载等等,总是绕不开的就是没有公网地址的问题。我一般是使用DDNS的方式来实现。
DDNS是什么
DDNS(Dynamic Domain Name Server,动态域名服务)是将用户的动态IP地址映射到一个固定的域名解析服务上,通常可能是用在家里的电脑,没有固定公网IP,但是需要远程访问的场景。现在的网络环境,家庭用户是不会分配固定公网IP的,只能通过DDNS的方式实现,有些地区甚至只能IPv6 DDNS了。
DDNS-Go是什么
DDNS-Go是Go语言编写的简单易用的 DDNS,自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务。支持阿里云、腾讯云、Dnspod、Cloudflare、Callback、华为云、百度云、Porkbun、GoDaddy、Namecheap、NameSilo...
Docker的IP冲突
目前很多使用NAS的友友都用Nginx做代理,有的用宝塔,有的用Nginx Proxy Manager (NPM),而我两个都用了,宝塔除了反向代理还用于架设博客、管理数据库等。不管怎样都是采用Docker容器的方式使用,如果DDNS-Go也使用Docker容器且和NPM共用同一IP目前有三种方式:
1.网络代理:需要新建一个Docker网络,用于容器之间的通信,再通过代理方式实现,这样麻烦且不易于维护。
2.全部桥接到宿主机,但是这样宿主机的80端口就得让给NPM,而NPM的官方建议是给予独立IP,而且直接暴露宿主机IP,在安全上也是个问题。
3.DDNS-Go中的通过bash 脚本实现,但是当修改docker配置或者更新后,脚本也需要对应修改,否则可能会失联。
如果自己把Nginx Proxy Manager和DDNS-Go打包在一起做镜像,那么每次哪一个更新都需要重新打包(我是时常更新党,绝不更新的友友可以采用这条),也很麻烦。
解决方案
于是我采用了一个主程序文件,在不同容器中插入复用的方式。每个容器都可以映射单独的IP地址,避免了 IP 重叠的问题。各个容器可以独立使用和更新,如果要更新 DDNS-Go 只要用新版本覆盖就可以了。类似的方法我在前面为Docker添加中文支持中也采用过。
添加容器
在添加新的容器时,除了默认的配置外再加3个路径,分别是DDNS-Go执行文件、DDNS-Go的配置文件和staer.sh文件。
DDNS-Go的执行文件我是在appdate中单独放置的,各个有独立IP的服务都可以调用,一个执行文件,多个容器共同使用。更新的话,只替换这一个文件就可以了。
文件目录宝塔中添加的配置Nginx Proxy Manager添加的配置DDNS-Go的配置文件和start.sh文件则是放在各个容器的配置文件中,毕竟不同的容器绑定的域名不同。其中"ddns_go_config.yaml"是DDNS-Go的配置文件,原文件名是".ddns_go_config.yaml"前面的点表示这个文件为隐藏文件,默认在“/root”文件夹下,可以通过Docker添加路径指向容器的配置文件夹。
start.sh是一个bash脚本,内容如下图:
也同样操作,我将它放在了根目录。之后在发布参数添加start.sh就可以了。
但是同样的方法用在宝塔就不行了,因为宝塔的容器中自带有bt.sh作为启动文件,其中包含了各个Web服务的启动项,如果强行插入start.sh会导致bt.sh启动失败,所以需要重新写一个bt.sh并通过路径映射替换掉原来的文件。
我的bt.sh如下:
至此,每个容器都可以各自绑定网址域名而互不影响了。
今晚真的早睡
校验提示文案
姐搓澡不
校验提示文案
高纬
校验提示文案
野蛮老汉
校验提示文案
清风静入夜
校验提示文案
有点丑的蛋蛋
校验提示文案
豪豪妈咪努力向前
校验提示文案
沈步渔
校验提示文案
舒城城主
校验提示文案
竹攸宏然
校验提示文案
野蛮老汉
校验提示文案
动物园1823
校验提示文案
冬天的天
校验提示文案
高小喵
校验提示文案
陇上腊梅香
校验提示文案
我是小猫猫
校验提示文案
Re_nixiak
校验提示文案
ccc333ccc
校验提示文案
张大妈伤害了我
校验提示文案
小灵灵是个吃货
校验提示文案
dark77
校验提示文案
做事要认真
校验提示文案
糖糖251
校验提示文案
清风静入夜
校验提示文案
糕冷小静
校验提示文案
小凯利fang
校验提示文案
部门打杂
校验提示文案
小灵灵是个吃货
校验提示文案
张大妈伤害了我
校验提示文案
ccc333ccc
校验提示文案
野蛮老汉
校验提示文案
今晚真的早睡
校验提示文案
Re_nixiak
校验提示文案
我是小猫猫
校验提示文案
陇上腊梅香
校验提示文案
高小喵
校验提示文案
冬天的天
校验提示文案
动物园1823
校验提示文案
野蛮老汉
校验提示文案
竹攸宏然
校验提示文案