# Installation ## Requirements * PHP (>= 7.2) * Icinga Web 2 (>= 2.9) * Icinga Web 2 libraries: * [Icinga PHP Library (ipl)](https://github.com/Icinga/icinga-php-library) (>= 0.8) * [Icinga PHP Thirdparty](https://github.com/Icinga/icinga-php-thirdparty) (>= 0.10) ## Google Chrome/Chromium Setup The module needs Google Chrome or Chromium supporting headless mode. ### RHEL/CentOS Add the Chrome repository from Google to yum, next to EPEL. ``` yum -y install epel-release cat >/etc/yum.repos.d/google-chrome-stable.repo < Add the Chrome repository from Google to apt. ``` apt-get -y install apt-transport-https gnupg wget wget -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list apt-get update ``` Install Chrome. ``` apt-get install google-chrome-stable ``` ## Module Installation 1. Install it [like any other module](https://icinga.com/docs/icinga-web-2/latest/doc/08-Modules/#installation). Use `pdfexport` as name. 2. You might need to set the absolute path to the Google Chrome / Chromium binary, depending on your system. This can be done in `Configuration -> Modules -> pdfexport -> Chrome` This concludes the installation. PDF exports now use Google Chrome/Chromium for rendering. ### Using a Remote Chrome/Chromium As an alternative to a local installation of Chrome/Chromium it is also possible to launch and utilize a remote instance. Just install it as described above on a different machine and configure its connection details in `Configuration -> Modules -> pdfexport -> Chrome`. To start a remote instance of Chrome/Chromium use the following commandline options: > google-chrome --remote-debugging-address=0.0.0.0 --remote-debugging-port=9222 --headless --keep-alive-for-test --disable-gpu --disable-dev-shm-usage --no-sandbox --bwsi --no-first-run --user-data-dir=/tmp --homedir=/tmp Note that the browser does accept any and all connection attempts without any authentication. Keep that in mind and let it listen on a public IP (or even on 0.0.0.0) only during tests or with a proper firewall in place.