RenardDev/IDATeamsDocker
GitHub: RenardDev/IDATeamsDocker
提供 IDA Pro 的许可证服务、HexVault 和 Lumina 三个组件的 Docker Compose 自托管部署配置,帮助团队快速搭建私有化逆向协作环境。
Stars: 50 | Forks: 15
# IDATeamsDocker
用于以下组件的简单 Docker 设置:
- HexLicSrv
- HexVault
- Lumina (with MySQL)
本仓库不包含安装程序。请将每个安装程序放入对应的 `image/` 文件夹中。
支持的安装程序版本:
- [IDA 9.0](https://docs.hex-rays.com/release-notes/9_0)
- [IDA 9.1](https://docs.hex-rays.com/release-notes/9_1)
- [IDA 9.2](https://docs.hex-rays.com/release-notes/9_2)
- [IDA 9.3](https://docs.hex-rays.com/release-notes/9_3)
- [IDA 9.3sp1](https://docs.hex-rays.com/release-notes/9_3sp1)
## 仓库结构
- `hexlicsrv/` - HexLicSrv 镜像、配置、数据、日志、CA
- `hexvault/` - HexVault 镜像、配置、数据、日志、CA
- `lumina/` - Lumina 镜像、配置、数据、日志、CA 以及 MySQL 卷
- `ida/` - 用于本地 IDA 客户端修补的辅助脚本 `license_patch.py`
- `shell.9.0.reg`, `shell.9.1.reg`, `shell.9.2.reg`, `shell.9.3.reg` - Windows 右键菜单快捷方式
## 环境要求
- 安装了 Docker + Docker Compose 的 Linux 主机
- 一对 CA 密钥对:`CA.pem` 和 `CA.key`
- 安装程序:
- `hexlicsrv/image/hexlicsrv_x64linux.run`
- `hexvault/image/hexvault_x64linux.run`
- `lumina/image/lumina_x64linux.run`
## 快速开始
1. 创建 CA(只需执行一次):
```
openssl req -x509 \
-newkey rsa:4096 -sha512 -keyout CA.key -out CA.pem -days 3650 -nodes \
-subj "/C=BE/L=Liege/O=Hex-Rays SA./CN=Hex-Rays SA. Root CA"
```
2. 将 `CA.pem` 和 `CA.key` 复制到:
- `hexlicsrv/CA/`
- `hexvault/CA/`
- `lumina/CA/`
3. 在 compose 文件中调整主机名:
- `hexlicsrv/docker-compose.yml`:`LICENSE_HOST`
- `hexvault/docker-compose.yml`:`VAULT_HOST`
- `lumina/docker-compose.yml`:`LUMINA_HOST`
4. 为 Lumina 配置 MySQL 密钥:
- 将 `.env.example` 复制为 `.env`(例如:`cp .env.example .env`)
- 为 `MYSQL_PASSWORD` 和 `MYSQL_ROOT_PASSWORD` 设置强密码
5. 启动服务(在仓库根目录下执行):
```
docker compose -f hexlicsrv/docker-compose.yml up -d --build
docker compose -f hexvault/docker-compose.yml up -d --build
docker compose -f lumina/docker-compose.yml up -d --build
```
6. 默认端口:
- HexLicSrv:`65434`
- HexVault:`65433`
- Lumina:`443`
## IDA 客户端设置
1. 创建 `C:\Program Files\IDA Professional \CA`
2. 仅将 `CA.pem` 放入其中
3. 将 `ida/license_patch.py` 复制到你的 IDA 安装目录
4. 以管理员身份运行:
```
python3 license_patch.py ida-pro
```
## 可选的 GitHub 同步
每个服务都可以在容器启动时向 GitHub 备份/恢复状态。
工作原理:
- 如果本地状态为空且存在远程快照,则服务会从 GitHub 恢复。
- 如果本地状态不为空,则服务会创建新快照,并且仅当数据发生更改时才上传。
- `hexlicsrv` 和 `hexvault` 同步文件系统数据。
- `lumina` 同步 MySQL 转储。
配置位置:
- 将同步变量添加到以下文件中所需服务的 `environment:` 块中:
- `hexlicsrv/docker-compose.yml`
- `hexvault/docker-compose.yml`
- `lumina/docker-compose.yml`
### 1) 通用变量(适用于任何服务)
```
environment:
SYNC_ENABLED: "true"
SYNC_METHOD: "commits" # or "releases"
GH_REMOTE: "https://github.com/yourorg/yourrepo.git"
SYNC_HOST_ID: "hexvault-prod-01" # unique node id
SYNC_CHUNK_SIZE_MB: "49" # keep <= 49 for GitHub limits
```
注意事项:
- `SYNC_HOST_ID` 在每个节点/环境中应是唯一的。
- 对于私有仓库和上传,请提供身份验证(token 或 SSH 密钥)。
- 对于没有 `SYNC_AUTH_TOKEN` 的 HTTPS 远程仓库,同步以只读模式工作(仅恢复,不上传)。
### 2) Commits 模式(将数据块存储在分支文件中)
必需项:
- `SYNC_METHOD=commits`
- `GH_REMOTE`
- `SYNC_HOST_ID`
可选项:
- `GH_BRANCH`(默认 `main`)
- `GH_COMMIT_NAME`, `GH_COMMIT_EMAIL`
- 用于 HTTPS 写入权限的 `SYNC_AUTH_TOKEN`
- 用于 SSH 的 `GH_SSH_PRIVATE_KEY`(+ 可选的 `GH_KNOWN_HOSTS`)
示例:
```
environment:
SYNC_ENABLED: "true"
SYNC_METHOD: "commits"
GH_REMOTE: "https://github.com/yourorg/yourrepo.git"
GH_BRANCH: "main"
SYNC_HOST_ID: "hexlicsrv-prod-01"
SYNC_AUTH_TOKEN: "${SYNC_AUTH_TOKEN}"
```
### 3) Releases 模式(将数据块存储为 release 资产)
必需项:
- `SYNC_METHOD=releases`
- `GH_REMOTE`
- `SYNC_HOST_ID`
可选项:
- `GH_RELEASE_TAG`(默认为服务名称)
- `GH_RELEASE_NAME`
- 用于 GitHub Enterprise 的 `GH_API` 和 `GH_UPLOAD`
- 用于创建/更新 release 资产的 `SYNC_AUTH_TOKEN`
示例:
```
environment:
SYNC_ENABLED: "true"
SYNC_METHOD: "releases"
GH_REMOTE: "https://github.com/yourorg/yourrepo.git"
GH_RELEASE_TAG: "lumina-prod"
GH_RELEASE_NAME: "Lumina Prod Snapshot"
SYNC_HOST_ID: "lumina-prod-01"
SYNC_AUTH_TOKEN: "${SYNC_AUTH_TOKEN}"
```
### 4) 启动后的快速检查
- 读取容器日志,查找有关 `restore`、`checksum`、`uploaded` 或 `nothing to upload` 的信息行。
- 如果未上传任何内容,通常意味着数据哈希值未更改(这是正常的)。
- 在 `commits` 模式下,快照存储在仓库中的 `backups//` 目录下的文件中。
- 在 `releases` 模式下,快照作为 release 资产存储在 `GH_RELEASE_TAG` 下。
## 故障排除
- 缺少 CA 文件:容器会提前退出。请检查 `CA/CA.pem` 和 `CA/CA.key`。
- 配置文件权限错误:设置严格的权限(例如对配置文件执行 `chmod 600`)。
- 同步问题:检查 `GH_REMOTE`、token/密钥以及仓库权限。
## 安全提示
- 切勿提交 token、SSH 私钥或 CA 私钥。
- 切勿将 `CA.key` 复制到客户端工作站。
- 限制所有密钥和配置文件的权限。
标签:Cutter, Docker Compose, Docker配置, IDA Pro, 云资产清单, 安全测试工具, 服务部署, 版权保护, 自托管, 请求拦截, 逆向工具, 逆向工程