浅说 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 MongoDBLokiJS
性能与资源 性能优秀(Go语言),资源占用相对较低 依赖外部数据库,对小型站点可能显得“笨重”
Hugo集成 官方文档有指引 社区教程和文档非常丰富
主题生态 有深度整合的主题,如Hugo-Theme-Amigo 支持广泛,多数主题可通过简单配置集成
数据迁移 官方提供从Twikoo等系统的迁移工具 数据导出相对复杂
功能亮点 朋友圈风格UI、弹幕、实时评论 轻量、免费、部署选择多

经过对比发现还是Artalk自由度更高一些,不用过于以来外部数据库,这也是为什么选择Artalk的原因。既然有了方向那就开搞~

开始之前确保:

  • [√] 服务器 + 宝塔面板
  • [√] 已安装 Docker
  • [√] 域名

宝塔面板上用 Docker 部署 Artalk 主要分为三个步骤:拉取镜像并创建容器、配置反向代理、集成到 Hugo 博客。

一. 在宝塔面板部署 Artalk 后端

  1.   拉取镜像

   *   打开宝塔面板,进入 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.  创建管理员账户

   *   创建容器后,打开宝塔的终端,执行以下命令来创建管理员账号:

bash
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。    *   将以下代码粘贴进去:

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.tomlconfig.yaml 中,添加 Artalk 的相关配置:

toml
[params.artalk]
  server = 'https://comments.yourblog.com'  # 你的Artalk后端域名
  site = '你的站点名称'                      # 与后端配置的站点名对应

3.  在文章模板中引入评论    *   找到你的文章单页模板(通常是 layouts/_default/single.html),在你希望显示评论的地方,添加以下代码来引入评论模块:

go
{{ partial "comments/artalk.html" . }}

4.  配置可信域名(重要!)    *   部署完成后,用管理员账号登录你的 Artalk 后台(https://comments.yourblog.com)。    *   进入 设置 (Settings) -> 可信域名 (Trusted Domains)。    *   添加你的博客域名(如 https://yourblog.com)和本地调试地址(http://localhost:1313),然后点击 应用 (Apply)

评论