大家好,这里是Cherry,喜爱折腾、玩数码,热衷于分享自己的数码玩耍经验~
折腾了数十款NAS和数百个Docker容器项目,关注我,每日获得docker玩法
新发现的神器!一个端口搞定全部docker反代和单点登录,自带发现容器、导航面板。
最近,在github又发现一个好东西——GoDoxy。它是一款轻量级、简单且高性能的 WebUI 反向代理工具。不过这玩意儿没有中文名,根据GoDoxy,我就给取了个「搞东西」的“信雅达"名称,大家权当看个乐儿。
不同于目前主流的反代工具,GoDoxy具有如下几个特点,真的可以说是八项全能!唯一的缺点就是英文界面,不过用上浏览器翻译,那是毫无问题。
项目地址(值得star):
项目特点:
1.读取docker.sock,并自动发现所有容器入口。
2.通过一个域名,将所有容器反代,支持SSO单点登录。
3.支持多节点部署。
4.支持ACL访问控制,支持国家、时区、IP的访问策略。
5.自动化更新SSL证书。
6.拥有容器状态和流量监控。
7.支持HTTP/HTTPS/TCP/UDP反代和端口转换。
8.自动生成容器导航栏。
9.支持X86和ARM架构。

一、项目部署
1、配置域名
这里先说一下GoDoxy的逻辑,它不同于寻常的反代工具,让我们自定义一个三级域名:端口
的形式来访问,它是一套全自动的反代工具,有点类似一个SSO,在所有容器前自动加一层代理面板。
互联网通过访问我们设置的GoDoxy域名,来访问所有的容器服务,并且我们只需要透出GoDoxy的一个HTTPS端口,就可以实现所有器的访问,生成的容器域名是容器名.domain.exm:端口
PS.部分容器涉及到URL后缀的,需要手动增加后缀,比如blossom。

因此,我们需要先创建一个DNS解析,解析到下面两个域名。其中泛域名是用于容器访问使用,而GoDoxy域名是用于WebUI登录。
1️⃣泛域名: *.domain.top
2️⃣GoDoxy域名:godoxy.domain.top
——前缀可改
这里,很多人不喜欢godoxy
这个域名前缀,这是可以改的,不过改了以后需要去修改根目录下的.env
文件。
首先,下载最新exe
格式的压缩包解压,然后把生成的文件夹丢到极空间的个人空间里。建议采用常规的/路径/docker/项目
的方式来管理。
打包夸克:
pan.quark.cn/s/27fcaa38eb67
🔻修改.env
文件第72行,这里的参数GODOXY_FRONTEND_ALIASES
改成你自己设置的域名前缀即可。

🔻修改.env
文件第52、53行,这里是我改的应用访问端口,也可以根据自己的情况修改。

接着打开极空间的DDNS
服务,根据自己的需要配置对应的DNS解析服务。

这里以阿里云为例,点击上方蓝字登录阿里云获取Key和Secret,然后在下方增加前面提到的两个域名,保存并更新即可。

2、配置文件
接着使用极空间的文本编辑器打开目录/godoxy/config/config.yaml
文件,主要修改红框内的两个地方(二选一)。

本地证书: 即我上面未注释的部分,放你的GoDoxy域名申请下来的本地证书,在/godoxy/certs/
目录下,然后在红框内的key_path
和cert_path
里的XXXX替换成文件名。(可选)建议使用通配符证书,确保都可以打开域名。缺点是非自签的,3个月要换一次。
autocert:
provider: local
key_path: certs/更名.key
cert_path: certs/更名.crt

Cloudflare证书: 下方大红框内的配置,需要填写你的Cloudflare邮箱账号、域名信息以及auth_token。没啥缺点,首选建议。
autocert:
provider: cloudflare
email: abc@gmail.com
domains:
- "*.domain.com"
- "domain.com"
options:
auth_token: 填写Couldflare API Key
Cloudflare Api Token获取方式如下,打开个人配置文件,选择API令牌——创建令牌——自定义令牌。在自定义令牌里,增加SSL和证书的权限保存。

令牌只会出现一次,记得保存好备用,否则只能下次更新替换了。

3、启动容器
打开极空间docker
应用,选择Compose标签,新建项目godoxy
,在添加方式里选择从本地导入,然后选择目录下的compose.yaml
文件。

导入以后,我们需要修改所有的环境变量所在位置,点击上方的查询路径
按钮,复制
godoxy
文件夹所在的目录路径。

将代码中所有的【极空间路径】中文,替换成复制下来的极空间路径,并创建Compose。

如果启动后,发现子容器godoxy
一直重启,那么看一下容器的GODOXY_GID
和GODOXY_UID
两个环境变量是不是0,如果不是的话手动编辑一下改成0即可。

二、GoDoxy简介
GoDoxy部署完成以后,原则上我们就可以关闭所有非GoDoxy的容器端口了,因为GoDoxy会统一读取docker.sock,并且将所有容器进行反代。
直接打开域名https://godoxy.你的域名.你的后缀:38843
登录系统,输入账号密码cherry/cherry
登录。
🔻初始密码,可以在.env
的25、26行修改。

下面的图片是系统首页,这里展示了宿主机内的所有创建的容器,包括停止和运行中的。
并且根据项目内设的规则进行了分类,包括容器管理、媒体、下载、普通docker等。

这里所有自动发现的容器都是可以点击的,并且已经反代完成。将鼠标移动到容器前面的名字上,可以看到浮窗里会显示反代后的URL。

切换到Config Editor
界面,这里是对容器内/config/config.yaml
文件的配置。这样我们就不需要去NAS里修改了,直接可以在页面上修改。
比较重要的配置包括ACL策略(即黑白名单,支持地区、国家、IP等);PVE控制接入;远程Docker管理;通知;域名匹配等。内容比较多,就不一一介绍了,感兴趣的可以去官方网站研究。

Proxies
页面展示的所有自动发现的容器,以及它们的端口、状态、启动时间、网络延迟等,只是一个展示。

Metrics
则是所有容器的服务监控。

Docker
里是所有容器的列表展示,点开单个容器可以看到具体的容器日志。由于GoDoxy是支持接入远程docker.sock的,所以理论上可以多节点管理任何网络可达的Docker,真正成为时间管理大师。

总结
这个项目我折腾了有一段时间,因为作者设置了很多安全的参数,缺少一个系统可以启动,但是无法登录也没有报错,加上自己的英文能力不太行,所以可以说是一边摸索一边询问,最后也在作者的帮助下顺利完成了项目部署。
整体体验下来,这一套反代工具,集成了安全登录、反代、容器发现、导航面板、容器监控、日志查看、远程容器管理等等功能,不可谓不强大!
搭配极空间的DDNS服务、自带浏览器,可以解决我们绝大多数的容器外网访问安全问题,让NAS深度玩法得到更多的保障!