Files
admin_gitea 18db389beb
Build Packages / Test (push) Has been cancelled
Build Packages / Build macOS package (push) Has been cancelled
Build Packages / Build Linux package (push) Has been cancelled
Build Packages / Build Windows package (push) Has been cancelled
Build Packages / Publish GitHub Release (push) Has been cancelled
docs: add v1.0.0 release notes and package naming
2026-08-05 15:28:29 +08:00

290 lines
7.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 个人主页 - 动态版本
基于Vue3 + Go的个人主页项目【原项目[Home-Vue](https://github.com/JLinMr/Home-Vue)】支持动态更新配置,无需修改代码即可更新站点信息。
### 技术栈
**前端:**
- Vue3 + Vite
- CSS3 + HTML5 + JavaScript
- Vue Router
- Axios
**后端:**
- Go + Gin
- Ent ORM
- JWT认证
- SQLite数据库
### 功能特性
- ✅ 动态配置站点信息(名称、URL、图标等)
- ✅ 可视化管理界面
- ✅ 支持多种图片格式上传(jpg、png、jpeg、webp、avif等)
- ✅ 联系方式管理(Email、GitHub、支付宝、微信等)
- ✅ JWT认证保护管理接口
- ✅ 数据存储在SQLite,轻量级数据库
- ✅ 支持Linux服务器二进制打包部署
### 项目结构
```
Home-Vue-go/
├── docs/ # 文档目录
├── scripts/ # 构建脚本
├── src/ # 前端源代码
├── internal/ # Go后端代码
└── public/ # 静态资源
```
详细的项目结构说明请查看 [PROJECT_STRUCTURE.md](./docs/PROJECT_STRUCTURE.md)
### 快速开始
#### 1. 环境要求
- Go >= 1.21
- Node.js >= 16.16.0
- npm >= 8.15.0
#### 2. 安装依赖
```bash
# 安装前端依赖
npm install
# 安装Go依赖
go mod download
```
#### 3. 生成 Ent 代码(仅修改 Schema 后)
生成后的 Ent 源码已提交到仓库,普通运行和构建不需要重复生成。只有修改 `internal/ent/schema` 后才运行:
```bash
# 进入ent目录
cd internal/ent
# 生成Ent代码
go generate ./...
# 返回项目根目录
cd ../..
```
**说明:**
- `go generate` 是Go的内置命令,用于运行代码生成工具
- `./...` 表示当前目录及所有子目录
- 这会根据 `schema/` 目录中的定义生成Ent ORM代码
- 生成器使用 `go.mod` 中固定的 Ent 版本,不会使用 `@latest`
#### 4. 运行项目
**开发模式:**
生产运行只需要启动一个服务。需要前端热更新时,可额外启动 Vite 开发服务器:
**终端1 - 启动统一服务:**
```bash
# 在项目根目录运行
make run
```
**终端2 - 启动前端开发服务器:**
```bash
# 在项目根目录运行
npm run dev
```
**说明:**
- `make run` 会先构建前端,再启动同时提供前端、API和上传文件的统一服务
- 统一服务默认运行在 `http://localhost:1552`
- Vite 开发服务器运行在 `http://localhost:5173`,并将 API 请求代理到统一服务
- 首次运行会自动创建 `data/` 目录和数据库
- 可以通过环境变量 `PORT` 修改统一服务端口(默认1552
**Windows用户注意:** 如果遇到中文乱码,在PowerShell中运行:
```powershell
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
chcp 65001
```
访问:
- 前端:http://localhost:1552
- 管理界面:http://localhost:1552/admin
- 登录页面:http://localhost:1552/login
- APIhttp://localhost:1552/api
**默认管理员账号:**
- 用户名:`admin`
- 密码:`admin123`
⚠️ **重要:** 首次运行后请立即修改默认密码!
#### 5. 构建部署
**构建 Linux 单文件程序:**
```bash
make build-linux
```
**构建 Windows 单文件程序:**
```powershell
make build-windows
```
**构建全部平台:**
```bash
make build
```
该命令会生成 Windows、Linux 和 macOS amd64 可执行文件;需要单独构建某个平台时使用对应的 `make build-windows``make build-linux``make build-darwin`
**构建前端:**
```bash
npm install
npm run build
```
构建完成后:
- `make build` 的发布包位于 `./dist/`
- 前端资源已经嵌入每个平台的二进制文件,部署时只需要对应的可执行文件
**说明:**
- `go build` 编译Go程序为二进制文件
- SQLite 使用纯 Go 驱动,构建不需要 CGO 或 GCC
- `GOOS=linux GOARCH=amd64` 指定目标平台和架构
- `-o` 指定输出文件名
### 部署说明
1. **上传文件到服务器:**
- 上传 `home-vue-go` 二进制文件
2. **运行二进制文件:**
```bash
./home-vue-go
```
3. **数据存储:**
- 数据库文件:`./data/home.db`
- 上传的图片:`./data/uploads/`
- 所有数据存储在二进制文件同级目录的 `data` 文件夹中
4. **环境变量(可选):**
```bash
export PORT=1552 # 统一服务端口,默认1552
export JWT_SECRET=your-secret-key # JWT密钥,建议修改
```
### 管理界面使用
1. 访问 `/admin` 进入管理界面
2. 使用默认账号登录
3. 在管理界面中可以:
- **站点配置**:修改站点名称、URL、图标、描述等
- **站点管理**:添加、编辑、删除站点链接
- **联系方式管理**:管理Email、GitHub、支付宝、微信等联系方式
### 数据迁移
如果你之前使用的是静态版本(使用JSON配置文件),可以:
1. 启动新版本服务
2. 登录管理界面
3. 手动导入原有数据,或使用API批量导入
### API文档
#### 公开API(无需认证)
- `GET /api/sites` - 获取站点列表
- `GET /api/contacts` - 获取联系方式列表
- `GET /api/config` - 获取站点配置
#### 管理API(需要JWT认证)
- `POST /api/auth/login` - 登录获取token
- `GET /api/admin/sites` - 获取站点列表(管理)
- `POST /api/admin/sites` - 创建站点
- `PUT /api/admin/sites/:id` - 更新站点
- `DELETE /api/admin/sites/:id` - 删除站点
- `GET /api/admin/contacts` - 获取联系方式列表(管理)
- `POST /api/admin/contacts` - 创建联系方式
- `PUT /api/admin/contacts/:id` - 更新联系方式
- `DELETE /api/admin/contacts/:id` - 删除联系方式
- `GET /api/admin/config` - 获取站点配置(管理)
- `PUT /api/admin/config` - 更新站点配置
- `POST /api/admin/upload` - 上传图片文件
### 注意事项
1. **Email格式验证**Email类型的联系方式URL必须是 `mailto:` 格式(如:`mailto:i@bsgun.cn`
2. **图片上传**:支持 jpg、jpeg、png、gif、webp、avif、svg、bmp 格式
3. **数据库安全**:SQLite数据库文件存储在服务器本地,不对外暴露,防止数据库注入
4. **JWT密钥**:生产环境请务必修改JWT_SECRET环境变量
5. **默认密码**:首次部署后请立即修改管理员密码
### 开发命令
**Go相关命令:**
```bash
# 更新依赖
go mod tidy
# 下载依赖
go mod download
# 生成Ent代码
cd internal/ent && go generate ./... && cd ../..
# 运行后端(开发模式)
make run
# 构建后端(当前平台)
CGO_ENABLED=0 go build -o home-vue-go .
# 构建后端(Linux
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o home-vue-go .
# 查看Go版本
go version
# 查看模块信息
go mod graph
```
**前端相关命令:**
```bash
# 安装依赖
npm install
# 开发模式
npm run dev
# 构建生产版本
npm run build
# 预览构建结果
npm run preview
```
### GitHub Actions 构建与安装包
仓库内置 `.github/workflows/build.yml`,在推送到 `main` 或创建 Pull Request 时运行测试和跨平台构建。每次工作流运行都会产生三个可下载的安装包:
- Windows amd64`Home-Vue-Go_Windows.zip`
- Linux amd64`Home-Vue-Go_Linux.tar.gz`
- macOS amd64`Home-Vue-Go_macOS.tar.gz`
在 GitHub Actions 的运行详情页下载对应平台的 `Home-Vue-Go_<平台>` 构建产物。发布版本时推送一个 `v` 开头的标签,工作流会自动创建 GitHub Release、读取对应版本的发行说明并附加这三个安装包:
```bash
git tag v1.0.0
git push github v1.0.0
```
### 许可证
本项目沿用原仓库的 [MIT License](./LICENSE),发行包中也会包含完整的 `LICENSE` 文件。原项目版权声明及许可条款予以保留。