配置文件
轻松配置
推荐在侧边栏 “控制中心” 通过图形界面修改配置,无需手动编辑配置文件。
环境变量
可通过环境变量配置,参考文档:环境变量。
指定配置文件路径
Artalk 默认以工作目录下的 artalk.yml
作为配置文件,可使用参数 -c
来指定具体文件:
artalk -c ./conf.yml
获取模版配置文件
可参考一份「完整的配置文件」:artalk.example.zh-CN.yml
使用 gen 命令生成配置文件
Artalk 提供 gen
命令,你可以快速生成一份新的配置文件:
artalk gen conf -lang zh-CN ./artalk.yml
命令行下载配置文件
wget -O artalk.yml https://raw.githubusercontent.com/ArtalkJS/Artalk/master/conf/artalk.example.zh-CN.yml
加密密钥 app_key
在 Artalk 启动之前,你需要配置一个 app_key
用于对网站内容进行安全加密:
app_key: <任意的字符>
语言 locale
设置 Artalk 的语言。遵循 Unicode BCP 47 规范,该项默认为 "zh-CN" (简体中文)。
locale: zh-CN
详情参考:多语言
数据库 db
Artalk 支持连接多种数据库,支持 SQLite、MySQL、PostgreSQL、SQL Server 配置如下:
SQLite
SQLite 是轻型数据库,使用单个文件存储数据,无需额外运行程序,尤其适合小型站点,例如个人博客。
db:
type: sqlite
file: ./data/artalk.db
MySQL / PostgreSQL / SQL Server
修改 type
为你的数据库类型:
db:
type: mysql # sqlite, mysql, pgsql, mssql
name: artalk # 数据库名
host: localhost # 地址
port: 3306 # 端口
user: root # 账号
password: '' # 密码
charset: utf8mb4 # 编码格式
table_prefix: '' # 表前缀 (例如:"atk_")
ssl: false # 启用 SSL
prepare_stmt: true # 预编译语句
数据表将在 Artalk 启动时自动完成创建,无需额外操作。
数据库连接字符串 (DSN)
如有需要,你还可以手动配置 db.dsn
来指定数据库连接字符串,例如:
db:
type: mysql
dsn: mysql://myuser:mypassword@localhost:3306/mydatabase?tls=skip-verify
更多内容参考:@go-sql-driver/mysql:README.md
服务器 http
http:
# 请求体大小限制 (单位:MB)
body_limit: 100
# 代理标头名 (当使用 CDN 时填写 `X-Forwarded-For` 获取用户真实 IP)
proxy_header: ""
管理员 admin_users
你需要配置管理员账户,这样才能通过「控制中心」对站点内容进行管理。
Artalk 支持多站点,你可以创建多个管理员账户,为其分配站点,让你的朋友们共用同一个后端程序。
详情参考:管理员 × 多站点
可信域名 trusted_domains
trusted_domains:
- https://前端使用域名A.com
- https://前端使用域名B.com
仅允许列表中的域名访问后端 API,限制来自列表外的域名跨域请求。
TIP
你需要将「前端页面」的 URL 地址加入可信域名列表中,
若非默认 80/443 端口需额外附带端口号,例如:https://example.com:8080
在侧边栏 控制中心 的「站点」选项卡 - 选择站点「修改 URL」,填入站点 URL 也具有相同的设置效果;添加多个 URL 可使用 ,
英文逗号分隔,修改后请手动重启 Artalk。
默认站点地址 ATK_SITE_URL
配置项也会被自动加入可信域名列表。
另外,你也可以在启动时通过环境变量 ATK_TRUSTED_DOMAINS
来配置可信域名,例如:
ATK_TRUSTED_DOMAINS="https://a.com https://b.org" artalk server
请注意,环境变量将覆盖配置文件中的设置。
技术细节:trusted_domains
配置通过控制 HTTP 响应标头 Access-Control-Allow-Origin
来对跨域请求进行限制 (参考:W3C Cross-Origin Resource Sharing / OWASP 安全备忘单).
默认站点 site_default
如果你觉得大概是不会用到 Artalk 的多站点功能,可以直接将该项配置为你的站点名,例如:
site_default: Artalk 官网
然后在前端直接使用这个站点名:
Artalk.init({ site: 'Artalk 官网' })
这样,你就无需在侧边栏的控制中心手动创建站点。
界面配置 frontend
在 Artalk 的配置文件 artalk.yml
可以配置 frontend
字段来控制前端界面,例如:
frontend:
placeholder: 键入内容...
noComment: 「此时无声胜有声」
sendBtn: 发送评论
emoticons: 'https://raw.githubusercontent.com/ArtalkJS/Emoticons/master/grps/default.json'
# ----- 此处省略 -------
# 与前端配置项名称保持一致
一份完整的后端 frontend
字段配置文件可供参考:artalk.example.zh-CN.yml
邮件通知 email
配置邮件通知,让回复通过邮件的形式通知目标用户,你可以自定义邮件发送者名称、标题、模版等。
详情参考:后端 · 邮件通知
多元推送 admin_notify
你可以配置多种消息发送方式,例如飞书、Telegram 等,当收到新的评论时通知管理员。
详情参考:后端 · 多元推送
评论审核 moderator
配置评论审核来自动拦截垃圾评论。
详情参考:后端 · 评论审核
验证码 captcha
支持图片、滑动验证码,通过验证码对请求频率进行限制。
详情参考:后端 · 验证码
高速缓存 cache
为节省内存资源占用,缓存默认关闭。如果你对网站性能有较高要求,请手动开启。你还可以连接外部缓存服务器,支持 Redis 和 Memcache。
cache:
enabled: true # 启用缓存 (默认关闭)
type: builtin # 支持 redis, memcache, builtin (自带缓存)
expires: 30 # 缓存过期时间 (单位:分钟)
warm_up: false # 程序启动时预热缓存
server: '' # 连接缓存服务器 (例如:"localhost:6379")
- warm_up:缓存预热功能。设置为
true
,在 Artalk 启动时会立刻对数据库内容进行全面缓存,如果你的评论数据较多,多达上万条,启动时间可能会延长。 - type:缓存类型,默认为
builtin
。可选:redis
,memcache
,builtin
。
注:如果在 Artalk 程序外部修改数据库内容,需要刷新 Artalk 缓存才能更新。
Redis 身份认证、数据库配置:
# 缓存
cache:
# 省略其他配置项...
redis:
network: tcp # 连接方式 (tcp 或 unix)
username: '' # 用户名
password: '' # 密码
db: 0 # 使用零号数据库
监听地址 host
Artalk 的默认 HTTP 端口为 23366,你可以在配置文件中指定:
host: '0.0.0.0'
port: 23366
配置 host
监听地址为 0.0.0.0
将 Artalk 服务暴露到全网可访问范围,
如果你只想让 Artalk 仅本地能够访问,可将 host
配置为 127.0.0.1
。
命令行下启动 Artalk 时,可以携带 --host
和 --port
参数分别对地址和端口进行指定,例如:
artalk server --host 127.0.0.1 --port 8080
加密传输 ssl
ssl:
enabled: true
cert_path: ''
key_path: ''
你可以配置该项,让 HTTP 升级为 HTTPS,通过 SSL 协议加密传输数据。
cert_path
:SSL 证书公钥文件路径。key_path
:SSL 证书私钥文件路径。
你也可以直接反向代理 Artalk 本地服务器,然后在例如 Nginx 启用 HTTPS。
时区配置 timezone
timezone: Asia/Shanghai
该值填写你所在地时区,对应 IANA 数据库时区名,参考:Wikipedia / RFC-6557。
UTC+08:00 Asia/Shanghai
UTC+09:00 Asia/Tokyo
UTC-07:00 America/Los_Angeles
UTC-04:00 America/New_York
登录超时 login_timeout
该值设定管理员账户登录 JWT 令牌的有效期,单位:秒。
例如,3 天有效:
login_timeout: 259200
日志配置 log
打开日志后,系统错误等信息将被记录到设定的文件中。
log:
enabled: true # 总开关
filename: ./data/artalk.log # 日志文件路径
日志为 JSON 格式,可以通过使用 Linux 的 tail
命令结合 jq
工具查看:
tail -f ./data/artalk.log | jq
如果你是 Grafana 用户,可以结合 Loki 和 Promtail 来实现日志的收集和查询。
调试模式 debug
将 debug
配置为 true
启用调试模式。
debug: true
工作目录 -w
参数
Artalk 在不指定工作目录的情况下,会使用「程序启动时的目录」作为工作目录。
pwd # 显示当前目录路径
使用参数 -w
来指定工作目录,它通常是一个「绝对路径」,例如:
artalk -w /root/artalk -c ./conf.yml
注:-c
的相对路径会基于 -w
的路径,Artalk 此时会读取 /root/artalk/conf.yml
作为配置文件。
其次,在「配置文件中」使用的「相对路径」,也会基于「工作目录」。
例如 conf.yml
中有这样的配置:
test_file: ./data/artalk.log
将读取 /root/artalk/data/artalk.log
。