惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Engineering at Meta
Engineering at Meta
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Martin Fowler
Martin Fowler
雷峰网
雷峰网
Recent Announcements
Recent Announcements
博客园 - 叶小钗
F
Full Disclosure
C
Check Point Blog
A
About on SuperTechFans
L
LangChain Blog
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss
博客园 - 司徒正美
C
Cybersecurity and Infrastructure Security Agency CISA
C
CXSECURITY Database RSS Feed - CXSecurity.com
Cisco Talos Blog
Cisco Talos Blog
Hugging Face - Blog
Hugging Face - Blog
Recorded Future
Recorded Future
MongoDB | Blog
MongoDB | Blog
Project Zero
Project Zero
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Know Your Adversary
Know Your Adversary
D
Docker
U
Unit 42
酷 壳 – CoolShell
酷 壳 – CoolShell
T
The Exploit Database - CXSecurity.com
L
Lohrmann on Cybersecurity
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Latest news
Latest news
V
Visual Studio Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 最新话题
Google DeepMind News
Google DeepMind News
小众软件
小众软件
NISL@THU
NISL@THU
GbyAI
GbyAI
H
Heimdal Security Blog
Jina AI
Jina AI
I
InfoQ
PCI Perspectives
PCI Perspectives
P
Privacy International News Feed
P
Proofpoint News Feed
N
News and Events Feed by Topic
C
CERT Recently Published Vulnerability Notes
aimingoo的专栏
aimingoo的专栏
SecWiki News
SecWiki News
B
Blog RSS Feed
阮一峰的网络日志
阮一峰的网络日志

