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

推荐订阅源

F
Fortinet All Blogs
W
WeLiveSecurity
Cyberwarzone
Cyberwarzone
H
Help Net Security
Spread Privacy
Spread Privacy
Jina AI
Jina AI
G
GRAHAM CLULEY
Project Zero
Project Zero
aimingoo的专栏
aimingoo的专栏
P
Palo Alto Networks Blog
云风的 BLOG
云风的 BLOG
B
Blog RSS Feed
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
A
Arctic Wolf
L
LangChain Blog
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
罗磊的独立博客
量子位
Microsoft Security Blog
Microsoft Security Blog
The Register - Security
The Register - Security
B
Blog
Microsoft Azure Blog
Microsoft Azure Blog
G
Google Developers Blog
小众软件
小众软件
Vercel News
Vercel News
V
Visual Studio Blog
IT之家
IT之家
C
Cisco Blogs
博客园 - 聂微东
Cisco Talos Blog
Cisco Talos Blog
Help Net Security
Help Net Security
S
Schneier on Security
PCI Perspectives
PCI Perspectives
C
Check Point Blog
V
Vulnerabilities – Threatpost
J
Java Code Geeks
Hugging Face - Blog
Hugging Face - Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
GbyAI
GbyAI
N
News and Events Feed by Topic
AWS News Blog
AWS News Blog
L
LINUX DO - 热门话题
SecWiki News
SecWiki News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Tenable Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recorded Future
Recorded Future

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 就准备就绪啦,又愉快的折腾了一下~