给博客安个家:本地部署Twikoo评论系统全纪录
🌟 写在前面:为什么非要折腾评论系统?
如果你看过我上一篇关于从Halo换到Hexo的文章,大概知道我是个什么样的博主了。
射手座,爱折腾,总觉得“太舒服的地方待不住”。博客从动态换到静态,从有服务器变成没服务器,一切都挺好——除了一个问题:没有评论区了。
静态博客就是这样,干净是真干净,寂寞也是真寂寞。写完一篇文章,发出去,然后就没了。不知道有没有人看过,不知道人家看完想说什么,像对着空屋子说话。
有人会说:可以用第三方评论啊,Disqus、 utterances、giscus…… 我都试过。Disqus太臃肿,还带广告;utterances依赖GitHub Issues,国内访问有时抽风;giscus不错,但毕竟数据在GitHub上,总有一种“寄人篱下”的感觉。
作为一个在广东长大的孩子,我骨子里有点“家己人”的情结——自己的东西,最好放在自己家里。
于是盯上了Twikoo。
🤔 第一回合:Twikoo是什么?为什么选它?
Twikoo,一个简洁、安全、免费的静态网站评论系统。说来也巧,这名字听着像“Twi”(Twitter)加“koo”(酷),但用起来的感觉,更像“踢开”——踢开那些复杂臃肿的评论方案,回归简单。
它有几个地方特别打动我:
✨ 优点一:数据自己管
Twikoo支持多种部署方式:云开发、Vercel、私有部署、Docker…… 我选的是私有化部署,把评论数据放在自己的服务器上。服务器我有啊,虽然配置不高,但跑个评论系统绰绰有余。数据自主可控,不用担心厂商哪天政策变动、免费额度用完。
✨ 优点二:轻量干净
Twikoo的页面风格简洁,没有多余的东西。支持回复、点赞、表情、图片粘贴,该有的都有,不该有的都没有。访客在昵称栏输入QQ号,会自动补全QQ昵称和邮箱,这个细节挺贴心的。
✨ 优点三:管理方便
内嵌式管理面板,密码登录就能查看评论、隐藏、删除、修改配置。还支持邮件通知、微信提醒(通过Server酱)、QQ提醒(通过Qmsg酱)。有人评论了,我能第一时间知道。
✨ 缺点嘛……不支持IE
这年头谁还用IE?不算缺点。
🛠️ 第二回合:部署前要准备什么?
动手之前,先把家伙事儿备齐:
- 一台服务器(我用的就是之前跑Halo那台,CentOS 7.x)
- 一个域名(最好给Twikoo单独配个二级域名,比如
twikoo.yourdomain.com) - Docker环境(没有的话要先装)
- 一点点耐心(射手座最不缺的就是这个)
📦 第三回合:开始部署(详细步骤版)
第一步:解析二级域名
给Twikoo安排一个专属门牌号。进入你的域名DNS管理后台,添加一条A记录:
- 记录类型:A
- 主机记录:
twikoo(或其他你喜欢的二级域名前缀) - 记录值:你的服务器IP地址
解析生效后,可以用ping twikoo.yourdomain.com验证一下。
第二步:用Docker拉起Twikoo容器
方案一:命令行部署(推荐)
登录服务器,执行以下命令:
bash
1 | docker run --name twikoo -e TWIKOO_THROTTLE=1000 -p 8181:8080 -v ${PWD}/data:/app/data -d imaegoo/twikoo |
这条命令做了几件事:
--name twikoo:给容器起个名字-e TWIKOO_THROTTLE=1000:设置每个IP每10分钟最多发表1000条评论(防刷)-p 8181:8080:将服务器的8181端口映射到容器的8080端口-v ${PWD}/data:/app/data:把数据挂载出来,容器删了数据还在-d imaegoo/twikoo:后台运行,使用官方镜像
方案二:宝塔面板部署(可视化)
如果你用的是宝塔面板(9.2.0及以上版本),更简单:
- 登录宝塔,左侧导航栏点击Docker,先安装Docker服务(如果没装的话)
- 安装完成后,在应用商店中找到Twikoo
- 点击安装,配置域名、端口等基本信息
- 如果填写了域名,宝塔会自动帮你配置反向代理;如果不填域名,需要勾选“允许外部访问”,然后通过IP+端口访问
第三步:验证容器是否运行
命令行执行docker ps,看到twikoo在列表里,说明运行成功。
浏览器访问http://你的服务器IP:8181,如果看到以下输出,代表Twikoo部署完成:
text
1 | Twikoo 云函数运行正常 |
第四步:配置Nginx反向代理
直接用IP加端口访问,既不优雅也不安全。通过Nginx反向代理,可以实现:
- 用域名访问(如
twikoo.yourdomain.com) - 后续配置HTTPS
- 隐藏真实端口,提高安全性
Nginx配置示例:
nginx
1 | upstream twikoo { |
配置好后,重启Nginx。
第五步:部署SSL证书
为了保证数据传输安全,强烈建议配置HTTPS。
宝塔用户:在反向代理站点中,点击“SSL”选项卡,选择“Let‘s Encrypt”免费证书,开启“强制HTTPS”即可。
命令行用户:可以用Certbot申请证书,然后修改Nginx配置:
nginx
1 | server { |
配置完成后,访问https://twikoo.yourdomain.com,看到“Twikoo云函数运行正常”,说明HTTPS配置成功。
🎨 第四回合:Hexo前端配置
Twikoo服务端跑起来了,接下来要让博客前端能调用它。
1. 在head中引入Twikoo脚本
打开Hexo主题的配置文件(不同主题位置不同,我用的主题是在layout/_partial/head.ejs),添加:
html
1 | <script src="https://cdn.jsdelivr.net/npm/twikoo@1.6.41/dist/twikoo.all.min.js"></script> |
版本号可以用最新的,我用的1.6.41。
2. 在文章页添加评论区容器
在文章页模板的合适位置(比如文章末尾),添加:
html
1 | <div id="twikoo"></div> |
3. 初始化Twikoo
在页面底部添加初始化脚本:
html
1 | <script> |
不同主题的集成方式略有差异。如果你的主题支持自定义评论(比如Volantis、Icarus等),通常在主题配置文件中直接填envId就行。
4. 重新生成并部署
bash
1 | hexo clean |
🔧 第五回合:后台管理与配置
评论框出来了,现在要进后台设置一下。
首次登录
在评论区右下角,会有一个蓝色的小齿轮图标,点击它。第一次进入会让你设置管理员密码,请务必记住这个密码,忘了会比较麻烦。
登录后,你就可以:
配置邮件通知
在管理面板的“通知”设置里,可以配置SMTP邮箱。有人评论时,你会收到邮件提醒。如果用QQ邮箱,需要获取授权码而不是直接用密码。
配置反垃圾
Twikoo支持腾讯云内容安全,可以用来过滤垃圾评论。腾讯云提供1个月免费试用,到期后按量付费,25元/万条。注意不要买套餐,对个人博客来说太浪费了。
个性化设置
你还可以自定义:
- 评论框背景图片
- “博主”标识文字
- 通知邮件模板
- 表情列表
- 必填项(昵称/邮箱/网址)
❓ 第六回合:常见问题
Q:容器重启后数据会丢吗?
A:不会。因为我们挂载了-v ${PWD}/data:/app/data,数据保存在宿主机的data文件夹里。只要这个文件夹在,重新运行容器数据依然保留。
Q:为什么用私有化部署而不是云开发?
A:云开发有免费额度限制(比如腾讯云每日读取次数限制),超出要付费。私有化部署只要服务器不宕机就永久可用,数据完全自主可控。
Q:以后想升级Twikoo怎么办?
A:用Docker的话,拉取新镜像,重新运行容器就行。数据卷挂载着,升级不会丢数据。我之前用Node私有部署,几年后想升级,因为node版本太老各种报错,换了Docker真香。
Q:忘记管理员密码怎么办?
A:可以查看Twikoo官方文档的解决方案,或者在服务器上找找配置文件(数据卷里的data文件夹)。
🌈 最后想说
折腾了两天,终于把Twikoo跑起来了。
现在每篇文章下面,都有一个小小的评论区。像给每篇文字开了一扇窗,等着有缘人路过时,探头进来说句话。
我知道静态博客配评论系统,多少有点“逆潮流”。现在谁还在博客评论区聊天啊?想聊天的都去微博、去小红书、去微信群了。
但我还是喜欢这种感觉——你在我的地盘上留言,我在我的地盘上回复。没有算法推荐,没有信息流干扰,就是两个人,隔着屏幕,说几句话。
像小时候在老家的院子里,有人路过,喊一声“食咗饭未”,你应一声“食咗,你咧”。
简单,但真实。
如果你也折腾了Twikoo,遇到什么问题,或者有什么心得,欢迎在下面留言——当然,前提是你已经折腾好了评论区,才能在这篇文章下面留言。这个套娃还挺有意思的。
Damon_Zhang
2026年3月12日
广东,窗外有风,适合折腾代码




