ประตูง่าย
Easy Gate เป็นเว็บแอปพลิเคชันเรียบง่ายที่ออกแบบมาเพื่อทำหน้าที่เป็นศูนย์กลางสำหรับโครงสร้างพื้นฐานที่คุณโฮสต์เอง ด้วยการแยกวิเคราะห์บริการและบันทึกย่อจากไฟล์การกำหนดค่าแบบเรียลไทม์ 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 ก็ได้
คุณสามารถปรับใช้อินสแตนซ์ของ Easy Gate ได้โดยใช้ Docker:
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
คุณสามารถเรียกใช้ 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
หากคุณต้องการโฮสต์ Easy Gate ด้านหลังอินสแตนซ์ nginx ที่ทำงานอยู่แล้ว (หรือพร็อกซีย้อนกลับอื่นๆ) คุณสามารถใช้ไฟล์นักเทียบท่าเขียนในไดเร็กทอรีตัวอย่าง:
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;
}
[...]
นอกจากนี้ยังจำเป็นต้องตั้งค่า "behind_proxy" ให้เป็นจริงในไฟล์การกำหนดค่า easy-gate ของคุณ:
[ ... ]
"behind_proxy" : true ,
[ ... ]
คุณสามารถค้นหาไฟล์การกำหนดค่า docker-compose และ nginx ที่สมบูรณ์ได้ในไดเร็กทอรีตัวอย่าง ตรรกะเดียวกันนี้ใช้กับการใช้งานแบบสแตนด์อโลนและ Docker
Easy Gate สามารถกำหนดค่าได้ด้วยไฟล์การกำหนดค่า 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 : []