Disqus-Proxy 配置说明

2017.06.01

说在前面

如果你对这个项目的思路感兴趣,可以参考这篇文章:
解决 Disqus 在国内不能访问的方案

项目地址:
Disqus-Proxy

npm package 

准备

  • 一台国外的 VPS 服务器
  • 一点点的 HTML 基本知识

安装

Hexo博客目录执行

1
npm install hexo-disqus-proxy --save

前端配置

在你的 Hexo 博客目录中修改 _config.yml 文件
添加如下配置:(注意缩进和空格)

1
2
3
4
5
6
7
disqus_proxy:
shortname: ciqu
username: ciqu
host: disqus-proxy.ycwalker.com
port: 443
admin_avatar: /avatars/admin-avatar.jpg
default_avatar: /avatars/default-avatar.png

其中:

  • shortname 是你的 website 的 shortname 名称 比如在你的 disqus 安装代码中 有这样一句脚本:
    s.src = 'https://test-eo9kkdlcze.disqus.com/embed.js';
    那么你的 disqus 的 shortname 就是 test-eo9kkdlcze
    
  • username 是你的 disqus 用户名,即评论时候留下的名字,用来区别 disqus-proxy 的评论头像显示
  • host是你启用 disqus 代理的 VPS 的域名
  • port是 VPS 服务器启用 disqus 代理的端口,需要与之后设置的后端一致
  • default_avataradmin_avatar 分别是默认头像和管理员头像的路径。例如在 source 目录下建立 avatars 目录,放入两个头像,在这里设置成绝对路径。如果不设置,则为默认头像。

关键的一步

disqus的官方配置中,我们需要在页面合适位置添加一个 <div id="disqus_thread"></div> 作为占位符,
hexo-disqus-proxy 插件并不能知道在页面的哪个位置插入这个标签比较合适,所以这个需要额外配置一下:

情况一

如果你本身用的主题已经支持 disqus 的配置,那么灰常爽,你只需要正常启用主题的 disqus 评论,插件就会自动检测并合适的覆盖,
这是最常见的情况,肯定是最吼的。

情况二

在你写的 markdown 文件底部插入 <div id="disqus_thread"></div>。这样评论框位置会位于文章的下方,并且大小能被外部元素所约束,不会乱跑。
什么,markdown也能插入 HTML 标签?

嗯是的。

情况三

稍微懂一点点 hexo 的基本知识,自己改主题。大概的思路是,在 Hexo 渲染的过程中,把 <div id="disqus_thread"></div> 加在主题目录下的 layout 目录中
关于博文页面的模板中的合适的位置就行了。

后端配置

后端使用 Node.js,需要Node.js 版本 7.6 以上。

在服务器上 clone 代码:

1
git clone https://github.com/ciqulover/disqus-proxy

安装依赖

只需要安装后端的依赖

1
2
3
npm i --production
// 或者
yarn install --production

配置 server 目录下的config.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
module.exports = {
// 服务端端口,需要与 disqus-proxy 前端设置一致
port: 5509,
// 你的 diqus secret key
api_secret: 'your secret key',
// 你的 website 的 shortname 名称 比如在你的 disqus 安装代码中 有这样一句脚本:
//
// 那么你的 disqus 的 shortname 就是 test-eo9kkdlcze
shortname: 'ciqu',
// 服务端 socks5 代理转发,便于在本地测试,生产环境通常为 null
// socks5Proxy: {
// host: 'localhost',
// port: 1086
// },
socks5Proxy: null,
// 日志输出位置, 输出到文件或控制台 'file' | 'console'
log: 'console'
}

获取 api-secret

api-secret 需要你在 disqus 的官方网站上开启 API 权限,申请成功后会得到这个秘钥。

并且需要在后台的 Settings => Community 里开启访客评论

启动

1
2
cd server
node index.js

推荐用 pm2 在生产环境启动,否则你断开 ssh,node 进程就终止了

1
2
npm install pm2 -g
pm2 start index.js

如果你在配置文件中选择 log 类型为file, 那么输出的日志文件将在默认为 server 目录下的disqus-proxy.log

Done !