社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

比lukcy更好用?专业docker 反代/监控/安全/导航!极空间部署「搞东西」反代

可爱的小Cherry • 2 天前 • 11 次点击  

大家好,这里是Cherry,喜爱折腾、玩数码,热衷于分享自己的数码玩耍经验~

折腾了数十款NAS和数百个Docker容器项目,关注我,每日获得docker玩法

如果喜欢本文,请下方点击免费的点赞、在看

图片
🔺玩法汇总:公众号首页,左下角点击教程合集
项目均来源互联网,如有侵权,后台私信联系删除



新发现的神器!一个端口搞定全部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架构

QQ_1748965430656.png



一、项目部署

1、配置域名

这里先说一下GoDoxy的逻辑,它不同于寻常的反代工具,让我们自定义一个三级域名:端口的形式来访问,它是一套全自动的反代工具,有点类似一个SSO,在所有容器前自动加一层代理面板。

互联网通过访问我们设置的GoDoxy域名,来访问所有的容器服务,并且我们只需要透出GoDoxy的一个HTTPS端口,就可以实现所有器的访问,生成的容器域名是容器名.domain.exm:端口

PS.部分容器涉及到URL后缀的,需要手动增加后缀,比如blossom。

QQ_1749010923207.png

因此,我们需要先创建一个DNS解析,解析到下面两个域名。其中泛域名是用于容器访问使用,而GoDoxy域名是用于WebUI登录。

1️⃣泛域名: *.domain.top

2️⃣GoDoxy域名:godoxy.domain.top  ——前缀可改

这里,很多人不喜欢godoxy这个域名前缀,这是可以改的,不过改了以后需要去修改根目录下的.env文件。

首先,下载最新exe格式的压缩包解压,然后把生成的文件夹丢到极空间的个人空间里。建议采用常规的/路径/docker/项目的方式来管理。

打包夸克:

pan.quark.cn/s/27fcaa38eb67 
QQ_1749005102745.png

🔻修改.env 文件第72行,这里的参数GODOXY_FRONTEND_ALIASES改成你自己设置的域名前缀即可。

QQ_1749011114574.png

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

QQ_1749011147786.png

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

QQ_1749017910726.png

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

QQ_1749020233295.png

2、配置文件

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

QQ_1749005236890.png

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

autocert:     provider: local     key_path: certs/更名.key     cert_path: certs/更名.crt 
QQ_1749005399455.png

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和证书的权限保存。

QQ_1749018856095.png

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

QQ_1749018886775.png

3、启动容器

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

QQ_1749012534595.png

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

QQ_1749013697761.png

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

QQ_1749013835600.png

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

QQ_1749017658343.png



二、GoDoxy简介

GoDoxy部署完成以后,原则上我们就可以关闭所有非GoDoxy的容器端口了,因为GoDoxy会统一读取docker.sock,并且将所有容器进行反代。

直接打开域名https://godoxy.你的域名.你的后缀:38843登录系统,输入账号密码cherry/cherry登录。

🔻初始密码,可以在.env的25、26行修改。

QQ_1749021967924.png

下面的图片是系统首页,这里展示了宿主机内的所有创建的容器,包括停止和运行中的。

并且根据项目内设的规则进行了分类,包括容器管理、媒体、下载、普通docker等。

QQ_1749021996831.png

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

QQ_1749022693157.png

切换到Config Editor界面,这里是对容器内/config/config.yaml文件的配置。这样我们就不需要去NAS里修改了,直接可以在页面上修改。

比较重要的配置包括ACL策略(即黑白名单,支持地区、国家、IP等);PVE控制接入;远程Docker管理;通知;域名匹配等。内容比较多,就不一一介绍了,感兴趣的可以去官方网站研究。

QQ_1749022791542.png

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

QQ_1749022921154.png

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

QQ_1748965442742.png

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

QQ_1749022969445.png



总结

这个项目我折腾了有一段时间,因为作者设置了很多安全的参数,缺少一个系统可以启动,但是无法登录也没有报错,加上自己的英文能力不太行,所以可以说是一边摸索一边询问,最后也在作者的帮助下顺利完成了项目部署。

整体体验下来,这一套反代工具,集成了安全登录、反代、容器发现、导航面板、容器监控、日志查看、远程容器管理等等功能,不可谓不强大!

搭配极空间的DDNS服务、自带浏览器,可以解决我们绝大多数的容器外网访问安全问题,让NAS深度玩法得到更多的保障!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/183570
 
11 次点击