легкие ворота
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, используя предоставленный файл docker-compose:
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 (или другими обратными прокси-серверами), вы можете использовать файл 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;
}
[...]
Также обязательно установить для параметра «behind_proxy» значение true в файле конфигурации 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 : []