System Dependency Reference

This provides an authoritative listing of Girder’s external system dependencies, for development reference.

Server Install

Installation of Girder’s server has the following system dependencies:

  • Python v2.7 or v3.5+

    • This is necessary to run most of the server software.

    Warning

    Some Girder plugins do not support Python v3 at this time due to third party library dependencies. Namely, the hdfs_assetstore plugin and the metadata_extractor plugin will only be available in a Python v2.7 environment.

    Note

    Girder performs continuous integration testing using Python v2.7 and Python v3.5. Girder should work on newer Python v3.6+ versions as well, but that support is not verified by Girder’s automated testing at this time, so use at your own risk.

  • pip v8.1+

    • This is necessary to install Python packages.
    • v8.1 is required to install packages via Python wheels, which significantly reduce system dependencies on manylinux-compatible distributions (which includes almost everything except Alpine).
  • setuptools v21+

    • This is necessary to install Python packages.
    • v21+ is required to parse Girder’s setup.py file, but the latest version can and should be installed via pip.
  • A Python virtual environment (optional)

  • A C build environment for Python

    • This is necessary to install the psutil Python package (a requirement of Girder).
    • At a minimum, the environment must include GCC and the Python development headers.

Note

In the past, the cryptography Python package (an indirect requirement of Girder) required OpenSSL development headers, but cryptography is now published as a Python wheel.

In the past, the CFFI Python package (an indirect requirement of Girder) required libffi development headers, but CFFI is now published as a Python wheel.

Server Plugins Install

Some of Girder’s plugins require additional system dependencies, if they are installed:

  • OpenLDAP v2.4.11+ development headers (for the ldap plugin)
    • This is necessary to install the python-ldap Python package (a requirement of the ldap plugin).
  • Cyrus SASL development headers (for the ldap plugin)
    • This is an optional dependency for installing the python-ldap Python package (a requirement of the ldap plugin).

Note

In the past, the Pillow Python package (a requirement of the thumbnails plugin ) required libjpeg and zlib development headers, but Pillow is now published as a Python wheel.

Server Runtime

Running Girder’s server has the following additional system dependencies:

  • MongoDB v3.2+
    • This is necessary for Girder’s primary application database.
    • MongoDB does not need to be installed on the same machine as Girder’s server, so long as a network connection to a remote MongoDB is possible.
  • An SMTP relay (optional)
    • This is necessary to send emails to users and administrators.
    • There are multiple web-based services that provide SMTP relays at no cost for smaller volumes of mail.
      • Mailgun is known to work well for typical deployments.
      • Amazon SES may be simpler to manage for deployments already in AWS.
      • Any other SMTP service should be compatible, though some may only accept mail from a limited set of “From” addresses (which may be configured via a setting within Girder).
    • Advanced system administrators may wish to run their own SMTP server, like Postfix, as a relay.
      • Beware that self-hosted SMTP relays may need additional configuration with IP whitelisting, SPF, DKIM, and other measures before their mail can be reliably delivered to some email providers.

Web Client Build

Building Girder’s web client has the following system dependencies:

  • Node.js v8+
    • This is necessary to execute many aspects of the web client build system.
  • npm v5.2+
    • This is necessary to install web client packages.
  • curl
    • This is necessary to download Fontello files as part of the web client build process.
  • Git
    • This is necessary to introspect Girder’s install environment and generate version information as part of the web client build process.