迁移Vssue为Artalk
# 本地测试评论
通过 Docker 下载 Artalk
构建已经下载好的 Artalk 包:docker build -t altalk:v1 .
初始化用户名和密码:docker exec -it artalk artalk admin
配置文件修改(部分展示):
# 服务器地址
host: "0.0.0.0"
# 服务器端口
port: 23366
# 加密密钥
app_key: "xintu"
# 调试模式
debug: false
# 语言 ["en", "zh-CN", "zh-TW", "jp", "fr", "ko", "ru"]
locale: zh-CN
# 时间区域
timezone: Asia/Shanghai
# 默认站点名
site_default: "星途物语"
# 登录有效时长 (单位:秒)
login_timeout: 259200
# 数据库
db:
# 数据库类型 ["sqlite", "mysql", "pgsql", "mssql"]
type: sqlite
# 数据库文件 (仅 SQLite 数据库需填写)
file: ./data/artalk.db
# 数据库名称
name: artalk
# 数据库地址
host: localhost
# 数据库端口
port: 3306
# 数据库账户
user: root
# 数据库密码
password: ""
# 编码格式
charset: utf8mb4
# 表前缀 (例如:"atk_")
table_prefix: ""
# 启用 SSL
ssl: false
# 预编译语句
prepare_stmt: true
# 服务器
http:
# 请求体大小限制 (单位:MB)
body_limit: 100
# 代理标头名 (当使用 CDN 时填写 `X-Forwarded-For` 获取用户真实 IP)
proxy_header: ""
# 日志
log:
# 启用日志
enabled: true
# 日志文件路径
filename: ./data/artalk.log
# 缓存
cache:
# 启用缓存
enabled: false
# 缓存类型 ["redis", "memcache", "builtin"]
type: builtin
# 缓存过期时间 (单位:分钟)
expires: 30
# 缓存启动预热 (程序启动时预热缓存)
warm_up: false
# 缓存服务器地址 (例如:"localhost:6379")
server: ""
# Redis 配置
redis:
# 连接方式 ["tcp", "unix"]
network: tcp
# 用户名
username: ""
# 密码
password: ""
# 数据库编号 (例如使用零号数据库填写 0)
db: 0
# 可信域名
# -- 例如:["https://artalk.example.com:23366"] --
# 等一下在线上服务器需要修改,这里是本地测试评论时用到
trusted_domains:
- http://localhost:8080
- http://zzl.linux.com
# SSL
ssl:
# 启用 SSL
enabled: false
# 证书文件路径
cert_path: ""
# 密钥文件路径
key_path: ""
# 管理员账户
# --
# - name: "admin"
# email: "admin@example.com"
# password: "" # 支持 bcrypt 或 md5 加密,如:"(bcrypt)$2y$10$ti4vZYIrxVN8rLcYXVgXCO.GJND0dyI49r7IoF3xqIx8bBRmIBZRm"
# badge_name: "管理员"
# badge_color: "#0083FF"
# --
admin_users: []
# 评论审核
moderator:
# 默认待审 (发表新评论需要后台人工审核后才能显示)
pending_default: false
# API 请求错误时拦截 (关闭此项当请求错误时让评论放行)
api_fail_block: false
# Akismet Key
# (Akismet 反垃圾服务,https://akismet.com)
akismet_key: ""
# 腾讯云文本内容安全
# (https://cloud.tencent.com/document/product/1124/64508)
tencent:
enabled: false
secret_id: ""
secret_key: ""
region: ap-guangzhou
# 阿里云内容安全
# (https://help.aliyun.com/document_detail/28417.html)
aliyun:
enabled: false
access_key_id: ""
access_key_secret: ""
region: cn-shanghai
# 关键词过滤 (本地离线词库)
keywords:
enabled: false
# 匹配成功设为待审状态
pending: false
# 词库文件 (支持多个词库文件)
files:
- ./data/词库_1.txt
# 词库文件内容分割符 (例如填写 "\n" 文件中一行一个关键词)
file_sep: "\n"
# 替换字符
replace_to: x
# 验证码
captcha:
# 启用验证码
enabled: true
# 总是需要验证码
always: false
# 验证类型 ["image", "turnstile", "recaptcha", "hcaptcha", "geetest"]
captcha_type: image
# 激活验证码所需操作次数
action_limit: 3
# 重置操作计数器超时 (单位:s, 设为 -1 不重置)
action_reset: 60
# Turnstile
# (https://www.cloudflare.com/products/turnstile/)
turnstile:
site_key: ""
secret_key: ""
# reCaptcha
# (https://www.google.com/recaptcha/about/)
recaptcha:
site_key: ""
secret_key: ""
# hCaptcha (https://www.hcaptcha.com/)
hcaptcha:
site_key: ""
secret_key: ""
# Geetest 极验 (https://www.geetest.com)
geetest:
captcha_id: ""
captcha_key: ""
# IP 属地
ip_region:
# 启用 IP 属地展示
enabled: false
# 数据文件路径 (.xdb 格式)
db_path: ./data/ip2region.xdb
# 显示精度 ["province", "city", "country"]
precision: province
# 图片上传
img_upload:
# 启用图片上传
enabled: true
# 图片存放路径
path: ./data/artalk-img/
# 图片大小限制 (单位:MB)
max_size: 5
# 图片链接基础路径 (默认为 "/static/images/")
public_path: null
# Upgit 配置
# (使用 Upgit 将图片上传到 GitHub 或图床:https://github.com/pluveto/upgit)
upgit:
# 启用 Upgit
enabled: false
# 命令行参数
exec: upgit -c <upgit配置文件路径> -t /artalk-img
# 上传后删除本地的图片
del_local: true
# 邮件通知
email:
# 启用邮件通知
enabled: true
# 发送方式 ["smtp", "ali_dm", "sendmail"]
send_type: smtp
# 发信人昵称
send_name: "{{reply_nick}}"
# 发信人地址
send_addr: 156xxxx2568@163.com
# 邮件标题
mail_subject: "[{{site_name}}] 您收到了来自 @{{reply_nick}} 的回复"
# 邮件模板文件 (填入文件路径使用自定义模板)
mail_tpl: default
# SMTP 发送 (启用请将发送方式设为 "smtp")
smtp:
# 发件地址
host: smtp.163.com
# 发件端口
port: 465
# 用户名
username: 156xxxx2568@163.com
# 密码
password: "xxxxxxxxxxxxx"
# 阿里云邮件推送
# (启用请将发送方式设为 "ali_dm";参考:https://help.aliyun.com/document_detail/29444.html)
ali_dm:
access_key_id: ""
access_key_secret: ""
account_name: noreply@example.com
# 多元推送
admin_notify:
# 通知模版 (填入文件路径使用自定义模板)
notify_tpl: default
# 待审评论仍然发送通知 (当评论被拦截时仍然发送通知)
notify_pending: false
# 嘈杂模式
noise_mode: false
# 邮件通知管理员
email:
# 开启 (当使用其他推送方式时,可以关闭管理员邮件通知)
enabled: true
# 邮件标题 (发送给管理员的邮件标题)
mail_subject: "[{{site_name}}] 您的文章「{{page_title}}」有新回复"
# 管理员邮件模板文件 (填入文件路径使用自定义模板)
mail_tpl: ""
# Telegram
telegram:
enabled: false
api_token: ""
receivers:
- 7777777
# Bark
bark:
enabled: false
server: http://day.app/xxxxxxx/
# 飞书
lark:
enabled: false
webhook_url: ""
# 消息类型 ["text", "card"]
msg_type: "text"
# WebHook
webhook:
enabled: false
url: ""
# 钉钉
ding_talk:
enabled: false
token: ""
secret: ""
# Slack
slack:
enabled: false
oauth_token: ""
receivers:
- CHANNEL_ID
# LINE
line:
enabled: false
channel_secret: ""
channel_access_token: ""
receivers:
- USER_ID_1
- GROUP_ID_1
# 社交登录
auth:
# 启用社交登录
enabled: false
# 允许匿名评论 (允许跳过验证,仅填写匿名的昵称和邮箱)
anonymous: true
# 回调地址 (https://example.com/api/v2/auth/{provider}/callback)
callback: "http://localhost:23366/api/v2/auth/{provider}/callback"
# Email
email:
# 启用邮箱密码登录
enabled: true
# 邮箱验证邮件标题
verify_subject: "您的验证码是 - {{code}}"
# 邮箱验证邮件模板 (填入文件路径使用自定义模板)
verify_tpl: default
# GitHub
github:
enabled: false
client_id: ""
client_secret: ""
# GitLab
gitlab:
enabled: false
client_id: ""
client_secret: ""
# Gitea
gitea:
enabled: false
client_id: ""
client_secret: ""
# Google
google:
enabled: false
client_id: ""
client_secret: ""
# Mastodon
mastodon:
enabled: false
client_id: ""
client_secret: ""
# Twitter
twitter:
enabled: false
client_id: ""
client_secret: ""
# Facebook
facebook:
enabled: false
client_id: ""
client_secret: ""
# Discord
discord:
enabled: false
client_id: ""
client_secret: ""
# Steam
steam:
enabled: false
api_key: ""
# Apple
apple:
enabled: false
client_id: ""
client_secret: ""
# Microsoft
microsoft:
enabled: false
client_id: ""
client_secret: ""
# 微信
wechat:
enabled: false
client_id: ""
client_secret: ""
# Tiktok
tiktok:
enabled: false
client_id: ""
client_secret: ""
# Slack
slack:
enabled: false
client_id: ""
client_secret: ""
# Line
line:
enabled: false
client_id: ""
client_secret: ""
# Patreon
patreon:
enabled: false
client_id: ""
client_secret: ""
# Auth0
auth0:
enabled: false
client_id: ""
client_secret: ""
domain: ""
# 界面配置
frontend:
# 评论框占位文字
placeholder: "请正确填写邮箱以便接收回复通知,如需添加图片,请通过第三方图床引用图片,评论支持Markdown语法"
# 无评论显示文字
noComment: "说点什么吧~"
# 发送按钮文字
sendBtn: "提交"
# 评论框穿梭
editorTravel: true
# 表情包
emoticons: https://cdn.jsdelivr.net/gh/ArtalkJS/Emoticons/grps/default.json
# 投票按钮
vote: true
# 反对按钮
voteDown: false
# 用户 UA 徽标
uaBadge: false
# 评论排序功能
listSort: true
# 编辑器实时预览功能
preview: true
# 平铺模式 ["auto", true, false]
flatMode: auto
# 夜间模式 ["inherit", "auto"]
darkMode: inherit
# 最大嵌套层数
nestMax: 10
# 嵌套评论排序规则 ["DATE_ASC", "DATE_DESC", "VOTE_UP_DESC"]
nestSort: DATE_ASC
# 头像 Gravatar
gravatar:
# API 地址
mirror: https://cravatar.cn/avatar/
# API 参数
params: sha256=1&d=mp&s=240
default: "mp"
# 评论分页
pagination:
# 每页评论数
pageSize: 20
# 加载更多模式 (关闭则使用分页条)
readMore: true
# 滚动加载
autoLoad: true
# 内容限高
heightLimit:
# 评论内容限高 (单位:px)
content: 300
# 子评论区域限高 (单位:px)
children: 400
# 滚动限高 (允许限高区域滚动)
# scrollable: false
# 图片懒加载 [false, "native", "data-src"]
# imgLazyLoad: false
# 请求超时 (单位:毫秒)
reqTimeout: 15000
# 版本检测
versionCheck: true
# 插件
pluginURLs: []
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
# 备份数据
1.将数据卷目录备份
2.artalk镜像导出:docker save -o artalk.tar artalk:v1
# 生产环境配置
1.导入镜像:docker load -i artalk.tar
2.将备份的数据卷放置在指定位置
3.运行容器
docker run -d \
--name artalk \
-p 8080:23366 \
-v /opt/docker/Artalk-master/data:/data \
-e "TZ=Asia/Shanghai" \
-e "ATK_LOCALE=zh-CN" \
-e "ATK_SITE_DEFAULT=星途物语" \
-e "ATK_SITE_URL=https://www.dragonwarrior1020.top" \
altalk:v1
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
4.安装sqlite,创建数据库
sudo yum install sqlite sqlite-devel -y
.open artalk.db
4.修改artalk配置文件
主要是修改信任域名处
5.修改nginx配置文件
server {
listen 80;
listen 443 ssl;
server_name www.dragonwarrior520.top;
ssl_certificate /etc/nginx/conf.d/cert/dragonwarrior520.top.pem;
ssl_certificate_key /etc/nginx/conf.d/cert/dragonwarrior520.top.key;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8080;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 修改客户端配置
1.npm install artalk
2.修改配置文件
config.js 和 plugins.js
plugins: [
[
"vuepress-plugin-vdoing-comment",
{
choosen: "artalk",
options: {
server: "http://www.dragonwarrior520.top", // (必填)
site: "星途物语", // (必填)
// disableEmotion: false, // 是否禁用表情(可选)
// disablePicture: true, // 是否禁用图片(可选)
// disablePreview: false // 是否禁用预览(可选)
},
footer: {
text: '鄂ICP备2024086820号',
link: 'https://beian.miit.gov.cn/',
}
},
],
[
"cursor-effects"
]
],
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
但是因为 Artalk 也是需要通过域名来在公网上使用,也要去备案这个域名,等域名备案通过后,立马上线评论区