Razeen`s Blog

Let's Encrypt 推出 Gen Y 根证书架构:揭示 Web PKI 的五大未来趋势 通过 Wi-Fi 自动备份你的 iPhone 到 Nas 管理培训感悟:从技术视角看管理之路 UPS 一拖多:保护你的 NAS 和 Linux 服务器 从影音中心到 AI 助手:我的50款 Homelab 服务清单 从SSL证书有效期将缩短到47天聊开去 部署一个自己的 Running Page 谈谈特斯拉 Model Y 用车一年的感受和费用分析 使用 Prometheus 和 Grafana 搭建你的证书监控面板 服务器迁移记:一次磁盘换板引发的Linux分区与挂载的学习 改善信息来源, 利用 RSS 高效获取资讯 (RSShub + Reeder5 + WeWe RSS) 多种 Docker 镜像拉取解决方案与实践 App分享 | AppCleaner - Mac上的卸载神器 Azure OpenAI API 申请和使用 如何开通 OneKey 虚拟信用卡,并充值消费 如何拥有一个可长期在国内使用的国外手机号码 分享开通 ChatGPT Plus 过程 如何开通 Depay 虚拟信用卡,并充值消费 如何开通欧易Web3钱包, 交易入账 如何5分钟内1块钱注册 ChatGPT 如何注册美区的 Apple ID (2023年/无需科学上网) NAS折腾记(11): NASTool3.0体验和降级 NAS折腾记(10): Docker版本的NASTool配置 NAS折腾记(9): NASTool与微信交互,微信发送消息远程下载电影【多图】 NAS折腾记(8):群晖安装 NASTool 实现影音半自动化【多图】 内网穿透(2):Tailscale 组网实现内网穿透,操作简单,无成本 内网穿透(1):总结了11中内网穿透的方式,总有一种适合你 NAS折腾记(7):从零开始设置(黑)群晖系统 NAS折腾记(6):黑群晖系统安装好后怎么洗白? NAS折腾记(5):群晖硬盘休眠设置与分析 NAS折腾记(4): 20分钟手把手带你完美安装 DS918+ 黑群晖7.1.1 NAS折腾记(3):NAS 装机 NAS折腾记(2):B360-ITX 双M.2 双2.5G网口 6 SATA主版 开箱 NAS折腾记(1):328元的4盘位Nas机箱开箱 Openwrt + Clash 全局科学上网 Newifi3 刷入 OpenWrt 固件 v21.02 利用 Markdown 画一些流程图、时序图、甘特图等 Homelab(8): 搭建自用 Gitlab 与 Docker 仓库 Nginx Tcp 转发保留客户端真实 IP (PROXY Protocol) Homelab (7):IPSec VPN(基于证书认证)客户端设置 Homelab (6): 基于自签发证书的 IPSec VPN 搭建 Homelab (5): DDNS 动态域名解析 Homelab (4): Linux 服务器基础环境准备 Homelab (3): 整体网络与基础硬件介绍 Go学习笔记(十)老项目迁移 go module 大型灾难记录 Github Actions 初体验之自动化部署 Hexo 博客 记一次 Nginx DNS 缓存导致转发问题 Homelab (2): 电信悦me网关修改桥接模式,路由器拨号 Homelab (1):5分钟上手黑群晖 NAS 终极 Bash 脚本指南 Typora 自动上传图片到七牛云 Ubuntu 20.04 LTS 有线网卡驱动安装 折腾 Ubuntu 20.04 LTS 开发环境 Go学习笔记(九) 计时器的生命周期[译] 利用 git hook 规范你的代码与 commit message 规范 git commit message 与自动化版本控制 超详细 vim 配置 (with MacVim) Golang 中的 RESTful API 最佳实践 折腾服务器(开篇) 我的第一台个人服务器 Newifi3 实现低成本家庭级科学上网 Go学习笔记(八) | 使用 os/exec 执行命令 如何用 Go 调用 Windows API Mac OS 自动根据 WI-FI 名字改变网络位置 关于 Docker 清理 MIME Types 速查表 Go学习笔记(七) | 理解OAuth 2.0并实现一个客户端 我又又又把博客迁移了 Go学习笔记(六) | 使用swaggo自动生成Restful API文档 Go学习笔记(五) | 使用代码片段(snippets)提高编码效率 书单 - 2018 IPFS 初体验,利用 IPFS 托管你的静态网站 记一次 PostgreSQL LIKE 索引优化,联合字段 LIKE 查询优化。 Disqus 添加有趣的 Reactions 的功能 TLS 1.3 详解 (RFC 8446解读) gRPC在Go中的使用(三)gRPC实现TLS加密通信与流模式 gRPC在Go中的使用(二)gRPC实现简单通讯 gRPC在Go中的使用(一)Protocol Buffers语法与相关使用 CentOS 安装 tshark 抓包工具 Go学习笔记(四) | win上使用VSCode搭建Go开发环境 日常 Postgres 数据库点滴记录 简单了解 PKCS 规范 美食篇 | DIY戚风蛋糕(烤箱做蛋糕) Go学习笔记(三) | 怎么写Go基准测试(性能测试) TLS1.3正式更新,为Nginx添加TLS1.3的支持 一次诡异的数据库删除 GitHub Pages自定义域名开启HTTPS 证书透明度是什么?它是怎么工作的? Go学习笔记(二) | 我对 recover 的一点误解 搭建证书透明度(certificate-transparency)日志服务之从入门到放弃 修复远程登陆 Centos 时,出现 UTF-8 Warning HTTPS篇之SSL握手过程详解 Go学习笔记(一) | postgres与golang点点滴滴 AWS 命令行界面(aws-cli)从安装到快速上手 数字证书分类及怎么区分各类数字证书 常用 linux 命令小结(一)文件目录操作 云服务器搭建 hexo 博客,git hooks自动更新 SSH 免密登陆, SSH Config 配置 Golang CGO Mac 交叉编译 Windows 使用 goose 让数据库迁移更加轻松 开始使用Ghost
弃用 Disqus 评论,使用自建 Waline
2024-12-11 · via Razeen`s Blog

