> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-3a82795f.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Docker Compose

> Despliegue de ClickStack Open Source con Docker Compose - la pila de observabilidad de ClickHouse

export const Image = ({img, alt, size}) => {
  return <Frame>
      <img src={img} alt={alt} />
    </Frame>;
};

Todos los componentes de ClickStack Open Source se distribuyen por separado como imágenes de Docker individuales:

* **ClickHouse**
* **HyperDX**
* **OpenTelemetry collector (OTel)**
* **MongoDB**

Estas imágenes pueden combinarse y desplegarse localmente con Docker Compose.

Docker Compose expone puertos adicionales para observabilidad e ingestión según la configuración predeterminada de `otel-collector`:

* `13133`: endpoint de comprobación de estado para la extensión `health_check`
* `24225`: receptor de Fluentd para la ingestión de logs
* `4317`: receptor OTLP gRPC (estándar para trazas, logs y métricas)
* `4318`: receptor OTLP HTTP (alternativa a gRPC)
* `8888`: endpoint de métricas de Prometheus para supervisar el propio OpenTelemetry collector

Estos puertos permiten integraciones con diversas fuentes de telemetría y hacen que el OpenTelemetry collector esté listo para producción para distintas necesidades de ingestión.

<div id="suitable-for">
  ### Adecuado para
</div>

* Pruebas locales
* Pruebas de concepto
* Implementaciones en producción en las que no se requiere tolerancia a fallos y un solo servidor basta para alojar todos los datos de ClickHouse
* Al implementar ClickStack, pero alojando ClickHouse por separado; por ejemplo, con ClickHouse Cloud.

<div id="deployment-steps">
  ## Pasos de despliegue
</div>

<br />

