本文最后更新于 2024-03-27,文章内容可能已经过时。

阅读本文前,请确保:

  1. 你已经安装好Artalk后端
  2. 你已经完成Artalk前端引入
  3. 一个流畅的网络(错误/不详细的地方可能需要去issue搜搜看 or 联系我)
  4. 明确Artalk的配置文件artalk.yml

Lets Go!

开始-设置你的站点!

当你成功安装Artalk,创建管理员账户并登录后,你会看到:
image1.png
当然,这时候只有一个Default Site!
你需要单击右上角的小小加号添加站点
image2.png
站点名是你需要在前端

Artalk.init({
	el: '#Comments', // 绑定元素的 
	Selector pageKey: '/post/1', // 固定链接 (留空自动获取)
	pageTitle: '关于引入 Artalk 的这档子事', // 页面标题 (留空自动获取)
	server: 'http://your_domain', // 后端地址 
	site: '博客', // 你的站点名 })

site中填入的部分。
至此,你的站点已经配置成功,你应该能够看到评论框。
But,你更有可能看到一个错误提示
image3.png
是的,这是跨域问题,你需要到可信域名配置你的网站地址(设置为* 不限制)
image4.png
或配置文件修改

# Trusted domains
# -- e.g. ["https://artalk.example.com:23366"] add url of your site her --
trusted_domains: []

部分。

此时,一个功能最为基本的评论区设置完成,但是,这个评论区还没有:图片上传、好看的表情包、邮件通知、评论审核等等功能,那么——

进阶-其他配置

在配置页面,还有——
image5.png

评论审核-避免评论沦陷

评论区,应该和谐友善,但是不免会有些无用评论或者过激评论,那么这时候审核功能就能还我们一片寂静。

该部分配置项位于配置文件moderator:部分。

Artalk支持的审核模式有:

  1. 人工审核(太麻烦,但是审核十分精准)
  2. Akismet 反垃圾服务(注册个免费订阅的账号,获取到Akismet Key填进去就ok)
  3. 腾讯云文本内容安全(参考:接入前准备-文本内容安全-文档中心-腾讯云 (tencent.com))
  4. 阿里云文本内容安全(参考:内容安全产品功能_内容安全(Content Moderation)-阿里云帮助中心 (aliyun.com)
    • 和腾讯云大差不差
      还可以设置关键词词库过滤,配置项如下:
moderator:
  keywords:
    enabled: true
    pending: false # 匹配成功设为待审状态
    files:         # 支持多个词库文件
      - "./data/词库_1.txt"
    file_sep: "\n" # 词库文件内容分割符
    replac_to: "x" # 替换字符

建议不要用 * 作为replac_to,可能会把评论markdown格式搞乱(就像这样

验证码-阻止机器人

建议使用CloudFlare Turnstile

  1. 添加站点
    image.png
    域需要输入评论后端,而不是博客地址,否则:
    img
  2. 设置组件模式
    image.png
  3. 点击创建后会得到SiteKey and SecretKey(这个可以多次显示或更新)填进去,ok!
    该部分位于配置文件:
captcha:
  enabled: true    # 总开关
  always: false    # 总是需要验证码
  captcha_type: "image" # 验证码类型
  action_limit: 3  # 激活验证码所需操作次数
  action_reset: 60 # 重置操作计数器超时 (单位:s, 设为 -1 不重置)
  # Turnstile
  # (https://www.cloudflare.com/products/turnstile/)
  turnstile:
    site_key: ""
    secret_key: ""
  # reCaptcha
  # (https://www.google.com/recaptcha/about/)
  recaptcha:
    site_key: ""
    secret_key: ""
  # hCaptcha (https://www.hcaptcha.com/)
  hcaptcha:
    site_key: ""
    secret_key: ""
  # Geetest 极验 (https://www.geetest.com)
  geetest:
    captcha_id: ""
    captcha_key: ""

部分。

IP属地

  • 下载数据文件
  • 上传到服务器root/data/文件夹下
  • 开启IP属地功能
    该部分位于配置文件:
ip_region:
  # 启用 IP 属地展示
  enabled: false
  # 数据文件路径 (.xdb 格式)
  db_path: "./data/ip2region.xdb"
  # 显示精度 ["province", "city", "country"]
  precision: "province"

部分。

图片上传

与其他评论系统不同,Artalk使用upgit上传图片到图床。

  1. 配置upgit(github.com)
  2. 设置图床(以Github为例)
    • 新建一个仓库(公开)(以HeLongaa/Test为例)
    • 获取 Github 令牌(权限 repo即可)(ghp_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)
    • 修改config文件,填入 [uploaders.github] 部分中的
      username,repo,branch,pat分别为:用户名、仓库名、分支、Github令牌。
    • 配置加速
      可以用jsd,或者自己反代raw
      image.png
      配置文件
      [replacements] "raw.githubusercontent.com" = "你反代完的域名" 如果使用jsd: [replacements]
      "raw.githubusercontent.com" = "cdn.jsdelivr.net/gh/"
  3. 在Artalk后台配置命令行参数
    ./data/UpgitUpload/upgit -c ./data/upgit/config.toml -t /artalk-img
    (upgit位置 -c 配置文件位置 -t /artalk-img)
    -t 参数为上传至远程仓库的artalk-img文件夹内。
    记得打开上传后删除本地文件

邮件推送

附上我的配置:
image.png
image.png
我的邮件是使用企业微信的邮件服务,所以密码应该是客户端授权码,根据不同邮件服务商配置。
去多元通知里打开一下邮件通知管理员,不然别人的评论管理员没有通知!
邮件模板:(新建一个html文件复制过去就好)

  • 发给访客
<div class="email-page" style="background:#fff;">  
  <div class="email-content"  
    style="width:90%;max-width:660px;margin:20px auto 30px;line-height:1.5;text-align:left;overflow:hidden;border-radius:8px;box-shadow:0 2px 12px 0 rgba(0,0,0,0.1);">  
    <div style="overflow:hidden;">  
      <h1 class="email-title"  
        style="position:relative;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding:14px 52px 14px 20px;line-height:1.6;font-size:16px;font-weight:normal;color:#fff;background:-webkit-linear-gradient(-45deg,rgba(9,69,138,0.2),rgba(68,155,255,0.7),rgba(117,113,251,0.7),rgba(68,155,255,0.7),rgba(9,69,138,0.2));background:linear-gradient(-45deg,rgba(9,69,138,0.2),rgba(68,155,255,0.7),rgba(117,113,251,0.7),rgba(68,155,255,0.7),rgba(9,69,138,0.2));background-size:400% 400%;background-position:50% 100%;word-break: break-all;">  
        您在[{{page_title}}]上的留言有了新的回复!<img class="icon"  
          style="position:relative !important;float: right;opacity:0.9;width:28px;"  
          src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAABGdBTUEAALGPC/xhBQAAAFdQTFRF////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAA////LEkQMAAAABx0Uk5TX3CQb49P3+C/P3+vUMDQILDPgJ9A72DwMKAQAI9AbbYAAAHgSURBVFjD7ZfZmoIwDIWZRZFNSoECoe//nDOQlIK2pe3MhRf2Rv30/ERyspDMfzzJG/CvAEiK21W6TwtWQFdInzNZANBKv3M3A8beUy+ZESC89ffaBFDXH6ayqyOyAKgfOESmccLgxlgfdKiHaCOxNf7Q60OWEQDWAHiYvGwWUdEtALEGEPYHNtd9/wKY0aDO6BvtCz4n1fJaRuqlrJPVBJ2/fiT9QMWVrC+ga/LmhinXfpB/rghQX9fLB+HQd6RffjOu744ALt0EQeHjPTMAhHQSlJ5cZwDM1ZZfe/o315oAcKfeZ9frqjEBVG0+E+D2qLcALARln2lnegvASFD2OXjeBjAQlH2ORWsFPBH29vECKEKDLfaL0vdoDwdAEWSR5+31If1egI2wHUPTcwKoLPREMfQsN2Auh/1MNfW8E8AMXCEqc484Ayz54/yTC9u48wC4z0sBogZjjYAhsK3v7vCiTMMHizbKmuGI0XZwO8Ph2kfcBFxsRNx418UCCXbyPnjBwSbFthWnCfwT1GRHvWQ1QTFQk51wzcOi63PvICCnzRBo0aSq7dtLdrpo1tml7XdNClfdQUYcbLK0bEcQqEmqdX8K1asmpx84WIicjaZHHsGq9FybVkzA+7nxtQA/7FmsPgKZOxIAAAAASUVORK5CYII=">  
      </h1>  
      <div class="email-text" style="padding:20px 28px 10px;background:#fff;">  
        <p style="margin:5px 0 5px;padding:0;line-height:24px;font-size:13px;color:#6e6e6e;"><span  
            style="font-weight:bold;color:#9f98ff">{{nick}},</span>您好!</p>  
        <div  
          style="border-radius:8px;margin:12px 0;padding:18px 20px;word-break:break-all;color:#6e6e6e;font-size:13px;background:repeating-linear-gradient(145deg, #f2f6fc, #f2f6fc 15px, #fff 0, #fff 25px);">  
          <div style="overflow-x: auto">{{parent_comment.content}}</div>  
        </div>  
        <p style="padding:0;line-height:24px;font-size:13px;color:#6e6e6e;">  
          <span style="color:#9f98ff;">{{reply_nick}}</span> 给您的回复:  
        </p>  
        <div  
          style="border-radius:8px;margin:12px 0;padding:18px 20px;word-break:break-all;color:#6e6e6e;font-size:13px;background:repeating-linear-gradient(145deg, #f2f6fc, #f2f6fc 15px, #fff 0, #fff 25px);">  
          <div style="overflow-x: auto">{{comment.content}}</div>  
        </div>  
        <p style="margin:0 0 16px;padding:0;line-height:24px;font-size:13px;color:#6e6e6e;"><a href="{{link_to_reply}}"  
            target="_blank" style="color:#5c8fef;text-decoration:none;">点击查看完整内容</a></p>  
      </div>  
      <div class="email-footer" style="padding:10px 20px;border-top:1px solid #eee;">  
        <p style="margin:0;padding:0;line-height:24px;font-size:13px;color:#999;">*注意:此邮件由 <a href="https://blog.duolaa.asia"  
            target="_blank" style="color:#9f98ff;text-decoration:none;">一府</a> 自动发出,请勿回复。</p>  
        <p style="margin:0;padding:0;line-height:24px;font-size:13px;color:#999;">欢迎<a href="https://blog.duolaa.asia/"  
            target="_blank" style="color:#9f98ff;text-decoration:none;">再次访问</a> 本站。</p>  
      </div>  
    </div>  
  </div>  
</div>
  • 发给管理员
<div class="email-page" style="background:#fff;">
  
  <div class="email-content"
  
    style="width:90%;max-width:660px;margin:20px auto 30px;line-height:1.5;text-align:left;overflow:hidden;border-radius:8px;box-shadow:0 2px 12px 0 rgba(0,0,0,0.1);">
  
    <div style="overflow:hidden;">
  
      <h1 class="email-title"
  
        style="position:relative;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding:14px 52px 14px 20px;line-height:1.6;font-size:16px;font-weight:normal;color:#fff;background:-webkit-linear-gradient(-45deg,rgba(9,69,138,0.2),rgba(68,155,255,0.7),rgba(117,113,251,0.7),rgba(68,155,255,0.7),rgba(9,69,138,0.2));background:linear-gradient(-45deg,rgba(9,69,138,0.2),rgba(68,155,255,0.7),rgba(117,113,251,0.7),rgba(68,155,255,0.7),rgba(9,69,138,0.2));background-size:400% 400%;background-position:50% 100%;word-break: break-all;">
  
        您的文章《{{page_title}}》有新的评论!<img class="icon"
  
          style="position:relative !important;float: right;opacity:0.9;width:28px;"  
          src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAABGdBTUEAALGPC/xhBQAAAFdQTFRF////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAA////LEkQMAAAABx0Uk5TX3CQb49P3+C/P3+vUMDQILDPgJ9A72DwMKAQAI9AbbYAAAHgSURBVFjD7ZfZmoIwDIWZRZFNSoECoe//nDOQlIK2pe3MhRf2Rv30/ERyspDMfzzJG/CvAEiK21W6TwtWQFdInzNZANBKv3M3A8beUy+ZESC89ffaBFDXH6ayqyOyAKgfOESmccLgxlgfdKiHaCOxNf7Q60OWEQDWAHiYvGwWUdEtALEGEPYHNtd9/wKY0aDO6BvtCz4n1fJaRuqlrJPVBJ2/fiT9QMWVrC+ga/LmhinXfpB/rghQX9fLB+HQd6RffjOu744ALt0EQeHjPTMAhHQSlJ5cZwDM1ZZfe/o315oAcKfeZ9frqjEBVG0+E+D2qLcALARln2lnegvASFD2OXjeBjAQlH2ORWsFPBH29vECKEKDLfaL0vdoDwdAEWSR5+31If1egI2wHUPTcwKoLPREMfQsN2Auh/1MNfW8E8AMXCEqc484Ayz54/yTC9u48wC4z0sBogZjjYAhsK3v7vCiTMMHizbKmuGI0XZwO8Ph2kfcBFxsRNx418UCCXbyPnjBwSbFthWnCfwT1GRHvWQ1QTFQk51wzcOi63PvICCnzRBo0aSq7dtLdrpo1tml7XdNClfdQUYcbLK0bEcQqEmqdX8K1asmpx84WIicjaZHHsGq9FybVkzA+7nxtQA/7FmsPgKZOxIAAAAASUVORK5CYII=">  
      </h1>
  
      <div class="email-text" style="padding:20px 28px 10px;background:#fff;">
  
        <p style="margin:5px 0 5px;padding:0;line-height:24px;font-size:13px;color:#6e6e6e;"><span
  
            style="font-weight:bold;color:#9f98ff">{{nick}},</span>您好!</p>
  
        <p style="padding:0;line-height:24px;font-size:13px;color:#6e6e6e;">
  
          <span style="color:#9f98ff;">{{reply_nick}}</span> 给您的回复:
  
        </p>
  
        <div
  
          style="border-radius:8px;margin:12px 0;padding:18px 20px;word-break:break-all;color:#6e6e6e;font-size:13px;background:repeating-linear-gradient(145deg, #f2f6fc, #f2f6fc 15px, #fff 0, #fff 25px);">
  
          <div style="overflow-x: auto">{{reply_content}}</div>
  
        </div>
  
        <p style="margin:0 0 16px;padding:0;line-height:24px;font-size:13px;color:#6e6e6e;"><a href="{{link_to_reply}}"
  
            target="_blank" style="color:#5c8fef;text-decoration:none;">点击查看完整内容</a></p>
  
      </div>
  
      <div class="email-footer" style="padding:10px 20px;border-top:1px solid #eee;">
  
        <p style="margin:0;padding:0;line-height:24px;font-size:13px;color:#999;">*注意:此邮件由 <a href="https://blog.duolaa.asia"
  
            target="_blank" style="color:#9f98ff;text-decoration:none;">一府</a> 自动发出,请勿回复。</p>
  
        <p><span style="font-size: 16px;">Powered By Artalk<span style="color: #06abd7;">Go</span></span></p>
  
      </div>
  
    </div>
  
  </div>
  
</div>

人非圣贤,如果有哪部分有瑕疵的,可以在评论区指出,也可以直接发邮件给我!