Docker部署Artalk
# Artalk
Artalk 是一款简洁的自托管评论系统Artalk (opens new window)。本博客采用的评论系统就是Artalk😃。
# 部署
😃最方便的部署就是Docker!
这里咱也是采用Docker,将Artalk部署到服务器上。关于Docker的安装与配置等后面专门出一个文章谈谈咱的经验😶。
# 1. Docker创建对应容器
docker run -d \
--name artalk \
-p 23366:23366 \
-v $(pwd)/data:/data \
--restart=always \
artalk/artalk-go
1
2
3
4
5
6
2
3
4
5
6
直接创建即可,Docker的开箱即用真是太方便了!
# 2. 安全组设置
云服务器都有一个类似于防火墙的配置也就是安全组,我们要用过网络访问相应的服务就需要开放对应的端口。
# 3. 创建管理员账户
docker exec -it artalk artalk admin
1
# 4. 访问服务
使用对应的域名+端口号即可访问Artalk服务。
# 5.修改Arttalk配置
artalk 的配置文件在 data 目录下artalk.yml,可以通过修改配置文件根据自己的需求进行调整,也可以在管理后台的页面上进行配置。
进入容器找到data目录
下边是我使用的配置信息,其中部分信息做了脱敏:
# 服务器地址
host: "0.0.0.0"
# 服务器端口
port: 23366
# 加密密钥
app_key: "Atliyasi"
# 调试模式
debug: false
# 时间区域
timezone: "Asia/Shanghai"
# 默认站点名
site_default: "Atliyasi"
# 登陆有效时长 (单位:秒)
login_timeout: 259200
# 数据库
db:
# 数据库类型 ["sqlite", "mysql", "pgsql", "mssql"]
type: "sqlite"
# 数据库文件 (仅 SQLite 数据库需填写)
file: "./data/artalk-go.db"
# 数据库名称
name: "artalk"
# 数据库地址
host: "localhost"
# 数据库端口
port: 3306
# 数据库账户
user: "root"
# 数据库密码
password: ""
# 编码格式
charset: "utf8mb4"
# 表前缀 (例如:"atk_")
table_prefix: ""
# 日志
log:
# 启用日志
enabled: true
# 日志文件路径
filename: "./data/artalk-go.log"
# 可信域名
trusted_domains:
- http://localhost:8080
- http://chdclouds.com:23366
# 缓存
cache:
# 缓存类型 ["redis", "memcache", "builtin"]
type: "builtin"
# 缓存过期时间 (单位:分钟)
expires: 30
# 缓存启动预热 (程序启动时预热缓存)
warm_up: false
# 缓存服务器地址 (例如:"localhost:6379")
server: ""
# Redis 配置
redis:
# 连接方式 ["tcp", "unix"]
network: "tcp"
# 用户名
username: ""
# 密码
password: ""
# 数据库编号 (例如使用零号数据库填写 0)
db: 0
# SSL
ssl:
# 启用 SSL
enabled: false
# 证书文件路径
cert_path: ""
# 密钥文件路径
key_path: ""
# 管理员账户
admin_users:
- name: "Atliyasi"
email: "xxxxxxxxxx"
password: "xxxxxxxxxx" # 支持 bcrypt 或 md5 加密,如:"(md5)50c21190c6e4e5418c6a90d2b5031119"
badge_name: "管理员"
badge_color: "#FF6C00"
# 评论审核
moderator:
# 默认待审 (发表新评论需要后台人工审核后才能显示)
pending_default: 1
# API 请求错误时拦截 (关闭此项当请求错误时让评论放行)
api_fail_block: 1
# 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"
# 替换字符
replac_to: "x"
# 验证码
captcha:
# 启用验证码
enabled: true
# 总是需要验证码
always: false
# 激活验证码所需操作次数
action_limit: 3
# 重置操作计数器超时 (单位:s, 设为 -1 不重置)
action_reset: 60
# Geetest 极验 (https://www.geetest.com)
geetest:
enabled: false
captcha_id: ""
captcha_key: ""
# 邮件通知
email:
# 启用邮件通知
enabled: 1
# 发送方式 ["smtp", "ali_dm", "sendmail"]
send_type: "smtp"
# 发信人昵称
send_name: "{{reply_nick}}"
# 发信人地址
send_addr: "1067037658@qq.com"
# 邮件标题
mail_subject: "[{{site_name}}] 您收到了来自 @{{reply_nick}} 的回复"
# 邮件模板文件 (填入文件路径使用自定义模板)
mail_tpl: "default"
# SMTP 发送 (启用请将发送方式设为 "smtp")
smtp:
# 发件地址
host: "smtp.qq.com"
# 发件端口
port: 465
# 用户名
username: "1067037658@qq.com"
# 密码
password: "xxxxxxxxxxx"
# 阿里云邮件推送
# (启用请将发送方式设为 "ali_dm";参考:https://help.aliyun.com/document_detail/29444.html)
ali_dm:
access_key_id: ""
access_key_secret: ""
account_name: "noreply@example.com"
# 图片上传
img_upload:
# 启用图片上传
enabled: 0
# 图片存放路径
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
# 多元推送
admin_notify:
# 通知模版 (填入文件路径使用自定义模板)
notify_tpl: "default"
# 嘈杂模式
noise_mode: false
# 邮件通知管理员
email:
# 开启 (当使用其他推送方式时,可以关闭管理员邮件通知)
enabled: 0
# 邮件标题 (发送给管理员的邮件标题)
mail_subject: "[{{site_name}}] 您的文章「{{page_title}}」有新回复"
# Telegram
telegram:
enabled: false
api_token: ""
receivers:
- 7777777
# Bark
bark:
enabled: false
server: "http://day.app/xxxxxxx/"
# 飞书
lark:
enabled: false
webhook_url: ""
# WebHook
webhook:
enabled: false
url: ""
# 钉钉
ding_talk:
enabled: 1
token: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
secret: "wiki"
# 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"
# 前端配置
frontend:
# 评论框占位文字
placeholder: "请正确填写邮箱以便接收回复通知,如需添加图片,请通过第三方图床引用图片,评论支持Markdown语法"
# 无评论显示文字
noComment: "「此时无声胜有声」"
# 发送按钮文字
sendBtn: "提交"
# 评论框旅行
editorTravel: 1
# 暗黑模式
darkMode: false
# 表情包
emoticons: "https://cdn.jsdelivr.net/gh/eryajf/emotion_generate/dist/artalk.json"
# 投票按钮
vote: true
# 反对按钮
voteDown: false
# 用户 UA 徽标
uaBadge: true
# 评论排序功能
listSort: true
# 页面 PV 绑定元素
pvEl: "#ArtalkPV"
# 评论数绑定元素
countEl: "#ArtalkCount"
# 编辑器实时预览功能
preview: true
# 平铺模式 ["auto", true, false]
flatMode: "auto"
# 最大嵌套层数
nestMax: 10
# 嵌套评论排序规则 ["DATE_ASC", "DATE_DESC", "VOTE_UP_DESC"]
nestSort: DATE_ASC
# 头像
gravatar:
# Gravatar 镜像地址
mirror: "https://cravatar.cn/avatar/"
# 默认头像
default: "mp"
# 评论分页
pagination:
# 每页评论数
pageSize: 20
# 加载更多模式 (关闭则使用分页条)
readMore: true
# 滚动加载
autoLoad: true
# 内容限高
heightLimit:
# 评论内容限高 (单位:px)
content: 300
# 子评论区域限高 (单位:px)
children: 400
# 请求超时 (单位:毫秒)
reqTimeout: 15000
# 版本检测
versionCheck: true
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
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
# 6. 博客中引用Artalk
npm install --save vuepress-plugin-vdoing-comment
1
- 配置插件
[
'vuepress-plugin-vdoing-comment', // 评论
{
choosen: 'artalk',
options: {
server: 'http://you-server:23366', // Artalk服务地址(必填)
site: 'Atliyasi', // 站点名称(必填)
disableEmotion: false, // 是否禁用表情(可选)
disablePicture: true, // 是否禁用图片(可选)
disablePreview: false // 是否禁用预览(可选)
}
}
],
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
🥳 已成功完成 Artalk 部署和使用!