<Steps>
  <Step>
    ### Clona el repositorio

    Para desplegar con Docker Compose, clona el repositorio de ClickStack, sitúate en el directorio y ejecuta `docker-compose up`:

    ```shell theme={null}
    git clone https://github.com/ClickHouse/ClickStack.git
    docker compose up
    ```
  </Step>

  <Step>
    ### Accede a la UI de HyperDX

    Visita [http://localhost:8080](http://localhost:8080) para acceder a la UI de HyperDX.

    Crea un usuario e introduce un nombre de usuario y una contraseña que cumplan los requisitos.

    Al hacer clic en `Create`, se crearán fuentes de datos para la instancia de ClickHouse desplegada con Docker Compose.

    <Info>
      **Sobrescribir la conexión predeterminada**

      Puedes sobrescribir la conexión predeterminada a la instancia integrada de ClickHouse. Para obtener más información, consulta ["Uso de ClickHouse Cloud"](#using-clickhouse-cloud).
    </Info>

    <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-3a82795f/nRXhrvIyBMY7rv-q/images/use-cases/observability/hyperdx-login.png?fit=max&auto=format&n=nRXhrvIyBMY7rv-q&q=85&s=cab013878a997d603e26618bbdcef567" alt="UI de HyperDX" size="lg" width="3600" height="1900" data-path="images/use-cases/observability/hyperdx-login.png" />

    Para ver un ejemplo de uso de una instancia alternativa de ClickHouse, consulta ["Uso de ClickHouse Cloud"](#using-clickhouse-cloud).
  </Step>

  <Step>
    ### Completa los detalles de conexión

    Para conectarte a la instancia de ClickHouse desplegada, solo tienes que hacer clic en **Create** y aceptar la configuración predeterminada.

    Si prefieres conectarte a tu propio **clúster externo de ClickHouse**, por ejemplo, ClickHouse Cloud, puedes introducir manualmente tus credenciales de conexión.

    Si se te solicita crear una fuente, conserva todos los valores predeterminados y completa el campo `Table` con el valor `otel_logs`. El resto de la configuración debería detectarse automáticamente, por lo que podrás hacer clic en `Save New Source`.

    <Image img="https://mintcdn.com/private-7c7dfe99-mintlify-3a82795f/nRXhrvIyBMY7rv-q/images/use-cases/observability/hyperdx-logs.png?fit=max&auto=format&n=nRXhrvIyBMY7rv-q&q=85&s=ca29662573c2639ed6782f568fa3c40a" alt="Crear fuente de logs" size="md" width="1944" height="1572" data-path="images/use-cases/observability/hyperdx-logs.png" />
  </Step>
</Steps>

<div id="modifying-settings">
  ## Modificar la configuración de compose
</div>

Puede modificar la configuración de la pila, como la versión utilizada, mediante el archivo de variables de entorno:

```shell theme={null}
user@example-host clickstack % cat .env

# Usado por docker-compose.yml
IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-all-in-one
LOCAL_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-local
ALL_IN_ONE_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-all-in-one
OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-otel-collector
CODE_VERSION=2.8.0
IMAGE_VERSION_SUB_TAG=.8.0
IMAGE_VERSION=2
IMAGE_NIGHTLY_TAG=2-nightly
IMAGE_LATEST_TAG=latest

# Configurar URLs de dominio
HYPERDX_API_PORT=8000 #opcional (no debe estar en uso por otros servicios)
HYPERDX_APP_PORT=8080
HYPERDX_APP_URL=http://localhost
HYPERDX_LOG_LEVEL=debug
HYPERDX_OPAMP_PORT=4320

# Configuración de Otel/ClickHouse
HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE=default
```

<div id="configuring-collector">
  ### Configuración del OpenTelemetry collector
</div>

La configuración del OTel collector puede modificarse si es necesario; consulta ["Modificar la configuración"](/es/clickstack/ingesting-data/collector#modifying-otel-collector-configuration).

<div id="using-clickhouse-cloud">
  ## Uso de ClickHouse Cloud
</div>

Esta distribución puede utilizarse con ClickHouse Cloud, pero es diferente de [Managed ClickStack](/es/clickstack/deployment/managed). En esta configuración, administras tú mismo la UI de ClickStack mientras usas ClickHouse Cloud solo para compute y Storage. Salvo que tengas un motivo concreto para operar la UI de forma independiente, te recomendamos usar Managed ClickStack, que incluye authentication integrada y funciones Enterprise adicionales, y evita que tengas que administrar tú mismo la UI de ClickStack.

Debes:

* Eliminar el servicio de ClickHouse del archivo `docker-compose.yml`. Esto es opcional si estás haciendo pruebas, ya que la instancia de ClickHouse implementada simplemente se ignorará, aunque consumirá recursos locales innecesariamente. Si eliminas el servicio, asegúrate de quitar también cualquier referencia a él, como `depends_on`.

* Modificar el OTel collector para que use una instancia de ClickHouse Cloud configurando las variables de entorno `CLICKHOUSE_ENDPOINT`, `CLICKHOUSE_USER` y `CLICKHOUSE_PASSWORD` en el archivo compose. En concreto, añade las variables de entorno al servicio OTel collector:

  ```shell theme={null}
  otel-collector:
      image: ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}
      environment:
        CLICKHOUSE_ENDPOINT: '<CLICKHOUSE_ENDPOINT>' # endpoint HTTPS aquí
        CLICKHOUSE_USER: '<CLICKHOUSE_USER>'
        CLICKHOUSE_PASSWORD: '<CLICKHOUSE_PASSWORD>'
        HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE: ${HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE}
        HYPERDX_LOG_LEVEL: ${HYPERDX_LOG_LEVEL}
        OPAMP_SERVER_URL: 'http://app:${HYPERDX_OPAMP_PORT}'
      ports:
        - '13133:13133' # extensión health_check
        - '24225:24225' # receptor Fluentd
        - '4317:4317' # receptor OTLP gRPC
        - '4318:4318' # receptor OTLP HTTP
        - '8888:8888' # extensión de métricas
      restart: always
      networks:
        - internal
  ```

  `CLICKHOUSE_ENDPOINT` debe ser el endpoint HTTPS de ClickHouse Cloud, incluido el puerto `8443`; por ejemplo, `https://mxl4k3ul6a.us-east-2.aws.clickhouse.com:8443`

* Al conectarte a la UI de HyperDX y crear una connection a ClickHouse, usa tus credentials de Cloud.

<div id="schema-choice-map-vs-json">
  ## Elección del esquema: Map vs JSON
</div>

ClickStack almacena los atributos como columnas `Map(LowCardinality(String), String)` de forma predeterminada. Este es el esquema recomendado para las cargas de trabajo de observabilidad. En combinación con la [serialización de mapas por buckets](/es/reference/data-types/map#bucketed-map-serialization) y los índices de texto sobre las claves y los valores del mapa, ofrece lookups selectivos sin la sobrecarga de ingesta por clave de las subcolumnas JSON dinámicas.

También hay disponible, en fase beta, un esquema de tipo `JSON` para evaluarlo en cargas de trabajo con un conjunto pequeño y estable de claves de atributos. **No se recomienda** como opción predeterminada. Consulta [Map vs tipo JSON](/es/clickstack/ingesting-data/schema/map-vs-json) para ver la comparación completa y las variables de entorno necesarias para habilitar la compatibilidad con JSON.
