> For the complete documentation index, see [llms.txt](https://docs.kiloiot.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kiloiot.io/kilo-docs-es/kilo-center/kilo-mioty-service-center/operations/operations-and-troubleshooting.md).

# Operaciones y resolución de problemas

Operaciones de KiloCenter — endpoints de estado para KC-Core, KC-Gateway, KC-Identity, problemas comunes de inicio y diagnósticos.

### Objetivo

Ejecuta comprobaciones repetibles para problemas de inicio, problemas de conectividad y fallos del flujo de mensajes.

### Comprobaciones de estado

Desde `kilocenter-modules/`:

```bash
# Estado de KC-Core
curl -s http://localhost:8086/health

# Estado de KC-Gateway
curl -s http://localhost:8087/health

# Estado del servicio gRPC
grpcurl -plaintext localhost:9090 grpc.health.v1.Health/Check

# Todos los servicios del contenedor
docker compose ps
```

### Comprobaciones de puertos

Verifica que todos los servicios esperados estén escuchando:

```bash
lsof -i :80     # KC-Web (modo contenedor)
lsof -i :9090   # KC-Gateway (gRPC-web)
lsof -i :8086   # KC-Core health
lsof -i :8087   # KC-Gateway health
lsof -i :5000   # BSSCI
lsof -i :5001   # SCACI
lsof -i :50051  # KC-Core internal gRPC
lsof -i :5433   # PostgreSQL (Docker)
lsof -i :6379   # Redis
lsof -i :1883   # MQTT (si está habilitado)
```

El puerto 5173 se usa solo en el modo de desarrollo del código fuente (servidor de desarrollo de Vite).

### Operaciones en modo contenedor

```bash
# Ver registros de un servicio
docker compose logs -f kilocenter
docker compose logs -f kc-gateway
docker compose logs -f kc-web

# Reinicia un solo servicio
docker compose restart kilocenter

# Verificar el estado de todos los servicios
docker compose ps
```

### Archivos de registro (modo de desarrollo del código fuente)

Todos los registros de los servicios se escriben en `kilocenter-modules/logs/runtime/`:

```bash
# Registros de KC-Core (actividad de BSSCI, procesamiento de mensajes)
tail -f logs/runtime/kc-core.log

# Registros de KC-Gateway (actividad del proxy de la API)
tail -f logs/runtime/kc-gateway.log

# Registros de KC-Web (servidor de desarrollo del frontend)
tail -f logs/runtime/kc-web.log

# Buscar errores en todos los registros
grep -E "ERROR|FATAL" logs/runtime/*.log
```

### Comprobación de conexión a la base de datos

Verifica que PostgreSQL sea accesible:

```bash
PGPASSWORD=changeme psql -U kilocenter -h localhost -p 5433 -d kilocenter -c "SELECT 1;"
```

Usa el puerto `5432` en lugar de `5433` si ejecutas PostgreSQL directamente en el host (no mediante Docker).

### Detención de servicios

**Modo contenedor:**

```bash
docker compose down
```

**Modo de desarrollo del código fuente:**

```bash
./stop-all-services.sh

# Detén también los contenedores de infraestructura
docker compose stop postgres redis mosquitto
```

### Problemas comunes

| Síntoma                                 | Causa                                                             | Solución                                                                                   |
| --------------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| `dial tcp ...5432: conexión rechazada`  | Puerto de PostgreSQL incorrecto                                   | Usa `5433` para Docker, `5432` para instalación en el host                                 |
| KC-Web muestra errores gRPC             | KC-Gateway no se está ejecutando o usa el puerto incorrecto       | Verifica KC-Gateway en el puerto 9090; revisa la configuración de nginx en modo contenedor |
| `permiso denegado /var/run/docker.sock` | Pertenencia al grupo docker                                       | Ejecuta `sudo usermod -aG docker $USER` y vuelve a iniciar sesión                          |
| `no se pudo cargar el certificado TLS`  | Faltan archivos de certificado o son inválidos                    | Ejecuta `certgen` -- consulta Instalación                                                  |
| La estación base no se conecta          | El puerto 5000 de BSSCI no está escuchando                        | Verifica que KC-Core se haya iniciado y que los certificados TLS estén configurados        |
| SCACI no acepta conexiones              | Falta `scaci_tls` bloque de configuración                         | Comprueba `config/config.docker.yaml` tiene `scaci_host` y `scaci_tls` sección             |
| KC-Web devuelve 502 para llamadas gRPC  | nginx no puede alcanzar `kc-gateway:9090`                         | Verifica `kc-gateway` está saludable: `docker compose ps`                                  |
| `start-dev.sh` falla                    | Las dependencias no se están ejecutando                           | Inicia `docker compose up -d postgres redis mosquitto` primero                             |
| Bun no encontrado                       | El entorno de ejecución Bun no está instalado                     | Instala Bun: `curl -fsSL https://bun.sh/install \| bash`                                   |
| KC-Web carga pero no muestra datos      | KC-Core no se está ejecutando o no hay estaciones base conectadas | Comprueba los endpoints de estado y el estado de la estación base                          |

### Secuencia de recuperación

**Modo contenedor:**

1. Detén todos los servicios: `docker compose down`
2. Inicia todos los servicios: `docker compose up -d`
3. Ejecuta las comprobaciones de estado (véase arriba)

**Modo de desarrollo del código fuente:**

1. Detén todos los servicios: `./stop-all-services.sh`
2. Reinicia la infraestructura: `docker compose restart postgres redis mosquitto`
3. Inicia los servicios: `./start-dev.sh`
4. Ejecuta las comprobaciones de estado (véase arriba)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kiloiot.io/kilo-docs-es/kilo-center/kilo-mioty-service-center/operations/operations-and-troubleshooting.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
