docs: 更新 Artalk 部署文档 — Caddy 替代 Nginx

- 架构图更新为 Caddy
- 反代配置更新为 handle_path /artalk* 模式
- 更新实际部署路径和数据备份命令
- 修正 docker-compose.yml 网络配置
This commit is contained in:
2026-06-04 11:15:19 +08:00
parent 017daeea14
commit 0b962eb2f0
+102 -77
View File
@@ -1,6 +1,6 @@
# Artalk 评论系统部署 # Artalk 评论系统部署
> 为 kb 接入自托管评论系统。ArtalkGo 后端 + SQLiteDocker 一键部署,前端 ~40KB,完全自托管无外部依赖。 > 为 kb 接入自托管评论系统。Artalk v2.9.1Go 后端 + SQLiteDocker 一键部署,前端 ~40KB,完全自托管无外部依赖。
--- ---
@@ -9,33 +9,37 @@
```mermaid ```mermaid
graph LR graph LR
Browser["浏览器"] Browser["浏览器"]
Nginx["Nginx"] Caddy["Caddy"]
MkDocs["MkDocs 静态文件"] MkDocs["MkDocs 静态文件"]
Artalk["Artalk Docker<br/>:23366"] Artalk["Artalk Docker<br/>:23366"]
SQLite[("SQLite<br/>/data")] SQLite[("SQLite<br/>/data")]
Browser --> Nginx Browser --> Caddy
Nginx -->|"/"| MkDocs Caddy -->|"/"| MkDocs
Nginx -->|"/artalk/"| Artalk Caddy -->|"/artalk* → strip prefix"| Artalk
Artalk --> SQLite Artalk --> SQLite
``` ```
- Artalk 后端和 kb 站点部署在同一台服务器 - Artalk 后端和 kb 站点部署在同一台服务器
- Nginx`/artalk/` 路径反代到 Artalk 容器 - Caddy`/artalk*` 路径反代到 Artalk 容器(自动去除 `/artalk` 前缀)
- 前端 JS/CSS 也从同域 `/artalk/dist/` 加载,完全自托管 - 前端 JS/CSS 同域加载 `/artalk/dist/`,完全自托管无跨域问题
--- ---
## 一、Docker 部署 ## 一、Docker 部署
### 1.1 创建目录和 compose 文件 ### 1.1 实际部署位置
```bash ```bash
# 在服务器上执行 ~/docker/artalk/
mkdir -p /opt/artalk && cd /opt/artalk ├── docker-compose.yml
└── data/
├── artalk.db # SQLite 数据库
├── artalk.yml # 配置文件
└── artalk.log # 日志
``` ```
`docker-compose.yml` ### 1.2 docker-compose.yml
```yaml ```yaml
services: services:
@@ -43,55 +47,50 @@ services:
image: artalk/artalk-go image: artalk/artalk-go
container_name: artalk container_name: artalk
restart: unless-stopped restart: unless-stopped
ports:
- "127.0.0.1:23366:23366" # 仅本地监听,由 Nginx 反代对外
volumes: volumes:
- ./data:/data # SQLite 数据持久化 - ./data:/data
environment: environment:
- TZ=Asia/Shanghai - TZ=Asia/Shanghai
- ATK_LOCALE=zh-CN - ATK_LOCALE=zh-CN
- ATK_SITE_DEFAULT=我的知识库 networks:
- ATK_SITE_URL=https://<你的域名> - nginx
- ATK_TRUSTED_DOMAINS=https://<你的域名>
networks:
nginx:
external: true
``` ```
### 1.2 启动 > 注意:需要加入 `nginx` 网络以便 Caddy 能通过容器名 `artalk` 访问。
### 1.3 启动
```bash ```bash
docker compose up -d cd ~/docker/artalk && docker compose up -d
docker compose logs -f # 查看日志确认启动成功
``` ```
--- ---
## 二、Nginx 反向代理 ## 二、Caddy 反向代理
### 方式 ANginx Proxy Manager Caddyfile 配置(`~/docker/caddy/Caddyfile`):
在 Proxy Manager 面板中添加一条 **Custom Location**(在你的 kb 站点 Proxy Host 里): ```caddy
note.kurihada.com {
| 字段 | 值 | handle_path /artalk* {
|------|-----| reverse_proxy artalk:23366
| Location | `/artalk/` | }
| Scheme | `http` | handle {
| Forward Hostname | `127.0.0.1` | root * /srv/mkdocs
| Forward Port | `23366` | file_server
}
### 方式 B:手动 Nginx 配置
在 kb 站点的 `server` 块中添加:
```nginx
location /artalk/ {
proxy_pass http://127.0.0.1:23366/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
} }
``` ```
然后 `nginx -t && nginx -s reload` - `handle_path /artalk*`:匹配 `/artalk` 开头的路径,**自动去除 `/artalk` 前缀**后转发
- 例如 `/artalk/dist/Artalk.js` → Artalk 收到 `/dist/Artalk.js`
- `handle { ... }` 包裹 `file_server`,保证与 `handle_path` 互斥不冲突
修改后重载:`docker restart caddy`
--- ---
@@ -99,41 +98,51 @@ location /artalk/ {
### 3.1 创建管理员 ### 3.1 创建管理员
部署完成后,访问 `https://<你的域名>/artalk/`,会看到 Artalk 的登录界面。
1. 在服务器上执行命令创建管理员:
```bash ```bash
docker exec -it artalk artalk admin docker exec -it artalk ./artalk admin \
--name <用户名> \
--email <邮箱> \
--password <密码>
``` ```
2. 按提示输入用户名、邮箱和密码
3. 在网页端使用刚创建的账号登录
### 3.2 验证评论功能 或交互式:`docker exec -it artalk artalk admin`
1. 打开 kb 任意文章页面(如技术笔记) ### 3.2 关键配置文件
2. 滑到页面底部,应该看到 Artalk 评论区
3. 发一条测试评论 Artalk 配置文件位于 `~/docker/artalk/data/artalk.yml`,需确保以下两项正确:
4. 确认评论正常显示
```yaml
site_default: 我的知识库
site_url: "https://note.kurihada.com"
```
修改后 `docker restart artalk` 生效。
--- ---
## 四、可选配置 ## 四、MkDocs 端运作方式
### 4.1 邮件通知 kb 已通过 Material 主题的 `custom_dir` 机制集成了 Artalk 前端。
在 Artalk 管理面板(设置 → 邮件)配置 SMTP,用户回复时会收到邮件通知。 ### 关键文件
### 4.2 验证码 - **覆盖模板**`docs/overrides/partials/comments.html` — Artalk JS/CSS 引入 + 初始化
- **CSS/JS 路径**`/artalk/dist/Artalk.css``/artalk/dist/Artalk.js`(同域加载)
- **API 地址**`window.location.origin + '/artalk'`(自动适配当前域名)
管理面板 → 验证码,可开启 reCAPTCHA 或图片验证码,防止垃圾评论。 ### 关闭特定页面评论
### 4.3 Gravatar 头像 `.md` 文件头部添加 frontmatter
默认启用,用户评论时根据邮箱自动显示 Gravatar 头像。 ```yaml
---
comments: false
---
```
### 4.4 图片上传 ### 深色模式
可配置本地存储或 S3/OSS 图床,用户在评论中上传图片 Artalk 通过 MutationObserver 监听 Material 主题的 `data-md-color-scheme` 属性变化,自动跟随切换
--- ---
@@ -147,27 +156,43 @@ docker logs artalk -f
docker restart artalk docker restart artalk
# 升级 # 升级
docker compose pull cd ~/docker/artalk && docker compose pull && docker compose up -d
docker compose up -d
# 备份数据SQLite 文件) # 备份数据
cp /opt/artalk/data/artalk-go.db /backup/artalk-$(date +%Y%m%d).db cp ~/docker/artalk/data/artalk.db ~/backup/artalk-$(date +%Y%m%d).db
``` ```
### 数据迁移 ### 查看 Artalk 配置
Artalk 数据存储在 `/opt/artalk/data/` 目录下的 SQLite 文件中。备份只需复制这个文件 访问 `https://note.kurihada.com/artalk/api/v2/conf` 查看当前前端配置
如需迁移到其他服务器,将整个 `/opt/artalk/` 目录复制过去,重新 `docker compose up -d` 即可。
--- ---
## 六、MkDocs 端运作方式 ## 六、可选配置
kb 已通过 Material 主题的 `custom_dir` 机制集成了 Artalk 前端,无需手动在每个页面添加代码。 ### 邮件通知
- **覆盖文件**`docs/overrides/partials/comments.html` 编辑 `~/docker/artalk/data/artalk.yml`,配置 SMTP
- **关闭特定页面评论**:在 `.md` 文件头部添加 `comments: false`
- **自定义配置**:修改 `docs/overrides/partials/comments.html` 中的 `Artalk.init({...})` 参数
详细参数说明见 [Artalk 前端配置文档](https://artalk.js.org/guide/frontend/config.html)。 ```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)。