浅说 Artalk
如何部署Artalk
在Docker上部署Artalk时遇到的问题汇总。
很多年前,折腾过Typecho比较老牌的博客系统,原生自带评论功能,但是存在PHP漏洞风险,需要定期备份,说到这儿想起我曾经写过的文章,都已经俨然不在了。但是Typecho还是有些比较显著的有点的,比如开箱即用,浏览器登录就能写文章,手机、网吧随时可以更新博客,不需要本地环境,而且生态也比较成熟,上手门槛很低。但是需要维护服务器安全,防SQL注入、后台暴力破解、定期备份,而且也不能直接拿md文件进行迁移,数据库一旦损坏恢复起来相当麻烦。
然后Hugo就完全不用考虑这些了,服务器上只有静态文件,几乎不存在Web攻击风险,而且本地markdown明文,迁移及其简单,够时间速度也是业界顶尖的纯在。也是应了那句话:一朝被蛇咬,十年怕井绳。之前就是因为不想维护PHP+MySQL所以导致所有的文章被清空,所以这也是我选hugo的原因。话又说回来,Hugo必须接入第三方系统才能进行评论。
众所周知Hugo是一个纯静态的网站,不像Mix space 有内置的评论系统。之前用了waline但是为了开发类似朋友圈评论那样的评论功能,waline似乎没办法做到,为了满足开发需求,在众多评论系统中选择了Artalk和Twikoo.
⚖️ Artalk vs. Twikoo 核心对比
| 特性 | Artalk | Twikoo |
|---|---|---|
| 集成难度 | 中等,需自行部署后端服务 | 简单,提供多种Serverless部署方式 |
| 部署方式 | 需自有服务器 | 无服务器,可部署在Vercel、EdgeOne等平台 |
| 数据存储 | SQLite(轻量),也支持PostgreSQL/MySQL | MongoDB 或 LokiJS |
| 性能与资源 | 性能优秀(Go语言),资源占用相对较低 | 依赖外部数据库,对小型站点可能显得“笨重” |
| Hugo集成 | 官方文档有指引 | 社区教程和文档非常丰富 |
| 主题生态 | 有深度整合的主题,如Hugo-Theme-Amigo | 支持广泛,多数主题可通过简单配置集成 |
| 数据迁移 | 官方提供从Twikoo等系统的迁移工具 | 数据导出相对复杂 |
| 功能亮点 | 朋友圈风格UI、弹幕、实时评论 | 轻量、免费、部署选择多 |
经过对比发现还是Artalk自由度更高一些,不用过于以来外部数据库,这也是为什么选择Artalk的原因。既然有了方向那就开搞~
开始之前确保:
- [√] 服务器 + 宝塔面板
- [√] 已安装 Docker
- [√] 域名
宝塔面板上用 Docker 部署 Artalk 主要分为三个步骤:拉取镜像并创建容器、配置反向代理、集成到 Hugo 博客。
一. 在宝塔面板部署 Artalk 后端
- 拉取镜像
* 打开宝塔面板,进入 Docker -> 线上镜像;
* 输入 artalk/artalk-go,点击“搜索”并拉取选择版本下载完成;
2. 创建并运行容器
* 在 Docker 管理页面,点击“容器” -> “创建容器”;
* 按以下示例填写参数:
* 容器名:artalk(可自定义);
* 镜像:选择刚刚下载的 artalk/artalk-go:latest;
* 端口映射:容器端口填 23366,本地端口填一个未被占用的端口,比如 8080;
* 目录挂载:容器目录填 /data,服务器目录填一个你用来存放数据的目录,如 /www/wwwroot/artalk/data。这步很重要,能确保数据持久化;
* 环境变量:添加以下变量(可选,但建议配置):
* ATK_LOCALE=zh-CN (设置语言为中文);
* TZ=Asia/Shanghai (设置时区);
* 点击“提交”创建容器
3. 放行端口&添加DNS解析
* 在服务器 -> 安全组中放行8080端口;
* 需要登录域名注册商或DNS 管理后台添加一条 A 记录;
* 记录类型:‘A’ * 主机记录:‘comment’ * 记录值:服务器公网 IP 地址 * TTL:默认即可(如 600 秒) 4. 创建管理员账户
* 创建容器后,打开宝塔的终端,执行以下命令来创建管理员账号:
docker exec -it artalk artalk admin
* 根据提示,依次输入你想要的用户名、邮箱和密码即可。
二. 配置反向代理与 HTTPS
为了安全和方便,推荐给 Artalk 绑定一个域名并启用 HTTPS。
1. 新建站点:在宝塔面板的“网站”中,添加一个新站点,域名填写你准备给 Artalk 用的域名(如 comments.yourblog.com),数据库和PHP版本都选择“纯静态”即可。
2. 设置反向代理:
* 进入刚创建好的站点设置,找到“反向代理”或“配置文件”。
* “代理名称”随意填,“目标URL”填 http://127.0.0.1:8080(端口号必须是你之前设置的那个服务器端口)。
* 保存即可。
3. 申请 SSL 证书:在站点的“SSL”选项中,为你的域名comments.yourblog.com申请并部署免费的 Let’s Encrypt 证书,开启 HTTPS。
配置好反向代理后,你就可以通过 https://comments.yourblog.com 来访问 Artalk 后台了。
第三步:将 Artalk 集成到 Hugo 博客
最后一步,需要在你的 Hugo 主题中添加 Artalk 的前端代码。
1. 创建评论模板
* 在你的 Hugo 主题目录下,新建一个模板文件,例如 layouts/partials/comments/artalk.html。
* 将以下代码粘贴进去:
<!-- 引入 Artalk CSS 和 JS -->
<link href="https://cdn.jsdelivr.net/npm/artalk@2/dist/Artalk.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/artalk@2/dist/Artalk.js"></script>
<!-- Artalk 评论容器 -->
<div id="Comments"></div>
<script>
Artalk.init({
el: '#Comments',
pageKey: '{{ .Permalink }}', // 文章唯一标识
pageTitle: '{{ .Title }}', // 文章标题
server: '{{ .Site.Params.artalk.server }}', // 后端地址
site: '{{ .Site.Params.artalk.site }}', // 站点名称
// 其他可选配置...
});
</script>
2. 配置站点参数
* 在 Hugo 的配置文件 config.toml 或 config.yaml 中,添加 Artalk 的相关配置:
[params.artalk]
server = 'https://comments.yourblog.com' # 你的Artalk后端域名
site = '你的站点名称' # 与后端配置的站点名对应
3. 在文章模板中引入评论
* 找到你的文章单页模板(通常是 layouts/_default/single.html),在你希望显示评论的地方,添加以下代码来引入评论模块:
{{ partial "comments/artalk.html" . }}
4. 配置可信域名(重要!)
* 部署完成后,用管理员账号登录你的 Artalk 后台(https://comments.yourblog.com)。
* 进入 设置 (Settings) -> 可信域名 (Trusted Domains)。
* 添加你的博客域名(如 https://yourblog.com)和本地调试地址(http://localhost:1313),然后点击 应用 (Apply)。