05月05, 2025

把博客的评论系统迁移到waline

之前一直用的disqus,但是国内访问不了所以大部分时间都是无用状态。waline是公子的大作,打算迁移尝试一下。确实体验不错。下面记录下迁移过程。

安装

mkdir -p /opt/waline,然后pnpm i @waline/vercel。记得pnpm approve-builds,不然core-js-pure和sqlite3这两个依赖会安装不完全。

准备存储

我直接用的sqlite,简单方便。执行wget https://github.com/walinejs/waline/raw/refs/heads/main/assets/waline.sqlite,作为我们的DB。

配置服务启动

我用pm2进行node管理。执行pm2 startOrReload /opt/waline/pm2.json即可。配置如下:

  • {
  • "apps": [
  • {
  • "name": "waline",
  • "script": "node_modules/@waline/vercel/vanilla.js",
  • "cwd": "/opt/waline",
  • "exec_mode": "fork",
  • "max_memory_restart": "1G",
  • "autorestart": true,
  • "node_args": [],
  • "args": [],
  • "env": {
  • "SQLITE_PATH": "/opt/waline",
  • "JWT_TOKEN": "随便一个字符串",
  • "SECURE_DOMAINS": "fanzheng.org,debug.fanzheng.org,diary.fanzheng.org",
  • "SMTP_SERVICE": "QQ",
  • "SMTP_USER": "发信邮箱地址",
  • "SMTP_PASS": "发信邮箱密码",
  • "SITE_NAME": "FanZhengBlog",
  • "SITE_URL": "",
  • "AUTHOR_EMAIL": "自己邮箱地址"
  • }
  • }
  • ]
  • }
JSON

配置独立域名

文档上给的Nginx配置配上即可,我直接把三个博客的评论统一都用comment.fanzheng.org这个域名来承载,只启动一个waline服务。不过waline目前没有非常简单的办法修改端口,只能修改其他服务把端口让给它。

迁移旧评论数据

首先在disqus上把评论导出,不过disqus导出的评论基本上只有昵称、评论内容、URL这几个信息。

导出后用waline的迁移工具,生成一个csv文件。由于我是三个博客的数据,所以我把disqus导出的xml先手动合并了一下再交给这个迁移工具。csv文件可以直接用来导入到sqlite中,导入到wl_Comment表即可。

最后手动修改一下所有自己的评论的user_id字段为1(需要先打开waline的后台进行注册,首个注册的用户默认为管理员)。

插入waline脚本

firekylin的评论配置中插入waline的脚本。这里要注意,waline默认存储的path是不含域名的,只有pathname。我由于有多个博客,因此必须使用完整URL的形式。所以在waline的前端配置这里,path要改成window.location.origin+window.location.pathname(默认只有window.location.pathname)。

  • <head>
  • <!-- ... -->
  • <link
  • rel="stylesheet"
  • href="https://unpkg.com/@waline/client@v3/dist/waline.css"
  • />
  • <!-- ... -->
  • </head>
  • <body>
  • <!-- ... -->
  • <div id="waline"></div>
  • <script type="module">
  • import { init } from 'https://unpkg.com/@waline/client@v3/dist/waline.js';
  • init({
  • el: '#waline',
  • serverURL: 'https://comment.fanzheng.org',
  • path: window.location.origin+window.location.pathname,
  • });
  • </script>
  • </body>
HTML

旧数据调整

不过还有最后一个问题要解决,就是waline迁移工具生成的csv里的URL都是只有pathname的,需要手动修改一下。

根据我自己URL的特征,写个SQL处理一下:

  • UPDATE wl_Comment
  • SET url = 'https://fanzheng.org' || substr(url, 1)
  • WHERE url LIKE '/archives/%';
  • UPDATE wl_Comment
  • SET url = 'https://diary.fanzheng.org' || substr(url, 1)
  • WHERE url LIKE '/post/2%';
  • UPDATE wl_Comment
  • SET url = 'https://debug.fanzheng.org' || substr(url, 1)
  • WHERE url LIKE '/post/%';
SQL

最后把剩下的都逐个看一下,确认都是主域名的,统一手动加上即可。

本文链接:https://debug.fanzheng.org/post/ba-bo-ke-de-ping-lun-xi-tong-qian-yi-dao-waline.html

-- EOF --

Comments

Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v3.5.7