gerbang mudah
Easy Gate adalah aplikasi web sederhana yang dirancang untuk berfungsi sebagai hub pusat untuk infrastruktur yang Anda hosting sendiri. Dengan penguraian layanan dan catatan secara real-time dari file konfigurasi, Easy Gate memastikan pembaruan yang lancar tanpa perlu memulai ulang aplikasi. Selain itu, ia menawarkan fleksibilitas untuk menetapkan item ke kelompok pengguna tertentu, memungkinkan akses yang disesuaikan berdasarkan alamat IP mereka.
Untuk menjalankan Easy Gate sebagai executable mandiri, Anda dapat membuatnya dari kode sumber atau mengunduh biner bawaan dari rilis terbaru.
Bangun dari sumber:
git clone https://github.com/r7wx/easy-gate.git
cd easy-gate
make
Jalankan yang dapat dieksekusi:
easy-gate < path-to-config-file >
File konfigurasi dapat berupa file JSON atau YAML.
Anda dapat menerapkan instance Easy Gate dengan menggunakan 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
Secara default, gambar Easy Gate akan mencari file konfigurasi di /etc/easy-gate/easy-gate.json, namun nilai ini dapat diganti dengan menggunakan variabel lingkungan 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
Anda dapat menjalankan Easy Gate dengan menggunakan file docker-compose yang disediakan:
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
Secara default, gambar Easy Gate akan mencari file konfigurasi di /etc/easy-gate/easy-gate.json, namun nilai ini dapat diganti dengan menggunakan variabel lingkungan 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
Jika Anda perlu meng-host Easy Gate di belakang instance nginx yang sudah berjalan (atau proxy terbalik lainnya), Anda dapat menggunakan file docker-compose di direktori contoh:
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
Untuk menggunakan fitur grup dengan benar, instance nginx (atau proksi terbalik lainnya) harus dikonfigurasi untuk menggunakan header X-Forwarded-For:
[...]
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_pass http://easy-gate:8080;
}
[...]
Anda juga wajib menyetel "behind_proxy" ke true di file konfigurasi easy-gate Anda:
[ ... ]
"behind_proxy" : true ,
[ ... ]
Anda dapat menemukan file konfigurasi docker-compose dan nginx lengkap di direktori contoh. Logika yang sama berlaku untuk penerapan mandiri dan Docker.
Gerbang mudah dapat dikonfigurasi dengan file konfigurasi JSON atau YAML. Contoh konfigurasi disediakan di direktori root repositori ini (easy-gate.json/easy-gate.yml).
Tema Easy Gate dapat dikonfigurasi dengan memberikan warna untuk latar belakang dan latar depan. Perubahan tema akan segera diterapkan.
Contoh tema mode gelap:
"theme" : {
"background" : " #1d1d1d " ,
"foreground" : " #ffffff " ,
}
theme :
background : " #FFFFFF "
foreground : " #000000 "
Dimungkinkan juga untuk menggunakan file css khusus dengan menyediakan jalur ke file tersebut:
"theme" : {
"custom_css" : " /path/to/custom.css "
}
theme :
custom_css : " /path/to/custom.css "
Perlu diingat, meskipun Anda menyediakan file css khusus, warna latar belakang dan latar depan akan tetap diterapkan selama Anda memberikan kunci templating yang benar dalam file css khusus Anda seperti:
body {
background: {{.Background}};
color: {{.Foreground}};
}
Entri grup digunakan untuk menentukan pengguna mana yang dapat melihat item mana, dengan menyediakan subnet pengguna. Fungsionalitas grup berguna ketika berhadapan dengan jaringan internal dan pengguna 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
Entri layanan digunakan untuk mendefinisikan layanan yang tersedia di infrastruktur. Setiap layanan memiliki parameter yang dapat dikonfigurasi berikut:
{
"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 : []
Entri catatan digunakan untuk mendefinisikan catatan teks sederhana yang memiliki judul dan isi. Setiap catatan memiliki nama, isi catatan (teks) dan grup yang dapat melihatnya (ditentukan di bagian grup). Jika tidak ada grup yang disediakan, item tersebut dapat dilihat oleh semua pengguna:
{
"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 : []