MiniWeb 系统说明
一个基于 Golang 构建、开箱即用的轻量级博客系统
MiniWeb 是什么? 💡
MiniWeb 是一个完全使用 Golang 标准库 net/http 从零构建的轻量级博客系统。它以内置模板引擎渲染前端、PostgreSQL 存储数据,通过 embed 将模板与静态资源全部打包进单个二进制文件,实现真正的"单文件部署"。无需 Node、无需 Nginx 反代(也可选),下载即可运行。
核心技术架构
Golang
PostgreSQL
HTML5
CSS3
JavaScript
embed 单文件部署
后端使用 Go 标准库,数据库使用 PostgreSQL,前端采用原生 HTML/CSS/JavaScript。所有页面模板与静态资源在编译时通过 embed 嵌入二进制,运行时零外部依赖。
主要功能特性
- 📝 文章发布、编辑与软删除
- 🗂 文章分类(Blok)与时间轴归档
- 💬 评论系统(按 IP 同一天只能评论一条)
- 🔍 全站文章搜索
- 📥 WordPress / Typecho / Z-Blog 文章导入
- 🤖 自动生成 robots.txt 与 sitemap.xml(SEO 友好)
- ⏰ 定时发送邮箱:按设定时间向多个收件人推送文章
- 📱 响应式设计,自适应移动端
定时发送邮箱 ⏰📧
系统内置独立的定时邮件推送任务,可将文章在指定时间自动通过邮件发送给订阅者,无需人工干预。
- 🕕 定时触发:后台定时任务每天固定两个时刻(凌晨 6:00 与晚上 18:00)扫描一次数据库,命中"已启用定时发送 + 到达设定时间 + 尚未发送"的文章即自动群发。
- 📨 多个收件邮箱:每篇文章可配置多个收件人,支持使用
,、;、空格或中文字符,、;分隔,系统会自动去重,一次向全部收件人发送。 - ✅ 防重复发送:发送成功后自动标记
email_sent=1,相同文章不会重复推送,保证每条内容只投递一次。 - 🔧 SMTP 配置:通过
SMTP_SERVER/SMTP_PORT/SMTP_USERNAME/SMTP_PASSWORD/SMTP_FROM环境变量(或service/all/const.go)配置发件服务,兼容 QQ、163 等各类邮箱授权码登录。 - 📝 邮件内容:主题自动带
【定时推送】前缀并显示文章标题,正文包含标题、发布时间与完整文章内容,末尾附"来自 MiniWeb 定时发送"标识。
使用方式:撰写文章时在"收件邮箱"字段填写一个或多个目标地址,并将文章的"发布时间(date)"设为期望推送的时刻、启用定时发送开关即可;系统在到达设定时间后的最近一次固定时刻自动完成投递。
访问与权限机制
- 🔓 无需用户登录:系统不提供注册 / 登录体系,任何人都可以直接浏览文章与发表评论,没有用户账号概念。
- 🔑 编辑 / 删除仅需密钥:文章的编辑与删除接口受"编辑密钥"保护,访问
/edit等管理页面时只需输入正确的密钥目录(编辑密钥)即可操作,无需登录账号。 - 🚫 评论按 IP 同日限流:评论接口会对访客 IP 进行过滤与限制,同一个 IP 在一天内只能成功评论一条,有效防止刷屏与垃圾评论。
这种设计让博客保持极简:读者无需注册即可互动,站长只需保管好编辑密钥即可安全管理内容,兼顾轻量与防滥用。
配置说明
- //(安装本系统 需要上传所以目录文件到项目根目录下,templates & uploads 目录不可缺少对应目录和文件)
- // 安装后直接访问 http://你的域名/GetInit 执行初始化SQL
- // 需要在 /service/all/const.go 中配置数据库连接参数和邮件发送参数 ***
- // 配置完成后 需要终端CMD 运行(打包命令)自动生成 miniweb-golang-linux 文件,并放置服务器且重启服务
/service/all/const.go 中配置数据库连接参数和邮件发送参数。
下载与安装
下载完整项目压缩包(已包含 templates 与 uploads 目录及示例数据库 SQL):
安装步骤:
- ① 解压压缩包,上传全部目录到服务器项目根目录(
templates与uploads不可缺失) - ② 先导入
uploads/miniweb_pgsql.sql初始化数据库表结构,或者访问接口http://www.xxx.com/GetInit一键初始化数据库 - ③ 配置数据库连接信息与端口(见项目内
all配置) - ④ 启动程序:
./miniweb-golang-linux(Linux)或对应可执行文件 - ⑤ 访问
/GetInit执行初始化 SQL,随后打开首页即可使用
目录结构说明
main.go—— 程序主入口,注册路由与静态资源service/—— 业务逻辑、数据库查询与 API 接口templates/default/—— 页面模板与静态资源(CSS/JS)uploads/—— 上传文件、数据库 SQL 与打包下载文件
如需二次开发,主要页面模板位于 templates/default/ 下,页面路由与 SEO 配置集中在 service/interface/router.go。