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。

默认站点地址 ATK_SITE_URL 配置项也会被自动加入可信域名列表。

另外,你也可以在启动时通过环境变量 ATK_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 安全备忘单).

两份列表都支持 https://*.example.com,允许 https://blog.example.com 等单层子域名的浏览器跨域请求,不匹配 example.com 或 a.b.example.com。协议和端口必须一致。仅在信任所有匹配的子域名时使用通配符。使用相对路径页面标识时,站点 URL 列表的第一项仍需保留具体地址。

页面标题抓取也使用这份可信名单,包括 trusted_domains 和后台配置的站点 URL。首次请求、HTTP 跳转及 HTML 跳转的目标都必须匹配名单中的协议、主机和端口;配置中的路径不参与匹配。通配符不授予标题抓取权限,需要单独添加具体的目标 URL。跨域跳转到另一个自己的站点时,也需要加入该站点的 URL。

明确加入名单的内网站点及 localhost 可以正常抓取,服务器上的 HTTP_PROXY、HTTPS_PROXY、NO_PROXY 配置仍然生效。请只加入你信任并允许 Artalk 访问的站点:这份名单同时授权服务器向这些站点发起请求。

开启自动抓取后,评论触发的自动补标题每个 Artalk 实例每秒最多启动一个任务,最多同时执行四个,相同 URL 的进行中任务不会重复执行。繁忙时跳过本次自动补标题,不影响评论提交,后续评论或后台刷新可以重试。管理员手动、批量刷新不受自动任务频率限制,但仍检查可信名单。每个任务最多跟随 10 次跳转,总耗时最多 30 秒;只读取页面头部的前 2 MiB,大页面的正文不会导致已读取的标题失效。

自动抓取页面标题 page_title_auto_fetch ​

yaml
# 关闭可禁用标题自动抓取功能(可以手动抓取),提高安全性
page_title_auto_fetch: false

默认关闭,旧配置省略此项也不会自动抓取。只有设为 true 后,提交评论才可能为缺少标题的页面触发自动抓取。客户端提交的页面标题仍正常保存,页面创建和 PV 统计不受影响。管理员仍可在后台手动更新单个页面或全部页面的标题,手动抓取仍受可信域名检查及抓取超时、大小和跳转限制约束。

也可通过环境变量 ATK_PAGE_TITLE_AUTO_FETCH=true 开启。

默认站点 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 服务暴露到全网可访问范围。

使用 host: '::' 可监听 IPv6,也支持 [::1] 等带方括号的地址。在支持双栈的系统上,0.0.0.0 和 :: 会同时接受 IPv4 和 IPv6 连接。

仅允许本机访问时,IPv4 使用 127.0.0.1,IPv6 使用 ::1。这些设置同时适用于 HTTP 和 HTTPS。

命令行下启动 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。

timezone 设置的是 Artalk 应用使用的时区,可以与宿主系统或容器的 TZ 时区不同。也可以使用环境变量 ATK_TIMEZONE 设置相同配置:

bash
ATK_TIMEZONE=Asia/Shanghai artalk server

修改后需要重启

应用时区是进程级固定值,只在 Artalk 进程初始化时设置。运行期间不支持动态切换;修改配置文件、环境变量或控制中心中的时区后,必须完整重启 Artalk 进程或容器才能生效。

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

前往:前端配置

贡献者

The avatar of contributor named as qwqcode qwqcodeThe avatar of contributor named as pluveto pluveto
The avatar of contributor named as MeonK MeonK
The avatar of contributor named as do124574 do124574
The avatar of contributor named as Claude Opus 4.6 (1M context) Claude Opus 4.6 (1M context)
The avatar of contributor named as Zxwy ZxwyThe avatar of contributor named as Mr.Hope Mr.Hope
The avatar of contributor named as Moraxyc Moraxyc

页面历史