Remark42 是什么

Remark42 是一个开源、轻量化、自托管饿评论服务,支持使用Google, Twitter, Facebook, Microsoft, GitHub, Yandex, Patreon, Telegram, Email 以及匿名方式进行评论。

关于博客评论系统,博主 Reorx 的更换博客评论系统 一文中对市面上的评论系统做了相对全面的对比,推荐阅读。

花时间更换 Remark42 最主要原因还是受 LeanCloud 国际版业务调整影响:

8 月 1 日起,LeanCloud 国际版共享域名不再向中国大陆提供服务

为履行合规责任,降低平台风险,LeanCloud 国际版共享域名将于 2022 年 8 月 1 日起不再向中国大陆的最终用户提供服务,国际版共享域名仅服务于海外用户。

影响范围 8 月 1 日以后,国内的 IP 无法通过共享域名调用国际版的数据存储、即时通信、云引擎等全部服务,请求会响应错误码 1020。

开发者需要做什么

如果国际版应用主要服务海外用户,那么不需要做任何处理。如果应用的用户主体是在中国大陆,需要使用自己的域名或者将应用数据迁移至国内节点。

之前使用 Waline 作为博客评论系统,并搭建于 LeanCloud 国际版上,妥妥的中招。

安装

准备工作

  1. 配置域名
  2. Docker 服务

配置

Docker

官方提供了两种安装方式,Docker 最简单方便,这是我的 docker-compose.yaml 文件:

version: "2"

services:
  remark:
    # remove the next line in case you want to use this docker-compose separately
    # as otherwise it would complain for absence of Dockerfile
    build: .
    image: umputun/remark42:latest
    container_name: "Remark42"
    hostname: "###"
    restart: always
    networks:
      - default

    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "5"

    # uncomment to expose directly (no proxy)
    ports:
     - "80:8080"
     - "443:8443"

    environment:
      - REMARK_URL=###
      - SITE=###
      - SECRET=###
      - DEBUG=true
      - AUTH_EMAIL_ENABLE=true
      - AUTH_GOOGLE_CID=###
      - AUTH_GOOGLE_CSEC=###
      - AUTH_GITHUB_CID=###
      - AUTH_GITHUB_CSEC=###
      - AUTH_TELEGRAM=true
      - TELEGRAM_TOKEN=###
      - EMOJI=true
      - NOTIFY_USERS=email
      - NOTIFY_EMAIL_VERIFICATION_SUBJ=Remark42 sign in confirmation
      - NOTIFY_ADMINS=email
      - ADMIN_SHARED_EMAIL=###
      - ADMIN_SHARED_ID=###
      - SMTP_HOST=###
      - SMTP_PORT=465
      - SMTP_TLS=true
      - SMTP_USERNAME=###
      - SMTP_PASSWORD=###
      - AUTH_EMAIL_FROM=###
      - NOTIFY_EMAIL_FROM=###
      - MAX_VOTES=-1
      - VOTES_IP_TIME=0s
      # Enable it only for the initial comment import or for manual backups.
      # Do not leave server running with ADMIN_PASSWD set if you don't have intention
      # to keep creating backups manually!
      # - ADMIN_PASSWD=<your secret password>
    volumes:
      - ./var:/srv/var

networks:
  default:
    external:
      name: nginx-network

替换 ### 为你自己的配置

邮箱

我目前使用的是 Yandex 的域名邮箱,现在已经不提供免费服务了,免费域名邮箱可以试试看国内的 163 和 腾讯企业邮箱,或者直接用自己邮箱也可以。 一份是否支持 SMTP 465 端口的服务商列表

前端
<div id="remark42"></div>
<script>
  var body = document.querySelector('#remark42');
  var theme = 'light';
  if ('matchMedia' in window) {
      var mq = window.matchMedia('(prefers-color-scheme: dark)');
      function getTheme() {
          return mq.matches ? 'dark' : 'light';
      }
      theme = getTheme();
      mq.addListener(function () {
          REMARK42.changeTheme(getTheme());
      });
  }
  var remark_config = {
    host: '###',
    site_id: '###',
    url: window.location.href,
    components: ['embed', 'counter'],
    max_shown_comments: 100,
    theme: theme,
    locale: 'zh',
    show_email_subscription: true,
    show_rss_subscription: true
  }
  !function(e,n){for(var o=0;o<e.length;o++){var r=n.createElement("script"),c=".js",d=n.head||n.body;"noModule"in r?(r.type="module",c=".mjs"):r.async=!0,r.defer=!0,r.src=remark_config.host+"/web/"+e[o]+c,d.appendChild(r)}}(remark_config.components||["embed"],document);
</script>

替换 ### 为你自己的配置

第三方登陆配置

目前我接入了 Email、Google 1、GitHub 2、Telegram 3,这三个登陆方式申请很方便,可以参考这篇教程进行设置

总结

安装过程简单,调试参数花费了大量的时间,需要一定的时间与耐心。

服务调试好之后我简单体验了一下,评论响应速度很快,界面优雅,没有乱七八糟的统计请求,推荐使用。


  1. Google 登陆:创建一个新的新项目,API 和服务 -> 凭据 -> OAuth 客户端 ID, callback url: https://remark42-url/auth/google/callback ↩︎

  2. Github 登陆:创建一个新的OAuth application, callback url: https://remark42-url/auth/github/callback ↩︎

  3. Telegram 登陆:配置Telegram ↩︎