vuldin/redpanda-nix
GitHub: vuldin/redpanda-nix
一个基于Nix的Redpanda打包方案,提供FIPS 140-2兼容、安全合规控制与CI/CD自动化,简化多框架审计与高安全环境下的部署。
Stars: 0 | Forks: 0
# Redpanda Nix 软件包
适用于 Linux 的基于 Nix 的 Redpanda 打包,支持自动版本更新、相关安全控制和 CI/CD。在安装 Nix 的任何 Linux 发行版上均可运行,并支持通过 NixOS 模块进行声明式部署。
[](../../actions/workflows/ci.yml)
[](../../actions/workflows/update-redpanda.yml)
## 功能特性
### 打包
- **基于 Bazel 的源码构建** — SLSA Build L3(自评估)、完整的源码到二进制可追溯性、完整的 SBOM
- **Deb 包降级方案** — 从官方 Redpanda Deb 包获取(5 分钟安装)
- **FIPS 140-2 变体** — 搭载 CMVP 认证的 BoringCrypto,适用于 FedRAMP High 部署
- **独立的 rpk CLI** — 通过 Go 的 `buildGoModule` 构建
- **OCI 容器镜像** — 通过 `dockerTools.streamLayeredImage` 构建(约 313 MB 最小化)
- **版本固定** — 仅固定到已标记的稳定版本(例如 `v26.1.2`)
### NixOS 模块集成
- **完整的 NixOS 模块** — 包含 systemd 服务与安全加固
- **自动防火墙端口提取** — 从监听配置中自动提取端口
- **多监听支持** — 支持 Kafka、Admin、Schema Registry 和 HTTP 代理
- **集群拓扑** — 支持自动种子服务器发现与机架感知
### 合规与安全
- **强制 TLS** — 构建时验证(STIG SC-8、CJIS 5.10)
- **SLSA Build L3**(自评估)— 带有 Hermetic Nix 沙箱的源码构建
- **自动化 SBOM 生成** — 以 CycloneDX/SPDX 格式生成并附带 SLSA 可追溯性
- **漏洞扫描** — 通过 sbomnix 进行自动化 CVE 检测
- **CJIS 审计保留** — 365 天日志保留以满足 FBI 合规要求
- **安全控制** — 支持 SOC 2、CJIS、NIST 等框架 — 详见 [compliance/](./compliance/)
### CI/CD
- **每周版本检测** — 通过 GitHub Actions 自动检测并打包
- **构建验证** — 每次更新时生成合规性工件
- **自动拉取请求** — 附带变更日志、漏洞摘要与合规状态
## 先决条件
### 对于 NixOS
- 启用 Flakes 的 NixOS
- `curl` 用于 GitHub API(由更新脚本使用)
- `jq` 用于 JSON 解析
### 对于其他 Linux(Ubuntu、Debian、RHEL 等)
- 首先安装 Nix 包管理器:`sh <(curl -L https://nixos.org/nix/install) --daemon`
- 详见 [docs/INSTALLATION_GUIDE.md](./docs/INSTALLATION_GUIDE.md) 获取 Nix 安装、SELinux 与防火墙设置说明
## 快速开始
### NixOS
将 Flake 添加到输入并启用模块:
```
{
inputs.redpanda.url = "github:vuldin/redpanda-nix";
outputs = { nixpkgs, redpanda, ... }: {
nixosConfigurations.myhost = nixpkgs.lib.nixosSystem {
modules = [
redpanda.nixosModules.default
{ services.redpanda.enable = true; }
];
};
};
}
```
若要使用不同变体,设置 `services.redpanda.package`:
```
{ pkgs, inputs, ... }: {
services.redpanda = {
enable = true;
package = inputs.redpanda.packages.${pkgs.system}.redpanda-fips;
};
}
```
在 NixOS 上,模块会自动处理一切:创建系统用户、systemd 服务、配置生成与防火墙规则,无需安装脚本。
### 其他 Linux 发行版(Ubuntu、Debian、RHEL 等)
需要启用 Flakes 的 Nix。尚未安装 Nix 请参考 [先决条件](#prerequisites)。
```
git clone https://github.com/vuldin/redpanda-nix.git
cd redpanda-nix
sudo ./scripts/install.sh
```
这将构建 Redpanda,创建一个 `redpanda` 系统用户,安装默认配置到 `/etc/redpanda/redpanda.yaml`,设置 systemd 服务并启动 Redpanda。
要安装不同变体:
```
sudo ./scripts/install.sh --variant fips
```
更新后升级:
```
sudo ./scripts/install.sh # rebuilds, re-symlinks, and restarts
```
卸载:
```
sudo ./scripts/uninstall.sh # keeps config and data
sudo ./scripts/uninstall.sh --purge # removes everything
```
### 包变体
| 变体 | 构建时间 | 描述 | 适用场景 |
|------|----------|------|----------|
| `redpanda`(默认) | 1-4 小时 | Bazel 源码构建、SLSA Build L3、完整 SBOM | 供应链合规、DoD 采购、可追溯性审计 |
| `redpanda-deb` | 5-10 分钟 | 来自 Cloudsmith 官方 Deb 的预构建二进制(PGO + LTO 优化) | 适用于大多数用户的生产与开发 |
| `redpanda-fips` | 5-10 分钟 | 搭载 CMVP 认证 BoringCrypto 的官方 FIPS Deb(PGO + LTO 优化) | FedRAMP High、DoD IL4+、CJIS 或任何需要 FIPS 验证加密的环境 |
| `redpanda-rpk` | 2 分钟 | 通过 Go 的 `buildGoModule` 构建的独立 rpk CLI | 仅使用 CLI 而不运行服务器 |
## 配置
### NixOS
在 NixOS 上,配置是通过 Nix 属性声明的(而非 YAML 文件)。模块会在构建时生成 YAML:
```
{
services.redpanda = {
enable = true;
openFirewall = true; # auto-opens all configured ports
settings = {
redpanda = {
kafka_api = [
{ address = "0.0.0.0"; port = 9092; name = "internal"; }
{ address = "0.0.0.0"; port = 9192; name = "external"; }
];
admin = [{ address = "0.0.0.0"; port = 9644; }];
rpc_server = { address = "0.0.0.0"; port = 33145; };
developer_mode = true;
};
schema_registry.schema_registry_api = [
{ address = "0.0.0.0"; port = 8081; }
];
pandaproxy.pandaproxy_api = [
{ address = "0.0.0.0"; port = 8082; }
];
};
};
}
```
### 其他 Linux 发行版(Ubuntu、Debian、RHEL 等)
直接编辑 `/etc/redpanda/redpanda.yaml`。安装脚本会创建默认的单节点配置。更改在重启服务后生效。
```
sudo systemctl restart redpanda
```
要添加多个监听器,请编辑 YAML:
```
redpanda:
kafka_api:
- address: 0.0.0.0
port: 9092
name: internal
- address: 0.0.0.0
port: 9192
name: external
advertised_kafka_api:
- address: 127.0.0.1
port: 9092
name: internal
- address: 127.0.0.1
port: 9192
name: external
```
多监听器端口模式:
- Kafka API:9092、9192、9292(9x92)
- Schema Registry:8081、8181、8281(8x81)
- HTTP 代理:8082、8182、8282(8x82)
## 更新
`scripts/update.sh` 脚本可自动化软件包更新:
```
# 更新到最新版本
./scripts/update.sh
# 更新到特定版本
./scripts/update.sh 26.1.4
```
该脚本会验证发布标签、下载官方 Deb、生成带有正确哈希的 `deb.nix`、更新 `flake.nix`,并生成合规性工件(SBOM、SLSA 可追溯性、漏洞扫描)。
## 模块选项(仅限 NixOS)
以下选项仅在使用 NixOS 模块时适用。不使用 NixOS 的用户可通过编辑 `/etc/redpanda/redpanda.yaml` 配置 Redpanda。
### 核心选项
| 选项 | 描述 | 默认值 |
|------|------|--------|
| `services.redpanda.enable` | 启用 Redpanda 服务 | `false` |
| `services.redpanda.package` | 使用的 Redpanda 包 | Flake 默认 |
| `services.redpanda.dataDir` | 数据存储目录 | `/var/lib/redpanda` |
| `services.redpanda.user` / `group` | 服务用户与组 | `redpanda` |
| `services.redpanda.settings` | Redpanda 配置(Nix 属性),映射到 `redpanda.yaml` | `{}` |
| `services.redpanda.openFirewall` | 为所有配置的监听器自动打开端口 | `false` |
### 合规选项
| 选项 | 描述 | 支持框架 |
|------|------|----------|
| `services.redpanda.enforceTLS` | 所有服务的构建时 TLS 验证 | STIG SC-8、CJIS 5.10、FedRAMP |
| `services.redpanda.cjisAuditRetention` | 365 天审计日志保留 | FBI CJIS 5.4、STIG AU-11 |
| `services.redpanda.auditRetentionDays` | 覆盖保留周期(默认:365) | CJIS |
### 集群选项
| 选项 | 描述 |
|------|------|
| `services.redpanda.cluster.nodes` | 多节点拓扑与自动种子服务器生成 |
详见 [examples/](./examples/) 获取包含 TLS 与多节点的完整配置示例。
## 架构
```
scripts/update.sh -> deb.nix + source/build.nix -> flake.nix -> Nix package + NixOS module
| | | |
Fetch + hash Package def Build system Package for any Linux
from Cloudsmith (deb extract) + distribution + NixOS service/firewall
```
- `deb.nix` = Deb 包提取(快速降级方案,由 `scripts/update.sh` 自动生成)
- `flake.nix` = 提供软件包(NixOS 任意 Linux)与 NixOS 模块(仅限 NixOS)的 Flake
## 端口参考
| | 默认端口 | 多监听器模式 | 配置键 |
|------|----------|--------------|--------|
| Kafka API | 9092 | 9092、9192、9292... | `redpanda.kafka_api` |
| Schema Registry | 8081 | 8081、8181、8281... | `schema_registry.schema_registry_api` |
| HTTP 代理 | 8082 | 8082、8182、8282... | `pandaproxy.pandaproxy_api` |
| Admin API | 9644 | 单监听器 | `redpanda.admin` |
| RPC 服务器 | 33145 | 单监听器 | `redpanda.rpc_server` |
## 合规性
本软件包提供支持多种合规框架的技术控制。组织层面的控制(审计、培训与策略)由部署者负责。详见 [compliance/COMPLIANCE_MATRIX.md](./compliance/COMPLIANCE_MATRIX.md) 的详细控制映射。
| 框架 | 覆盖程度 | 关键差距 |
|------|----------|----------|
| SLSA v1.0 | Build L3(自评估) | 正式合规计划尚未完成 |
| SOC 2 Type II | 强 | 持续证据收集由部署者负责 |
| FBI CJIS v6.0 | 强 | 多因素认证与人员控制依赖部署者 |
| NIST SP 800-161 | 强 | 通过源码构建提供完整的端到端可追溯性 |
| FedRAMP High | 部分 | 需要 3PAO 评估与 SSP(组织层面) |
| DoD SBOM 管理 | 强 | 通过 `scripts/update.sh` 支持 SBOM 生成 |
关键控制项:可重复构建、SHA256 校验、不可变 `/nix/store`、自动化 SBOM(CycLEDX/SPDX)、SLSA v1.0 可追溯性、systemd 安全加固、TLS 强制、365 天审计保留。
合规工件(SBOM、可追溯性、漏洞扫描)由 `scripts/update.sh` 生成并附加至 [GitHub Releases](https://github.com/vuldin/redpanda-nix/releases)。
## 文档
- [docs/](./docs/) — 安装指南、构建选择、FIPS 部署
- [examples/](./examples/) — NixOS 模块配置示例(开发、集群、TLS)
- [.github/workflows/](./.github/workflows/) — CI/CD 流水线详情
## 感谢
源码构建方法(`source/build.nix`)借鉴自 [redpanda-data/redpanda#29919](https://github.com/redpanda-data/redpanda/pull/29919) 的 [randomizedcoder](https://github.com/randomizedcoder)。该 PR 引入了基于 Nix 的 Bazel 构建架构,包括 fetch-nixify-build 循环、预编译 C/C++ 依赖策略以及本项目的声明式 nixify 规则。
## 许可证
本软件包按原样提供。Redpanda 本身根据 Redpanda Business Source License 授权。
标签:313 MB, 365-day retention, Automated packaging, Automated pull request, Automated security controls, Automated version updates, Automatic seed discovery, Bazel, BoringCrypto, Build verification, CJIS, CJIS 5.10, Cluster topology, Compliance, Compliance artifacts, CVE, CycloneDX, Debian package, Deb package fallback, Declarative deployment, Docker, FBI compliance, FedRAMP, FIPS 140-2, Firewall, GitHub Actions, Go build, Hermetic sandbox, HTTP Proxy, Kafka, Linux distribution, Listener, Log retention, Minimal image, Multi-listener support, NIST, Nix, NixOS, OCI container images, Packaged Linux, Port extraction, Rack awareness, Redpanda, rpx CLI, SBOM, sbomnix, Schema Registry, Security hardening, Seed server discovery, SLSA Build L3, SOC 2, SonarQube插件, Source build, SPDX, SSL, Stable releases, STIG, systemd, TLS, Version pinning, Vulnerability scanning, 安全防御评估, 数字签名, 日志审计, 硬件无关, 自动笔记, 防御工具