How to Setup Rudder

Rudder can easily be setup in a dockerized environment. We also support Terraform for AWS EC2 while support for Azure and GCP is coming soon. Terraform setup will be covered in a separate post


Install the latest docker (v19+) and docker-compose (v1.24+)


  • Clone
  • Run “docker-compose up” to bring up all the services (described below)
  • Go to http://localhost:3000 to configure sources and destinations. 
    • Add a new source from the dropdown for Android/iOS source definitions. Note down the writeKey 
    • Configure your Google Analytics destination with the right trackingID (can be obtained from Google Analytics)
  • We have bundled a shell script that can generate test events. Get the “writeKey” from our app dashboard and then run the following command.

./generate-event <writeKeyHere>

“Generate-event” script generates a sample event and sends it to the backend container that is running in docker.    Based on our destination configuration the backend will transform the event and forward it to the configured destination.

  • Login to your Google Analytics account and verify that events are delivered in the correct order.

Overall Architecture

The following is a  brief overview of the major components of Rudder Stack.

Rudder Control Plane: The UI to configure the sources, destinations etc. It consists of 

  • Config backend: This is the backend service that handles the sources, destinations and their connections. User management and access based roles are defined here.
  • Customer webapp: This is the front end application that enables the teams to set up their customer data routing with Rudder. These will show you high-level data on event deliveries and more stats. It also provides access to custom enterprise features. 


Rudder Data Plane:  Data plane is our core engine that receives the events, stores, transforms them and reliably delivers to the destinations. This engine can be customized to your business requirements by a wide variety of configuration options. Eg. You can choose to enable backing up events to any S3 bucket, maximum size of the event for server to reject malicious requests. Sticking to defaults will work well for most of the companies but you have the flexibility to customize the data plane.

The data plane uses Postgres as the store for events. We built our own streaming framework on top of Postgres – that’s a topic for a future blog post. Reliable delivery and ordering of the events are the first principles in our design.

Rudder Destination Transformation: Conversion of events from Rudder format into destination specific format is handled by the transformation module. The transformation codes are written in Javascript. I

The following blogs provide an overview of our transformation module

If you are missing a transformation, please feel free to add it to the repository.

Rudder User Transformation: Rudder also supports user specific transformations  for real time operations like aggregation, sampling, modifying events etc. The following blog describes one real life use case of the transformation module

Client SDKs: The client SDKs provide APIs collecting events and sending it to the Rudder Backend.