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: .. note:: Girder only performs continuous integration testing on this particular combination of dependencies. The Girder development team can only provide bugfixes and support for this environment. * `Ubuntu `_ 24.04 * Girder interacts with some system libraries (particularly `OpenSSL `_) at a very low level, so other operating system distributions and versions may not be compatible. * `Python `_ v3.10 * This is necessary to run most of the server software. * `pip `_ v21.0.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). * v21.0.1 is required by the cryptography v3.4+ package, which is pulled in by other dependencies. * `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: * `virtualenvwrapper `_ * `autoenv `_ * `pyenv-virtualenv `_ * `pyenv-virtualenvwrapper `_ * 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. 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). Server Runtime -------------- Running Girder's server has the following additional system dependencies: * `MongoDB `_ v3.6+ * 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 `_ v14 * This is necessary to execute many aspects of the web client build system. * `npm `_ v6 * This is necessary to install web client packages. * `Git `_ * This is necessary to introspect Girder's install environment and generate version information as part of the web client build process.