You can deploy Rakam to Heroku using Heroku button, it uses Heroku Postgresql add-on for your app and uses Postgresql deployment type.



Run the following command to start a Postgresql server in docker container and Rakam API in your local environment.

docker run -d --name rakam-db -e POSTGRES_PASSWORD=dummy -e POSTGRES_USER=rakam postgres:10.1 && docker run --link rakam-db --name rakam -p 9999:9999 -e RAKAM_CONFIG_LOCK__KEY=mylockKey -e RAKAM_CONFIG_STORE_ADAPTER_POSTGRESQL_URL=postgres://rakam:dummy@rakam-db:5432/rakam buremba/rakam

After docker container is started, visit and follow the instructions. You can also register your local Rakam API to Rakam BI at
or directly use Rakam API. You may also consult to API documentation for details of the API.

We also provide a docker-compose definition for a Postgresql backend. Create a docker-compose.yml with this definition and run the command docker-compose -f docker-compose.yml up -d.

version: '2.1'
    image: postgres:11.4
      - POSTGRES_USER=rakam
      test: ["CMD-SHELL", "pg_isready"]
      interval: 5s
      timeout: 5s
      retries: 3
    image: buremba/rakam
      - RAKAM_CONFIG_STORE_ADAPTER_POSTGRESQL_URL=postgres://rakam:dummy@rakam-db:5432/rakam
      - RAKAM_CONFIG_LOCK__KEY=mylockKey
      - "9999:9999"
        condition: service_healthy

You can set config variables for Rakam instance using environment variables. All properties in file can be set via environment variable RAKAM_CONFIG_property_name_dots_replaced_by_underscore.
For example, if you want to set store.adapter=postgresql you need to set environment variable RAKAM_CONFIG_STORE_ADAPTER=postgresql. Also the dash - is replaced by double underscore character __.
Therefore the environment variable RAKAM_CONFIG_LOCK__KEY corresponds to lock-key config property.

Dockerfile will generate file from environment variables in docker container that start with RAKAM_CONFIG prefix.

In order to set environment variables for container, you may use -e flag for for docker run but we advice you to set all environment variables in a file and use --env-file flag when starting your container.

Then you can share same file among the Rakam containers. If Dockerfile can't find any environment variable starts with RAKAM_CONFIG, it tries to connect Postgresql instance created with docker-compose.

AWS (Cloudformation)

Please contact us for Cloudformation templates of Rakam.

Cloudformation templates create a Opsworks stack in your AWS account for Rakam. You can easily monitor, scale and manage your Rakam cluster with these Cloudformation templates.

Cloudformation is the recommended way to deploy Rakam in production because AWS automatically handles most of the complexity like fail over and load-balancing.

Building Rakam

You can try the master branch by pulling the source code from Github and building Rakam using Maven:

  • Java 8
  • Maven 3.2.3+ (for building)
git clone
cd rakam
mvn clean install package -DskipTests
Running the application locally
rakam/target/rakam-*-bundle/rakam-*/bin/ run --config rakam/target/rakam-*-bundle/rakam-*/etc/

Note that you need to modify file in order to be able to start Rakam. (sample for Postgresql deployment type)

Running Rakam in your IDE

Since we already use Maven, you can import Rakam to your IDE using the root pom.xml file. We recommend using Intellij IDEA since the core team uses it when developing Rakam. Here is a sample configuration for executing Rakam in your IDE:

Main Class: org.rakam.ServiceStarter
VM Options: -ea -Xmx2G -Dconfig=YOUR_CONFIG_DIRECTORY/
Working directory: $MODULE_DIR$
Use classpath of module: rakam