Skip to content

System requirements


InvenioRDM depends on the following requirements to be installed on your local system:

  • MacOS or Linux-based systems (Windows systems is not supported).
  • Python 3.6, 3.7, 3.8 or 3.9

    • Python development headers:
      • On Ubuntu: sudo apt install python3-dev.
      • On RHEL/Fedora: yum install -y python3-devel.x86_64.
    • MacOS 11 Big Sur introduces some changes that might break the installation of some packages (for example PostgreSQL binaries). If this happens, make sure that you prepend the installation command with SYSTEM_VERSION_COMPAT=1 (more information):

      SYSTEM_VERSION_COMPAT=1 invenio-cli install
  • Docker 1.13.0+

  • Docker-Compose 1.17.0+

For running and building the application locally you will also need:

  • Node.js 14.0.0+ (needed for local installation). We recommend that you install node through nvm.
  • npm < 7.
  • Cairo needed for badges to be properly displayed.
  • DejaVu Fonts needed for badges rendering.
  • ImageMagick needed for IIIF file rendering.

Supported Python distributions

InvenioRDM targets CPython 3.6, 3.7, 3.8, and 3.9 (lowest 3.6.2). Anaconda Python in particular is not currently supported and other Python distributions are not tested.


InvenioRDM depends on the following services. During the installation we start these services in containers, but you could as well use externally hosted services for them:

  • Databases: PostgreSQL 9.6+
  • Elasticsearch: v6.8 - v7.10 (due to the license change in v7.11, we are currently evaluating the situation).
  • Cache: Redis, memcached
  • Message broker: RabbitMQ, Redis
  • Storage systems: Network storage, S3, XRootD, and more


We usually run InvenioRDM on machines that have at least 8GB of RAM and at least 4 cores.


Permissions to run Docker (Linux)

Your user that will be executing the CLI tool MUST be able execute the docker command (i.e. it is not only available for the root user):

sudo usermod --append --groups docker $USER

Available memory for Docker (macOS)

On the same topic, make sure that Docker itself has enough memory to run.

In Linux based systems Docker can use all available memory. In macOS, by default, it gets 2GB of RAM which most likely won't be enough. Allocating 6-8GB to it is optimal. You can do that in Docker --> preferences --> resources and adjust the Memory to the corresponding value. If you have a few cores more to spare, it might be a good idea to give more than 2. Take into account that you will run between 4 and 8 containers.

Elasticsearch and Docker (macOS and Linux)

Among the containers you will run is an Elasticsearch container which is quite demanding. Per Elasticsearch's Docker documentation, you will want to apply the following kernel setting:

On Linux, add the following to /etc/sysctl.conf on your local machine (host machine):

# Maximum number of memory map areas a process (Elasticsearch) may have

On macOS, do the following:

screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
# and in the shell
sysctl -w vm.max_map_count=262144