最近收到了 Disqus 要在评论区投放广告的邮件 , 刚开始觉得没啥,毕竟免费用了这么久,放点广告而已。然而当我看到 Disqus 这猎奇的广告内容巨长的篇幅后,我还是决定给它换了! 对比了多个评论系统,最终选择了 Waline。

对比

看了几个开源的评论系统,稍微总结下。

Waline

image-20241219214946155

  • 项目地址: https://github.com/walinejs/waline
  • 特点: 轻量;免费;易于部署;强大Markdown支持;安全;流量统计;支持三方登陆;迁移方便;…
  • Github Start: 2.4k
  • 更新频率:写这篇博客的时候是3天前更新的,main分支累计2916个Commit,更新很频繁👍

Valine

image-20241219220349138

  • 项目地址:https://github.com/xCss/Valine
  • 特点: 快速;免费;易用;Markdown全语法支持;安全;流量统计; …
  • Github Start: 2.2k
  • 更新频率:写这篇博客的时候是4天前更新的,master 分支累计536个Commit。

Artalk

image-20241219222852711

  • 项目地址:https://github.com/ArtalkJS/Artalk
  • 特点: 轻量;快捷;免费;安全;多语言;插件扩展;第三方登陆;后台管理;OpenAPI; …
  • Github Start: 1.7k
  • 更新频率:写这篇博客的时候是一周前更新的,master 分支累计1591个Commit。

Cudis

image-20241219223616768

  • 项目地址:https://github.com/djyde/cusdis

  • 特点: 开源;清亮;disqus平替;安全;易用;自建;支持购买托管服务;

  • Github Start: 2.6k

  • 更新频率:写这篇博客的时候是8个月前更新的,master 分支累计507个Commit。

Twikoo

image-20241219224155765

  • 项目地址:https://github.com/twikoojs/twikoo

  • 特点: 简洁;安全;免费;简单;易用;安全;即使;个性;便捷管理;…

  • Github Start: 2.6k

  • 更新频率:写这篇博客的时候是8个月前更新的,master 分支累计507个Commit。

Gitalk

image-20241219224614583

  • 项目地址:https://github.com/gitalk/gitalk
  • 特点: 开源;无服务(使用Github issues存评论);多语言;…
  • Github Start: 7k
  • 更新频率:写这篇博客的时候是5个月前更新的,master 分支累计181个Commit。

其实几个看下来评论系统大家的核心功能基本都差不多,而且都主打轻量,安全,易部署。不过其中个人觉得 Waline 是最好看,功能最全的,而且文档做也比较全面,最后我也是用了这个。但不得不提其中 Gitalk 是最有特色的,无需任何数据库配置,直接使用Github issues 存评论,作者想法很赞。

官方使用 LeanCloud + Vercel 的流程还是比较完备的,但我使用准备使用 docker + sqlite 来搭建,并迁移原来的 disqus 数据,官方的流程还是缺了点意思,这里记录分享一下。

1. sqlite 数据库

官方准备了一个数据库模版 waline.sqlite , 可以直接点击去下载。里面已经帮你建好了三张表,直接用这个库就好了。

image-20241220231825992

  • 先登陆 disqus 后台,点击右上角头像,选择Admin 。选择评论栏目的Export,导出。

image-20241220233925315

导出的文件会发到邮箱,是一个压缩的 xml,解压后就可以得到一个xml。

image-20241220234228656

  • 使用数据库工具,将CSV数据导入到准备好的 waline.sqlite中。

数据库工具有很多,如 DataGrip, Navicat 等等。在工具中打开下载的 waline.sqlite, 使用工具的导入功能导入数据,如我用DataGrip导入,需要注意选中第一行为头,然后他会自动给你匹配好字段,对应导入。

image-20241220235905659

这样,sqlite 数据库就准备好了。

3. 搭建后端

直接使用 docker-compsoe.yml 启动服务 和 Nginx , 并在Nginx中配置好转发和证书。

  • docker-compose.yml
