Por qué autoalojar ClickHouse en un VPS
ClickHouse destaca en las consultas analíticas (OLAP): gracias a su almacenamiento en columnas y a su compresión agresiva, puede escanear terabytes en hardware modesto allí donde una base de datos relacional clásica se hundiría. Autoalojarlo en un VPS le evita los costes por volumen de consultas de los servicios gestionados (ClickHouse Cloud, BigQuery) y le da el control completo del esquema, de los motores de tabla y de la retención. Resulta especialmente pertinente para ingerir sus propios logs de aplicación, métricas de producto o eventos de analítica sin enviar sus datos a un tercero. Como ClickHouse suele comprimir los datos en un factor de 5 a 10, un VPS con un disco SSD razonable puede almacenar cientos de millones de eventos. También conserva el control sobre la latencia: sus paneles consultan una instancia cercana a sus usuarios en lugar de un servicio remoto.
Las ventajas concretas de autoalojar ClickHouse
- Consultas analíticas extremadamente rápidas: agregaciones sobre cientos de millones de filas en menos de un segundo.
- Compresión en columnas de 5x a 10x que reduce drásticamente el coste de almacenamiento de sus logs y eventos.
- Ingesta masiva: cientos de miles de filas por segundo en un solo nodo bien ajustado.
- Compatible con SQL y con numerosos conectores (Grafana, Metabase, clientes HTTP y nativos).
- Soberanía analítica: sus logs y métricas de producto permanecen en su infraestructura.
- Sin facturación por consulta: un coste de VPS fijo para un volumen analítico elevado.
Requisitos de hardware y de software
A ClickHouse le gustan la RAM y el disco rápido. Para un uso analítico serio, apunte a 4 GB de RAM como mínimo, pero 8 GB ofrecen un margen mucho más sano para las agregaciones voluminosas y las marcas (mark cache). En cuanto a la CPU, de 2 a 4 vCPU permiten paralelizar las consultas. El disco es crítico: opte por SSD NVMe con al menos 50 a 100 GB según su volumen y su retención, sabiendo que la compresión reduce la huella real. Necesitará Docker, un dominio si expone la interfaz HTTP, y una atención particular al parámetro max_memory_usage para evitar que una consulta tumbe el servidor. Evite exponer el puerto nativo 9000 directamente en Internet.
Desplegar ClickHouse paso a paso
Preparar el VPS
Instale Docker y aumente los límites del sistema (
ulimit -na 262144), porque ClickHouse abre muchos descriptores de archivo. Desactive el swap excesivo y compruebe que el disco es realmente SSD NVMe.Lanzar ClickHouse con Docker
Utilice la imagen oficial
clickhouse/clickhouse-server. Monte tres volúmenes persistentes:/var/lib/clickhouse(datos),/var/log/clickhouse-server(logs) y una carpeta de configuración/etc/clickhouse-server/config.d. Añadaulimits: nofile: 262144en el compose.Crear un usuario y una contraseña
Nunca deje al usuario
defaultsin contraseña. Cree un archivousers.d/custom.xmlcon un usuario dedicado, una contraseña con hash (echo -n motdepasse | sha256sum) y cuotas. Restrinja<networks>a las IP autorizadas.Ajustar la memoria y el perfil
En
config.d, fijemax_server_memory_usage_to_ram_ratioen 0.8 y defina unmax_memory_usagepor consulta adaptado a su VPS para evitar los OOM. Active la retención de las particiones con un TTL en sus tablas (TTL date + INTERVAL 90 DAY).Exponer la interfaz HTTP detrás de un reverse proxy
ClickHouse expone una API HTTP en el puerto
8123. Ponga Nginx o Caddy delante para el TLS y una autenticación adicional, y no abra el puerto nativo9000al público. Reserve el acceso nativo a la red interna o mediante un túnel SSH.Conectar una herramienta de visualización
Conecte Grafana o Metabase al endpoint HTTPS para construir sus paneles. Cree sus tablas con el motor
MergeTree, elija unORDER BYpertinente y particione por mes para obtener consultas y purgas eficientes.
Instalarlo con un solo clic desde el Marketplace de ServOrbit
Todo lo anterior se hace a mano, y es útil saber hacerlo. Si prefiere no hacerlo, ClickHouse figura en el Marketplace de ServOrbit y se instala en su VPS con un solo clic. La plantilla despliega la versión 26.3 LTS fijada, monta los volúmenes persistentes para los datos y los registros, eleva el límite de descriptores de archivo a 262144 tal como exige ClickHouse, y crea una base de datos analytics en el primer arranque. Sobre todo, cierra la trampa más habitual del despliegue manual: la imagen de origen incluye una cuenta default sin ninguna contraseña, y la instalación la retira en el arranque para sustituirla por una cuenta admin cuya contraseña se genera para su servidor y se muestra en su área de cliente. Solo se publica el puerto 8123, y únicamente en la interfaz de bucle local: asocie un dominio y la consola SQL integrada responde en https://<votre-domaine>/play con su certificado TLS; sin dominio, pase por un túnel ssh -L 8123:127.0.0.1:8123 root@<ip-du-vps> y después http://localhost:8123/play.
La elección de la clave de ordenación (ORDER BY) del motor MergeTree es el factor decisivo del rendimiento: coloque primero las columnas más filtradas en sus consultas (a menudo una fecha y un identificador). Utilice tablas Buffer o inserciones por lotes de varios miles de filas en lugar de inserciones fila por fila, que crean multitud de particiones pequeñas y disparan merges costosos. Vigile system.merges y system.parts para detectar una fragmentación excesiva.