如果你正在为静态博客寻找一个功能齐全且免费的评论系统,那么基于 Vercel 和 Waline 的方案值得一试。本文将手把手带你完成从零开始,在 Vercel 上免费部署 Waline 评论服务的全过程。
准备工作与项目初始化
开始前,你可以先浏览 Waline 官方指南 以获得初步了解。

首先,你需要一个 Vercel 账户。如果尚未注册,可以直接使用 GitHub 或 Google 账号快捷登录,非常方便。
登录后,访问 Waline 的部署页面,点击醒目的 “Deploy” 按钮。Vercel 会引导你创建一个新的 GitHub 仓库来存放项目代码。

如上图所示,仓库名称可以自定义,例如 comment-waline,然后点击 Create。这个操作会将 Waline 的官方仓库克隆到你自己的 GitHub 账户下。

克隆过程完成后,Vercel 会自动开始部署。

初次部署后,你可能会看到如上图所示的错误提示。别担心,这通常是因为我们还没有配置数据库。我们稍后会解决它。先进入项目的 Dashboard 面板。

现在,一个名为 comment-waline 的新项目已经在你的 Vercel 账户中创建好了。
配置自定义域名
为了让评论服务有一个固定的访问地址,我们为它配置一个自定义域名。进入项目设置中的 “Domains” 页面。

这里,我使用了一个子域名 comment.starttech.dpdns.org。你需要在输入框中填入你自己的域名。


点击 “Save” 保存。接下来,Vercel 会要求你验证域名所有权。

根据提示,你需要在你域名的 DNS 服务商(例如 Cloudflare)处,添加一条指定的 TXT 记录。

添加完 DNS 记录后,返回 Vercel 页面点击刷新,并等待全球 DNS 生效。

请注意:当域名验证成功后,用于验证的这条 TXT 记录就可以从 DNS 配置中删除了。

验证成功后,记得删除之前在 Cloudflare 添加的临时 TXT 记录,并确保有一条指向 Vercel 的 CNAME 记录(例如将 comment 指向 Vercel 分配的域名)。

域名配置完成后,尝试访问你的自定义域名,例如 https://comment.starttech.dpdns.org/。
解决数据库依赖问题
此时访问,你很可能会看到一个 500 错误页面。

这个错误明确告诉我们:Waline 需要数据库来存储评论数据,而我们还没有配置。接下来,我们就在 Vercel 上创建一个免费的数据库。
进入你项目的 “Storage” 页面,点击 “Connect to a Database”。

在数据库市场中选择 “Neon”(一个免费的 Serverless PostgreSQL 服务)。

按照向导进行配置,区域可以选择离你较近的,认证(Auth)可以先保持关闭,计划选择 “Free” 免费 tier。


你可以修改资源名称,然后点击 “Create” 开始创建。

数据库创建完成后,会跳转到指南页面。我们点击 “Open in Neon” 来管理这个数据库。

进入 Neon 控制台后,切换到 “SQL Editor” 标签页。

我们需要为 Waline 初始化数据库表结构。将 Waline 官方提供的 SQL 文件内容粘贴到编辑器中执行。SQL 文件地址是:https://github.com/walinejs/waline/blob/main/assets/waline.pgsql
执行成功后,你会看到相应的成功提示。

重新部署并连接数据库
数据库准备好后,我们需要让 Vercel 项目感知到它。回到 Vercel 项目的 “Deployments” 页面。

找到最新的那次部署记录,点击右侧的菜单,选择 “Redeploy”(重新部署)。

在弹窗中确认环境为 Production,然后再次点击 “Redeploy”。

Vercel 会开始一次新的构建部署。

等待状态变为 “Ready”,即表示部署完成。

部署成功后,再次访问你的域名。如果依然报错,可能是数据库连接还未生效。我们可以查看部署日志来确认。

日志中的错误 “No valid storage found” 证实了这一点:项目还没有与刚才创建的数据库建立连接。
我们需要手动连接它们。再次进入项目的 “Storage” 页面,现在你应该能看到我们创建的 Neon 数据库,点击其旁边的 “Connect” 按钮。

在配置弹窗中,选择环境(通常全选),然后点击 “Connect”。

连接成功后,Vercel 会自动向项目中注入一系列数据库环境变量。你可以在 “Settings” -> “Environment Variables” 中看到它们。

关键一步:环境变量添加后,必须再次触发一次重新部署,新的配置才会生效。重复上面的步骤,对最新的部署记录再次执行 “Redeploy”。

等待这次重新部署完成。
测试与验证
部署成功后,访问你的域名,现在应该能看到 Waline 评论系统的前端界面了!

让我们做一个简单的测试。填写昵称、邮箱(仅用于显示 Gravatar 头像)和评论内容,然后提交。

评论成功显示!接下来,我们去数据库验证数据是否真的被存储了。回到 Neon 控制台的 “Tables” 部分,查看 wl_comment 表。

可以看到,我们刚刚提交的测试评论已经安静地躺在了数据库里。这意味着整个系统——从前端评论提交,到后端 Serverless Function 处理,再到 PostgreSQL 数据库存储——已经完全打通并正常工作。
集成到 Hexo 等静态博客
现在,你的 Waline 评论服务已经可以独立运行。要把它集成到 Hexo 博客中,只需在主题配置文件中指定服务端地址。
以下是一个 Hexo 主题(如 Butterfly)中配置 Waline 的示例:
comments:
# 最多两个评论系统,第一个为默认显示
# 如果不需要评论,请留空
use: Waline
# 在按钮旁显示评论系统名称
text: true
# 懒加载:当评论元素进入浏览器视口时再加载评论系统。
# 如果设为 true,评论计数将无效
lazyload: true
# 在文章顶部图片中显示评论数
count: false
# 在主页显示评论数
card_post_count: false
waline:
# 这里填入你刚刚配置的 Waline 服务端地址
serverURL: https://comment.starttech.dpdns.org
# 其他可选配置如语言、表情等可根据需要添加
将 serverURL 的值替换为你自己的域名即可。
至此,一个完全免费、功能完整的博客评论系统就部署完成了。它利用了 Vercel 的 Serverless 平台和 Neon 的免费 PostgreSQL 数据库服务,无需担心服务器运维和基础成本。如果你在部署过程中遇到其他问题,可以到技术社区如 云栈社区 的相应板块交流讨论。