ClickHouse Cluster
3-node ClickHouse cluster - one shard, three replicas, embedded Keeper. Real replicated OLAP without ZooKeeper pods.
One-click deploy, from $49/mo on a Miget plan.
ClickHouse is the open-source column store that made sub-second analytics over billions of rows ordinary. This template runs a real replicated cluster - one shard, three replicas - with ClickHouse Keeper embedded in the server nodes, so there are no separate ZooKeeper or Keeper pods to deploy and feed.
Tables created ON CLUSTER main with the ReplicatedMergeTree engine replicate across all three nodes; any node can take writes and queries. Each node owns a 20 GB volume, and the whole cluster is internal-only - apps in the project connect to any node over HTTP (:8123) or the native protocol (:9000).
One required variable (CLICKHOUSE_PASSWORD) and you have the analytics backend that ClickHouse Cloud meters by the compute-hour - at a flat monthly price.
Upstream project: ClickHouse
#what you get
- One shard × three replicas with ReplicatedMergeTree - survive any single node loss
- Embedded ClickHouse Keeper: no ZooKeeper, no extra pods
- Cluster name main preconfigured for ON CLUSTER DDL
- 20 GB per-node volumes; column compression stretches that a long way
- HTTP (:8123) and native (:9000) interfaces on every node
- Single required variable: CLICKHOUSE_PASSWORD
#topology
| Service | Role | Public |
|---|---|---|
| ch-1..3 | ClickHouse server + embedded Keeper (HTTP :8123, native :9000) | no |
#miget sizing
// this stack needs
6 GiB RAM · 60 GB disk · 3 services
2 GiB per node is a working floor for moderate analytics; ClickHouse respects container memory limits. Columnar compression typically fits hundreds of millions of rows in the 3×20 GB provisioned here.
Hobby - recommended fit
$49/mo
4 vCPU · 8 GiB · 160 GiB disk
Headroom for your own apps: 16 GiB at $97/mo
Professional - production
$169/mo
8 vCPU · 16 GiB · 100 GiB disk
Dedicated resources, production SLOs - plan details
One Miget plan is a fixed pool of compute - the whole stack (managed databases included) deploys inside it, and anything left over runs your other apps. No per-service or per-seat math.
#vs. the managed service
What the hosted equivalents charge, against the flat Miget plan this stack fits on. Prices as of June 2026, sources linked.
| Service | Plan | Monthly | What you get |
|---|---|---|---|
| ClickHouse Cluster on Miget ★ | 8 GiB plan | $49 | this whole stack, flat - no usage meters, and room left for your own apps |
| ClickHouse Cloud | Basic | ~$67 | development-shaped: single replica active ~6h/day + 500 GB storage (worked example) |
| ClickHouse Cloud | Scale | ~$499 | production: 2× 8 GiB replicas always-on + 1 TB storage (worked example) |
#vs. other PaaS
Estimated monthly cost of running this exact stack (6 GiB RAM, 60 GB disk, 3 containers) elsewhere, from published June 2026 rates.
| Platform | Est. monthly | Notes |
|---|---|---|
| Miget ★ | $49 flat | compose stacks first-class: one deploy, dedicated vCPU, managed Postgres/Valkey, volumes and TLS all included in the plan |
| Heroku | ~$300 | no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown |
| Render | ~$90 | per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service |
| DO App Platform | ~$77 | no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here) |
| Railway | ~$69 | usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top |
| Fly.io | ~$44 | cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra |
Estimates assume RAM fully allocated at published on-demand rates - and sticker price isn't the whole comparison: the cheaper rows buy burstable shared CPUs, per-service wiring instead of a compose deploy, and managed databases billed separately. Heroku and DO App Platform have no persistent volumes at all - stateful stacks like this one need workarounds there.
#deploy it
On Miget
- Create a Compose Stack in app.miget.com pointing at the templates repository
- Set the stack path to
clickhouse -
Set the required variable:
CLICKHOUSE_PASSWORD, password for the app user on all nodes
- Deploy. Miget layers
compose.miget.yaml(RAM, privacy, volumes, managed services) automatically
Locally first?
Every template is portable, vanilla Docker Compose - the Miget overrides are ignored locally:
git clone https://github.com/deployable-sh/stacks
cd miget-compose-templates/clickhouse
docker compose up -d Same files, same behavior. The template README covers connection strings and scaling notes.
#faq
How does this compare to ClickHouse Cloud pricing?
ClickHouse Cloud bills compute per hour plus storage, which is excellent for spiky workloads but adds up for always-on ones. This cluster is a flat $49/month (8 GiB hobby plan) or $169/month Professional - predictable, with your data on your volumes.
Do I need ZooKeeper for ClickHouse replication?
No - coordination runs on ClickHouse Keeper, embedded inside the same three server nodes. You get replicated tables with zero extra processes to operate.
How do I create replicated tables?
Use CREATE TABLE ... ON CLUSTER main with ENGINE = ReplicatedMergeTree. The cluster macro config is baked in, so the standard '/clickhouse/tables/{shard}/{table}' path templates just work.
Can ClickHouse replace my Postgres for analytics?
For append-heavy, aggregate-style workloads (events, logs, metrics, funnels) - emphatically yes, often 100× faster. Keep transactional row-level workloads in Postgres; ClickHouse is an OLAP engine, not an OLTP database.
Ship ClickHouse Cluster today
One compose stack, 6 GiB of RAM, from $49/month flat, and it runs on your laptop with the same files.