Artalk 自托管评论/留言

1 配置域名

在 DNSPod 添加记录:

主机记录 类型 记录值
comment A 152.136.230.157

等待后,确认:

1
ping comment.earnshawn.cn

解析到了服务器 IP 再继续。

2 安装 Docker

在hexo托管的服务器上安装 Docker:

1
2
3
4
5
6
sudo apt update
sudo apt update

sudo apt install docker.io docker-compose-v2 sqlite3 -y

sudo systemctl enable --now docker

检查:

1
2
docker --version
docker compose version

3 部署 Artalk

创建目录:

1
2
3
sudo mkdir -p /opt/artalk/data
sudo chown -R "$USER":"$USER" /opt/artalk
cd /opt/artalk

自动生成密钥

1
echo "ATK_APP_KEY=$(openssl rand -hex 32)" > .env

设置文件权限:

1
chmod 600 .env

验证文件存在:

1
ls -la .env

创建 compose.yml

1
sudo vim /opt/artalk/compose.yml

粘贴以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
services:
artalk:
image: artalk/artalk-go:latest
container_name: artalk
restart: unless-stopped

ports:
- "127.0.0.1:8080:23366"

volumes:
- ./data:/data

environment:
TZ: Asia/Shanghai
ATK_LOCALE: zh-CN

ATK_APP_KEY: ${ATK_APP_KEY}

ATK_SITE_DEFAULT: Earnshawn Blog
ATK_SITE_URL: https://earnshawn.cn
ATK_TRUSTED_DOMAINS: "https://earnshawn.cn https://www.earnshawn.cn https://comment.earnshawn.cn"

ATK_DB_TYPE: sqlite
ATK_DB_FILE: /data/artalk.db

检查

1
2
cd /opt/artalk
docker compose config --quiet

如果没有输出,通常表示格式正确。

启动Artalk

1
2
cd /opt/artalk
sudo docker compose up -d

第一次执行会下载 Artalk 镜像,可能需要一些时间。

如果报错则按以下方式操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
先看看现在有没有 Docker 配置:

sudo cat /etc/docker/daemon.json

如果提示:

No such file or directory

或者文件本身是空的,那么直接执行:

sudo mkdir -p /etc/docker


sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
EOF

重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

查看运行状态:

1
docker compose ps

查看日志

1
docker compose logs -f artalk

只要没有持续出现红色报错,并且看到服务监听、数据库初始化等信息,就说明启动成功。

测试,在服务器执行:

1
curl http://127.0.0.1:8080

4 配置 Nginx

创建配置:

1
sudo vim /etc/nginx/sites-available/artalk

启用配置

1
sudo ln -s /etc/nginx/sites-available/artalk /etc/nginx/sites-enabled/artalk

检查并重载:

1
2
sudo nginx -t
sudo systemctl reload nginx

然后在服务器上测试:

1
curl -i http://comment.earnshawn.cn

正常应返回:

1
2
HTTP/1.1 302 Found
Location: ./sidebar/

申请 HTTPS:

1
2
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d comment.earnshawn.cn

5 创建 Artalk 管理员

1
2
cd /opt/artalk
sudo docker compose exec artalk artalk admin

按提示设置用户名、邮箱和登录密码。

6 修改本地 Butterfly 配置

在 主题配置中修改:

1
2
3
4
5
6
comments:
use: Artalk
text: true
lazyload: false
count: false
card_post_count: false

并配置:

1
2
3
4
5
artalk:
server: https://comment.earnshawn.cn
site: Earnshawn Blog
visitor: false
option:

同时将站点配置改成:

1
url: https://earnshawn.cn

7 重新部署

1
2
3
npx hexo clean
npx hexo generate
npx hexo deploy