# opsdesk **Repository Path**: aiy/opsdesk ## Basic Information - **Project Name**: opsdesk - **Description**: OpsDesk 是一款兼具设计美学与高效开发的本地部署终端与服务器管理工具 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-25 - **Last Updated**: 2026-04-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpsDesk (部署工具) OpsDesk 是一款兼具设计美学与高效开发的本地部署终端与服务器管理工具。它基于 Wails 框架构建,前端采用 Vue 3 + TypeScript + Element Plus (基于 Art Design Pro 模板),后端采用 Go 语言并搭配 SQLite 数据库。 ## 🌟 核心特性 - **💻 跨平台桌面应用**: 基于 Wails 构建,打包为轻量级的原生桌面应用,无需依赖浏览器。 - **🖥️ 服务器管理**: 便捷管理多台主机的 SSH 连接信息,支持密码和私钥两种认证方式。 - **📦 软件环境初始化**: 内置丰富的环境安装脚本(如 JDK、MySQL、Redis、Nginx),支持一键远程下发安装,自动配置环境变量。 - **🚀 自动化项目部署**: 支持一键打包本地项目,通过 SFTP 自动上传构建产物,并执行远程启动/重启脚本。 - **👥 用户权限管理**: 基础的多用户登录体系与权限划分。 --- ## 🔄 系统运行流程 ### 1. 启动与初始化 1. 用户启动 OpsDesk 客户端。 2. Go 后端启动,自动获取系统「**用户配置目录**」(例如 Windows 下的 `AppData\Roaming\OpsDesk`,macOS 下的 `~/Library/Application Support/OpsDesk`)。 3. 检查并初始化 SQLite 数据库 `opsdesk.db`。若为首次启动,系统会自动建表,并插入默认的管理员账号(`Admin`/`123456` 等)以及内置的软件环境安装脚本(Shell 脚本)。 4. Wails 将前端静态资源(Vue 3 构建产物)加载到 WebView 中,并向前端注入暴露的 Go API(`@wailsjs/go/...`)。 ### 2. 服务器绑定 1. 用户在前端「服务器管理」模块添加目标服务器。 2. 填写服务器的主机名(IP)、端口、登录用户名,并选择认证方式(密码或私钥)。 3. 数据通过 Wails IPC 机制传递给 Go 后端,存储至本地 SQLite 的 `servers` 表中。 ### 3. 环境准备 (软件安装) 1. 在「软件管理」模块,用户可以查看已内置或自定义添加的软件环境及安装脚本。 2. 用户点击“安装”,在弹窗中选择目标服务器。 3. Go 后端接收到请求后,利用 `golang.org/x/crypto/ssh` 建立 SSH 连接。 4. 后端将对应的 Shell 安装脚本下发至远程服务器执行,并将执行日志实时返回或展示给用户。 ### 4. 项目部署 1. 用户在「项目管理」模块添加新的部署任务,绑定对应的目标服务器。 2. 配置参数: - **本地构建目录**:需要上传的产物路径(如 `./dist` 或 `target/*.jar`)。 - **远程目标目录**:服务器上接收产物的路径(如 `/var/www/html` 或 `/opt/app`)。 - **部署命令**:上传完成后在服务器上执行的命令(如 `systemctl restart nginx` 或 `pm2 restart app`)。 3. 用户点击“部署”: - Go 后端建立 SSH 与 SFTP 连接。 - 自动将「本地构建目录」中的文件增量或全量上传至「远程目标目录」。 - 上传完成后,执行设定的「部署命令」,完成自动化发布。 --- ## 🛠️ 技术栈 ### 前端 (Frontend) - **核心**: Vue 3 (Composition API), TypeScript, Vite - **UI 组件库**: Element Plus - **状态管理**: Pinia - **路由**: Vue Router - **样式**: Tailwind CSS / SCSS - **图标**: Iconify ### 后端 (Backend) - **核心**: Go 1.23 - **GUI 框架**: Wails v2 - **数据库**: SQLite3 (`github.com/mattn/go-sqlite3`) - **SSH/SFTP**: `golang.org/x/crypto/ssh`, `github.com/pkg/sftp` --- ## 🚀 快速开始 ### 环境依赖 - [Go 1.23+](https://golang.org/doc/install) - [Node.js 18+](https://nodejs.org/en/download/) - [Wails CLI](https://wails.io/docs/gettingstarted/installation) (`go install github.com/wailsapp/wails/v2/cmd/wails@latest`) ### 开发模式 进入项目根目录,运行以下命令启动开发模式: ```bash wails dev ``` 此命令将同时启动 Vite 的前端热更新服务和 Wails 后端,任何前端或后端的修改都将实时反映到界面上。 ### 生产构建 构建适用于当前操作系统的生产版本: ```bash wails build ``` 构建产物将输出在 `build/bin/` 目录下。 --- ## 📂 目录结构 ```text opsdesk/ ├── app.go # Go 后端业务逻辑(包括数据库初始化、SSH连接等) ├── main.go # Wails 应用程序入口,窗口配置 ├── wails.json # Wails 项目配置文件 ├── go.mod # Go 依赖管理 ├── frontend/ # 前端 Vue 3 项目源码 │ ├── src/ │ │ ├── api/ # 接口请求定义 │ │ ├── views/ # 页面视图 (服务器、项目、软件管理等) │ │ ├── router/ # 前端路由 │ │ └── store/ # Pinia 状态管理 │ ├── package.json # 前端依赖管理 │ └── vite.config.ts # Vite 配置文件 └── build/ # Wails 编译相关资源 (图标、macOS app 等) ```