易门
Easy Gate 是一个简单的 Web 应用程序,旨在充当您的自托管基础设施的中心枢纽。通过实时解析配置文件中的服务和注释,Easy Gate 可确保无缝更新,而无需重新启动应用程序。此外,它还可以灵活地将项目分配给特定的用户组,从而允许根据其 IP 地址进行定制访问。
为了将 Easy Gate 作为独立的可执行文件运行,您可以从源代码构建它或从最新版本下载预构建的二进制文件。
从源代码构建:
git clone https://github.com/r7wx/easy-gate.git
cd easy-gate
make
运行可执行文件:
easy-gate < path-to-config-file >
配置文件可以是 JSON 或 YAML 文件。
您可以使用 Docker 部署 Easy Gate 实例:
docker run -d --name=easy-gate
-p 8080:8080
-v /path/to/easy-gate.json:/etc/easy-gate/easy-gate.json
--restart unless-stopped
r7wx/easy-gate:latest
默认情况下,Easy Gate 映像将在 /etc/easy-gate/easy-gate.json 中查找配置文件,但可以使用 EASY_GATE_CONFIG_PATH 环境变量覆盖该值:
docker run -d --name=easy-gate
-p 8080:8080
-v /path/to/easy-gate.yml:/another/path/easy-gate.yml
--restart unless-stopped
-e EASY_GATE_CONFIG_PATH=/another/path/easy-gate.yml
r7wx/easy-gate:latest
您可以使用提供的 docker-compose 文件运行 Easy Gate:
services :
easy-gate :
image : r7wx/easy-gate:latest
build : .
container_name : easy-gate
restart : unless-stopped
ports :
- 8080:8080
volumes :
- ./easy-gate.json:/etc/easy-gate/easy-gate.json
docker-compose up
默认情况下,Easy Gate 映像将在 /etc/easy-gate/easy-gate.json 中查找配置文件,但可以使用 EASY_GATE_CONFIG_PATH 环境变量覆盖该值:
services :
easy-gate :
image : r7wx/easy-gate:latest
build : .
container_name : easy-gate
restart : unless-stopped
environment :
- EASY_GATE_CONFIG_PATH=/etc/easy-gate/easy-gate.yml
ports :
- 8080:8080
volumes :
- ./easy-gate.yml:/etc/easy-gate/easy-gate.yml
如果您需要在已运行的 nginx 实例(或其他反向代理)后面托管 Easy Gate,您可以使用示例目录中的 docker-compose 文件:
services :
easy-gate :
image : r7wx/easy-gate:latest
container_name : easy-gate
expose :
- 8080
networks :
- nginx-net
volumes :
- ../easy-gate.json:/etc/easy-gate/easy-gate.json
nginx :
image : nginx:latest
container_name : nginx
ports :
- 80:80
networks :
- nginx-net
volumes :
- ./nginx.conf:/etc/nginx/conf.d/default.conf
networks :
nginx-net :
driver : bridge
为了正确使用组功能,必须将 nginx 实例(或其他反向代理)配置为使用 X-Forwarded-For 标头:
[...]
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_pass http://easy-gate:8080;
}
[...]
还必须在 easy-gate 配置文件中将“behind_proxy”设置为 true:
[ ... ]
"behind_proxy" : true ,
[ ... ]
您可以在示例目录中找到完整的 docker-compose 和 nginx 配置文件。相同的逻辑适用于独立部署和 Docker 部署。
Easy gateway 可以通过 JSON 或 YAML 配置文件进行配置。此存储库的根目录中提供了示例配置 (easy-gate.json/easy-gate.yml)。
Easy Gate 主题可以通过提供背景和前景颜色来配置。主题更改将立即应用。
深色模式主题示例:
"theme" : {
"background" : " #1d1d1d " ,
"foreground" : " #ffffff " ,
}
theme :
background : " #FFFFFF "
foreground : " #000000 "
还可以通过提供文件路径来使用自定义 css 文件:
"theme" : {
"custom_css" : " /path/to/custom.css "
}
theme :
custom_css : " /path/to/custom.css "
请记住,即使您提供自定义 css 文件,只要您在自定义 css 文件中提供正确的模板键,仍然会应用背景和前景色,如下所示:
body {
background: {{.Background}};
color: {{.Foreground}};
}
组条目用于通过提供用户子网来定义哪些用户可以查看哪些项目。组功能在处理内部网络和 VPN 用户时非常有用。
"groups" : [
{
"name" : " internal " ,
"subnet" : " 192.168.1.1/24 "
},
{
"name" : " vpn " ,
"subnet" : " 10.8.1.1/24 "
}
]
groups :
- name : internal
subnet : 192.168.1.1/24
- name : vpn
subnet : 10.8.1.1/24
服务条目用于定义基础设施中可用的服务。每个服务都有以下可配置参数:
{
"name" : " Git " ,
"url" : " https://git.example.internal " ,
"groups" : [
" vpn "
]
},
{
"name" : " Portainer " ,
"url" : " https://portainer.example.all " ,
"category" : " Test " ,
"icon" : " data:image/png;base64,[...] " ,
"groups" : []
}
- name : Git
url : https://git.example.internal
groups :
- vpn
- name : Portainer
url : https://portainer.example.all
category : " Test "
icon : data:image/png;base64,[...]
groups : []
注释条目用于定义具有标题和内容的简单文本注释。每个注释都有一个名称、注释内容(文本)以及可以看到它的组(在组部分中定义)。如果未提供组,则所有用户都可以看到该项目:
{
"name" : " Simple note " ,
"text" : " This is a simple note for vpn users " ,
"groups" : [
" vpn "
]
},
{
"name" : " Global note " ,
"text" : " This note will be visible to everyone " ,
"groups" : []
}
- name : Simple note
text : This is a simple note for vpn users
groups :
- vpn
- name : Global note
text : This note will be visible to everyone
groups : []