.. _integrator_requirements:

Requirements
============

System requirements
-------------------

To install a GeoMapFish application, you need to have the following
components installed on your system:

* **Git**
* **Docker** >= 17.05
* **Python** >= 3.8, with ``pip``
* **Apache** >= 2.4 (optional, can be used as a front for SSL)
* **PostgreSQL** >= 9.1/**PostGIS** >= 2.1

Required Apache modules
~~~~~~~~~~~~~~~~~~~~~~~

* ``mod_proxy``
* ``mod_proxy_http``


Required PostgreSQL extensions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* ``postgis``
* ``hstore``
* ``pg_trgm`` (optional)

Requirements that can be installed in the user space
----------------------------------------------------

* **Docker Compose** >= 2.20, See `Docker compose install <https://docs.docker.com/compose/install/>`_
* **Docker Buildx** See `Docker Buildx <https://docs.docker.com/build/architecture/#install-buildx>`_

Required Python packages
~~~~~~~~~~~~~~~~~~~~~~~~

* ``PyYAML>=6.0``

They can be install in your user directory with:

.. code:: bash

   python3 -m pip install --user PyYAML

If not yet done, add ``$HOME/.local/bin`` to your ``PATH``; add in your ``~/.bashrc`` file:

.. code:: bash

   PATH=$HOME/.local/bin:$PATH


Additional notes for Windows users
----------------------------------

Cygwin
~~~~~~

* Go to https://cygwin.com/
* In the download section, download the installer corresponding to your system
* Run the downloaded installer
* Choose an install folder not containing any space or weird characters (like parentheses)

When installing Cygwin, please make sure to install the following non-default packages:

* ``make`` from the ``devel`` folder
* ``gettext-devel`` from the ``devel`` folder
* ``wget`` from the ``web`` folder

Cygwin should *always* be run in administrator mode. To configure that:

* Go to the Windows start menu
* Right-click the Cygwin Terminal program icon
* Open its properties
* Under the ``Compatibility`` tab, check the ``Run this program as an administrator``

To avoid file permission problems between Windows and Cygwin, edit Cygwin's
``/etc/fstab`` file to disable ACLs like this:

.. prompt:: bash

    none /cygdrive cygdrive binary,noacl,posix=0,user 0 0

Configure Git
~~~~~~~~~~~~~

Cygwin comes with its own git package. Configure
Cygwin's git for Windows as follows:

* Open a Cygwin bash
* Run ``git config core.autocrlf true``