Skip to content

配置文件

轻松配置

推荐在侧边栏 “控制中心” 通过图形界面修改配置,无需手动编辑配置文件。

环境变量

可通过环境变量配置,参考文档:环境变量

指定配置文件路径

Artalk 默认以工作目录下的 artalk.yml 作为配置文件,可使用参数 -c 来指定具体文件:

bash
artalk -c ./conf.yml

获取模版配置文件

可参考一份「完整的配置文件」:artalk.example.zh-CN.yml

使用 gen 命令生成配置文件

Artalk 提供 gen 命令,你可以快速生成一份新的配置文件:

bash
artalk gen conf -lang zh-CN ./artalk.yml

命令行下载配置文件

bash
wget -O artalk.yml https://raw.githubusercontent.com/ArtalkJS/Artalk/master/conf/artalk.example.zh-CN.yml

加密密钥 app_key

在 Artalk 启动之前,你需要配置一个 app_key 用于对网站内容进行安全加密:

yaml
app_key: <任意的字符>

语言 locale

设置 Artalk 的语言。遵循 Unicode BCP 47 规范,该项默认为 "zh-CN" (简体中文)。

yml
locale: zh-CN

详情参考:多语言

数据库 db

Artalk 支持连接多种数据库,支持 SQLite、MySQL、PostgreSQL、SQL Server 配置如下:

SQLite

SQLite 是轻型数据库,使用单个文件存储数据,无需额外运行程序,尤其适合小型站点,例如个人博客。

yaml
db:
  type: sqlite
  file: ./data/artalk.db

MySQL / PostgreSQL / SQL Server

修改 type 为你的数据库类型:

yaml
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 来指定数据库连接字符串,例如:

yaml
db:
  type: mysql
  dsn: mysql://myuser:mypassword@localhost:3306/mydatabase?tls=skip-verify

更多内容参考:@go-sql-driver/mysql:README.md

服务器 http

yaml
http:
  # 请求体大小限制 (单位:MB)
  body_limit: 100
  # 代理标头名 (当使用 CDN 时填写 `X-Forwarded-For` 获取用户真实 IP)
  proxy_header: ""

管理员 admin_users

你需要配置管理员账户,这样才能通过「控制中心」对站点内容进行管理。

Artalk 支持多站点,你可以创建多个管理员账户,为其分配站点,让你的朋友们共用同一个后端程序。

详情参考:管理员 × 多站点

可信域名 trusted_domains

yaml
trusted_domains:
  - https://前端使用域名A.com
  - https://前端使用域名B.com

仅允许列表中的域名访问后端 API,限制来自列表外的域名跨域请求。

TIP

你需要将「前端页面」的 URL 地址加入可信域名列表中,

若非默认 80/443 端口需额外附带端口号,例如:https://example.com:8080

在侧边栏 控制中心 的「站点」选项卡 - 选择站点「修改 URL」,填入站点 URL 也具有相同的设置效果;添加多个 URL 可使用 , 英文逗号分隔,修改后请手动重启 Artalk。

另外,你也可以在启动时通过环境变量 TRUSTED_DOMAINS 来配置可信域名,例如:

bash
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 的多站点功能,可以直接将该项配置为你的站点名,例如:

yaml
site_default: Artalk 官网

然后在前端直接使用这个站点名:

js
Artalk.init({ site: 'Artalk 官网' })

这样,你就无需在侧边栏的控制中心手动创建站点。

界面配置 frontend

在 Artalk 的配置文件 artalk.yml 可以配置 frontend 字段来控制前端界面,例如:

yaml
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。

yaml
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 身份认证、数据库配置:

yaml
# 缓存
cache:
  # 省略其他配置项...
  redis:
    network: tcp # 连接方式 (tcp 或 unix)
    username: '' # 用户名
    password: '' # 密码
    db: 0 # 使用零号数据库

监听地址 host

Artalk 的默认 HTTP 端口为 23366,你可以在配置文件中指定:

yaml
host: '0.0.0.0'
port: 23366

配置 host 监听地址为 0.0.0.0 将 Artalk 服务暴露到全网可访问范围,

如果你只想让 Artalk 仅本地能够访问,可将 host 配置为 127.0.0.1

命令行下启动 Artalk 时,可以携带 --host--port 参数分别对地址和端口进行指定,例如:

bash
artalk server --host 127.0.0.1 --port 8080

加密传输 ssl

yaml
ssl:
  enabled: true
  cert_path: ''
  key_path: ''

你可以配置该项,让 HTTP 升级为 HTTPS,通过 SSL 协议加密传输数据。

  • cert_path:SSL 证书公钥文件路径。
  • key_path:SSL 证书私钥文件路径。

你也可以直接反向代理 Artalk 本地服务器,然后在例如 Nginx 启用 HTTPS。

时区配置 timezone

yaml
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 天有效:

yaml
login_timeout: 259200

日志配置 log

打开日志后,系统错误等信息将被记录到设定的文件中。

yaml
log:
  enabled: true # 总开关
  filename: ./data/artalk.log # 日志文件路径

日志为 JSON 格式,可以通过使用 Linux 的 tail 命令结合 jq 工具查看:

bash
tail -f ./data/artalk.log | jq

如果你是 Grafana 用户,可以结合 Loki 和 Promtail 来实现日志的收集和查询。

调试模式 debug

debug 配置为 true 启用调试模式。

yaml
debug: true

工作目录 -w 参数

Artalk 在不指定工作目录的情况下,会使用「程序启动时的目录」作为工作目录。

bash
pwd  # 显示当前目录路径

使用参数 -w 来指定工作目录,它通常是一个「绝对路径」,例如:

bash
artalk -w /root/artalk -c ./conf.yml

注:-c 的相对路径会基于 -w 的路径,Artalk 此时会读取 /root/artalk/conf.yml 作为配置文件。

其次,在「配置文件中」使用的「相对路径」,也会基于「工作目录」。

例如 conf.yml 中有这样的配置:

yaml
test_file: ./data/artalk.log

将读取 /root/artalk/data/artalk.log

TIP

配置文件相关代码:/internal/config/config.go

前往:前端配置