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 中配置数据库连接参数和邮件发送参数。

下载与安装

下载完整项目压缩包(已包含 templatesuploads 目录及示例数据库 SQL):

安装步骤:

  • ① 解压压缩包,上传全部目录到服务器项目根目录(templatesuploads 不可缺失)
  • ② 先导入 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