CRLibre/API_Hacienda

Error al subir certificados cuando se ejecuta con Docker

Closed this issue · 4 comments

Describa el problema (bug)
Estoy siguiendo esta guía para subir un certificado https://github.com/CRLibre/API_Hacienda/wiki/Upload-del-certificado-o-llave-criptogr%C3%A1fica
En lugar de recibir el JSON esperado, el API retorna un { resp: "-402" }
Investigando un poco el API, creo que el error viene de aquí

return ERROR_FILES_UPLOAD_ERROR;
y se reproduce por un error en la función move_uploaded_file de php.
Al hostear el API por medio de Docker, creo que puede que haya algún problema con los permisos para escribir al directorio

Pasos para reproducir

  1. Tener una VM con Ubuntu 24.04 (LTS) x64
  2. Clonar el repositorio
  3. Ejecutar: docker-compose -f "docker-compose.yml" up -d --build
  4. Seguir los pasos para crearse una cuenta: https://github.com/CRLibre/API_Hacienda/wiki/Creaci%C3%B3n-de-Usuario
  5. Tratar de subir el certificado: https://github.com/CRLibre/API_Hacienda/wiki/Upload-del-certificado-o-llave-criptogr%C3%A1fica

Versión API:
git log --pretty="%h" -n1 = 3f0855f

Sistema operativo:
Ubuntu 24.04 (LTS) x64

PHP versión:
php:7.4.9-apache (docker compose)

MySQL versión:
mariadb:10.11.4 (docker compose)

Comportamiento esperado
image

Capturas de pantalla o registro de bitácora
Captura de pantalla 2024-06-30 030746

Contexto adicional
Gracias :D

Hice una prueba con el API hosteada por ustedes: https://api-demo.crlibre.org/api.php y todo funcionó correctamente.

Tengo entendido que el https://api-demo.crlibre.org/api.php está pensada para que se realicen pruebas únicamente, no para ser utilizado directamente en producción.
¿Estoy en lo correcto?
¿Es posible o recomendado utiliza el API https://api-demo.crlibre.org/api.php en lugar de hostear el servidor uno mismo?

Hola Andrés @achaconm2001

En lugar de recibir el JSON esperado, el API retorna un { resp: "-402" }

Podrías confirmar que los permisos de escritura de directorio api y files estén habilitados.
Adentro de la carpeta "api" hay una carpeta que se llama "files"
Dale los permisos de escritura y a las subcarpetas.

¿Es posible o recomendado utiliza el API https://api-demo.crlibre.org/api.php en lugar de hostear el servidor uno mismo?
No creo que sea recomendado, pues actualmente el servicio que mencionas solamente es un demo, no está pensado para ser usado en producción, no está activamente monitoreado, ni tiene mantenimiento. Lo correcto es que cada colaborador tenga su propio servicio en su propio servidor.

Hola @JeanCarlosChavarriaHughes gracias por su ayuda.

Las carpetas dentro del contenedor de docker no tenía los permisos necesarios. Ahora ya les actualicé los permisos y todo funcionando.

Sería buena idea actualizar el archivo build de Docker y agregar los permisos para el directorio.
https://github.com/CRLibre/API_Hacienda/blob/dev/docker-php-apache/Dockerfile#L16
Después de esa línea, incluir
RUN chmod -R 777 /var/www/api
RUN chmod -R 777 /var/www/api/files

Gracias por su ayuda

Hola, @achaconm2001
Perfecto que ya pudo resolver el issue.

Podrías por favor crear el PR con el fix que mencionas, y me asignas para revisarlo y agregarlo al branch de develop dev.
Saludos.