IronPDF on Azure Linux with WEBSITE_RUN_FROM_PACKAGE
When deploying a .NET API using IronPDF on an Azure Linux App Service with WEBSITE_RUN_FROM_PACKAGE enabled, the Chrome renderer fails to deploy and the application throws an error on startup.
Error while deploying IronPdf Chrome renderer: 'Multiple issues occurred while trying to deploy Chrome (libatk-1.0.so.0: cannot open shared object file: No such file or directory) (IronInterop.so: cannot open shared object file: No such file or directory) (Read-only file system: '/home/site/wwwroot/runtimes')'
When WEBSITE_RUN_FROM_PACKAGE is set, the /home/site/wwwroot directory becomes read-only. IronPDF needs to extract native Chrome renderer binaries and runtime libraries to a writable location at startup, so the read-only restriction blocks deployment. In addition, Azure's default Linux environment may not have the required system libraries pre-installed, which causes the missing shared object errors.
Solution
Three options are available depending on your deployment constraints.
Option 1: Install Missing Dependencies via SSH
Access the App Service via SSH and run the following commands to install the required system libraries:
apt update
apt install -y libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 \
libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 \
libxkbcommon-x11-0 libxrender1 libfontconfig1 libxshmfence1
apt update
apt install -y libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 \
libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 \
libxkbcommon-x11-0 libxrender1 libfontconfig1 libxshmfence1
This is a temporary fix. Packages installed this way do not persist across restarts and are not suitable for production environments that have outbound firewall restrictions. For the full list of required packages by Linux distribution, see the Linux deployment guide.
Option 2: Use a Custom Docker Container (Recommended for Linux)
Build a custom Docker image based on Ubuntu or Debian, install the required system packages with apt, and include the IronPdf and IronPdf.Native.Chrome.Linux NuGet packages in your project file. This approach gives the renderer a writable filesystem and pre-installed dependencies at image build time.
Add the matching NuGet packages to your .csproj:
<PackageReference Include="IronPdf" Version="*" />
<PackageReference Include="IronPdf.Native.Chrome.Linux" Version="*" />
<PackageReference Include="IronPdf" Version="*" />
<PackageReference Include="IronPdf.Native.Chrome.Linux" Version="*" />
Make sure the version of IronPdf.Native.Chrome.Linux matches your IronPdf package version. Including the native package in the project prevents IronPDF from attempting a runtime download, which would fail in a read-only or network-restricted environment.
See the IronPDF Docker guide for a full Dockerfile example.
Option 3: Migrate to a Windows App Service
Windows App Services do not have the same filesystem permission restrictions for WEBSITE_RUN_FROM_PACKAGE. IronPDF's Windows runtime libraries are natively supported and can be extracted without issue. Migrating to a Windows App Service removes the root cause entirely.