version: '3.5'
services:
  nginx:
    image: nginx
    container_name: nginx
    restart: always
    ports:
    	- 443:443
    volumes:
      -  ${PWD}/certs:/etc/nginx/ssl
      -  ${PWD}/waline.conf:/etc/nginx/conf.d/waline.conf
    depends_on:
    	- waline
  waline:
    container_name: waline
    image: lizheming/waline:latest
    restart: always
    volumes:
      - ${PWD}:/app/data
    environment:
      TZ: 'Asia/Shanghai'                          # 时区
      SQLITE_PATH: '/app/data'                     # sqlite数据控路径
      JWT_TOKEN: 'xxxxx'  
      SITE_NAME: 'Razeen`s Blog'                   # 站点名称
      SITE_URL: 'https://razeen.me'                # 站点URL
      SECURE_DOMAINS: 'razeen.me,waline.razeen.me' # 安全域名(博客和评论的域名)
      AUTHOR_EMAIL: 'xxxx@xxx.com'                 # 作者的邮箱    
      SMTP_SERVICE: 'QQ'                           # 邮件通知,我用的QQ
      SMTP_USER: 'xxx@qq.com'
      SMTP_PASS: 'xxxxxx'
      SMTP_SECURE: true
      IPQPS: 20                                    # 评论限速 一个IP 20s一次
      DISABLE_REGION: true                         # 隐藏评论归宿地

这里主要注意一下这些环境变量,更多的环境变量可看官方文档。我这里主要放开了一点限速IPQPS,和配置了邮件作为我评论的通知渠道。

  • 配置好Nginx转发的配置 waline.conf

    下面是我的配置供参考,其中需要申请证书,可以去FreeSSL申请。

server {
    listen                       443 ssl;
    server_name                  waline.razeen.me;
    server_tokens                off;
		http2 on;

    ssl_certificate              /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key          /etc/nginx/ssl/key.pem;

    ssl_prefer_server_ciphers    on;
    ssl_ciphers                  EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

    ssl_protocols                TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_session_cache            shared:SSL:50m;
    ssl_session_timeout          1d;
    ssl_session_tickets          on;

  #  ssl_trusted_certificate      /etc/nginx/ssl/ca.pem;
  #  ssl_stapling                 on;
  #  ssl_stapling_verify          on;

    access_log  /var/log/nginx/access_waline.log  main;
    error_log   /var/log/nginx/error_waline.log;

    location / {
        proxy_pass http://waline:8360;

        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_set_header X-Forwarded-Proto $scheme;
        proxy_set_header REMOTE-HOST $remote_addr;
        add_header X-Cache $upstream_cache_status;
        # cache
        add_header Cache-Control no-cache;
        expires 12h;
    }
}

然后把数据库放在配置目录下,就可以启动了。做好域名解析后,访问评论站点就可以看到评论框了。

4. 注册后台管理

进入 url + ‘/ui’, 如我的 https://waline.razeen.me/ui 会自动跳转后台,注册账户即可,第一个账户就是管理员了。后台可以用来管理评论和用户。

image-20241221002110441

5. 修改博客评论

像 hugo 找到主题的评论模版(如comments.html),加入如下代码, 更新即可(我把图片和梗图表情的关了)。

<!-- 样式文件 -->
<link
  rel="stylesheet"
  href="https://unpkg.com/@waline/client@v3/dist/waline.css"
/>

<div id="tcomment"></div>

<!-- 脚本文件 -->
<script type="module">
  import { init } from 'https://unpkg.com/@waline/client@v3/dist/waline.js';

  init({
    el: '#tcomment',
    serverURL: 'https://waline.razeen.me/',
    search: false,  // 关闭梗图搜索
    reaction: true,  
    // emoji: false,
    imageUploader: false  // 关闭图片上传
  });
</script>

这样自建的 waline 就准备就绪啦,又愉快的折腾了一下~