博客更换remark42 评论系统

原因

disqus老旧了,loading时候感觉慢;最重要的是,貌似有广告。这个不能忍啊,刚好找到一个新的解决方案remark42,就尝试了一下。很友好,允许使用各种方式google,github,twitter,facebook,匿名登陆,爱留言随时留言;和ghost的植入,在帖子里也写得很清楚,于是就花了一早上套用了,是的,感觉调试很花时间。

第一次安装remark42时,我将remark42的server放到了不同的域名,在使用AUTH_SAME_SITE=none 参数后,成功用电脑登陆其他域名的博客留下评论;问题在于当使用手机登陆时,无法留言,当手机可以在remark42 server本身操作,一番搜索,可能是safari mobile自动的保护机制,无法传递token;忍痛将博客和评论放入同一域名,解决。

我对评论系统的态度就是:

你可以不留评论,但是我不可以没有这个系统。

安装思路

  • 采用了docker-compose,我贴出我这边的sample; 我把ghost和remark42放一起了。
version: "3.7"
services:
  ghost:
    image: ghost:5.2.3
    container_name: ghost
    volumes:
      - ./content:/var/lib/ghost/content
      - ./content/config.production.json:/var/lib/ghost/config.production.json
    environment:
      - url=https://blog.colors4.us
      - PROD_DOMAIN=https://blog.colors4.us
    restart: unless-stopped
    networks:
      - docker

  remark:
    image: umputun/remark42:latest
    container_name: "remark42"
    hostname: "remark42"
    restart: always
    networks:
      - docker    

    logging:
        driver: json-file
        options:
            max-size: "10m"
            max-file: "5"
            
    environment:
        - REMARK_URL=https://blog.colors4.us/remark42/
        - SITE=remark
        - TIME_ZONE=Asia/Hong_Kong
        - SECRET=14d5e2d2
        - AUTH_SAME_SITE=none 
        - ADMIN_PASSWD=30347
        - ADMIN_SHARED_ID=github_5e
        - STORE_BOLT_PATH=/srv/var/db
        - BACKUP_PATH=/srv/var/backup
        - AUTH_GITHUB_CID=fa460
        - AUTH_GITHUB_CSEC=d5a7
        - AUTH_GOOGLE_CID=106413
        - AUTH_GOOGLE_CSEC=GOCSP
        - AUTH_FACEBOOK_CID=7919
        - AUTH_FACEBOOK_CSEC=69449
        #- AUTH_TWITTER_CID=9KRgU6i
        #- AUTH_TWITTER_CSEC=TJuB
        - AUTH_ANON=true
        - SMTP_HOST=
        - SMTP_PORT=465
        - SMTP_TLS=true
        - SMTP_USERNAME=
        - SMTP_PASSWORD=
        - NOTIFY_EMAIL_FROM=
        - NOTIFY_USERS=email
        - NOTIFY_EMAIL_VERIFICATION_SUBJ
        - NOTIFY_ADMINS=email
        - ADMIN_SHARED_EMAIL=
        - AUTH_EMAIL_ENABLE=true
        - AUTH_EMAIL_FROM=

    volumes:
        - ./var:/srv/var

networks:
  docker:
    external:
      name: docker
  • 设置好后,把remark42系统嵌入ghost blog。登陆ghost后台,下载当前使用的theme template,修改里面的post.hbs,将如下进行修改
#原来的内容
    {{!--
    <section class="article-comments gh-canvas">
        If you want to embed comments, this is a good place to paste your code!
    </section>
    --}}
 
#完全替换后的内容
    <section class="article-comments gh-canvas">
        <div id="remark42"></div>
        <script>
          var remark_config = {
            host: "https://remark42.demo",
            site_id: 'remark',
            components: ['embed']
          };
        </script>
        <script>!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>
    </section>
  • 修改后,打包成新的theme zip 上传回ghost,完工。
  • 参考这个链接,设置各个服务的callback oauth
    • callback 链接相关
#google
https://blog.colors4.us
https://blog.colors4.us/remark42/auth/google/callback

#twitter
https://blog.colors4.us/remark42/
https://blog.colors4.us/remark42/auth/twitter/callback

#github
https://blog.colors4.us/remark42/
https://blog.colors4.us/remark42/auth/github/callback

#facebook
https://blog.colors4.us/remark42/
https://blog.colors4.us/remark42/auth/facebook/callback

  • 导入disqus comment
    • disqus export
    • 导出后按框中命令导入到remark42中,注意的是,还可以先进入container再操作
    • 导出的评论发现无法在博文中显示,经过对照,发信comment连接的link末尾少了一个'/',解决方法有两个,一个是disqus中remap,第二个是我采用的方法,手动添加,我以为comment不多,结果洋洋洒洒900多行,但是值,看了一遍博客的留言,有发现的,最早都到05年。
docker exec -it remark42 import -p disqus -f /srv/var/linpx*.xml -s remark --admin-passwd 30347bc4
#进入container
docker exec -it remark42 sh

#设置rule后,对link进行转换
vi ./var/rule
https://blog.colors4.us/habits-of-gold https://blog.colors4.us/habits-of-gold/ #变化前link 变化后link
remark42 remap --admin-passwd 30347b -f /srv/var/rule

# 我实际上找不到comments全文输出的方式,用了个土办法,backup出来,然后一个个考
docker exec -it remark42 backup -s {your site ID}

参考链接

链接1
官方文档
last-comments