源码湾

Artalk 评论系统:单文件 54MB,SQLite 零配置

源码湾
1小时前发布
资源信息 Windows / Linux 双平台,解压即用。
版本
v2.10.1
授权
MIT
体积
36.4 MB
语言
Go
数据库
SQLite
演示
https://artalk.js.org
夸克网盘 无提取码 下载

今日下载 0 累计下载 0 还剩 10 个

静态博客最尴尬的地方是没有人说话。文章写得再细,读者想接一句「我这里也踩了这个坑」,也只能去群里喊。动态站点自带评论,静态站没有——想补上,就得另找一个能自己托管的东西。

第三方评论插件大多寄人篱下:数据在别人服务器上,服务一停评论就没了,广告和跳转还甩不掉。想在文章下面安安静静放一个评论区,最稳的办法还是自己跑一个后端。

Artalk 就是干这个的。一个二进制文件,后端、后台、接口全在里面,数据落在 SQLite,前端挂两行脚本就有评论区。MIT 协议,2021 年写到现在,v2.10.1 是这次的版本。Windows 版 54.2MB,Linux 版 52.8MB,启动到端口可连 0.4 秒左右。我把两个平台都跑了一遍,还顺手把后台、前台、深色模式全截了图。不适合哪几类人,后面单独写。

评论系统怎么选,和 Waline 差在哪

同类里最常被拿来比的是 Waline。两者的定位差不多,差别主要在运行时:

  • Waline 要 Node。部署得先装 Node 环境,用 Vercel 的话数据在云数据库里;自托管就得自己维护 Node 进程。
  • Artalk 是个二进制。下载、解压、./artalk server,没有运行时依赖,也没有 node_modules。
  • 数据都在自己手里。SQLite 模式下所有内容就是 data/artalk.db 一个文件,备份等于拷文件。

功能上两边其实差不多:都有后台审核、验证码、邮件通知、导入导出、多站点。区别是 Artalk 的二进制里有内置界面,装完直接开 /sidebar/ 就能管,不用再配一份前端。

代价也直接:它不帮你托管。域名、反代、证书、开机自启,都得自己弄。

我的测试环境

  • Windows:Windows 11,解压到本地目录直接跑,没装服务、没写注册表
  • Linux:CentOS Stream 9,x86_64,香港节点,走面板 Web 终端
  • 数据库:两边都用默认的 SQLite,不额外装 MySQL
  • 验证方式:建管理员 → 起服务 → 用接口发评论 → 从列表接口读回 → 打开后台页确认数据在

两个平台的包都核对过官方 checksums.txt,sha256 完全一致。

部署:Windows 三步

解压 artalk_v2.10.1_windows_amd64.zip,里面是一个 artalk.exe 加一份配置模板 artalk.yml。

第一步,建 data 目录。 在 exe 旁边新建一个叫 data 的文件夹。这一步别跳过,原因写在后面的「坑」里。

第二步,建管理员账号。

artalk.exe admin --name admin --email 你的邮箱 --password 你的密码

第三步,启动。

artalk.exe server

浏览器打开 http://127.0.0.1:23366/sidebar/,用刚建的账号登录,后台就出来了。实测从执行命令到端口可连 0.37 秒。

部署:Linux 一样

tar xzf artalk_v2.10.1_linux_amd64.tar.gz
cd artalk_v2.10.1_linux_amd64
chmod +x artalk && mkdir -p data
./artalk admin --name admin --email 你的邮箱 --password 你的密码
./artalk server

tar.gz 里的二进制本来就带执行位,chmod 是保险。Linux 侧实测启动 141 毫秒,比 Windows 快一半,这个差距主要来自启动时的动态链接开销。

前端接入:两行脚本

页面里放一个容器,引两个文件,初始化一次:

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/artalk@2.10.1/dist/Artalk.css">
<script src="https://cdn.jsdelivr.net/npm/artalk@2.10.1/dist/Artalk.js"></script>
<div id="Comments"></div>
<script>
  const Artalk = window.Artalk.default || window.Artalk;
  new Artalk({
    el: "#Comments",
    site: "Default Site",
    server: "http://你的服务器:23366",
    pageKey: location.pathname,
  });
</script>

pageKey 是评论分组依据,同一篇文章要稳定,用 URL 路径最省事。site 要和后台里配的站点名一致,对不上会一条评论都读不到。

实测数据

同一套配置,两个平台分别跑:

  • 主程序体积:Windows artalk.exe 54.2MB;Linux artalk 52.8MB
  • 启动:Windows 首次(含建库)1.92 秒,之后 0.37 秒;Linux 141 毫秒
  • 接口:/api/v2/version 200;/api/v2/conf 200;后台 /sidebar/ 200,返回 text/html
  • 发评论:Windows 7 条、Linux 1 条,全部 200,读回条数一致
  • 数据库:初始 artalk.db 160KB,只有一个文件
  • 整合包:36.4MB(双平台主程序 + 官方配置 + 中文示例配置 + 中文说明)

