Saltar al contenido
PentAGI
Configuración

Seguridad

Credenciales, HTTPS, inicio de sesión y exposición de red de una instalación de PentAGI.

Cambiar los valores predeterminados

Una instalación nueva crea el administrador local [email protected] con la contraseña admin, que debes cambiar en el primer inicio de sesión. Si pierdes la contraseña, el menú de mantenimiento del instalador la restablece siempre que la cuenta siga usando la dirección [email protected].

Configura estos valores en .env antes del primer inicio; el instalador genera la sal y las contraseñas por ti. PostgreSQL y Neo4j toman sus credenciales solo cuando crean sus volúmenes de datos, así que cambiarlos después rompe la conexión:

VariablePropósito
COOKIE_SIGNING_SALTFirma las cookies de sesión y los tokens de API — establece un valor aleatorio
PENTAGI_POSTGRES_USER, PENTAGI_POSTGRES_PASSWORDCredenciales de PostgreSQL
NEO4J_PASSWORDContraseña de Neo4j para el knowledge graph; NEO4J_USER debe permanecer neo4j
PUBLIC_URLLa URL que abren los usuarios, por ejemplo https://pentagi.example.com

En una instalación en ejecución, cambia primero la contraseña de la base de datos dentro de PostgreSQL o Neo4j y luego en .env.

HTTPS

PentAGI sirve HTTPS en el puerto 8443 con un certificado autofirmado. Para usar el tuyo propio, configura SERVER_SSL_CRT y SERVER_SSL_KEY y monta los archivos en docker-compose.yml.

Usuarios e inicio de sesión

No hay formulario de registro. Los administradores gestionan los usuarios locales a través de la API de Usuarios (/api/v1/users/) desde una sesión de navegador con sesión iniciada — un token de API obtiene un 403 allí — y los roles restringen lo que cada usuario puede ver y cambiar. Los usuarios locales cambian su propio correo electrónico y contraseña en Settings → Account.

Con el inicio de sesión mediante GitHub o Google configurado, un inicio de sesión cuyo correo electrónico verificado por el proveedor coincida con una cuenta existente, incluidas las cuentas locales, inicia sesión en esa cuenta con su rol; cualquier otro inicio de sesión obtiene una nueva cuenta con el rol de usuario predeterminado. Cada instalación comienza con el administrador [email protected], así que cámbialo a una dirección que controles bajo Settings → Account antes de habilitar el inicio de sesión, y habilítalo solo donde las nuevas cuentas sean aceptables, por ejemplo con una aplicación de Google Workspace limitada a tu dominio.

El inicio de sesión mediante GitHub y Google está disponible a través de OAuth. Registra una aplicación con la devolución de llamada ${PUBLIC_URL}/api/v1/auth/login-callback y añade sus credenciales:

PUBLIC_URL=https://pentagi.example.com
OAUTH_GITHUB_CLIENT_ID=your_github_client_id
OAUTH_GITHUB_CLIENT_SECRET=your_github_client_secret

Exposición de red

Por defecto, la interfaz web de PentAGI escucha solo en 127.0.0.1. Para acceder a ella desde otras máquinas:

PENTAGI_LISTEN_IP=0.0.0.0
PENTAGI_LISTEN_PORT=8443
PUBLIC_URL=https://192.168.1.100:8443
CORS_ORIGINS=https://localhost:8443,https://192.168.1.100:8443

Usa la dirección real en PUBLIC_URL y CORS_ORIGINS, nunca 0.0.0.0. Recrea los contenedores con docker compose up -d --force-recreate y abre el puerto 8443 en el firewall.

Detrás de un proxy inverso, establece TRUSTED_PROXIES con la dirección o CIDR del proxy, separados por comas. De lo contrario, todas las solicitudes parecen provenir del proxy y el límite de inicio de sesión por dirección —30 intentos fallidos en cinco minutos, seguido de un bloqueo de 15 minutos— es compartido por todos los usuarios.

El contenedor sandbox de cada flow también publica dos puertos para callbacks fuera de banda, como reverse shells. Proceden de los 2000 puertos que comienzan en DOCKER_PORTS_BASE (por defecto 28000) y están vinculados a DOCKER_PUBLIC_IP, la dirección que los agents también indican a los targets para realizar el callback.

Por defecto DOCKER_PUBLIC_IP es 0.0.0.0: los puertos escuchan en todas las interfaces del host de Docker, y los agents buscan su dirección pública por sí mismos. Configúralo con una dirección específica solo si el host posee esa dirección y los targets pueden alcanzarla; detrás de NAT, mantén el valor por defecto. Los puertos que Docker publica omiten las reglas de ufw y firewalld en el host, así que restringe el rango con un firewall delante del host, como un grupo de seguridad en la nube, o con reglas en la cadena DOCKER-USER de Docker.

PROXY_URL enruta las llamadas del backend a los proveedores de modelos, el proveedor de embeddings, las APIs de búsqueda y la comprobación de actualizaciones a través de un proxy, lo que ayuda a aislar la instalación de las redes externas. Los endpoints autoalojados como Ollama, vLLM o SearXNG también pasan por él, ya que no hay una excepción NO_PROXY, así que el proxy debe poder alcanzarlos. Los contenedores sandbox de los flows, donde los agents ejecutan sus comandos, el scraper, que abre páginas web para la herramienta del navegador, y el servicio Graphiti no lo utilizan, así que restringe su tráfico saliente a nivel de red. El inicio de sesión con GitHub o Google y las llamadas a un endpoint de Langfuse u OpenTelemetry fuera de los stacks incluidos tampoco lo usan, y el demonio Docker descarga las imágenes con su propia configuración de proxy.

Comprobación de actualizaciones

A los dos minutos de arrancar y luego cada tres horas, el servidor pregunta a update.pentagi.com si hay una compilación más reciente disponible. La petición lleva el ID de instalación, la clave de licencia si está configurada, la versión y la plataforma, y un resumen de la instalación: el provider configurado y los tipos de inicio de sesión, algunos interruptores de funciones, recuentos de usuarios, flows, tasks, contenedores, prompts, tokens de API y tool calls, y totales de tokens y costes por tipo de provider — sin nombres, direcciones, prompts ni contenido de flows. UPDATE_CHECK_INTERVAL=0 lo desactiva. Cada vez que el instalador se inicia y después de cada acción que ejecuta, como Apply Changes, Update, Start o Stop, envía las imágenes instaladas y el estado de cada stack, además del mismo resumen mientras PentAGI está en ejecución; UPDATE_CHECK_INTERVAL no le afecta.

El contenedor pentagi se ejecuta como root porque gestiona contenedores a través del socket de Docker. Para un aislamiento más fuerte, ejecuta las tools en un worker node separado.

Última actualización el