史上最全Remark42评论系统安装教程
一. Remark42介绍
Remark42是一个开源的、轻量级、强大的评论系统。
1.1 功能
- 支持 Markdown emoji
- 支持匿名、邮箱登录
- 支持各种OAuth,如GitHub、Google、Facebook、Twitter、Yandex、
- 颜值也不错,支持浅色和深色模式,带有树和普通演示文稿的多层嵌套评论
- 支持数据迁移,可以导入Disqus和WordPress的评论数据
- 强大的管理功能,管理员可以置顶、删除评论和用户禁言
- 支持投票,个人标示和验证
- 支持多种评论排序
- 图片可以可视化导入
- 支持最近的评论
- 支持RSS
- 支持通知
- 支持手动备份和自动备份,支持备份数据恢复
- 没有数据库,存储使用单一文件
- 支持Docker的部署
- 支持Linux, Windows和MacOS系统
- 一套评论系统可以用于多个网站
- 支持HTTPS的访问
1.2 注重隐私
- Remark42试图对任何私有或半私有信息非常敏感。
- 身份验证从身份验证提供程序请求最小可能的范围。他们返回的所有额外信息将立即丢弃,并且不会以任何形式存储。
- 通常,remark42仅保留用户ID,用户名和头像链接。这些字段均不直接公开-标识和名称进行了- 哈希处理,并附加了头像。
- 没有任何形式的跟踪。
- 登录技工使用存储在cookie(httpOnly,安全)中的JWT。第二个cookie(XSRF_TOKEN)是防止CSRF的随机ID。
- 没有跨站点登录,即无法在运行remark42的独立站点之间分析用户的行为。
- 不涉及第三方分析服务。
- 用户可以要求remark42知道的所有信息并导出到gz文件。
- 支持彻底清除与用户活动有关的所有信息。
- Cookie的寿命可以限制为仅会话。
- 由remark42存储的所有潜在敏感数据都经过哈希处理和加密。
二. 安装
2.1 前提条件
- 有一个独立IP的服务器
- 有一个域名,并把这域名绑定到上面ip,假定域名为: remark42.sample.com
2.2 安装remark42
官方提供了两种安装方式,一种是Docker,一种是二进制,这里采用二进制方式,服务器要求低一些。
以下程序在Debian服务器上操作。
|
|
这时候打开 http://remark42.sample.com:8080/web ,应该显示如下
如果显示上面的图片,说明已经安装成功了,安装详情见官网
安装很简单,但是还不能用,存在两个重要的问题:
- 没有SSL,不支持https
- 不支持通过Google,Facebook,GitHub和Yandex进行社交登录,也不能邮箱登录,什么作用都没有。
下面来解决这两个问题
2.3 安装SSL证书支持https
2.3.1 申请ssl证书
免费ssl证书一般在Let’s Encrypt申请,是一个免费、开放和自动化的证书颁发机构。
我们用 ACME 来申请。
- 切换到root状态,安装并停止nginx。
|
|
- 安装socat
|
|
- 安装ACME
|
|
安装程序会做以下操作:
自动把 acme.sh 安装到 home 的.acme.sh目录下,即~/.acme.sh/
自动创建一个 bash 的 alias, 方便你的使用: alias acme.sh=~/.acme.sh/acme.sh
自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.
- 更改默认证书
|
|
acme被ZeroSSL收购,其默认的证书方式为ZeroSSL,但此证书生成时会携带邮箱,因此更换为letsencrypt。
当然,也可以在生成证书时加一个–server参数来决定生成什么证书
|
|
- 生成证书,同时验证域名所有权
使用acme.sh –issue命令生成证书,同时会验证域名的所有权。 acme.sh 有两种方式验证:http 和 dns 验证。
验证域名的方法有多种,这里采用自建虚拟webserver的http验证方式,要求服务器没有占用80端口,这也是上面停止nginx的原因。
如果服务器已有80端口的服务,不建议使用自建虚拟webserver,此方式续租时略麻烦需要改造。
|
|
注意:如果需要生成泛域名(*.a.com)的证书,不能使用HTTP认证域名,需要改用DNS认证的方式。
- copy/安装 证书
默认生成的证书都放在安装目录下: ~/.acme.sh/,但是不要在web服务器中直接引用目录下的证书文件,也不要手动拷贝证书文件到具体的web服务器中,手动拷贝会导致以后不能自动更新证书。
正确方式是使用acme.sh的命令安装证书,acme.sh会自动拷贝证书文件到具体目录中,且记录下来,以后自动更新证书时也会执行此拷贝步骤,从而实现更新证书的完全自动化。
命令格式如下:
|
|
根据实际情况填入对应的参数,以nginx为例:
- 创建安装证书的位置目录
|
|
- 安装证书
|
|
2.3.2. 修改nginx的配置文件
- 查看nginx配置文件位置
|
|
- 查看nginx配置文件
|
|
- 修改nginx配置文件
修改红框位置中的文件,这里修改/etc/nginx/sites-enabled/default
, 用Remark42官网 给出的格式替换。
|
|
- 启动nginx 和 remark42
|
|
这时候打开 https://remark42.sample.com/web/,==不需要8080端口号==,就能看到:
这时候还能打开 http://remark42.sample.com:8080/web/ ,不过已经不需要了,可以在服务器关闭http流量。
三. Remark42 前端配置
- 把以下代码嵌入到需要显示评论的地方
|
|
- 在适当位置添加以下初始化脚本,如footer之类的地方,和上面代码放一起也行。
|
|
详细配置在这里 Remark42前端详细配置
四. Remark42 服务端配置
4.1 实现开机自启动
我们需要用系统服务来实现开机自启动,方法如下:
- 建立系统用户 remark42
|
|
- 建立服务目录
|
|
- 建立环境配置文件
注意 SECRET
==不能使用特殊字符==,只能使用大小写字母和数字。
|
|
|
|
AUTH_ANON=true
将允许匿名访问和留言。
- 建立系统服务
|
|
|
|
- 激活和启动系统服务
|
|
4.2 邮箱登录和第三方应用登录
如Github, Google, Telegram, Twitter ….
4.2.1 匿名登录
|
|
4.2.2 Github 登录
在 “OAuth App”: https://github.com/settings/developers
点击 “New OAuth App”
输入 “Application Name” 和 “Homepage URL”
Homepage URL里填上面的域名,如 https://remark42.sample.com在"Authorization callback URL" 按 域名 + /auth/github/callback 的格式输入, https://remark42.sample.com/auth/github/callback
点击 “Register application",得到"Client ID"和 “Client secrets”,填入上面的配置文件 /var/www/remark42/remark42.conf
|
|
|
|
4.2.3 Twitter 登录
- 在 “OAuth App”: https://developer.twitter.com/en/apps
- 点击 “Create an App” ,填写 App Name
- 记录好 API Key、API Key Secret 和 Bearer Token
- 在 “Dashboard” - “User authentication settings",点击 “Set up”
- …后面没记
- 最后在 Dashboard 里,点击Project App的名字,在 “Consumer Keys“处点击”Regenerate",就生成了API Key and Secret,填入上面的配置文件。
|
|
4.2.4 Google 登录
Google登录按官网教程 操作。
|
|
4.2.5 Email 登录
使用邮件相关功能,需要一个smtp服务器,这里以SendGrid 示例。
- 在SengGrid获取Api Key
在SendGrid官网 注册登后:
记录好这个”Password",填到下面 SMTP_PASSWORD
字段。
- 启用邮箱设置
- 要启用任何邮箱功能,下面四个字段必须有:
|
|
- 启用邮箱登录验证
|
|
- 启用用户通知
|
|
- 启用管理员通知
|
|
4.2.6 Teletram 登录
- 获取 HTTP API
和@BotFather 聊天
|
|
输入独一无二的机器人名字,Telegram就会给出 HTTP API.
- 启用 Telegram 登录
|
|
- 管理员通知
创建一个频道,将上面的机器人作为管理员添加到其中,配置文件中设置频道ID。Telegram私有频道ID获取办法 ,ID是13位数字,以-
负号开始
|
|
- 用户通知
暂时不能使用
五. 一些高级使用技巧
5.1 SSL证书自动续期
申请的SSL证书有效期只有几个月,超过后就要续期。
上面 申请ssl证书 的安装脚本自带自动续期功能。
5.2 实现开机自启动
见上面 实现开机自启动。
5.3 多网站共用一个Remark42系统
从这里得到的方法: 方法来源
5.3.1 步骤一
设置前端代码的 site_id
网站一:
|
|
网站二:
|
|
5.3.2 步骤二
服务端设置
- 网站 id 设置
- 如果用命令行启动,site参数如下
|
|
- 如果用环境参数启动,
|
|
- 是否跨域设置,可能有以下组合:
不设置任何值:在安装Remark42的同一域和子域上可用。
ALLOWED_HOSTS
设置为一组域,评论仅在列出的域上显示,登录授权在任何地方都不起作用,但在安装 Remark42 的同一域及其子域上可用。self
表示remark所在的域名,这里为sample.com
。
|
|
AUTH_SAME_SITE=None
: 评论显示在任何域上,登录授权可以在任何地方使用。
|
|
ALLOWED_HOSTS
设置为一组域,且AUTH_SAME_SITE=None
:评论显示在列出的域上,登录授权将也适用于这些域。
|
|
详细情况见 官网说明
5.4 管理评论
- 管理员ID在
ADMIN_SHARED_ID
字段设置,可以多个,用,
隔开。
|
|
怎么获得ID? 在评论区登录后,点击登录的用户名,会打开个人ID,双击可以选择。
管理员在评论区登录后,可以执行管理操作,如删封黑。
5.5 备份和恢复
5.5.1 备份数据
- 自动备份
Remark42 默认在${BACKUP_PATH}(default ./var/backup) 下制作每日备份文件。备份最多${MAX_BACKUP_FILES}(默认 10)。每个备份文件都包含导出和 gzip 压缩的内容,即所有注释。 - 手动备份
手动备份需要设置
ADMIN_PASSWD
并启用 ,注意密码不能使用特殊字符。
|
|
备份命令:
|
|
5.5.2 恢复数据
恢复数据需要设置 ADMIN_PASSWD
并启用。
恢复命令:
|
|
==恢复命令会删除现有的所有评论==,如要合并现在评论,看官网教程