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 más comunes encontrados al ejecutar Fenfa y sus soluciones.

Instalación iOS ​

"No se Puede Instalar" / La Instalación Falla ​

Síntomas: Tocar el botón de instalación en iOS muestra "No se puede instalar" o no ocurre nada.

Causas y Soluciones:

  1. HTTPS no configurado. iOS requiere HTTPS con un certificado TLS válido para la instalación OTA. Los certificados autofirmados no funcionan.

    • Solución: Configura un proxy inverso con un certificado TLS válido. Ver Despliegue en Producción.
    • Para pruebas: Usa ngrok para crear un túnel HTTPS: ngrok http 8000
  2. primary_domain incorrecto. El manifest plist contiene URLs de descarga basadas en primary_domain. Si esto es incorrecto, iOS no puede obtener el IPA.

    • Solución: Establece FENFA_PRIMARY_DOMAIN a la URL HTTPS exacta que los usuarios acceden (ej. https://dist.example.com).
  3. Problemas de certificado. El certificado TLS debe cubrir el dominio y ser de confianza para iOS.

    • Solución: Usa Let's Encrypt para obtener certificados gratuitos y de confianza.
  4. Firma del IPA expirada. El perfil de aprovisionamiento o el certificado de firma pueden haber expirado.

    • Solución: Re-firma el IPA con un certificado válido y vuelve a subirlo.

La Vinculación UDID No Funciona ​

Síntomas: El perfil mobileconfig se instala pero el dispositivo no queda registrado.

Causas y Soluciones:

  1. URL de callback inaccesible. La URL de callback UDID debe ser accesible desde el dispositivo.

    • Solución: Asegúrate de que primary_domain sea correcto y accesible desde la red del dispositivo.
  2. Nonce expirado. Los nonces de perfil expiran después de un timeout.

    • Solución: Vuelve a descargar el perfil mobileconfig e inténtalo de nuevo.

Problemas de Subida ​

La Subida Falla con 401 ​

Síntoma: {"ok": false, "error": {"code": "UNAUTHORIZED", ...}}

Solución: Comprueba que el encabezado X-Auth-Token contenga un token válido. Los endpoints de subida aceptan tanto tokens de subida como de administrador.

bash
# Verify your token works
curl -H "X-Auth-Token: YOUR_TOKEN" http://localhost:8000/admin/api/products

La Subida Falla con 413 (Entidad de Solicitud Demasiado Grande) ​

Síntoma: Las subidas de archivos grandes fallan con un error 413.

Solución: Esto es típicamente un límite del proxy inverso, no de Fenfa en sí. Aumenta el límite:

Nginx:

nginx
client_max_body_size 2G;

Caddy: Caddy no tiene límite de tamaño de cuerpo predeterminado, pero si has configurado uno:

dist.example.com {
    request_body {
        max_size 2GB
    }
    reverse_proxy localhost:8000
}

La Subida Inteligente No Detecta Metadatos ​

Síntoma: La versión y el número de build están vacíos después de la subida inteligente.

Solución: La detección automática de subida inteligente solo funciona para archivos IPA y APK. Para formatos de escritorio (DMG, EXE, DEB, etc.), proporciona version y build explícitamente en la solicitud de subida.

Problemas con Docker ​

El Contenedor Inicia pero el Panel de Administración Está Vacío ​

Síntoma: El panel de administración carga pero no muestra datos o muestra una página en blanco.

Solución: Comprueba que el contenedor esté ejecutándose y el mapeo de puertos sea correcto:

bash
docker ps
docker logs fenfa

Los Datos se Pierden Después de Reiniciar el Contenedor ​

Síntoma: Todos los productos, variantes y versiones desaparecen después de reiniciar el contenedor.

Solución: Monta volúmenes persistentes:

bash
docker run -d --name fenfa -p 8000:8000 \
  -v ./data:/data \
  -v ./uploads:/app/uploads \
  fenfa/fenfa:latest

Permiso Denegado en Volúmenes Montados ​

Síntoma: Fenfa no puede escribir en /data o /app/uploads.

Solución: Asegúrate de que los directorios del host existan y tengan los permisos correctos:

bash
mkdir -p data uploads
chmod 777 data uploads  # Or set appropriate UID/GID

Problemas de Base de Datos ​

Error "database is locked" ​

Síntoma: SQLite devuelve "database is locked" bajo alta concurrencia.

Solución: SQLite maneja bien las lecturas concurrentes pero serializa las escrituras. Este error ocurre típicamente bajo una carga de escritura muy alta. Soluciones:

  • Asegúrate de que solo una instancia de Fenfa escriba en el mismo archivo de base de datos.
  • Si ejecutas múltiples instancias, usa almacenamiento S3 y una base de datos compartida (o cambia a un backend de base de datos diferente en una versión futura).

Base de Datos Corrupta ​

Síntoma: Fenfa falla al iniciar con errores de SQLite.

Solución: Restaura desde la copia de seguridad:

bash
# Stop Fenfa
docker stop fenfa

# Restore backup
cp /backups/fenfa-latest.db /path/to/data/fenfa.db

# Restart
docker start fenfa

Prevención

Configura copias de seguridad automáticas diarias. Ver Despliegue en Producción para un script de copia de seguridad.

Problemas de Red ​

El Manifest iOS Devuelve URLs Incorrectas ​

Síntoma: El manifest plist de iOS contiene http://localhost:8000 en lugar del dominio público.

Solución: Establece FENFA_PRIMARY_DOMAIN a tu URL HTTPS pública:

bash
FENFA_PRIMARY_DOMAIN=https://dist.example.com

Las Descargas Son Lentas o Se Agotan ​

Síntoma: Las descargas de archivos grandes son lentas o fallan.

Posibles soluciones:

  • Aumenta el timeout del proxy inverso: proxy_read_timeout 600s; (Nginx)
  • Deshabilita el buffering de solicitudes: proxy_request_buffering off; (Nginx)
  • Considera usar almacenamiento compatible con S3 con un CDN para archivos grandes

Obtener Ayuda ​

Si tu problema no está cubierto aquí:

  1. Comprueba los Issues de GitHub para problemas conocidos.
  2. Revisa los logs del contenedor: docker logs fenfa
  3. Abre un nuevo issue con:
    • Versión de Fenfa (docker inspect fenfa | grep Image)
    • Salida de logs relevante
    • Pasos para reproducir el problema

Released under the Apache-2.0 License.