artalk的安装和配置保姆级教程
artalk是一个自托管的评论系统。优点是功能比较多,能满足大部分需求。缺点是需要自己先有一台应用服务器(Serverless那种不行,因为:https://blog.hzchu.top/2025/%E4%B8%80%E7%A7%8D%E5%9C%A8Vercel%E4%B8%8A%E8%BF%90%E8%A1%8CArtalk%E7%9A%84%E6%80%9D%E8%B7%AF/)
下面我们开始配置
安装
使用docker来安装:
1 | docker pull docker.1panel.live/artalk/artalk-go |
依旧是我们的老熟人1panel镜像,如果不行就可以换一个。
安装完成后会显示这个:
然后你就可以用官网提供的命令携带配置来启动。
1 | docker run -d \ |
需要修改ATK_SITE_DEFAULT和ATK_SITE_URL为你实际的值。
注意:如果你是用1panel镜像安装的,最后一行需要改为docker.1panel.live/artalk/artalk-go。
以上是官方的启动示例。如果你觉得麻烦的话最简的启动应该是这样的:
1 | docker run -d \ |
完成后,在你的公网ip下的8080端口就是Artalk的后台了,如果已经有别的东西使用了8080端口可以换一个。别忘了服务器策略组(防火墙)里面放行端口!
看到这个就成功了:
配置
本节讲主要的安装和配置流程,技术栈选用EdgeOne来反代回源
设置管理员与站点
你可能会问,默认的管理员账号和密码是什么?我也不知道。
不过你可以通过命令来设置一个管理员账号。
1 | docker exec -it artalk artalk admin |
在接下来的页面中按照顺序输入你的用户名、邮箱(不需要实际存在,可以随便写)和密码:
密码输入的时候不会显示,务必留意。
一般情况下操作实时生效,如果创建了还登不上重启容器即可。
如果不满意后面还可以改
注意:删除容器重新创建会丢失管理员账号,需要重新创建
登录成功后界面默认是英文的,如果看不懂或者不习惯可以改语言。
在左边的Settings里面有个Language选项,点击后在下拉菜单里面选择zh-CN,点击Apply。最后浏览器刷新一下就变成中文了。
下一步,找到“站点”那一个选项卡:
可以发现它默认自带了一个默认站点。你可以删除它也可以直接建一个新的。
其中:站点名称是一个任意字符串,用来标识调用者。站点URLs是一个网页链接,用来后端加白名单允许调用接口的目标站点。建议同时给localhost也设置一个以便开发调试,使用,进行分隔多个值。我设置的是:https://www.b23.kim,http://localhost
在前端,对于butterfly主题,你可以这样编辑配置:
1 | # Artalk |
其他主题或系统可以查看官方教程来配置:https://artalk.js.org/zh/guide/deploy.html
注意:artalk前端默认以https的协议来请求后端,请确保绑定了域名并部署了SSL。如果直接用http请求会失败,浏览器安全要求不允许https站点请求http接口。
以下是EdgeOne的相关配置教程,其他技术栈可以去找其他的相关教程。
EdgeOne反向代理回源
在EO中添加新的域名,核心要点如下:
回源协议用HTTP,端口填上面启动docker映射的8080端口。(这样做就不需要在Artalk后台设置里面配置源站SSL了)
完成后去申请免费SSL证书即可,按钮很明显我就不再赘述了。
最后后端地址用你的域名即可,这里不需要加端口号了,因为EO回源已经做了端口转换了。相当于做了一层反向代理了。
到这里还没结束,如果这时候你去访问还是会失败。由于浏览器的安全策略,www.b23.kim和service.b23.kim不是同一个域会拒绝连接。
1 | Access to fetch at 'https://service.b23.kim/api/v2/conf' from origin 'http://localhost:4000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. |
解决方法也很简单,在EO的站点加速->规则引擎中添加以下规则:
没有用的旧设置
匹配类型选HOST,值填你绑定到能访问后端服务的域名,我这里是service.b23.kim
操作选择修改HTTP响应头,类型增加,头部名称Access-Control-Allow-Origin,值为允许访问的域。
注意:不建议直接设置为*,设置仅能自己站点确保安全。
嘶……等我写到这里的时候发现根本不工作啊,响应头为什么没设置上?直到我看了EO的官方文档才发现不能那么写,比较反直觉(What the F**)
必须得这样才行:
也就是说操作这里这种情况下只支持变量。。。
而且操作类型不能是增加,得是设置才行。
参考:https://edgeone.ai/zh/document/46185 (我不确定是不是只有我一个人被坑了)
设置数据库
没有数据库是没办法评论的,要想评论需要先有一个数据库。
淘汰选手1
这里我推荐Supabase,免费大碗足够用!官网:https://supabase.com/
注册登录,初始创建项目会让你设置数据库密码,保存好它。
来到项目首页总览(Projcet Overview),在这个地方往下翻:
在这个地方点击连接:
最后点击一下这里:
里面这四个就是我们要用到的东西了。
不过免费版只能ipv6访问,不支持v4。也就是说它只有v6公网。这家的数据库能不能用取决于你的服务器是否支持ipv6,不过我这里用的是腾讯云的所以应该没啥问题
1 | failed to connect to `user=root database=artalk`: [2406:da14:***:****:****:****:****:eae4]:5432 |
结果还是燃尽了。。。。服务器不支持纯v6网络。那算了,换下一家吧。
OK这次换了tidbcloud。应该没这个问题了(免费计划只有5GB容量,足够评论用了)
这个地方的教程我懒得写了,总之需要注意数据库密码只会在第一次生成的时候才显示,保存好它。
数据库类型选择mysql
数据库配置完成后应该就没问题了,评论不会报错了。
坑点
artalk的后端似乎有点bug,配置改错了就会导致全局崩溃。这种情况下只能通过手动修改配置文件来解决(你连后台都进不去)
如果你找不到配置文件在哪,直接文件里面全局搜索artalk.yml即可。(不过一般默认在/root/data下面)











