Files
notebook/docs/技术/artalk评论系统.md
T
kurihada 0b962eb2f0 docs: 更新 Artalk 部署文档 — Caddy 替代 Nginx
- 架构图更新为 Caddy
- 反代配置更新为 handle_path /artalk* 模式
- 更新实际部署路径和数据备份命令
- 修正 docker-compose.yml 网络配置
2026-06-04 11:15:19 +08:00

199 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Artalk 评论系统部署
> 为 kb 接入自托管评论系统。Artalk v2.9.1Go 后端 + SQLiteDocker 一键部署,前端 ~40KB,完全自托管无外部依赖。
---
## 架构
```mermaid
graph LR
Browser["浏览器"]
Caddy["Caddy"]
MkDocs["MkDocs 静态文件"]
Artalk["Artalk Docker<br/>:23366"]
SQLite[("SQLite<br/>/data")]
Browser --> Caddy
Caddy -->|"/"| MkDocs
Caddy -->|"/artalk* → strip prefix"| Artalk
Artalk --> SQLite
```
- Artalk 后端和 kb 站点部署在同一台服务器
- Caddy 将 `/artalk*` 路径反代到 Artalk 容器(自动去除 `/artalk` 前缀)
- 前端 JS/CSS 同域加载 `/artalk/dist/`,完全自托管无跨域问题
---
## 一、Docker 部署
### 1.1 实际部署位置
```bash
~/docker/artalk/
├── docker-compose.yml
└── data/
├── artalk.db # SQLite 数据库
├── artalk.yml # 配置文件
└── artalk.log # 日志
```
### 1.2 docker-compose.yml
```yaml
services:
artalk:
image: artalk/artalk-go
container_name: artalk
restart: unless-stopped
volumes:
- ./data:/data
environment:
- TZ=Asia/Shanghai
- ATK_LOCALE=zh-CN
networks:
- nginx
networks:
nginx:
external: true
```
> 注意:需要加入 `nginx` 网络以便 Caddy 能通过容器名 `artalk` 访问。
### 1.3 启动
```bash
cd ~/docker/artalk && docker compose up -d
```
---
## 二、Caddy 反向代理
Caddyfile 配置(`~/docker/caddy/Caddyfile`):
```caddy
note.kurihada.com {
handle_path /artalk* {
reverse_proxy artalk:23366
}
handle {
root * /srv/mkdocs
file_server
}
}
```
- `handle_path /artalk*`:匹配 `/artalk` 开头的路径,**自动去除 `/artalk` 前缀**后转发
- 例如 `/artalk/dist/Artalk.js` → Artalk 收到 `/dist/Artalk.js`
- `handle { ... }` 包裹 `file_server`,保证与 `handle_path` 互斥不冲突
修改后重载:`docker restart caddy`
---
## 三、初始化 Artalk
### 3.1 创建管理员
```bash
docker exec -it artalk ./artalk admin \
--name <用户名> \
--email <邮箱> \
--password <密码>
```
或交互式:`docker exec -it artalk artalk admin`
### 3.2 关键配置文件
Artalk 配置文件位于 `~/docker/artalk/data/artalk.yml`,需确保以下两项正确:
```yaml
site_default: 我的知识库
site_url: "https://note.kurihada.com"
```
修改后 `docker restart artalk` 生效。
---
## 四、MkDocs 端运作方式
kb 已通过 Material 主题的 `custom_dir` 机制集成了 Artalk 前端。
### 关键文件
- **覆盖模板**`docs/overrides/partials/comments.html` — Artalk JS/CSS 引入 + 初始化
- **CSS/JS 路径**`/artalk/dist/Artalk.css``/artalk/dist/Artalk.js`(同域加载)
- **API 地址**`window.location.origin + '/artalk'`(自动适配当前域名)
### 关闭特定页面评论
`.md` 文件头部添加 frontmatter
```yaml
---
comments: false
---
```
### 深色模式
Artalk 通过 MutationObserver 监听 Material 主题的 `data-md-color-scheme` 属性变化,自动跟随切换。
---
## 五、日常管理
```bash
# 查看日志
docker logs artalk -f
# 重启
docker restart artalk
# 升级
cd ~/docker/artalk && docker compose pull && docker compose up -d
# 备份数据
cp ~/docker/artalk/data/artalk.db ~/backup/artalk-$(date +%Y%m%d).db
```
### 查看 Artalk 配置
访问 `https://note.kurihada.com/artalk/api/v2/conf` 查看当前前端配置。
---
## 六、可选配置
### 邮件通知
编辑 `~/docker/artalk/data/artalk.yml`,配置 SMTP
```yaml
email:
enabled: true
send_type: smtp
send_name: "{{reply_nick}}"
send_addr: noreply@example.com
smtp:
host: smtp.qq.com
port: 587
username: example@qq.com
password: ""
```
然后 `docker restart artalk`
### 验证码
默认已启用图片验证码(`captcha.captcha_type: image`),评论 3 次后触发。
### 社交登录
配置 `auth` 段可启用 GitHub/Gitea/Google 等社交账号登录,参见 [Artalk 文档](https://artalk.js.org/guide/backend/auth.html)。