Skip to main content
Version: 2.x (upcoming)

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.

warning

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​

  1. Docker and Docker Compose:
  2. Git, to clone the repository.
  3. Internet access on the first start, to pull the images from Docker Hub and the other public registries, and to download the analysis-icu plugin of Elasticsearch.
  4. 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​

  1. Clone the repository:

    git clone https://github.com/OpenCDMP/docker-deployment.git
    cd docker-deployment
  2. Choose the images: the OpenCDMP images are published on Docker Hub, as opencdmp/<image> (for example opencdmp/opencdmp-api), and the notification and annotation services as citesa/java-pomolo-notification-api and citesa/java-pomolo-annotation-api. Set the registries and the versions to pull in .env:

    .env
    GITHUB_REGISTRY=docker.io
    DOCKER_REGISTRY=docker.io/citesa

    MAIN_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 .env in the repository points at pre-release builds (ghcr.io, a private registry, and -dev tags), 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.

  3. Start the services:

    docker compose up -d

    The first start takes a few minutes: Elasticsearch installs its analysis-icu plugin, Keycloak imports the OpenCDMP realm, 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.

  4. Check the services:

    docker compose ps

    The API service and the plugins report healthy once they are ready. If one does not, read its log file under logs/ (see Logging and monitoring).

  5. Open the application:

    • Navigate to http://opencdmp.localhost:8180/.

    • Log in with the OpenCDMP administrator user:

      User: opencdmp-admin
      Pass: admin
    • opencdmp.localhost needs no setup: browsers resolve every *.localhost name 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, add 127.0.0.1 opencdmp.localhost to your hosts file.

  6. Open Keycloak, the authentication service:

    • Navigate to http://opencdmp.localhost:8180/auth/.

    • Log in with Keycloak's administrator user:

      User: keycloak-admin
      Pass: 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:

To upgrade an existing installation, follow the Upgrade guide.

See also​