本篇文章基于Butterfly主题,如果你没有使用此主题,请参考 Artalk官方教程


前言

最近想着博客里用的Valine评论系统有些难受(无法上传图片、使用LeanCloud),于是在一番寻找之后发现了  Artalk评论系统 ,非常符合我的要求awa

Artalk 是一款简洁的自托管评论系统,你可以在服务器上轻松部署并置入前端页面中。
来到你的博客,或是任意位置,放置 Artalk 评论框,让页面具备丰富的社会化功能。——Artalk官方介绍

亮点

  1. 自托管评论系统,不必担心图床问题。
  2. 安全性好,数据全部在自己服务器里。
  3. 轻量而强大
  4. 部署简单
  5. 带有创新性的”通知中心“,可直接验证管理员身份进行管理。

部署

为了方便使用了直接部署方式,除此之外你也可以尝试Docker部署等方式

准备程序

获取程序文件

前往Github Release下载对应操作系统的压缩包

准备程序目录

我强烈建议你为程序单独准备一个工作目录,以便区分。我选择了/opt/artalk目录

1
2
mkdir /opt/artalk
cd /opt/artalk

解压压缩包

1
tar -zxvf 下载的压缩包.tar.gz

调整后端配置文件

Artalk默认带有一份配置文件artalk.yml,我们直接修改即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
host: "0.0.0.0"  #监听的地址,若不希望全局暴露给外网,请改为127.0.0.1

port: 23366 #监听的端口,默认为23366

app_key: " " #填入任意字符作为密钥

locale: "zh-CN" #语言

timezone: "Asia/Shanghai" #时区

site_default: "Blog" #任意字符,用于设置默认站点

trusted_domains: #可信域名,用于防止恶意调用
- "http://域名1.com"
- "https://www.域名2.com:81" #若网站是带端口访问的,端口号也要写上哦。
- "........"
ssl: #SSL连接相关配置
enabled: false #建议不要使用这里的ssl,博主在配置后一直无法启动,需要ssl连接请参考下方Nginx反向代理

填写完这几项后后端基本配置就已完成,其他配置项可前往「管理面版」进行调整,更加方便。

前端配置

Butterfly主题已经内置了Artalk,只需进行简单的配置即可。

Butterfly Config.yml:

1
2
3
4
5
6
7
comments:
use: Artalk
artalk:
server: 你的Artalk地址(例如http://artalk.website.com:23366
site: 之前artalk.yml里的site
visitor: false
option:

在Hexo根目录运行 hexo d -g 重新渲染及部署页面

测试运行

在Artalk目录下执行 ./artalk server 即可启动,如运行结果如下图且无任何错误报告即可进行下一步。

进程守护

若要稳定使用,我们不可能一直开着终端,而且每次重启后还得手动启动,这时候就需要systemd来实现持久化运行了。

配置service文件

sudo vim /etc/systemd/system/artalk.service
填入以下内容

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Artalk
After=network.target remote-fs.target nss-lookup.target
[Service]
User=root
ExecStart=<Artalk 执行文件绝对路径> server -w <工作目录绝对路径> -c <配置文件相对于工作目录路径>
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-abnormal RestartSec=5s
[Install]
WantedBy=multi-user.target
  • 更新 systemd 配置: systemctl daemon-reload
  • 设置开机启动: systemctl enable artalk
  • Artalk?启动!: systemctl start artalk
  • 停止: systemctl stop artalk
  • 查看状态: systemctl status artalk

Nginx反向代理

将Artalk反向代理到其他端口并开启SSL,我使用了nginx。

假定:

  • 你要代理至 https/http ://artalk.website.com
  • Artalk本地地址: http://localhost:23366

为保证安全性,请将Artalk配置文件中的 host 配置修改为 host: "127.0.0.1"

新建站点配置文件: sudo vim /etc/nginx/sites-available/artalk.website.com

填入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server { 
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
server_name artalk.your_domain.com;

# SSL配置
ssl_certificate 服务器证书位置;
ssl_certificate_key 服务器私钥位置;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;

# 反代相关配置
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:23366/;
}
}

重启Nginx:

1
systemctl restart nginx

Pjax下的错误修复

很重要,具体看 这篇文章


后记

关于错误

我在搞这评论系统时,有一个问题一直令我头痛不已。就是

Artalk Error 404

网上搜来搜去都找不到问题解决方案,直到我在看F12调试界面的404请求后结合主题配置文件后才发现问题根源: 主题配置文件中serversite 的位置刚好被我搞反了。看到这低级的错误后我自己都想笑,最后总结出: 干什么事都一定要 细心,细心,再细心 ,不要想当然的填写信息,至少多对比下文档吧~

几天后的补充

若评论区一直是空白,请检查site中是否有空格,我之前设置为Chen's Blog就无法显示,更改为Blog就好了。

十几天后的补充

Pjax搞人心态啊啊啊啊

使用体验

基本就一直用它了,非常好的体验,支持的功能也多,前景非常不错的自托管评论系统。