Ctrl K
ComunidadGuías…

llms.txt

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# KiloCenter

Current installation limits: the examples are for isolated evaluation with test data. Published
credentials, signing-key defaults and network exposure need correction before customer use. A
password change alone is insufficient. Read GitBook/05-Security/02-installation-safety.md. Certificate
renewal must preserve data volumes and the existing CA; use GitBook/05-Security/03-certificate-renewal.md.


> KiloCenter is an open-source MIOTY LPWAN network server for managing base stations, endpoints, and IoT message traffic.

Source: https://github.com/Kiloiot/kilo-service-center
License: AGPL-3.0-or-later
Documentation: https://docs.kiloiot.io/kilo-mioty-service-center

## What is this

KiloCenter is the service-center side of the MIOTY stack. MIOTY is a Low Power Wide Area Network (LPWAN) protocol designed for interference resilience, long-range communication, and large endpoint fleets. KiloCenter implements the BSSCI (Base Station - Service Center Interface) and SCACI (Service Center - Application Center Interface) protocols, providing base station management, endpoint registration, uplink/downlink message processing, and application integrations via gRPC and MQTT.

This is a MIOTY-native implementation built from scratch, not a fork or adaptation of another network server.

## Live Demo

https://servicecenter.kiloiot.io/
Username: demo@kiloiot.io
Password: demo1234

## Architecture

Four microservices plus infrastructure:

- KC-Core (port 50051 gRPC, 5000 BSSCI/TLS, 5001 SCACI/TLS, 8086 health) — protocol engines, message processing
- KC-Gateway (port 9090 gRPC-web, 8087 health) — external API ingress, auth proxy
- KC-Identity (port 50052 gRPC, 8088 health) — users, organizations, API keys
- KC-Web (port 80) — React web management console
- PostgreSQL 18+ — primary data store
- Redis 7+ — caching and sessions
- Mosquitto 2.0+ — MQTT broker (optional)

Data flow: Endpoints transmit over radio -> Base stations forward to KC-Core via BSSCI (TCP+TLS) -> KC-Core persists to PostgreSQL -> KC-Gateway exposes gRPC-web API -> KC-Web displays to operators. External systems consume via gRPC or MQTT.

## Technology Stack

- Backend: Go 1.24.4
- Frontend: React 19.1, MUI 7, TypeScript 5.8, Vite
- Database: PostgreSQL with monthly partitioned message tables
- Protocols: BSSCI v1.0.0 (TLS 1.2+), SCACI v1.0.0 (TLS 1.3+)
- API: gRPC + gRPC-web with 117 RPCs
- Infrastructure: Docker Compose, Helm chart for Kubernetes

## Deployment

Three installation paths:

1. Docker Compose: `cp .env.example .env && docker compose up --build -d` — certificates auto-generated
2. Kubernetes: Helm chart at `helm/kilocenter/` — requires external PostgreSQL and Redis
3. Linux Host: build from source with Go and Bun

Default admin account (created on first startup): admin@kilocenter.local / admin123! -- change the password right after the first sign-in. Self-registered accounts start without roles until an administrator grants them (roles: Admin, Tenant Manager, Base Station Manager, Endpoint Manager; see GitBook/05-Security/04-users-and-roles.md).

## API

gRPC-web API exposed through KC-Gateway on port 9090. Proto definitions in `KC-Core/api/proto/`. 117 RPCs covering: endpoints, base stations, messages (with streaming), downlinks, events, alerts, certificates, API keys, blueprints (with per-endpoint pinned snapshots and per-tenant snapshot-only decoding), analytics, organizations, users, SCACI monitoring, system health.

Streaming RPCs: StreamMessages, StreamBaseStationMessages, StreamEvents, StreamBaseStationEvents, StreamEndPointEvents.

## MQTT

Disabled by default. Topic format: `{prefix}/{org_uuid}/device/{ep_eui_hex}/{channel}/{type}`. Channels: event/up (uplinks, with the dlOpen/responseExp/dlAck window flags), event/attach, event/detach, event/downlink_queued (queId of an accepted command, ref echoed), event/downlink_rejected (stable code and message, ref echoed), event/downlink_result (sent/expired/invalid, then acknowledged once when the endpoint confirms a sent downlink; ref of the command on every result; bsEui/txTime/packetCnt when sent), command/down (downlink commands: base64 data of at most 200 bytes, empty for a pure acknowledgement, or counter-dependent entries; optional confirmed, prio, format, responsePrio, dlWindReq, expOnly, dlRxStatQry, ref).

## Key Directories

- KC-Core/ — service center engine, BSSCI/SCACI protocol, gRPC server
- KC-Gateway/ — external gRPC-web ingress
- KC-Identity/ — authentication and user management
- KC-Web/ — React web management console
- KC-DB/ — PostgreSQL persistence, migrations, MIOTY type definitions
- KC-MQTT/ — MQTT integration
- helm/kilocenter/ — Kubernetes Helm chart
- config/ — runtime configuration files
- GitBook/ — user documentation

## Further Reading

- [Architecture and Components](GitBook/02-GettingStarted/01-architecture-and-components.md)
- [Docker Compose Installation](GitBook/02-GettingStarted/03-installation-docker-compose.md)
- [Kubernetes Installation](GitBook/02-GettingStarted/07-installation-kubernetes.md)
- [gRPC API Overview](GitBook/04-Integrations/01-grpc-first-steps.md)
- [MQTT Integration](GitBook/04-Integrations/03-mqtt-first-steps.md)
- [Security](GitBook/05-Security/01-security-and-tenant-isolation-basics.md)
- [Helm Chart README](helm/kilocenter/README.md)