feat: add docs pages

This commit is contained in:
Your Name
2025-12-06 13:07:30 +08:00
committed by engigu
parent f4780c9c6c
commit 42c7c9a1b4
22 changed files with 4547 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
# 更新日志
## 2025
### 2025.10.12
- 增加cookies过期天数设置
### 2025.09.30
- 支持页面的明暗主题切换设置
- 增加登录日志
### 2025.09.14
- 支持系统信息展示更多的运行信息
### 2025.08.10
- **重大升级,重构web页面,样式更加美观友好**
- UI组件使用shadcn-vue,基于tailwindcss
- 现在支持大中小屏自适应
### 2025.04.28
- 支持tidb作为存储
- 支持数据库ssl配置
- docker运行指定环境变量SSL=true
- ini配置文件运行指定数据库连接参数Ssl=true
### 2025.01.01
- 支持自托管消息,现在可以将站点作为消息的接受,登录站点查看消息
## 2024
### 2024.04.29
- 支持 SQLite 部署
- 支持MySQL 5.x / 8.x
### 2024.04.11
- 支持自定义的定时消息发送
### 2024.03.05
- 支持微信测试公众号模板消息发送
### 2024.01.28
- 支持 Docker 部署,从环境变量启动服务
### 2024.01.24
- 支持数据统计展示
### 2024.01.20
- 添加日志查看自动刷新
### 2024.01.07
- 支持站点信息自定义
### 2024.01.03
- 支持企业微信
- 单应用打包,直接运行,无需部署前端页面
- 支持邮件发送
- 用户密码设置
- 支持用户定时任务清理,更新定时时间
- 查看定时清理日志
- 单应用的 HTML 浏览器自动缓存
- Gin 的日志使用 Logrus
- 支持异步发送
- 支持钉钉
- 支持自定义的 Webhook 消息发送
+170
View File
@@ -0,0 +1,170 @@
# 配置说明
## 完整配置文件
```ini
[app]
JwtSecret = message-nest
; 暂时无用
RuntimeRootPath = runtime/
LogLevel = INFO
[server]
; debug or release
; debug模式下会自动添加跨域headers
RunMode = release
HttpPort = 8000
ReadTimeout = 60
WriteTimeout = 60
; use embed html static file
; 是否使用embed打包的静态资源
; 如果运行release打包后的应用,请注释这个设置。
; 如果取消这个注释,只会单独运行api服务,前端页面需要到web目录手动npm run dev, 运行前端服务
; EmbedHtml = disable
[database]
; 配置使用什么数据库,支持:mysql、sqlite、tidb
Type = mysql
User = root
Password = password
Host = 123.1.1.1
Name = db_name
Port = 3306
; -- 其他配置
; 表前缀
TablePrefix = message_
; -- 是否打开sql打印
; SqlDebug = enable
; 数据库连接是否开启ssl, value: [false | true]
Ssl = true
```
## 配置项说明
### [app] 应用配置
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| JwtSecret | JWT密钥,用于token生成 | message-nest |
| RuntimeRootPath | 运行时根路径(暂时无用) | runtime/ |
| LogLevel | 日志级别:DEBUG/INFO/ERROR | INFO |
### [server] 服务器配置
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| RunMode | 运行模式:debug/releasedebug模式会自动添加跨域 | release |
| HttpPort | HTTP服务端口 | 8000 |
| ReadTimeout | 读取超时时间(秒) | 60 |
| WriteTimeout | 写入超时时间(秒) | 60 |
| EmbedHtml | 是否使用embed打包的静态资源,注释则启用单应用模式 | - |
### [database] 数据库配置
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| Type | 数据库类型:mysql/sqlite/tidb | mysql |
| User | 数据库用户名 | - |
| Password | 数据库密码 | - |
| Host | 数据库主机地址 | - |
| Port | 数据库端口 | 3306 |
| Name | 数据库名称 | - |
| TablePrefix | 数据表前缀 | message_ |
| SqlDebug | 是否打印SQL,设置enable开启 | - |
| Ssl | 数据库连接是否开启SSL | false |
## Docker 环境变量
使用Docker部署时,可以通过环境变量进行配置:
| 变量 | 说明 |
|------|------|
| JWT_SECRET | jwt秘钥,可选,默认为message-nest |
| LOG_LEVEL | 日志等级,可选,默认为INFODEBUG/INFO/ERROR |
| RUN_MODE | 运行模式,可选,默认release,为debug将自动添加跨域 |
| DB_TYPE | 数据库类型,sqlite/mysql。默认为sqlite,存储路径为conf/database.db |
| MYSQL_HOST | mysql-hostDB_TYPE=mysql必填 |
| MYSQL_PORT | mysql端口,DB_TYPE=mysql必填 |
| MYSQL_USER | mysql用户名,DB_TYPE=mysql必填 |
| MYSQL_PASSWORD | mysql数据库密码,DB_TYPE=mysql必填 |
| MYSQL_DB | mysql数据库名字,DB_TYPE=mysql必填 |
| MYSQL_TABLE_PREFIX | mysql数据表前缀,DB_TYPE=mysql必填 |
| SSL | 是否开启SSL |
| SQL_DEBUG | 是否打印SQL,可选,默认关,设置enable为开启 |
## 配置示例
### 单应用模式(推荐)
```ini
[app]
JwtSecret = message-nest
LogLevel = INFO
[server]
RunMode = release
HttpPort = 8000
ReadTimeout = 60
WriteTimeout = 60
; 注释EmbedHtml,启用单应用模式
; EmbedHtml = disable
[database]
; 关闭SQL打印
; SqlDebug = enable
Type = mysql
User = root
Password = Aa123456
Host = vm.server
Port = 3308
Name = yourDbName
TablePrefix = message_
```
### 开发调试模式
```ini
[app]
JwtSecret = message-nest
LogLevel = INFO
[server]
; RunMode务必设置成debug,会自动添加跨域
RunMode = debug
HttpPort = 8000
ReadTimeout = 60
WriteTimeout = 60
; 取消EmbedHtml的注释(启用前后端分离),然后到web目录下面,npm run dev启动前端页面
EmbedHtml = disable
[database]
; 开启SQL打印
SqlDebug = enable
Type = mysql
User = root
Password = Aa123456
Host = vm.server
Port = 3308
Name = yourDbName
TablePrefix = message_
```
### SQLite 配置
```ini
[app]
JwtSecret = message-nest
LogLevel = INFO
[server]
RunMode = release
HttpPort = 8000
ReadTimeout = 60
WriteTimeout = 60
[database]
Type = sqlite
TablePrefix = message_
```
+98
View File
@@ -0,0 +1,98 @@
# EmbedHtml 配置说明
## 什么是 EmbedHtml
这个配置可以理解为单应用模式(或者前后端分离)的开关。
## 配置方式
### 方式一:单应用模式(推荐)
**注释 EmbedHtml 配置**
```ini
[server]
RunMode = release
HttpPort = 8000
ReadTimeout = 60
WriteTimeout = 60
; 注释EmbedHtml,启用单应用模式
; EmbedHtml = disable
```
**说明:**
- 启动go服务,会把web/dist目录下文件作为前端静态资源
- 如果目录下没有静态资源文件,需要到web目录下,执行 `npm run build` 构建生成
- 只需要运行一个服务即可访问完整功能
- 适合生产环境部署
**适用场景:**
- 使用 Release 打包的可执行文件
- Docker 部署
- 生产环境
### 方式二:前后端分离模式
**启用 EmbedHtml 配置**
```ini
[server]
RunMode = debug
HttpPort = 8000
ReadTimeout = 60
WriteTimeout = 60
; 取消注释,启用前后端分离
EmbedHtml = disable
```
**说明:**
- go服务启动时只会有API服务
- 需要到web目录下,执行 `npm run dev` 启动前端项目
- 访问前端项目提示的端口服务,一般是 `http://127.0.0.1:5173`
- 或者使用 `npm run build`,用Nginx部署前端
**适用场景:**
- 开发调试
- 需要修改前端代码
- 前后端独立部署
## 两种方式对比
| 特性 | 单应用模式 | 前后端分离模式 |
|------|-----------|--------------|
| 部署复杂度 | 简单,只需一个服务 | 复杂,需要两个服务 |
| 开发调试 | 不便,需要重新构建 | 方便,支持热更新 |
| 资源占用 | 较少 | 较多 |
| 适用环境 | 生产环境 | 开发环境 |
| 推荐指数 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
## 推荐方案
综合考虑下来,推荐直接使用以下方式:
1. **Release 打包执行文件** - 已内置页面静态资源,开箱即用
2. **Docker 环境变量部署** - 配置简单,一键启动
这两种方式都是单应用模式,只需运行一个服务即可。
## 常见问题
### Q: 为什么访问页面显示404?
A: 检查以下几点:
1. 如果是单应用模式,确保 `EmbedHtml` 已注释
2. 确保 `web/dist` 目录下有静态资源文件
3. 如果没有,执行 `cd web && npm run build` 构建
### Q: 开发时如何快速调试?
A:
1. 设置 `RunMode = debug`
2. 启用 `EmbedHtml = disable`
3. 启动后端:`go run main.go`
4. 启动前端:`cd web && npm run dev`
5. 访问前端提示的URL(通常是 http://127.0.0.1:5173
### Q: Docker 部署需要配置 EmbedHtml 吗?
A: 不需要。Docker 镜像已经内置了前端静态资源,默认就是单应用模式。
+77
View File
@@ -0,0 +1,77 @@
# 特色功能
## 核心特性
### 🔄 整合性
提供了多种消息推送方式,包括邮件、钉钉、企业微信等,方便你集中管理和定制通知。
### 🎨 自定义性
可以根据需求定制消息推送策略,满足不同场景的个性化需求。
### 🛠 开放性
易于扩展和集成新的消息通知服务,以适应未来的变化。
## 支持的推送方式
- **邮件发送** - 支持标准SMTP邮件发送
- **钉钉** - 支持钉钉机器人消息推送
- **企业微信** - 支持企业微信应用消息推送
- **微信测试公众号** - 支持微信测试公众号模板消息发送
- **自定义 Webhook** - 支持自定义的Webhook消息发送
- **自托管消息** - 可以将站点作为消息的接收方,登录站点查看消息
## 其他功能
### 定时任务
支持自定义的定时消息发送,可以设置定时推送任务。
### 数据统计
支持数据统计展示,可以查看消息发送情况和历史记录。
### 异步发送
支持异步消息发送,提高系统性能和响应速度。
### 日志管理
- 支持日志查看自动刷新
- 支持查看定时清理日志
- 支持登录日志记录
### 用户管理
- 支持用户密码设置
- 支持用户定时任务清理
- 支持更新定时时间
### 系统信息
- 支持系统信息展示
- 支持站点信息自定义
- 支持明暗主题切换设置
- 支持Cookies过期天数设置
### 数据库支持
- **SQLite** - 轻量级部署,无需额外数据库服务
- **MySQL 5.x / 8.x** - 支持主流MySQL版本
- **TiDB** - 支持分布式数据库TiDB
- 支持数据库SSL配置
### 部署方式
- **单应用打包** - 直接运行,无需部署前端页面
- **Docker 部署** - 支持从环境变量启动服务
- **Docker Compose** - 支持编排部署
- **前后端分离** - 支持独立部署前后端
### 界面特性
- **现代化UI** - 使用shadcn-vue组件,基于TailwindCSS
- **响应式设计** - 支持大中小屏自适应
- **单应用的HTML浏览器自动缓存** - 提高访问速度
+39
View File
@@ -0,0 +1,39 @@
# 介绍
Message Nest(信息巢)是一个灵活而强大的消息推送整合平台,旨在简化并自定义多种消息通知方式。
## 什么是 Message Nest
Message Nest 是一个拥有各种渠道信息方式的集合站点。如果你有很多消息推送方式,每次都需要调用各种接口去发送消息到各个渠道,或者不同的项目你都需要复制同样的发消息代码,这个项目可以帮你管理各种消息方式,并提供统一的发送API接入。
你可以自由组合各种消息渠道,一个API推送到各种渠道,帮你省去接入的繁琐步骤。
## 项目来由
自己常常写一些脚本需要消息推送,经常需要接入不同的消息发送,很不方便,于是就有了这个项目。
## 演示站点
访问 [演示站点](https://message-nest-demo-site.qwapi.eu.org/)(演示站点的服务器比较烂,见谅)
## 效果图
![演示效果](https://raw.githubusercontent.com/engigu/resources/refs/heads/images/CPT2508101507-1460x745.gif)
## 进度
项目还在不断更新中,欢迎大家提出各种建议。
关于日志,考虑到目前多数服务以收集控制台输出为主,暂时不支持写出日志文件。
## 致谢
该项目汲取了 [go-gin-example](https://github.com/eddycjy/go-gin-example) 项目的灵感,展示了 Go 和 Gin 在实际应用中的强大和多才多艺。
## 贡献
欢迎通过提交问题和提出改进建议。
## 许可证
[MIT License](https://github.com/engigu/Message-Push-Nest/blob/main/LICENSE)