Docker搭建Remark42评论系统

本文最后更新于 2024年10月20日 下午

1. 前言

搭建完Hexo,我们需要一个评论服务,在Fluid主题里反复挑选,发现Remark42在颜值和功能都达到需求,所以这一篇我们来搭建一个评论服务。

2. 介绍

Remark42 是一个开源、自托管、轻量级且功能强大的评论服务

介绍.webp

  • 支持匿名、邮箱登录
  • 支持各种OAuth,如GitHub、Google、Facebook、Twitter、Yandex
  • 支持数据迁移,可以导入Disqus和WordPress的评论数据
  • 支持手动备份和自动备份,支持备份数据恢复
  • 强大的管理功能,管理员可以置顶、删除评论和用户禁言
  • 支持浅色和深色模式,带有树和普通演示文稿的多层嵌套评论
  • 支持多种评论排序
  • 支持最近的评论
  • 支持投票,个人标示和验证
  • 支持RSS
  • 支持通知
  • 支持Docker的部署

3. 展示

官方的Demo:https://remark42.com/demo

Demo.webp

3. 相关地址

Github:https://github.com/umputun/remark42
官网:https://remark42.com

4. 环境说明

  • 服务器:我自己搭建用的是 Racknerd 的VPS,最好是选 非大陆(香港)的服务器
  • 系统:Debian10或以上(Ubuntu 20.04以上)
  • 域名一个,可以去阿里云Namesilo上注册一个

5. 搭建过程

官方提供了两种安装方式,一种是Docker,一种是二进制,这里采用Docker安装的方式

5.1 创建安装目录

1
2
3
4
5
sudo -i

mkdir -p /root/data/docker_data/ramark42

cd /root/data/docker_data/ramark42

5.2 创建并编辑 docker-compose.yml 文件

这是官方的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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: "remark42"
restart: always

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
- SECRET
- DEBUG=true
- AUTH_GOOGLE_CID
- AUTH_GOOGLE_CSEC
- AUTH_GITHUB_CID
- AUTH_GITHUB_CSEC
- AUTH_FACEBOOK_CID
- AUTH_FACEBOOK_CSEC
- AUTH_DISQUS_CID
- AUTH_DISQUS_CSEC
# Enable it only for the initial comment import or for manual backups.
# Do not leave the server running with the ADMIN_PASSWD set if you don't have an intention
# to keep creating backups manually!
# - ADMIN_PASSWD=<your secret password>
volumes:
- ./var:/srv/var

这是我修改过的配置文件,请将###改成你的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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: "remark42"
restart: always
networks:
- default

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

# uncomment to expose directly (no proxy)
ports:
- "8005:8080"
- "8243:8443"

environment:
- REMARK_URL=###
- SITE=###
- SECRET=###
- DEBUG=true
- AUTH_ANON=true
- AUTH_GITHUB_CID=###
- AUTH_GITHUB_CSEC=###
- AUTH_TELEGRAM=true
- TELEGRAM_TOKEN=###
- EMOJI=true
- SMTP_HOST=###
- SMTP_PORT=465
- SMTP_TLS=true
- SMTP_USERNAME=###
- SMTP_PASSWORD=###
- AUTH_EMAIL_ENABLE=true
- AUTH_EMAIL_FROM=###
- AUTH_EMAIL_SUBJ=###
- NOTIFY_USERS=email
- NOTIFY_EMAIL_FROM=###
- NOTIFY_EMAIL_VERIFICATION_SUBJ=Remark42 sign in confirmation
- NOTIFY_ADMINS=telegram
- NOTIFY_TELEGRAM_CHAN=###
- NOTIFY_TYPE=telegram
- ADMIN_SHARED_EMAIL=###
- 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:
- ./data/var:/srv/var

networks:
default:
name: remark-nginx

6. 反向代理

如果有安装UFW防火墙的记得在防火墙放行相应端口

1
ufw allow 8005/tcp

请把端口修改成自己的

说明:另外,服务商提供的防火墙也要放行(如果有的话)

反向代理-1.webp

反向代理-2.webp

反向代理后,域名+/web在浏览器访问

7. 使用教程

打开并编辑Fluid主题配置文件,找到 comments ,把 enable: 后面的false 修改成 true ,并在 type: 后面填写 remark42

开启评论插件.webp

然后搜索 Remark42 找到后把配置修改成自己的

配置Remark42.webp

8. 邮箱和第三方登录

8.1 匿名登录

1
AUTH_ANON=true

8.2 Github 登录

  1. 在 “OAuth App”: https://github.com/settings/developers
  2. 点击 “New OAuth App
  3. 输入 “Application Name” Application name里填名称,如zxlxのBlog
  4. Homepage URL” Homepage URL里填网站链接,如https://blog.ins.run
  5. 在”Authorization callback URL“ 按 域名 + /auth/github/callback 的格式输入, https://remark42.ins.run/auth/github/callback
  6. 点击 “Register application”,得到”Client ID“和 “Client secrets”,填入到docker-compose配置文件中

8.3 Telegram 登录

8.3.1 获取 HTTP API

@BotFather 聊天

1
/newbot

输入机器人名字和用户名,Telegram就会给出 HTTP API

8.3.2 启用 Telegram 登录

1
AUTH_TELEGRAM=true

8.3.3 管理员通知

创建一个频道,将上面的机器人作为管理员添加到其中,配置文件中设置频道ID。Telegram私有频道ID获取办法 ,ID是13位数字,以 - 负号开始

1
2
3
4
NOTIFY_ADMINS=telegram
NOTIFY_TELEGRAM_CHAN=-100**********
NOTIFY_TYPE=telegram
NOTIFY_TELEGRAM_TOKEN=62*****253:AA***********************************

8.3.4 用户通知

暂时不能使用

9. 邮箱登录

9.1 SMTP配置

  • 要启用任何邮箱功能,下面的三个字段必须要填写:
    1
    2
    3
    4
    5
    SMTP_HOST=###
    SMTP_PORT=465
    SMTP_TLS=true
    SMTP_USERNAME=###
    SMTP_PASSWORD=###

9.2 邮箱登录验证

1
2
3
4
AUTH_EMAIL_ENABLE=true
AUTH_EMAIL_FROM=###
AUTH_EMAIL_SUBJ="在 zxlx.net 留言确认"
AUTH_EMAIL_CONTENT_TYPE=###

9.3 用户通知

1
2
3
NOTIFY_USERS=email
NOTIFY_EMAIL_FROM=###
NOTIFY_EMAIL_VERIFICATION_SUBJ='邮件确认'

9.4 管理员通知

1
2
3
NOTIFY_ADMINS=email
NOTIFY_EMAIL_FROM=###
ADMIN_SHARED_EMAIL=###

文章里还有其他的Outh没有写到,可以自行前往官网查看

10. 更新Remark42

1
2
3
4
5
6
7
cd /root/data/docker_data/remark42

docker-compose pull

docker-compose up -d

docker image prune

Docker搭建Remark42评论系统
https://zxlx.ink/archives/docker-install-remark42
作者
逐星落汐.
发布于
2024年9月15日
许可协议