
Deploy RudderStack Data Plane on Your Own Server
Deploy RudderStack Data Plane, the open-source Customer Data Platform. This template includes the backend server, PostgreSQL database, data transformer, and metrics exporter.
Want to deploy RudderStack Data Plane on your server faster? Try Senate with one-command setup, automatic HTTPS and monitoring.
What is RudderStack Data Plane?
**Deploy your self-hosted RudderStack Open Source instance on Senate.** This template will automatically set up the following services: - RudderStack Server (Backend): The core data processing engine. - PostgreSQL Database: Stores job metadata and other operational data. - RudderStack Transformer: Handles data transformations for selected destinations. - StatsD Metrics Exporter: For exposing application metrics. **Configuration Notes:** 1. **Workspace Token (Required):** You MUST provide your RudderStack Workspace Token. You can find this in your RudderStack control plane (e.g., app.rudderstack.com). 2. **PostgreSQL Password:** A strong password for the database will be auto-generated. You can override it if necessary. 3. **Image Versions:** Default versions are set to 'latest'. For production environments, it is highly recommended to specify stable, numerical version tags for both Rudder Server and Rudder Transformer. **Important Note on PostgreSQL `shm_size`:** The original Docker Compose for RudderStack specifies `shm_size: 128mb` for the PostgreSQL container. This YAML template for Senate does not directly set this Docker-specific option as `captainVersion: 4` templates typically focus on higher-level configurations. - For many use cases, the default Docker shared memory size (often 64MB) may be sufficient. - If you encounter performance issues or errors with the PostgreSQL service (`${app_name}-db`), especially under heavy load or with numerous connections, you might need to increase the `shm_size` available to Docker containers. This is generally configured at the Docker daemon level on your Senate worker node(s). Please consult your Docker and OS documentation for instructions on how to adjust this setting.
Self-Host RudderStack Data Plane
Follow these steps to deploy on your own server.
Install Docker
Skip this step if Docker is already installed on your server.
curl -fsSL https://get.docker.com | sh
Configure
Customize the settings below. Defaults work for most cases.
General
Deploy
Copy the configuration and run it on your server.
services:
rudder_stack-backend:
image: rudderlabs/rudder-server:1.49.3
environment:
CONFIG_BACKEND_URL: https://api.rudderstack.com
DEST_TRANSFORM_URL: http://rudder_stack-d-transformer:9090
JOBS_DB_DB_NAME: rudder
JOBS_DB_HOST: rudder_stack-db
JOBS_DB_PASSWORD: cbba31abfbfad84bae133c5d
JOBS_DB_PORT: "5432"
JOBS_DB_USER: postgres
RSERVER_GATEWAY_WEBHOOK_SOURCE_LIST_FOR_PARSING_PARAMS: Shopify
STATSD_SERVER_URL: rudder_stack-metrics-exporter:9125
WORKSPACE_TOKEN: ""
depends_on:
- rudder_stack-db
- rudder_stack-metrics-exporter
- rudder_stack-d-transformer
rudder_stack-d-transformer:
image: rudderstack/rudder-transformer:1.100.0
environment:
STATSD_SERVER_HOST: rudder_stack-metrics-exporter
STATSD_SERVER_PORT: "9125"
depends_on:
- rudder_stack-metrics-exporter
rudder_stack-db:
image: postgres:15-alpine
environment:
POSTGRES_DB: rudder
POSTGRES_PASSWORD: cbba31abfbfad84bae133c5d
POSTGRES_USER: postgres
volumes:
- rudder_stack-db-data:/var/lib/postgresql/data
rudder_stack-metrics-exporter:
image: prom/statsd-exporter:v0.22.4
volumes:
rudder_stack-db-data: {}
Then run:
docker compose up -d
Access
Once started, access your app at http://localhost:8080
Why Self-Host RudderStack Data Plane?
Full Data Ownership
Your data stays on your servers. No third-party access.
No Monthly Fees
Pay only for your server. No per-seat or usage charges.
Complete Control
Customize, backup, and scale on your own terms.
Privacy & Compliance
Meet GDPR, HIPAA, or internal security requirements.
Technical Details
Docker Image
rudderlabs/rudder-server:${app_version}Official Docs
www.rudderstack.comWant to go faster?
Try Senate! Senate handles Docker, HTTPS, updates, and monitoring for you. Deploy any of our 300+ apps with a single command.
Install on any Linux server:
sh -c "$(curl -sSL https://get.senate.sh)"