Loading...

文章背景图

GoBlog:Go 单文件二进制博客系统部署与使用指南

2026-10-27
0
- 字
- 分钟
|

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 仓库预览图:

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. 首次登录

  1. 首次启动日志会生成随机初始密码,形如:
Generated initial password for first-time setup. username=admin password=AbCdEfGhIjKlMnOpQrSt
  1. 浏览器打开 http://localhost:8080,访问 /login,用 admin 和生成的密码登录。
  2. 进入 /settings 修改密码。
  3. 进入 /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
评论交流

文章目录