InvenioRDM Starter
Introduction
InvenioRDM is the open source turn-key research data management platform, with detailed documentation available here. InvenioRDM Starter facilitates deployment and configuration of InvenioRDM, allowing you to run InvenioRDM on your local computer within 15 min. This is achieved by providing
- a prebuilt Invenio-App-RDM Docker image.
- a Docker Compose configuration file with sensible defaults and searchable documentation.
InvenioRDM Starter is open source software and is coordinated by the InvenioRDM partner Front Matter. For questions please reach out to the and the Inveniosoftware Discord.
Requirements
A local installation of Python or Invenio-CLI is not required. A git client is recommended but not required.
Quickstart
Download the compose.yml file from the InvenioRDM Starter git repository. Alternatively, clone the repository with git.
git clone https://github.com/front-matter/invenio-rdm-starter.gitcd invenio-rdm-starterRun docker compose up in the same directory as the compose.yml file.
docker compose upIf you run docker compose up for the first time, the InvenioRDM setup script needs to run. This script will create the InvenioRDM database, initialize the OpenSearch indexes, and create an admin user. The script will also install the default InvenioRDM records and communities.
docker exec -it invenio-rdm-starter-worker-1 entrypoint.shOpen a web browser and navigate to https://localhost. One default admin user is created during setup: email admin@inveniosoftware.org, password changeme.
Configuration
The compose.yml configuration can be modified to suit your needs using environment variables in an .env file in the same folder. See .env.example for an example.
The compose.yml file is well documented, and the documentation is also available online at https://starter.front-matter.de/ generated using the Envy documentation tool.
Architecture
InvenioRDM Starter differs from the Dockerfile and docker-compose.yml generated by the invenio-cli command-line tool in the following ways:
invenio-cli, a local Python installation, and a Python virtual environment are not used on the host computer.- The invenio-app-rdm prebuilt Docker image provided by InvenioRDM Starter is used instead of building the image locally.
- Debian Trixie is used as the Docker image Linux distribution instead of
Almalinux. - The Docker image uses
Python 3.13andNode 22(not18). - The Docker image uses
gunicornas the WSGI server instead ofuwsgi. - Docker Compose uses
Caddyas the reverse proxy server instead ofNginx. InvenioRDM Starter will run locally athttps://localhost, and uses a self-signed ssl certificate issued byCaddy. - Docker Compose uses
Redisas the message broker instead ofRabbitMQ - Initial setup happens via a script instead of via invenio-cli.
FAQ
How do I get a secure SSL certificate on localhost?
The Caddy reverse proxy auto-generates a self-signed SSL certificate on localhost. This is an intermediary certificate, the corresponding root certificate isn’t automatically used in a Docker Compose setup. You can copy the root certificate (Caddy Local Authority - 2024 ECC Root) from your running Caddy container (data/caddy/pki/authorities/local/root.crt) into your operating system certificate store. The root certificate only works on localhost and is valid for 10 years.
Alternatively allow requests to localhost over HTTPS even when an invalid certificate is presented. In Chrome go to chrome://flags/#allow-insecure-localhost and enable the flag.
How do I delete the InvenioRDM Postgres database?
docker exec -it invenio-rdm-starter-web-1 invenio db drop --yes-i-knowHow do I remove the InvenioRDM OpenSearch indexes?
docker exec -it invenio-rdm-starter-web-1 invenio index destroy --force --yes-i-knowHow do I schedule a reindex of the InvenioRDM database?
docker exec -it invenio-rdm-starter-web-1 invenio rdm rebuild-all-indicesHow do I add vocabularies to a running InvenioRDM instance, e.g. names or affiliations?
docker exec -it invenio-rdm-starter-web-1 invenio rdm-records add-to-fixture affiliationsIsn’t InvenioRDM depending on Python 3.9?
InvenioRDM v12.0 supports Python 3.9-3.13. InvenioRDM Starter uses Python 3.13(the current version), but doesn’t use any features of Python 3.10-3.13. Please report any Python 3.13-related issues you encounter. Python 3.9 reaches end-of-life in October 2025.
Don’t I need RabbitMQ for the InvenioRDM message broker?
The Python Celery framework can use either Redis or RabbitMQ as the message broker (and Redis as the backend). I will be doing a detailed comparison of the two brokers for InvenioRDM.
Why use Debian instead of Almalinux as Linux distribution for the Docker image?
The official Python Docker images use either Debian or Alpine, making them a good starting point (e.g. security fixes) for the InvenioRDM Docker image. Almalinux has a complicated relationship with RedHat Linux. Alpine generates smaller images compared to Debian but most developers are less familar with Alpine and some people report issues with building Python packages on Alpine. InvenioRDM Starter uses Debian 12 (Bookworm), released in June 2023.
Why use gunicorn instead of uwsgi as the Python application server?
Both are popular Python application servers. More importantly InvenioRDM Starter uses one configuration and Docker container for both the web UI and API, simplifying deployment.