# 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
SteerDock Logo

🐳 现代化Docker管理平台,拥有简洁的UI和强大的功能

![License](https://img.shields.io/badge/License-MIT-blue.svg) ![Docker](https://img.shields.io/badge/Docker-Ready-blue.svg) ![Go](https://img.shields.io/badge/Go-1.24+-blue.svg) ![React](https://img.shields.io/badge/React-19-blue.svg) ![Nginx](https://img.shields.io/badge/Nginx-1.22+-blue.svg) ![MySQL](https://img.shields.io/badge/MySQL-8.0+-blue.svg) ![PostgreSQL](https://img.shields.io/badge/PostgreSQL-15+-blue.svg) ![MongoDB](https://img.shields.io/badge/MongoDB-5.0+-blue.svg) ![Redis](https://img.shields.io/badge/Redis-7.0+-red.svg) ![JWT](https://img.shields.io/badge/Auth-JWT-orange.svg) ![OAuth](https://img.shields.io/badge/OAuth-Google%20|%20GitHub-orange.svg) ![Test Status](https://img.shields.io/badge/tests-passing-brightgreen.svg) ## 截图展示
SteerDock Dashboard - Dark Theme

Docker仪表板实时监控(深色主题)

SteerDock Monitoring - Light Theme

实时资源监控和容器状态(浅色主题)

## ✨ 功能特性 ### 🔐 安全与认证 - 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团队用❤️制作