Ejecutar IronPDF en Linux: Guía de instalación
IronPDF para Linux ocupa aproximadamente 280 MB (incluyendo tanto el código IronPDF como el navegador Chrome completo). Las imágenes de Docker son de aproximadamente 500 MB.
Chrome también requiere algunos paquetes básicos que varían según su distribución de Linux. La mayoría de las distribuciones de Linux ya tienen instalados estos paquetes, ya que son utilizados por varias aplicaciones y bibliotecas en Linux.
Sin embargo, si estás utilizando una distribución minimalista, necesitarás instalar los paquetes de Linux necesarios para que Chrome funcione en Linux.
Para equipos de facturación electrónica española en Linux: IronPDF sobre Linux es la arquitectura recomendada para pipelines de procesamiento de lotes SII de la AEAT, generación de PDFs representativos VERI*FACTU y microservicios de Facturae para FACe. Las instancias en AWS eu-south-2 Madrid (Amazon Linux 2023, Ubuntu 22.04) son una elección habitual para estos workloads. Los despliegues en el sector público bajo clasificación ENS Medio o Alto también se realizan frecuentemente sobre Linux, eliminando las dependencias de
System.Drawingde Windows.
Nota: Para facilitar la depuración, puedes configurar lo siguiente:
// Enable detailed debugging for IronPdf
IronPdf.Logging.Logger.EnableDebugging = true;
// Specify the log file path
IronPdf.Logging.Logger.LogFilePath = "Default.log";
// Set the logging mode to capture all log data
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
// Enable detailed debugging for IronPdf
IronPdf.Logging.Logger.EnableDebugging = true;
// Specify the log file path
IronPdf.Logging.Logger.LogFilePath = "Default.log";
// Set the logging mode to capture all log data
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
' Enable detailed debugging for IronPdf
IronPdf.Logging.Logger.EnableDebugging = True
' Specify the log file path
IronPdf.Logging.Logger.LogFilePath = "Default.log"
' Set the logging mode to capture all log data
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All
Cómo hacer una imagen Docker más pequeña
Para servicios que generan PDFs en lotes de SII (Suministro Inmediato de Información) o en pipelines VERI*FACTU con alta frecuencia de despliegue, optimizar el tamaño de la imagen Docker es relevante tanto para el coste operativo como para el tiempo de despliegue en AWS eu-south-2 Madrid.
1. Instalación de paquetes en tiempo de ejecución
Una forma de reducir el tamaño es ejecutar comandos apt-get en tiempo de ejecución, en lugar de hacerlo al construir la imagen de docker:
- Elimine los comandos
apt-getde su Dockerfile. - Establezca
Installation.LinuxAndDockerDependenciesAutoConfig = true;antes de inicializar IronPDF o renderizar un documento. - Asegúrese de que su aplicación se ejecute con permisos suficientes para ejecutar comandos
apt-get.
Nota: Su primera inicialización será más lenta, ya que los comandos apt-get deben completarse antes de renderizar su primer documento, y este proceso se repetirá cada vez que tenga que volver a implementar la imagen.
Nota: Deberías ver entradas en la consola/registro que indican la instalación exitosa de paquetes:
Executing command 'apt install -y libnss3' in '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
libnspr4
The following NEW packages will be installed:
libnspr4 libnss3
0 upgraded, 2 newly installed, 0 to remove and 9 not upgraded.
Executing command 'apt install -y libnss3' in '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
libnspr4
The following NEW packages will be installed:
libnspr4 libnss3
0 upgraded, 2 newly installed, 0 to remove and 9 not upgraded.
2. Utilizar IronPdf.Slim
También puedes optar por solo incluir IronPDF.dll y descargar los archivos necesarios en tiempo de ejecución.
- Elimine IronPdf.Linux (y cualquier otro paquete de IronPDF) de su proyecto y agregue IronPdf.Slim.
- Establezca
Installation.AutomaticallyDownloadNativeBinaries = true;antes de inicializar IronPDF o renderizar un documento. - Asegúrese de que su Dockerfile otorgue permisos de lectura y escritura a todo el directorio de trabajo de su aplicación (ej., cambie
RUN chmod +rwx /app/runtimes/linux-x64/native/IronCefSubprocessaRUN chmod +rwx /app/).
Nota: Tu primera inicialización será más lenta, ya que el paquete NuGet se descargará y extraerá antes de procesar tu primer documento, y este proceso se repetirá cada vez que tengas que volver a desplegar la imagen.
Nota: Deberías ver entradas en la consola/registro que indican una descarga y extracción exitosa:
Downloading NuGet package from 'https://www.nuget.org/api/v2/package/IronPdf.Native.Chrome.Linux/2023.1.11387'
Extracting package contents '/app/bin/Debug/netcoreapp3.1/IronPdf.Native.Chrome.Linux.2023.1.11387.nupkg/runtimes/linux-x64/native' to '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
Successfully deployed NuGet package 'IronPdf.Native.Chrome.Linux' to '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
Successfully located 'IronInterop' at '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
Downloading NuGet package from 'https://www.nuget.org/api/v2/package/IronPdf.Native.Chrome.Linux/2023.1.11387'
Extracting package contents '/app/bin/Debug/netcoreapp3.1/IronPdf.Native.Chrome.Linux.2023.1.11387.nupkg/runtimes/linux-x64/native' to '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
Successfully deployed NuGet package 'IronPdf.Native.Chrome.Linux' to '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
Successfully located 'IronInterop' at '/app/bin/Debug/netcoreapp3.1/runtimes/linux-x64/native'
3. Conclusión
En resumen, para reducir el tamaño inicial del contenedor:
- Utiliza el paquete NuGet IronPdf.Slim.
- Configurar IronPDF:
// Set installation options for Linux and Docker environments
Installation.LinuxAndDockerDependenciesAutoConfig = true;
Installation.AutomaticallyDownloadNativeBinaries = true;
// Set installation options for Linux and Docker environments
Installation.LinuxAndDockerDependenciesAutoConfig = true;
Installation.AutomaticallyDownloadNativeBinaries = true;
' Set installation options for Linux and Docker environments
Installation.LinuxAndDockerDependenciesAutoConfig = True
Installation.AutomaticallyDownloadNativeBinaries = True
- Asegúrate de que el directorio de la aplicación sea escribible/ejecutable:
RUN chmod +rwx /app/
Una imagen de Docker muy reducida que utilice ambos puntos 1 y 2 debería reducir el tamaño de ~500MB a ~200MB.
Si es posible, verás el mejor rendimiento si NO optas por un despliegue reducido.
Algunos entornos en contenedores y en la nube no son persistentes y, por lo tanto, pueden tener que volver a descargar dependencias o ejecutar nuevamente los comandos apt-get, ¡lo que puede tomar hasta un par de minutos!
Sin embargo, entendemos que algunos desarrolladores pueden estar sujetos a estrictos requisitos de tamaño para sus despliegues.
Consideraciones para entornos ENS y facturación electrónica española
Para aplicaciones de software certificado VERI*FACTU o servicios que generan PDFs para TicketBAI (Bizkaia, Gipuzkoa, Araba) sobre Linux:
- ENS Medio/Alto: Los organismos públicos con clasificación ENS pueden imponer restricciones sobre la descarga de binarios en tiempo de ejecución. En esos casos, incluye
IronPdf.Native.Chrome.Linuxdirectamente en el pipeline de CI/CD y deshabilita la descarga automática. - AWS eu-south-2 Madrid: La región de Madrid ofrece soberanía de datos para entidades bajo el Reglamento General de Protección de Datos (RGPD/LOPDGDD). Para pipelines SII o Facturae que procesan datos fiscales, mantener los datos dentro de la región eu-south-2 es una consideración de cumplimiento relevante.
- Contenedores no persistentes (Lambda, ECS Fargate): Si tu pipeline VERI*FACTU usa AWS Lambda o ECS Fargate con almacenamiento efímero, el tiempo de inicialización de
IronPdf.Slimdebe tenerse en cuenta en los SLAs de procesamiento de facturas.
Preguntas frecuentes sobre IronPDF en Linux para facturación española
¿Es compatible IronPDF con Amazon Linux 2023 para procesamiento de lotes SII en AWS eu-south-2 Madrid?
Sí. Amazon Linux 2023 es compatible con IronPDF. Necesitarás instalar las dependencias de sistema necesarias (libgdiplus, libxkbcommon, libnss3, etc.) vía yum o dnf. Consulta la guía de configuración Linux de IronPDF para la lista completa de dependencias por distribución.
¿Puedo usar IronPDF en un entorno Linux con clasificación ENS Alto sin descarga de binarios en tiempo de ejecución?
Sí. Incluye el paquete IronPdf.Native.Chrome.Linux directamente en tu imagen Docker y desactiva AutomaticallyDownloadNativeBinaries. Esto garantiza que todos los binarios estén presentes en el momento del despliegue y que no se realicen conexiones externas durante el procesamiento de documentos, cumpliendo con los controles de acceso de red exigidos por el ENS.

