# steerdock
**Repository Path**: silvancoder/steerdock
## Basic Information
- **Project Name**: steerdock
- **Description**: 企业级 Docker 管理平台,具备先进的安全功能、多数据库支持和生产就绪的架构。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://www.steerdock.com
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-02-15
- **Last Updated**: 2026-03-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Docker, docker-compose, container-management, docker-gui, 容器管理
## README
🐳 现代化Docker管理平台,拥有简洁的UI和强大的功能












## 截图展示
Docker仪表板实时监控(深色主题)
实时资源监控和容器状态(浅色主题)
## ✨ 功能特性
### 🔐 安全与认证
- JWT认证,24小时过期
- 基于角色的访问控制(超级管理员/管理员/经理/用户/只读)
- 密码加密(SHA-256)
- 速率限制和安全头
- 完整的审计日志
- OAuth 2.0支持(Google、GitHub)
### 🗄️ 多数据库支持
- MySQL 8.0+(默认)
- PostgreSQL 15+
- MongoDB 5.0+
- 自动模式迁移
- 连接池
### 🐳 Docker管理
- **容器**:启动、停止、重启、删除、创建、检查
- **镜像**:拉取、删除、检查、搜索仓库
- **网络**:创建、删除、连接/断开容器
- **数据卷**:创建、删除、检查、清理
- **终端**:使用xterm.js实时Shell访问
- **日志**:实时容器日志流
- **统计**:实时资源使用监控(CPU、内存、网络、I/O)
### 🌐 多主机支持
- 管理多个Docker主机
- 本地和远程Docker守护进程
- SSH和TCP连接
- 快速主机切换
### 🎨 现代化UI
- 深色/浅色主题
- 响应式设计
- 多语言支持(10+种语言)
- 键盘快捷键
- 实时更新
## 🚀 快速开始
**最快启动SteerDock的方法:**
```bash
# 1. 生成安全密码和配置
./generate-passwords.sh # Linux/macOS
# 或
.\generate-passwords.ps1 # Windows
# 2. 使用Docker Compose启动所有服务
docker compose up -d
# 3. 等待服务启动(约30秒)
docker compose logs -f steerdock
# 4. 访问SteerDock
# 打开:http://localhost:5151
```
**默认登录:**
- 用户名:`superadmin`
- 密码:`superadmin123`
⚠️ **首次登录后请更改密码!**
---
### 方式1:开发模式(推荐用于开发)
```bash
# Linux/macOS
./start-dev.sh
# Windows
.\start-dev.ps1
```
访问:
- 前端:http://localhost:5151(支持热重载)
- 后端:http://localhost:8383
### 方式2:生产模式
```bash
# Linux/macOS
./start-prod.sh
# Windows
.\start-prod.ps1
```
访问:
- 前端:http://localhost:5151
- 后端API:http://localhost:8383/api/v1
### 方式3:桌面应用(Windows)
```powershell
# 仅Windows
.\win-desktop.ps1
```
这将创建一个独立的桌面应用程序:
- 后台运行后端服务
- 桌面GUI应用程序(SteerDock-frontend.exe)
- 访问:桌面应用程序窗口
### 方式4:Docker Compose(推荐)
```bash
# 1. 生成配置和密码
./generate-passwords.sh # Linux/macOS
# 或
.\generate-passwords.ps1 # Windows
# 2. 启动所有服务(MySQL + Redis + SteerDock)
docker compose up -d
# 3. 检查服务状态
docker compose ps
# 4. 查看日志
docker compose logs -f steerdock
# 5. 访问应用
# 前端:http://localhost:5151(由后端提供服务)
# 后端API:http://localhost:8383/api/v1
```
**包含的服务:**
- MySQL数据库(端口3306)
- Redis缓存(端口6379)
- SteerDock应用程序(端口8383)
**重要:**始终使用`docker compose up -d`启动所有服务。不要使用`docker run`运行单个容器。
**默认登录:**
- 用户名:`superadmin`
- 密码:`superadmin123`
⚠️ **首次登录后请更改密码!**
## 🔨 手动构建
### 从源码构建
```bash
# 1. 构建前端
cd frontend
npm install
npm run build
# 2. 构建后端(创建单个二进制文件)
cd ../backend
go mod tidy
go build -o steerdock .
# 3. 安装数据库和缓存
cd .. && ./install-database.sh
# 4. 运行二进制文件
cd ./backend && ./steerdock # Linux/macOS
# 或
cd ./backend && steerdock.exe # Windows
# 5. 运行前端(在另一个终端)
cd ./frontend && npm run preview -- --host 0.0.0.0 --port 5151
```
### 构建Docker镜像
#### 快速构建
```bash
# 使用Docker Compose(推荐)
docker compose up -d
```
#### 高级Docker构建
```bash
# 使用自定义标签和构建参数构建
docker build \
--tag steerdock:v1.0.0 \
--tag steerdock:latest \
--build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \
--build-arg VERSION=v1.0.0 \
.
# 多平台构建(需要buildx)
docker buildx build \
--platform linux/amd64,linux/arm64 \
--tag steerdock:latest \
--push \
.
# 使用特定Dockerfile构建
docker build -f Dockerfile -t steerdock:custom .
```
#### 容器配置
**重要:**使用Docker Compose而不是单个容器以确保正确的数据库连接。
```bash
# 首先生成配置
./generate-passwords.sh # Linux/macOS
# 或
.\generate-passwords.ps1 # Windows
# 使用Docker Compose启动所有服务
docker compose up -d
# 生产部署使用自定义配置
docker compose -f docker-compose.prod.yml up -d
```
**为什么需要Docker Compose:**
- 自动服务网络(mysql、redis、steerdock)
- 正确的环境变量配置
- 健康检查和服务依赖
- 数据持久化的卷管理
#### 多阶段构建详情
Dockerfile使用3阶段构建过程:
1. **前端阶段**:使用Node.js构建React应用
```dockerfile
FROM node:20-alpine AS frontend-builder
# 构建优化的生产前端
```
2. **后端阶段**:编译Go二进制文件
```dockerfile
FROM golang:1.24-alpine AS backend-builder
# 创建优化的静态二进制文件
```
3. **最终阶段**:包含前端和后端的最小Alpine镜像
```dockerfile
FROM alpine:3.19
# 运行时依赖,后端提供前端文件,最终镜像约50MB
```
#### 容器健康检查
```bash
# 检查容器健康状态
docker ps --filter name=steerdock
docker logs steerdock
docker exec steerdock curl -f http://localhost:8383/health/live
# 查看容器统计信息
docker stats steerdock
```
### 使用Makefile
```bash
# 构建所有内容
make build
# 使用Docker构建和运行
make docker-build
make docker-run
# 开发模式
make dev
# 生产模式
make prod
```
## 📋 系统要求
- **Docker**:20.10+ 和 Docker Compose
- **系统**:Linux/Windows/macOS,2GB+内存
开发环境:
- **Node.js**:20+
- **Go**:1.24+
- **数据库**:MySQL 8.0+(默认)/ PostgreSQL 15+ / MongoDB 5.0+
## 🛠️ 技术栈
### 后端
- Go 1.24+ 配合 Gin 框架
- GORM 用于数据库操作
- JWT 认证
- WebSocket 实现实时更新
### 前端
- React 18+ 配合 TypeScript
- Vite 构建工具
- Tailwind CSS
- React Query 状态管理
- xterm.js 终端
## 👤 默认用户
```
👑 超级管理员:superadmin / superadmin123
🛡️ 管理员:admin / admin123
👨💼 经理:manager / manager123
👤 用户:user / user123
👁️ 只读:readonly / readonly123
```
⚠️ **首次登录后请更改所有默认密码!**
## 📖 文档
- [架构概述](./ARCHITECTURE.md) - 系统架构和设计
- [安全指南](./SECURITY.md) - 安全功能和最佳实践
- [更新日志](./CHANGELOG.md) - 版本历史和更新
## 🔧 配置
所有配置都在`.env`文件中(由密码生成器自动生成):
```env
# 前端
FRONTEND_PORT=5151
BASE_URL=http://localhost:8383
# 数据库(MySQL示例 - 默认)
MYSQL_USER=steerdock
MYSQL_PASSWORD=<自动生成>
MYSQL_DATABASE=steerdock
MYSQL_HOST=mysql # Docker服务名
MYSQL_PORT=3306
# 安全
JWT_SECRET=<自动生成>
ALLOWED_ORIGINS=http://localhost:8383,http://localhost:5151
# 缓存(可选)
REDIS_HOST=redis # Docker服务名
REDIS_PORT=6379
REDIS_PASSWORD=<自动生成>
```
## 🐞 故障排除
### 无法连接到Docker
```bash
# 检查Docker是否运行
docker ps
# 检查Docker套接字权限(Linux)
ls -l /var/run/docker.sock
sudo chmod 666 /var/run/docker.sock # 如果需要
```
### 数据库连接失败
```bash
# 检查是否使用Docker Compose(重要!)
docker compose ps
# 应该显示3个服务:mysql、redis、steerdock
# 如果没有,使用Docker Compose启动:
docker compose up -d
# 检查数据库容器
docker compose logs mysql
# 重启所有服务
docker compose restart
```
### 无法登录
```bash
# 检查后端是否运行
curl http://localhost:8383/health/live
# 查看后端日志
docker compose logs steerdock
# 检查数据库初始化
docker compose exec mysql mysql -u steerdock -p steerdock -e "SELECT username FROM users;"
```
### 端口已被占用
```bash
# 停止所有服务
docker compose down
# 或手动终止进程
# Linux/macOS
lsof -ti:8383 | xargs kill -9
lsof -ti:5432 | xargs kill -9
lsof -ti:6379 | xargs kill -9
# Windows
netstat -ano | findstr :8383
taskkill /PID /F
```
### 常见错误
```bash
# ❌ 错误:运行单个容器而没有数据库
docker run steerdock:latest
# ✅ 正确:使用Docker Compose启动所有服务
docker compose up -d
# ❌ 错误:缺少.env文件
docker compose up -d # 没有先运行generate-passwords
# ✅ 正确:先生成配置
./generate-passwords.sh && docker compose up -d
# ❌ 错误:在Docker中使用localhost作为数据库地址
MYSQL_HOST=localhost # 在Docker中不起作用
# ✅ 正确:使用Docker服务名
MYSQL_HOST=mysql # Docker Compose服务名
```
## 🏗️ 项目结构
```
steerdock/
├── backend/ # Go后端应用
│ ├── config/ # 配置
│ ├── handlers/ # HTTP处理器
│ ├── middleware/ # 中间件
│ ├── models/ # 数据库模型
│ ├── routes/ # API路由
│ └── main.go # 入口点
├── frontend/ # React前端
│ ├── src/
│ │ ├── components/ # React组件
│ │ ├── pages/ # 页面组件
│ │ ├── hooks/ # 自定义钩子
│ │ └── config/ # 配置
│ └── package.json
├── sql/ # 数据库初始化脚本
├── docs/ # 文档
├── docker-compose.yml # Docker Compose配置
└── .env # 环境变量
```
## 🔒 安全最佳实践
1. **更改默认密码**:安装后立即更改
2. **使用强密码**:遵循密码策略要求
3. **启用HTTPS**:生产环境中使用SSL/TLS证书
4. **定期更新**:保持SteerDock和依赖项更新
5. **审计日志**:定期查看审计日志
6. **备份**:定期加密备份
7. **网络隔离**:使用防火墙和网络分段
8. **最小权限**:授予最小必需权限
详细安全指南请参见[SECURITY.md](./SECURITY.md)。
## 🤝 贡献
欢迎贡献!
1. Fork仓库
2. 创建功能分支(`git checkout -b feature/amazing-feature`)
3. 提交更改(`git commit -m 'Add amazing feature'`)
4. 推送到分支(`git push origin feature/amazing-feature`)
5. 打开Pull Request
## 相关项目
- [OpenVizUI - 另一个 AI CLI 界面化管理平台](https://github.com/silvancoder/openvizui)
## 📝 许可证
本项目采用MIT许可证 - 详情请参见[LICENSE](./LICENSE)文件。
## 📧 支持
- 📖 [文档](./docs/)
- 🐛 [问题跟踪](https://github.com/silvancoder/steerdock/issues)
- 💬 [讨论](https://github.com/silvancoder/steerdock/discussions)
## 🙏 致谢
- [Docker](https://www.docker.com/) - 容器平台
- [Go](https://golang.org/) - 后端语言
- [React](https://reactjs.org/) - 前端框架
- [Gin](https://gin-gonic.com/) - Web框架
- [GORM](https://gorm.io/) - ORM库
- [xterm.js](https://xtermjs.org/) - 终端模拟器
---
由SteerDock团队用❤️制作