[{"data":1,"prerenderedAt":112},["ShallowReactive",2],{"seo-verification":3,"marketplace-app-en-clickhouse":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"slug":7,"name":8,"description":9,"phase":10,"docsUrl":11,"logo":12,"github":13,"tagline":14,"longDescription":15,"features":16,"useCases":23,"steps":33,"faq":52,"specs":71,"compatibleOs":79,"relatedApps":80,"relatedPosts":105,"category":109},"clickhouse","ClickHouse","Column-oriented analytics database — billions of rows aggregated in milliseconds, with a SQL console served by the server itself.",1,"https:\u002F\u002Fservorbit.com\u002Fblog\u002Fheberger-clickhouse-vps","https:\u002F\u002Fcdn.jsdelivr.net\u002Fgh\u002Fselfhst\u002Ficons\u002Fsvg\u002Fclickhouse.svg","https:\u002F\u002Fgithub.com\u002FClickHouse\u002FClickHouse","Self-hosted columnar data warehouse — billions of rows aggregated in milliseconds, with no per-query billing.","ClickHouse is the reference open-source OLAP database (Apache-2.0, ~49k GitHub stars). Its columnar storage and aggressive compression let a single modest node scan hundreds of millions of rows in under a second — the workload where a row-oriented database such as PostgreSQL or MySQL collapses. It speaks SQL, ships its own browser SQL console at `\u002Fplay` — so no companion tool is needed to run a query — and is driven entirely through its HTTP interface, on port 8123.\n\nDeployed on a ServOrbit VPS, ClickHouse replaces the per-query billing of managed warehouses (ClickHouse Cloud, BigQuery) with a fixed monthly cost, and keeps your application logs, product metrics and analytics events on infrastructure you control. The template runs the 26.3 LTS release as a single container, with the file-descriptor limit already raised to 262144, persistent volumes for data and logs, and an `analytics` database created on first boot. The `default` account — the one that ships without a password — is removed at startup and replaced by an `admin` account whose password is generated per installation.",[17,18,19,20,21,22],"Sub-second aggregations over hundreds of millions of rows, thanks to columnar storage and vectorised execution.","5x to 10x compression on logs and events, so a modest SSD holds a volume that would fill a relational database.","Bulk ingestion of hundreds of thousands of rows per second on a single well-tuned node.","Built-in browser SQL console at `\u002Fplay` — write and run queries without installing any client.","Standard SQL plus native connectors for Grafana, Metabase, and HTTP or native clients in every major language.","Apache-2.0 licence, no per-query billing: your analytics layer costs the price of the VPS, whatever the query volume.",[24,27,30],{"title":25,"body":26},"Self-hosted application log and event warehouse","Ship your application logs, HTTP traces and product events into a `MergeTree` table partitioned by month, with a TTL that drops old partitions automatically. Compression keeps months of history on a small disk, and aggregations stay sub-second even as the table grows past a hundred million rows.",{"title":28,"body":29},"The analytics engine behind your dashboards","Point Grafana or Metabase at the HTTP interface and build dashboards over raw events rather than over pre-aggregated summaries. Because scans are cheap, you can slice by any dimension after the fact instead of deciding your metrics in advance.",{"title":31,"body":32},"Analytics offload for a production database","Stop running heavy reporting queries against the PostgreSQL or MySQL instance that serves your customers. Replicate the tables you analyse into ClickHouse on the same VPS, query them over `127.0.0.1:8123`, and your primary database never feels the analytical load.",[34,37,40,43,46,49],{"title":35,"body":36},"Order the VPS","Pick a ServOrbit VPS with at least 4 GB of RAM — ClickHouse trades memory for speed, and 8 GB gives large aggregations room to breathe. Two vCPU parallelise queries, four is comfortable. Disk matters more than anything else: budget 50 to 100 GB of NVMe SSD depending on your retention, remembering that compression usually shrinks raw data five to ten times.",{"title":38,"body":39},"What the installation deploys","A single `clickhouse\u002Fclickhouse-server:26.3.17.110` container — the current long-term-support release. Two named volumes persist `\u002Fvar\u002Flib\u002Fclickhouse` and `\u002Fvar\u002Flog\u002Fclickhouse-server`, the file-descriptor limit is raised to 262144 as ClickHouse requires, and an `analytics` database is created on first boot. The health check polls `\u002Fping` until the server answers, which takes a few seconds.",{"title":41,"body":42},"Sign in for the first time","The installation generates a random password and creates an `admin` account with it; the `default` account, which upstream ships without a password, is removed at startup. Read the generated password on the application card in your client area, then open the built-in console at `\u002Fplay`, enter `admin` and that password, and run `SELECT version()` to confirm.",{"title":44,"body":45},"Reach the server","Attach a domain and ServOrbit installs the nginx vhost and the TLS certificate: the console then answers on `https:\u002F\u002F\u003Cyour-domain>\u002Fplay`, with no port number. Without a domain there is no public entry point by design — open a tunnel with `ssh -L 8123:127.0.0.1:8123 root@\u003Cyour-vps-ip>` and work on `http:\u002F\u002Flocalhost:8123\u002Fplay`. 8123 is the catalogue port; use the one shown on the application card if it differs.",{"title":47,"body":48},"Create your first table","Create a `MergeTree` table and spend a minute on its `ORDER BY` key — it is the single decisive performance factor. Put the columns you filter on most first, usually a date and an identifier, and partition by month with `PARTITION BY toYYYYMM(date)` so that retention becomes a cheap partition drop rather than a row-by-row delete.",{"title":50,"body":51},"Connect your application and lock the account down","An application running on the same VPS connects to `127.0.0.1:8123`, the HTTP interface, which accepts `INSERT` as readily as `SELECT` — that port is not reachable from outside the machine. The faster native protocol remains available to a container attached to the stack's Docker network, but is deliberately not published on the host. The `admin` account has access management enabled, so create a dedicated read-only user per consumer with `CREATE USER` and `GRANT SELECT` rather than sharing the administrator password with Grafana or Metabase.",[53,56,59,62,65,68],{"q":54,"a":55},"What is ClickHouse for, and when is it the wrong tool?","ClickHouse is an OLAP database: it is built to scan and aggregate very large tables, not to serve many small transactional reads and writes. It is the right tool for logs, metrics, events and reporting. It is the wrong tool as the primary database of a web application — it has no real transactions, updates and deletes are asynchronous mutations rather than instant operations, and single-row lookups are slower than in PostgreSQL. The common pattern is both: PostgreSQL for the application, ClickHouse for the analytics.",{"q":57,"a":58},"How much RAM and disk does it need?","4 GB of RAM is the realistic floor and 8 GB is comfortable — ClickHouse caches marks and index granules in memory, and a large aggregation that exceeds the available memory is aborted rather than swapped. For disk, count on 50 to 100 GB of NVMe SSD: compression typically divides raw log volume by five to ten, so a hundred gigabytes of JSON logs often lands under twenty on disk. The container idles at roughly 270 MB of RAM, and around 340 MB once queries have run — measured on the catalogue recipe.",{"q":60,"a":61},"Which account do I sign in with?","An `admin` account, created at startup with a password generated for your installation and shown on the application card in your client area. The upstream image ships a `default` account with no password at all; this template removes it as soon as the server starts, so there is no unauthenticated way in. Access management is enabled on `admin`, which means you can create further users and grants directly in SQL.",{"q":63,"a":64},"Which ports are open, and is the server exposed on the internet?","A single port is published, 8123 for the HTTP interface, and only on the loopback interface of your VPS — nothing answers on the raw public IP whatever port is tried. An application on the same VPS reaches it at `127.0.0.1:8123`; from your workstation, either attach a domain — nginx then proxies that interface with TLS — or open an SSH tunnel. The native protocol, on 9000, is not published on the host: it stays reachable from a container attached to the stack's Docker network, and from the server itself through `docker exec`. That is a deliberate choice — a second fixed port would sooner or later collide with another catalogue application, and automatic reallocation could not prevent it.",{"q":66,"a":67},"Can Grafana or Metabase query it?","Yes, both. Grafana has an official ClickHouse data source and Metabase ships a ClickHouse driver; either connects over the HTTP interface. If the dashboard tool runs on the same VPS, point it at `127.0.0.1:8123`; if it runs elsewhere, attach a domain so the connection is TLS-terminated by nginx. Create a dedicated read-only user for the tool rather than reusing the administrator account.",{"q":69,"a":70},"How do I keep the disk from filling up?","Set a TTL on the table at creation time — `TTL event_date + INTERVAL 90 DAY` — and partition by month. ClickHouse then drops whole expired partitions in the background, which costs almost nothing, instead of deleting rows one by one. Insert in batches of several thousand rows rather than row by row: single-row inserts create a swarm of tiny parts and trigger expensive merges. Watch `system.parts` and `system.merges` if queries start slowing down.",{"ram":72,"cpu":73,"stack":74,"port":78},"4 GB (8 GB recommended)","2 vCPU (4 recommended)",[75,76,77],"Docker","ClickHouse 26.3 LTS","MergeTree","8123 (HTTP)",[],[81,90,99],{"name":82,"slug":83,"categorySlug":84,"categoryName":85,"categoryColor":86,"logo":87,"tagline":88,"description":89},"Metabase","metabase","bases-de-donnees","Databases","text-blue-400 bg-blue-500\u002F10","https:\u002F\u002Fcdn.jsdelivr.net\u002Fgh\u002Fselfhst\u002Ficons\u002Fsvg\u002Fmetabase.svg","Open-source business intelligence on top of any SQL database — dashboards and charts in the browser, no SQL required.","Open-source business intelligence — connect any SQL database and build dashboards, questions and charts in the browser, no SQL required.",{"name":91,"slug":92,"categorySlug":93,"categoryName":94,"categoryColor":95,"logo":96,"tagline":97,"description":98},"Grafana","grafana","monitoring","Monitoring & Observability","text-amber-400 bg-amber-500\u002F10","https:\u002F\u002Fcdn.simpleicons.org\u002Fgrafana","Visualize your infrastructure and application metrics — customizable dashboards and alerts.","Visualize the metrics of your infrastructure and applications. Customizable dashboards, multi-channel alerts, multiple sources.",{"name":100,"slug":101,"categorySlug":84,"categoryName":85,"categoryColor":86,"logo":102,"tagline":103,"description":104},"PostgreSQL Stack","postgresql-stack","https:\u002F\u002Fcdn.simpleicons.org\u002Fpostgresql","PostgreSQL 15 + pgAdmin — a powerful, extensible relational database from the very first boot.","Open-source relational database with pgAdmin preconfigured. Powerful, extensible, production-ready.",[106,107,108],"heberger-clickhouse-vps","self-host-metabase-vps","heberger-postgresql-vps",{"key":110,"slug":84,"name":85,"objective":111,"icon":110,"color":86},"database","Spin up a data platform quickly.",1786205270197]