twikoo评论系统早期基于腾讯云云开发CloudBase,部署使用很方便。不久云开发取消了免费套餐,最便宜的套餐19.9元/月,为了twikoo,使用这个收费套餐完全没必要。
twikoo官网上有详细的私有部署方法。主要是vercel部署,docker部署以及服务器直接部署。这里记录下我的经验和看法。
docker部署以及服务器直接部署
这两种方式,其实是一种,即将twikoo服务及数据都保存在自己的服务器上,数据安全自主可控。具体方法就不展开了,twikoo官网有,这里记录三个要点:
- 如果博客站点开启了https,twikoo也需要开启https,否则会报错,获取不到评论数据(twikoo直接使用ip加端口方式使用会出现这个问题,见下图)。我的做法是给私有部署的twikoo服务套上CDN,绑定域名,然后在CDN里绑定SSL证书,以启用https访问。
- 跨域问题。twikoo绑定域名以后,嵌入博客,因为不同域名,会出现跨域问题,获取不到评论数据,无法使用。因为我使用了CDN,解决方法是在CDN配置里,HTTP响应头配置添加Access-Control-Allow-Origin:*,允许被所有域请求。当然也可以添加对应的IP或者域名,只允许指定的地址访问使用twikoo服务。
- 数据迁移。twikoo服务搭建好以后,可以把云开发里的数据完全无缝迁移过来。腾讯云云开发数据库里保存的数据格式是.json的,包括评论(comment),还有设置(config),以及浏览量(counter)这三个。可以直接导出使用。私有部署的twikoo数据存储在./data/文件夹下,数据名称为db.json.0,其实也是.json格式的。把上述三个从云开发导出的.json数据按照这样的方式命名,然后上传覆盖掉./data/下的这三个数据即可,db.json.0对应评论数据(comment),db.json.1对应是twikoo设置数据(config),db.json.2(counter)对应浏览量数据。
vercel部署
vercel部署是使用MongoDB提供的免费数据库以及vercel提供的severless构建。MongoDB免费数据库可以选择google,aws,azure三者之一的服务器,地域可以选择中国香港。(国内访问速度影响不大,可能选择美国东海岸国内访问速度更好。–未经测试。)vercel服务也有地域可供选择,中国香港,或者美国东海岸比较适合国内访问。
twikoo部署好以后,vercel需要绑定自己的域名,国内才能访问。如果有国内备案的域名,可以给vercel套上国内CDN。我的这个hexo博客使用vercel构建,即用上了国内CDN,速度还不错。至于twikoo评论,套上国内CDN,速度可能不会有很明显的改善(需要从MongoDB读取数据)。
将原本云开发,数据库里的comment数据导出,然后在新部署的twikoo后台导入这些评论即可。
vercel及MongoDB提供的免费服务应该还是可靠的(反面教材腾讯云就不说了),所以将twikoo托管到vercel是个不错的选择。缺陷是国内访问速度不太理想。