共计 2882 个字符,预计需要花费 8 分钟才能阅读完成。

原创 可爱的小 Cherry
新发现的神器!一个端口搞定全部 docker 反代和单点登录,自带发现容器、导航面板。
最近,在 github 又发现一个好东西—— GoDoxy。它是一款轻量级、简单且高性能的 WebUI
反向代理工具。不过这玩意儿没有中文名,根据 GoDoxy,我就给取了个「搞东西」的“信雅达 ” 名称,大家权当看个乐儿。
不同于目前主流的反代工具,GoDoxy 具有如下几个特点,真的可以说是八项全能!唯一的缺点就是英文界面,不过用上浏览器翻译,那是毫无问题。
项目地址(值得 star):
- https://github.com/yusing/godoxy
项目特点:
- 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 深度玩法得到更多的保障!