GoBlog 是一个单用户、多博客的 Go 博客平台:一个二进制、一个 SQLite 数据库,依赖极少。它内置 IndieWeb(IndieAuth、Micropub、Webmention)与 ActivityPub 联邦支持,可直接向 Mastodon 等 Fediverse 平台发文章,也支持 Bluesky/ATProto 同步链接。设计上主打 opt-in 功能——大多数功能默认关闭,按需开启。
一、项目官方信息
| 项目 | 信息 |
|---|---|
| GitHub 仓库 | https://github.com/jlelse/GoBlog |
| 官方文档 | https://docs.goblog.app |
| 开源协议 | MIT |
| 主要语言 | Go(约 95.3%) |
| Star 数 | 约 281 |
| 数据存储 | SQLite(FTS5 全文检索) |
核心理念:Markdown 优先(可选 YAML front matter)、无主题(通过配置/插件/自定义 CSS 定制)、Docker 友好、数据完全自有。
二、官方图片
GoBlog 仓库预览图:

三、环境要求
- Linux/macOS 服务器(或任意支持 Docker 的环境)。
- 直接运行二进制:无额外运行时依赖;从源码编译需 Go 工具链。
- Docker 部署:Docker 与 docker-compose。
- 数据库:内置 SQLite,无需单独安装数据库。
- 端口:默认 8080,需反向代理配置 HTTPS。
四、完整部署步骤
1. Docker 部署(推荐)
新建 docker-compose.yml:
services:
goblog:
container_name: goblog
image: ghcr.io/jlelse/goblog:latest
restart: unless-stopped
volumes:
- ./config:/app/config
- ./data:/app/data
ports:
- "8080:8080"
environment:
- TZ=Europe/Berlin
创建最小配置 ./config/config.yml:
server:
publicAddress: http://localhost:8080
启动:
docker-compose up -d
2. 从源码构建
git clone https://github.com/jlelse/GoBlog.git
cd GoBlog
go build -tags=linux,libsqlite3,sqlite_fts5,gomailnotpl -o GoBlog
mkdir -p config data
echo 'server:
publicAddress: http://localhost:8080' > config/config.yml
./GoBlog --config ./config/config.yml
3. 首次登录
- 首次启动日志会生成随机初始密码,形如:
Generated initial password for first-time setup. username=admin password=AbCdEfGhIjKlMnOpQrSt
- 浏览器打开
http://localhost:8080,访问/login,用admin和生成的密码登录。 - 进入
/settings修改密码。 - 进入
/editor开始写文章。
也可以在首次运行前直接设置凭据:
./GoBlog --config ./config/config.yml setup --username admin --password "your-secure-password"
4. 验证
访问首页确认博客正常;访问 /editor 发表一篇测试文章,确认内容可见、RSS/Atom feed 可订阅。
五、使用方法
数据存储
所有持久化数据都在 data 目录:
data/db.sqlite:SQLite 数据库;data/media/:上传的媒体文件(通过/m/访问);data/profileImage:头像。
务必备份
data目录。
核心功能
- Markdown 文章(YAML front matter);
- 一个安装下多博客;
- 分区(sections)、分类法(taxonomies)与自定义路径模板;
- 带实时预览和格式工具栏的 Web 编辑器;
- 媒体上传(可选 imgproxy 图片优化);
- SQLite FTS5 全文搜索;
- RSS、Atom、JSON feed、XML sitemap、robots.txt;
- 登录支持用户名密码 + 2FA(TOTP)、WebAuthn passkey、OIDC。
IndieWeb 与联邦
- IndieAuth:把博客当作自己的身份;
- Micropub:通过 API 创建/更新/删除文章;
- Webmention:自动收发 webmention;
- ActivityPub:发布到 Mastodon、Pleroma 等 Fediverse;
- Bluesky/ATProto:把链接同步到 Bluesky。
可选功能(按需开启)
评论(Webmention 或 ActivityPub)、Emoji 反应、全文搜索、相册、地图、Blogroll、统计图表、随机文章、历史上的今天、联系表单、文字转语音、通知(Ntfy/Telegram/Matrix)、短链、图片优化、Tor 隐藏服务、IndexNow、私有模式、公告横幅。
管理路径与 CLI
| 路径 | 用途 |
|---|---|
/login /logout |
登录认证 |
/settings |
用户与博客设置 |
/editor |
文章编辑器 |
/webmention |
管理 webmention |
/comment |
管理评论 |
CLI 命令:
./GoBlog --config ./config/config.yml # 启动服务
./GoBlog --config ./config/config.yml setup --username admin --password "pass" # 设置凭据
./GoBlog --config ./config/config.yml healthcheck # 健康检查
./GoBlog --config ./config/config.yml check --ignore-403 # 检查外部链接
./GoBlog --config ./config/config.yml export ./exported # 导出文章
六、常见问题 FAQ
1. 首次启动后不知道密码?
GoBlog 第一次启动会在日志里打印随机初始密码,形如 Generated initial password...。用 docker logs goblog 或控制台输出查看;也可提前用 setup --username --password 命令设置。
2. 数据备份怎么做?
所有数据都在 data 目录(含 SQLite 数据库与上传媒体),直接备份整个 data 目录即可。
3. 如何配置 HTTPS?
GoBlog 本身不终止 TLS,建议在前面套 Nginx/Caddy 反向代理,并把 publicAddress 改成对外的 https 地址。
4. 想发联邦文章到 Mastodon? 在设置里启用 ActivityPub,完成联邦账号绑定后,发布文章会同步到 Fediverse;Bluesky 走 ATProto 同步链接。
5. 没有主题怎么办? GoBlog 刻意不做主题,通过配置、插件和自定义 CSS 定制外观;内置插件含自定义 CSS、Webrings、AI 摘要等。
6. 如何升级?
Docker 部署拉取新镜像并重启即可;源码构建重新 go build。数据都在 data 目录,升级不丢数据。
七、跳转链接
- GitHub 仓库:https://github.com/jlelse/GoBlog
- 官方文档:https://docs.goblog.app
- 示例配置:https://github.com/jlelse/GoBlog/blob/main/example-config.yml
- Matrix 社区:https://matrix.to/#/#goblog:matrix.org