易門
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 : []