4 min de lectura

Configuración

PgArachne carga la configuración desde variables de entorno o un archivo.

Note: schema.sql intenta crear el rol pgarachne_admin y concederlo a pgarachne. Sin privilegios de superusuario, la creación se omite. Crea el rol y el grant manualmente si es necesario.
El usuario proxy (DB_USER) debe ser miembro de pgarachne y pgarachne_admin para verificar y crear tokens API.
Nota de Seguridad: PgArachne no maneja contraseñas de base de datos en el archivo de configuración. Confía en el mecanismo estándar de archivo .pgpass de PostgreSQL (o la variable del sistema PGPASSWORD) para la autenticación.
Consejo: Si PgArachne está detrás de un reverse proxy, configura TRUSTED_PROXIES para resolver bien la IP del cliente y evitar spoofing del rate limit.
Orden de Búsqueda: Si no se especifica ningún archivo de configuración a través de CLI, busca en:
  1. Directorio actual: ./pgarachne.env (Todos los SO)
  2. Configuración de usuario:
    • Linux/macOS: ~/.config/pgarachne/pgarachne.env
    • Windows: %USERPROFILE%\.config\pgarachne\pgarachne.env
  3. Configuración del sistema: /etc/pgarachne/pgarachne.env (Solo Linux/macOS)

Ejemplo de configuración mínima

Esto es todo lo que necesitas para empezar:

DB_HOST=localhost
DB_PORT=5432
DB_USER=pgarachne
JWT_SECRET=change_me_to_something_secure

Checklist rápida de validación

  • JWT_SECRET es largo, aleatorio y no se reutiliza entre entornos.
  • DB_USER solo puede cambiar a roles esperados (revisa los grants de membresía).
  • TRUSTED_PROXIES está configurado si ejecutas detrás de un reverse proxy.
  • LOGIN_RATE_LIMIT está habilitado para despliegues expuestos a internet.
  • METRICS_LISTEN_ADDR es privado (por ejemplo 127.0.0.1:9090).

Referencia de configuración

VariableRequeridoDescripción
Conexión a Base de Datos
DB_HOSTDirección del servidor PostgreSQL (ej. localhost).
DB_PORTPuerto de la base de datos.
DB_USEREl usuario de base de datos con el que se conecta PgArachne.
DB_SSLMODEModo SSL de PostgreSQL. Por defecto: disable.
DB_SSLROOTCERTRuta al certificado raíz de CA (PEM).
DB_SSLCERTRuta al certificado de cliente (PEM).
DB_SSLKEYRuta a la clave privada del cliente (PEM).
Servidor HTTP
HTTP_PORTPuerto para escuchar. Por defecto: 8080.
API_PREFIXPrimer segmento de ruta URL para todos los endpoints de base de datos (/jsonrpc, /sse, /mcp). Por defecto: db, generando rutas como /db/:base_de_datos/jsonrpc. Usa api para rutas legacy. Solo se permiten letras, dígitos, guiones y guiones bajos.
PID_FILERuta del archivo PID del demonio usado por -start/-stop. Predeterminado: caché de usuario (fallback: directorio temporal).
ALLOWED_ORIGINSConfiguración de CORS. Lista separada por comas de dominios permitidos (ej. https://miapp.com). Por defecto: *.
STATIC_FILES_PATHRuta absoluta para servir archivos estáticos (Explorer/Frontend).
Seguridad (JWT)
JWT_SECRETUna cadena larga y aleatoria utilizada para firmar tokens de sesión.
JWT_EXPIRY_HOURSValidez de la sesión en horas. Por defecto: 8.
LOGIN_RATE_LIMITMáximo de intentos de login por ventana. Por defecto: 5. Usa 0 para desactivar.
LOGIN_RATE_WINDOWDuración de la ventana de rate limit. Por defecto: 1m.
El rate limit de login es por instancia (en memoria). En despliegues con varias instancias se requiere un limitador compartido.
TRUSTED_PROXIESIPs/CIDR de proxies de confianza para X-Forwarded-For. Separado por comas. Si está vacío, se ignoran los headers reenviados y la IP del cliente se toma de la conexión directa.
MAX_REQUEST_BYTESTamaño máximo del body en bytes. Por defecto: 2097152.
METRICS_ENABLEDHabilita el endpoint dedicado de métricas. Predeterminado: true.
METRICS_LISTEN_ADDRDirección del listener de métricas (host:port). Predeterminado: 127.0.0.1:9090.
SSE_MAX_CHANNELSMáximo de canales por conexión SSE. Por defecto: 8.
SSE_MAX_CLIENTSMáximo de clientes SSE simultáneos por base de datos. Por defecto: 1000.
SSE_CLIENT_BUFFERBuffer SSE por cliente (número de mensajes). Por defecto: 64.
SSE_SEND_TIMEOUTTiempo máximo de espera al enviar a un cliente lento. Por defecto: 2s.
SSE_HEARTBEATIntervalo de heartbeat para SSE. Por defecto: 20s.
SSE_IDLE_TIMEOUTTimeout de inactividad sin notificaciones. Por defecto: 90s.
Logging
LOG_LEVELVerbosidad: DEBUG, INFO, WARN, ERROR. Por defecto: INFO.
LOG_OUTPUTDónde escribir los logs: stdout o ruta del archivo.

Obligatorio   Opcional

Comportamiento de seguridad: las solicitudes sin un header Authorization válido se rechazan antes de abrir una conexión a la base de datos.

Inicia el servidor:

./pgarachne -config .env

Ver también