Skip to content
Esta página fue generada y traducida con asistencia de IA. Si encuentra alguna imprecisión, no dude en ayudar a mejorarla. Editar en GitHub

Resolución de Problemas

Esta página cubre los problemas comunes y sus soluciones al ejecutar OpenPR.

Conexión a la Base de Datos

La API falla al iniciar con "connection refused"

El servidor API inicia antes de que PostgreSQL esté listo.

Solución: El archivo Docker Compose incluye verificaciones de estado y depends_on con condition: service_healthy. Si el problema persiste, aumenta el start_period de PostgreSQL:

yaml
postgres:
  healthcheck:
    start_period: 30s  # Increase from default 10s

"role openpr does not exist"

El usuario de PostgreSQL no ha sido creado.

Solución: Verifica que POSTGRES_USER y POSTGRES_PASSWORD estén establecidos en el entorno de Docker Compose. Si ejecutas PostgreSQL manualmente:

bash
createuser -U postgres openpr
createdb -U postgres -O openpr openpr

Migraciones no aplicadas

Las migraciones solo se ejecutan automáticamente en el primer inicio del contenedor PostgreSQL (a través de docker-entrypoint-initdb.d).

Solución: Si la base de datos ya existe, aplica las migraciones manualmente:

bash
docker exec -it openpr-postgres psql -U openpr -d openpr
# Then run each migration SQL file in order

O recrea el volumen:

bash
docker-compose down -v
docker-compose up -d

Pérdida de Datos

docker-compose down -v elimina el volumen de la base de datos. Haz una copia de seguridad de tus datos primero.

Autenticación

"Invalid token" después de reiniciar el servidor

Los tokens JWT se firman con JWT_SECRET. Si este valor cambia entre reinicios, todos los tokens existentes se vuelven inválidos.

Solución: Establece un JWT_SECRET fijo en .env:

bash
JWT_SECRET=your-fixed-random-secret-here

El primer usuario no es administrador

El rol de administrador se asigna al primer usuario que se registra. Si ves role: "user" en lugar de role: "admin", otra cuenta se registró primero.

Solución: Usa la base de datos para actualizar el rol:

bash
docker exec -it openpr-postgres psql -U openpr -d openpr \
  -c "UPDATE users SET role = 'admin' WHERE email = '[email protected]';"

Docker / Podman

La compilación de Podman falla con error DNS

La red predeterminada de Podman no tiene acceso DNS durante las compilaciones.

Solución: Siempre usa --network=host al compilar imágenes con Podman:

bash
sudo podman build --network=host --build-arg APP_BIN=api -f Dockerfile.prebuilt -t openpr_api .

El frontend muestra "502 Bad Gateway"

El contenedor Nginx no puede llegar al servidor API.

Solución: Verifica que:

  1. El contenedor de la API está en ejecución: docker-compose ps
  2. La verificación de estado de la API pasa: docker exec openpr-api curl -f http://localhost:8080/health
  3. Ambos contenedores están en la misma red: docker network inspect openpr_openpr-network

Conflictos de puertos

Otro servicio está usando el mismo puerto.

Solución: Cambia el mapeo de puerto externo en docker-compose.yml:

yaml
api:
  ports:
    - "8082:8080"  # Changed from 8081

Servidor MCP

"tools/list returns empty"

El servidor MCP no puede conectarse a la API.

Solución: Verifica las variables de entorno:

bash
docker exec openpr-mcp-server env | grep OPENPR

Verifica que:

  • OPENPR_API_URL apunta al endpoint correcto de la API
  • OPENPR_BOT_TOKEN es un token de bot válido (comienza con opr_)
  • OPENPR_WORKSPACE_ID es un UUID de espacio de trabajo válido

El transporte stdio no funciona

El binario MCP necesita estar configurado como un comando en tu cliente de IA.

Solución: Asegúrate de que la ruta del binario sea correcta y las variables de entorno estén establecidas:

json
{
  "mcpServers": {
    "openpr": {
      "command": "/absolute/path/to/mcp-server",
      "args": ["--transport", "stdio"],
      "env": {
        "OPENPR_API_URL": "http://localhost:3000",
        "OPENPR_BOT_TOKEN": "opr_...",
        "OPENPR_WORKSPACE_ID": "..."
      }
    }
  }
}

La conexión SSE se cae

Las conexiones SSE pueden ser cerradas por servidores proxy con tiempos de espera cortos.

Solución: Si usas un proxy inverso, aumenta el tiempo de espera para el endpoint SSE:

# Caddy
reverse_proxy /sse localhost:8090 {
    flush_interval -1
}

Frontend

Página en blanco después del despliegue

La compilación del frontend puede estar usando la URL de API incorrecta.

Solución: Establece VITE_API_URL antes de compilar:

bash
VITE_API_URL=https://your-domain.example.com/api npm run build

El inicio de sesión funciona pero las páginas están vacías

Las solicitudes de API están fallando silenciosamente. Comprueba la consola del navegador (F12) para errores 401 o CORS.

Solución: Asegúrate de que la API sea accesible desde el navegador y CORS esté configurado. El frontend debe proxear las solicitudes de API a través de Nginx.

Rendimiento

Búsquedas lentas

La búsqueda de texto completo de PostgreSQL puede ser lenta en conjuntos de datos grandes sin índices adecuados.

Solución: Asegúrate de que existan índices FTS (son creados por las migraciones):

sql
-- Check for existing indexes
SELECT indexname FROM pg_indexes WHERE tablename = 'work_items';

Uso elevado de memoria

El servidor API procesa las subidas de archivos en memoria.

Solución: Limita los tamaños de subida y monitoriza el directorio uploads/. Considera configurar una limpieza periódica para subidas antiguas.

Obtener Ayuda

Si tu problema no está cubierto aquí:

  1. Comprueba los GitHub Issues para problemas conocidos.
  2. Revisa los registros del servidor API y MCP para mensajes de error.
  3. Abre un nuevo issue con tus registros de error, detalles del entorno y pasos para reproducir.

Released under the Apache-2.0 License.