解压即用也验了一遍:解到全新目录、按说明先建 data、建号、直接起服务,1.92 秒可连,发一条评论读回 1 条,后台 200。

界面长什么样

后台是内置的,不用另配前端:

后台登录 - Artalk 评论系统:单文件 54MB,SQLite 零配置

登录页只有一个邮箱、一个密码和一颗按钮,没有任何多余的东西。注意界面语言默认是英文,在 artalk.yml 里把 locale: en 改成 zh-CN 才是中文。

后台评论列表 - Artalk 评论系统:单文件 54MB,SQLite 零配置

评论列表按「全部 / 待审 / 个人」分组,每条下面直接给赞同、回复、折叠、已审、置顶、编辑、删除。审核不用跳页,一行操作完。

后台设置 - Artalk 评论系统:单文件 54MB,SQLite 零配置

设置页把站点、迁移、应用、数据库、服务器、日志、缓存、SSL、评论审核、验证码、IP 属地、图片上传、邮件通知全部摊在一页里,改完即时生效,不用重启。

前台评论区 - Artalk 评论系统:单文件 54MB,SQLite 零配置

这是把组件挂到文章页之后的样子:昵称、邮箱、网址一行,多行编辑框带表情和图片按钮,下面是评论列表。整个块是浅色主题,跟页面背景一致。

深色模式 - Artalk 评论系统:单文件 54MB,SQLite 零配置

深色模式开关在初始化参数里,切过去之后编辑框、正文、按钮配色全套跟着换。

手机端 - Artalk 评论系统:单文件 54MB,SQLite 零配置

手机端不用单独做,组件本身是响应式的,编辑框和列表都会自动变单列。

三个真实的坑

第一个,data 目录不会自动创建。 配置里写的是 db.file: ./data/artalk.db,但这个目录程序不给你建。我删掉 data 再启动,结果是:服务正常起来、端口能连、发评论接口还返回 200,但目录始终没被创建,artalk.db 也没出现。等你重启一次,评论就没了。所以部署第一步永远是 mkdir data。

第二个,artalk.yml 里的 port 会盖掉命令行参数。 我想换个端口,敲的是 ./artalk server --port 23369,结果它照旧去绑 23366,日志里报 failed to listen ... 23366。改端口必须改配置文件,--port 在这里不起作用。

第三个,列表接口不带分页参数会返回空数组。 请求 /api/v2/comments?page_key=xxx&site_name=xxx,返回里 count 是 3,comments 却是 []——看着像数据丢了。加上 limit 和 offset 立刻就正常:

/api/v2/comments?page_key=post-1&site_name=Default%20Site&limit=10&offset=0

另外还有两个小地方容易卡住:默认 captcha.action_limit 是 3,连发 3 条之后第 4 条直接 403,要过验证码;前端如果和后端不同源,必须在 trusted_domains 里把前端地址加进去,否则组件只显示一句 Failed to fetch。

上线:常驻与安全

命令行跑着关窗口就断,正式用挂成服务。

Linux 用 systemd,ExecStart 指向 artalk server,WorkingDirectory 一定要指到程序目录——不然它去别处找 artalk.yml 和 data。

Windows 用 nssm 或任务计划程序,同样注意「起始于」要填程序目录。

三件收尾的事:

  • 别把 23366 裸奔在公网。前面套一层 Nginx 走 443,后台路径单独加访问限制。
  • app_key 要设。不设的话启动时会打一行警告,然后每次重启随机生成,等于所有登录态失效。
  • 备份就是拷 data/artalk.db。SQLite 单文件,定时 cp 一份出去即可。

这几类人适合,这几类不适合

适合:

  • 用 Hexo / Hugo / Astro 这类静态站,想补一个能自己控的评论区
  • 不想为了评论再维护一套 Node 环境的人
  • 数据要放自己机器上、要求能一键备份的人
  • 想同时管几个站点的评论区,一个后台看全部

不适合:

  • 完全没有服务器的人。它有二进制但没有托管,得有个能跑东西的地方
  • 期待「装完就有访客」的人。它只负责评论,不负责带流量
  • 需要多节点高可用的人。单二进制 + SQLite 适合个人站和中小站,撑不住集群
  • 只想用第三方 SaaS 评论、不想碰运维的人,直接用现成服务更省事

常见问题

源码获取

建议先转存到自己网盘再下载。手机上打开链接点右下角「保存到网盘」,回头在夸克 App 的「我的网盘」里下载。

实测说明

本文截图全部来自本站实测环境(源码湾 yuanmawan.com),实测版本 Artalk v2.10.1,许可证 MIT。

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
OωO
取消