puerta fácil
Easy Gate es una aplicación web sencilla diseñada para servir como centro central de su infraestructura autohospedada. Con el análisis en tiempo real de servicios y notas de un archivo de configuración, Easy Gate garantiza actualizaciones perfectas sin necesidad de reiniciar la aplicación. Además, ofrece la flexibilidad de asignar elementos a grupos de usuarios específicos, permitiendo un acceso personalizado en función de sus direcciones IP.
Para ejecutar Easy Gate como un ejecutable independiente, puede compilarlo a partir del código fuente o descargar un binario prediseñado desde la última versión.
Construir desde fuente:
git clone https://github.com/r7wx/easy-gate.git
cd easy-gate
make
Ejecutar ejecutable:
easy-gate < path-to-config-file >
El archivo de configuración puede ser un archivo JSON o YAML.
Puede implementar una instancia de Easy Gate utilizando 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
De forma predeterminada, la imagen de Easy Gate buscará un archivo de configuración en /etc/easy-gate/easy-gate.json, pero este valor se puede anular utilizando la variable de entorno 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
Puede ejecutar Easy Gate utilizando el archivo docker-compose proporcionado:
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
De forma predeterminada, la imagen de Easy Gate buscará un archivo de configuración en /etc/easy-gate/easy-gate.json, pero este valor se puede anular utilizando la variable de entorno 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
Si necesita alojar Easy Gate detrás de una instancia nginx que ya se está ejecutando (u otros servidores proxy inversos), puede usar el archivo docker-compose en el directorio de ejemplos:
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
Para utilizar correctamente la función de grupos, la instancia de nginx (o su otro proxy inverso) debe configurarse para utilizar el encabezado X-Forwarded-For:
[...]
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_pass http://easy-gate:8080;
}
[...]
También es obligatorio establecer "behind_proxy" en verdadero en su archivo de configuración de easy-gate:
[ ... ]
"behind_proxy" : true ,
[ ... ]
Puede encontrar los archivos de configuración completos de docker-compose y nginx en el directorio de ejemplos. La misma lógica se aplica a las implementaciones independientes y de Docker.
Easy Gate se puede configurar mediante un archivo de configuración JSON o YAML. Se proporciona una configuración de ejemplo en el directorio raíz de este repositorio (easy-gate.json/easy-gate.yml).
El tema Easy Gate se puede configurar proporcionando colores para el fondo y el primer plano. Los cambios de tema se aplicarán inmediatamente.
Ejemplo de un tema de modo oscuro:
"theme" : {
"background" : " #1d1d1d " ,
"foreground" : " #ffffff " ,
}
theme :
background : " #FFFFFF "
foreground : " #000000 "
También es posible utilizar un archivo CSS personalizado proporcionando la ruta al archivo:
"theme" : {
"custom_css" : " /path/to/custom.css "
}
theme :
custom_css : " /path/to/custom.css "
Tenga en cuenta que, incluso si proporciona un archivo CSS personalizado, los colores de fondo y de primer plano se seguirán aplicando siempre que proporcione las claves de plantilla correctas en su archivo CSS personalizado, así:
body {
background: {{.Background}};
color: {{.Foreground}};
}
Las entradas de grupo se utilizan para definir qué usuarios pueden ver qué elementos, proporcionando la subred del usuario. La funcionalidad de grupo es útil cuando se trata de usuarios de red interna y de 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
Una entrada de servicio se utiliza para definir un servicio que está disponible en la infraestructura. Cada servicio tiene los siguientes parámetros configurables:
{
"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 : []
Una entrada de nota se utiliza para definir una nota de texto simple que tiene un título y un contenido. Cada nota tiene un nombre, el contenido de la nota (texto) y los grupos que pueden verla (definidos en la sección de grupos). Si no se proporciona ningún grupo, todos los usuarios podrán ver el elemento:
{
"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 : []