Installation
OpenCDMP runs as a set of Docker containers, one per service. The docker-deployment repository provides an example configuration that starts a complete installation on one machine with a single command. See the architecture for what each container does.
The example is meant for local evaluation, not for production: every password is a demo default, Keycloak runs in development mode, and the application is served over plain HTTP. Before real users sign in, work through Before going to production.
Prerequisites
- Docker and Docker Compose:
- Install Docker (a recent version is recommended)
- Install Docker Compose (version 2, the
docker composecommand)
- Git, to clone the repository.
- Internet access on the first start, to pull the images from Docker Hub and the other public registries, and to download the
analysis-icuplugin of Elasticsearch. - Memory: the example reserves about 8 GB for its containers and lets them grow to about 16 GB (see Size the containers).
Start the example
-
Clone the repository:
git clone https://github.com/OpenCDMP/docker-deployment.gitcd docker-deployment -
Choose the images: the OpenCDMP images are published on Docker Hub, as
opencdmp/<image>(for exampleopencdmp/opencdmp-api), and the notification and annotation services ascitesa/java-pomolo-notification-apiandcitesa/java-pomolo-annotation-api. Set the registries and the versions to pull in.env:.envGITHUB_REGISTRY=docker.ioDOCKER_REGISTRY=docker.io/citesaMAIN_APP_TAG=<version>NOTIFICATION_APP_TAG=<version>ANNOTATION_APP_TAG=<version>DOCX_APP_TAG=<version>JSON_APP_TAG=<version>EVALUATOR_APP_TAG=<version>ZENODO_APP_TAG=<version>The
.envin the repository points at pre-release builds (ghcr.io, a private registry, and-devtags), so change these values before the first start. Take the versions of the release you install from the changelog, and check that each tag exists on Docker Hub. The example needs version 2.0.0 or later, which creates its own database at startup; older images do not work with it. The OpenAIRE FAIR evaluator has no public image and is not part of the example. The other images (PostgreSQL, Elasticsearch, Keycloak, RabbitMQ, Nginx, and the Gotenberg PDF service) come from their public registries and need no change. See Registries and image versions. -
Start the services:
docker compose up -dThe first start takes a few minutes: Elasticsearch installs its
analysis-icuplugin, Keycloak imports theOpenCDMPrealm, and the API service creates the database schema (see Database migrations). The containers start in dependency order on their own (see Startup order); no setup script is needed. -
Check the services:
docker compose psThe API service and the plugins report
healthyonce they are ready. If one does not, read its log file underlogs/(see Logging and monitoring). -
Open the application:
-
Navigate to
http://opencdmp.localhost:8180/. -
Log in with the OpenCDMP administrator user:
User: opencdmp-adminPass: admin -
opencdmp.localhostneeds no setup: browsers resolve every*.localhostname to the local machine and treat it as a secure origin, and inside Docker the proxy answers to the same name. If your browser cannot open it, add127.0.0.1 opencdmp.localhostto your hosts file.
-
-
Open Keycloak, the authentication service:
-
Navigate to
http://opencdmp.localhost:8180/auth/. -
Log in with Keycloak's administrator user:
User: keycloak-adminPass: admin -
Configure realms, clients, users, and roles as needed; see Keycloak setup.
-
Ports
- The application is published on port
8180(PROXY_APP_PORT). - PostgreSQL is published on
127.0.0.1:5433(POSTGRES_PORT), reachable from the local machine only.
To serve the application on a different port, replace 8180 in .env, in the files under config-files/, and in docker-compose.override.yml. To serve it under a different host name, replace opencdmp.localhost in the same files. Serve over HTTPS lists every setting that holds the address.
Start over
To discard the installation and start from scratch, run docker compose down, then delete the storage/ and logs/ folders.
Adapt the example
Use the files of the docker-deployment repository as a starting point and edit them:
- Infrastructure explains the
.envfile and the PostgreSQL, RabbitMQ, and Elasticsearch settings. - Keycloak setup lists what to change in the shipped realm (client secrets, passwords, addresses).
- Registering plugin services adds file transformers, deposit services, and evaluators.
- Before going to production covers secrets, TLS, backups, sizing, and monitoring.
To upgrade an existing installation, follow the Upgrade guide.
See also
- Architecture - The services and how they connect
- Before going to production - The production checklist
- Upgrade guide - Moving to a new version
- Configuration - Every setting of every service
- Administering OpenCDMP - Setting up blueprints, templates, and users once the installation runs