# 1Panel 局域网部署（Redis + Kafka/Redpanda）

本文档指导在 1Panel 面板上导入 Compose 清单，一键部署 Redis、Redpanda（Kafka 协议）、Kafka UI 与 Redis Commander。

## 目录与文件
- Compose 文件：`scripts/deploy/infra/docker-compose.yml`
- 数据持久化目录（相对 Compose 位置）：
  - `./data/redis`
  - `./data/redpanda`

## 部署步骤（1Panel）
1. 登录 1Panel → 应用商店 → 编排 → 新建编排
2. 选择“从文件导入”，上传/粘贴 `docker-compose.yml` 内容（即仓库中的 `scripts/deploy/infra/docker-compose.yml`）
3. 设置环境变量：
   - `KAFKA_ADVERTISED_HOST`：填写本机/局域网服务器的内网 IP（例如 `192.168.1.10`）
4. 检查端口映射：
   - Redis: `6379`
   - Redpanda(Kafka): `9092`（Kafka 协议）
   - Kafka UI: `8082`（Web 可视化）
   - Redis Commander: `8081`（Web 可视化）
5. 确认卷挂载：`./data/redis` 与 `./data/redpanda` 路径具有读写权限
6. 点击“部署”，等待容器启动完成

## 验证
- Kafka UI：访问 `http://<内网IP>:8082`，应显示名为 wwjcloud 的集群；Brokers 指向 `<内网IP>:9092`
- Redis Commander：访问 `http://<内网IP>:8081`，应能连接 `redis:6379`

## 后端连接配置
在后端（NestJS）所在服务器或本机中，设置环境变量：
- Redis
  - `REDIS_HOST=<内网IP>`
  - `REDIS_PORT=6379`
  - `REDIS_PASSWORD=`（如未设置密码则为空）
- Kafka/Redpanda
  - `KAFKA_BROKERS=<内网IP>:9092`
  - `KAFKA_CLIENT_ID=wwjcloud`

## 常见问题排查
- 端口被占用：在 1Panel 容器列表查看端口冲突，或修改 Compose 中的宿主端口
- Kafka UI 无法连接：确认 `KAFKA_ADVERTISED_HOST` 使用的是外部访问的 IP；重启 redpanda 和 kafka-ui
- Redis 连接失败：检查安全组/防火墙、端口映射与容器日志
- 持久化权限：确保 `./data/*` 目录 1Panel 运行用户有写权限

## 维护与升级
- 重启服务：在 1Panel 中对单个容器执行“重启”
- 更新镜像：在 1Panel 中拉取镜像最新版本后重新部署
- 备份数据：备份 `./data/redis` 与 `./data/redpanda` 目录 