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.6+
- 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 themetadata_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.6. Girder should work on newer Python v3.7+ 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)
This is necessary to prevent conflicts with Girder’s Python dependencies and allow installation as a non-root user.
Virtual environments are managed by the virtualenv package in Python v2.x and by the built-in venv module in Python v3.5+.
Note
Developers needing to work on several virtual environments should consider using other packages that help manage them such as:
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).
- This is necessary to install the python-ldap Python package (a requirement of the
- 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).
- This is an optional dependency for installing the python-ldap Python package (a
requirement of the
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.4+
- 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: