OpenCTI平台开发环境Docker Compose配置详解
2025-07-07 03:58:06作者:魏献源Searcher
概述
OpenCTI是一个开源威胁情报平台,用于管理、组织和可视化网络威胁情报数据。本文将深入解析其开发环境使用的Docker Compose配置文件,帮助开发者理解各服务组件及其配置要点。
核心服务组件
1. 数据存储服务
Redis服务:
- 使用Redis 8.0.0版本
- 提供6379端口访问
- 配套RedisInsight可视化工具(8001端口)
Elasticsearch服务:
- 采用Elasticsearch 8.18.2版本
- 配置2GB堆内存(-Xms2G -Xmx2G)
- 禁用安全功能(xpack.security.enabled=false)
- 挂载数据卷(esdata)和快照卷(essnapshots)
- 提供9200(REST API)和9300(集群通信)端口
Kibana服务:
- 与Elasticsearch版本匹配(8.18.2)
- 通过环境变量连接Elasticsearch
- 提供5601端口访问
2. 消息队列服务
RabbitMQ服务:
- 使用4.1-management版本(带管理界面)
- 提供5672(AMQP)和15672(管理界面)端口
- 挂载自定义配置文件(rabbitmq.config)
3. 对象存储服务
MinIO服务:
- 最新版本容器
- 提供9000(API)、9001(控制台)和35300端口
- 默认凭证为ChangeMe/ChangeMe(需修改)
- 包含健康检查配置
可选服务组件
1. OpenSearch替代方案
OpenSearch服务:
- 使用3.0.0版本
- 需要显式启用(--profile opensearch)
- 初始管理员密码GraceH00per!(需符合复杂度要求)
- 配置2GB堆内存
- 提供9201(映射到容器9200)和9600端口
OpenSearch Dashboards:
- 版本2.19.2
- 映射5602到容器5601端口
- 禁用安全插件
2. 认证服务
Keycloak(SAML/OpenID):
- 26.2.5版本
- 需要显式启用(--profile keycloak)
- 提供9999端口
- 默认管理员admin/admin
LDAP服务:
- OpenLDAP 1.5.0
- 配套phpLDAPadmin(8888端口)
- 默认配置example.org域
- 管理员DN: cn=admin,dc=example,dc=org
- 密码: 12341234
3. 监控与追踪
Jaeger Tracing:
- 全功能版本
- 提供16686(UI)和4318(OTLP)端口
Pyroscope:
- 持续分析工具
- 4040端口
OpenTelemetry Collector:
- 0.123.0版本
- 加载自定义配置文件(otlp-config.yaml)
- 1010和8889端口
配置要点解析
-
资源限制:
- Elasticsearch/OpenSearch配置了内存锁定(mlock)和文件描述符限制(nofile)
- 显式设置JVM堆大小防止容器OOM
-
数据持久化:
- 使用命名卷(esdata, osdata等)持久化关键数据
- 快照卷单独配置便于备份管理
-
服务依赖:
- 使用depends_on确保服务启动顺序
- Kibana明确依赖Elasticsearch
-
安全实践:
- 开发环境禁用安全功能(xpack.security.enabled=false)
- 生产环境需重新配置安全选项
-
调试支持:
- 包含SMTP测试服务(MailDev)
- 各种管理界面端口开放
部署建议
- 基础开发环境:
docker compose up -d
- 启用OpenSearch替代方案:
docker compose --profile opensearch up -d
- 启用认证服务:
docker compose --profile keycloak up -d
# 或
docker compose --profile ldap up -d
- 启用监控追踪:
docker compose --profile telemetry up -d
总结
OpenCTI开发环境的Docker Compose配置精心设计了模块化的服务架构,既包含了必需的核心组件,也提供了多种可选服务。通过profile机制可以灵活组合不同功能模块,满足从基础开发到完整功能验证的各种需求。理解这些配置有助于开发者快速搭建环境并进行定制化调整。