<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Artalk 开源评论系统搭建教程：Go + Vue 轻量级自托管评论系统完整部署指南（Docker 一键部署 + 社会登录 + 邮件通知 + 多站点管理）]]></title><description><![CDATA[<h1>Artalk 开源评论系统搭建教程：Go + Vue 轻量级自托管评论系统完整部署指南</h1>
<h2>一、Artalk 是什么？</h2>
<p dir="auto">Artalk 是一款直观且功能丰富的自托管评论系统，可立即部署到任何博客、网站或 Web 应用中。前端使用纯 Vanilla JS 构建（约 40KB），不依赖任何框架；后端使用 Golang 开发，高效轻量且跨平台。支持 Docker 一键部署，开源免费，隐私优先。</p>
<p dir="auto"><strong>项目地址：</strong> <a href="https://github.com/ArtalkJS/Artalk" rel="nofollow ugc">https://github.com/ArtalkJS/Artalk</a></p>
<p dir="auto"><strong>官方网站：</strong> <a href="https://artalk.js.org/" rel="nofollow ugc">https://artalk.js.org/</a></p>
<p dir="auto"><strong>在线文档：</strong> <a href="https://artalk.js.org/en/guide/deploy.html" rel="nofollow ugc">https://artalk.js.org/en/guide/deploy.html</a></p>
<p dir="auto"><strong>最新版本：</strong> v2.9.1</p>
<p dir="auto"><strong>开源协议：</strong> MIT License</p>
<p dir="auto"><strong>技术栈：</strong> Go 44.7% / TypeScript 38.9% / Vue 7.9% / SCSS 4.7%</p>
<h2>二、核心功能特性</h2>
<h3>2.1 用户与社交</h3>
<ul>
<li>社会登录：支持通过社交账号快速登录</li>
<li>侧边栏管理：快速管理评论，直观浏览</li>
<li>站内通知：红点标记、@提及列表</li>
<li>评论投票：支持对评论点赞或踩</li>
<li>评论排序：多种排序方式，自由选择</li>
<li>评论搜索：快速搜索评论内容</li>
<li>评论置顶：置顶重要消息</li>
<li>仅看作者：只显示作者评论</li>
<li>评论跳转：快速跳转到被引用的评论</li>
<li>自动保存：防止内容丢失</li>
<li>IP 归属地：显示用户 IP 所属地区</li>
<li>多语言：支持多语言切换</li>
<li>夜间模式：一键切换暗色主题</li>
</ul>
<h3>2.2 管理与安全</h3>
<ul>
<li>邮件通知：多种发送方式，支持邮件模板</li>
<li>多样化推送：多种推送方式，通知模板</li>
<li>验证码：多种验证类型，频率限制</li>
<li>评论审核：内容检测，垃圾评论拦截</li>
<li>图片上传：自定义上传，支持图床</li>
<li>管理员：密码验证，徽章标识</li>
<li>多站点：站点隔离，集中管理</li>
<li>页面管理：快速查看，一键标题导航</li>
<li>页面浏览统计：轻松追踪页面浏览量</li>
</ul>
<h3>2.3 内容与展示</h3>
<ul>
<li>Markdown：支持 Markdown 语法渲染</li>
<li>表情包：兼容 OwO 表情，快速集成</li>
<li>层级嵌套：嵌套分页列表，无限滚动</li>
<li>图片灯箱：快速集成图片灯箱效果</li>
<li>图片懒加载：懒加载图片，优化体验</li>
<li>LaTeX：集成 LaTeX 公式解析</li>
<li>扩展插件：支持创建更多可能性</li>
</ul>
<h3>2.4 运维与开发</h3>
<ul>
<li>命令行管理：CLI 命令行操作管理</li>
<li>API 文档：提供 OpenAPI 格式接口文档</li>
<li>程序升级：版本检查，一键升级</li>
<li>数据迁移：免费迁移工具，快速备份</li>
</ul>
<h2>三、快速部署</h2>
<h3>3.1 Docker 一键部署（推荐）</h3>
<p dir="auto">使用 Docker 一键部署 Artalk 服务端：</p>
<pre><code class="language-bash">docker run -d \
  --name artalk \
  -p 8080:23366 \
  -v $(pwd)/data:/data \
  -e "TZ=America/New_York" \
  -e "ATK_LOCALE=en" \
  -e "ATK_SITE_DEFAULT=Artalk Blog" \
  -e "ATK_SITE_URL=https://example.com" \
  artalk/artalk-go
</code></pre>
<p dir="auto"><strong>参数说明：</strong></p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>参数</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>-p 8080:23366</td>
<td>将容器 23366 端口映射到主机 8080 端口</td>
</tr>
<tr>
<td>-v $(pwd)/data:/data</td>
<td>数据持久化存储</td>
</tr>
<tr>
<td>TZ</td>
<td>时区设置</td>
</tr>
<tr>
<td>ATK_LOCALE</td>
<td>界面语言（en/zh-CN 等）</td>
</tr>
<tr>
<td>ATK_SITE_DEFAULT</td>
<td>默认站点名称</td>
</tr>
<tr>
<td>ATK_SITE_URL</td>
<td>站点 URL</td>
</tr>
</tbody>
</table>
<h3>3.2 前端集成</h3>
<p dir="auto">在网页中集成 Artalk 客户端：</p>
<pre><code class="language-javascript">Artalk.init({
  el: '#Comments',
  site: 'Artalk Blog',
  server: 'https://artalk.example.com',
  pageKey: '/2018/10/02/hello-world.html'
})
</code></pre>
<p dir="auto"><strong>参数说明：</strong></p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>参数</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>el</td>
<td>挂载评论组件的 DOM 元素选择器</td>
</tr>
<tr>
<td>site</td>
<td>站点名称（需与服务端一致）</td>
</tr>
<tr>
<td>server</td>
<td>Artalk 服务端地址</td>
</tr>
<tr>
<td>pageKey</td>
<td>页面唯一标识</td>
</tr>
</tbody>
</table>
<h3>3.3 其他安装方式</h3>
<p dir="auto">除 Docker 外，还支持以下安装方式：</p>
<ul>
<li>二进制文件：从 GitHub Releases 下载预编译版本</li>
<li>go install：通过 Go 包管理器安装</li>
<li>Linux 包管理器：支持各 Linux 发行版的包管理器</li>
</ul>
<h2>四、配置说明</h2>
<p dir="auto">Artalk 启动后会自动生成配置文件 artalk-go.yml，支持丰富的自定义选项：</p>
<h3>4.1 基础配置</h3>
<pre><code class="language-yaml"># 服务端口
port: 23366

# 时区
timezone: Asia/Shanghai

# 站点默认名称
site_default: Artalk Blog

# 站点 URL
site_url: https://example.com
</code></pre>
<h3>4.2 数据库配置</h3>
<p dir="auto">Artalk 默认使用 SQLite，也可配置 MySQL：</p>
<pre><code class="language-yaml">db:
  type: sqlite
  file: ./data/artalk.db
</code></pre>
<h3>4.3 邮件通知配置</h3>
<pre><code class="language-yaml">email:
  enabled: true
  send_type: smtp
  smtp_host: smtp.example.com
  smtp_port: 465
  smtp_user: your@email.com
  smtp_pass: your_password
  from: "Artalk &lt;noreply@example.com&gt;"
</code></pre>
<h3>4.4 图片上传配置</h3>
<pre><code class="language-yaml">img_upload:
  enabled: true
  path: ./data/uploads/
  max_size: 5242880
</code></pre>
<h2>五、技术架构</h2>
<h3>5.1 后端（Go）</h3>
<ul>
<li>语言：Go 1.21+</li>
<li>框架：Gin Web Framework</li>
<li>数据库：SQLite / MySQL</li>
<li>模板引擎：内置模板引擎</li>
<li>命令行：Cobra CLI</li>
</ul>
<h3>5.2 前端（Vue + TypeScript）</h3>
<ul>
<li>UI 框架：Vue 3</li>
<li>语言：TypeScript</li>
<li>样式：SCSS</li>
<li>构建工具：Vite</li>
<li>客户端：纯 Vanilla JS（约 40KB），无框架依赖</li>
</ul>
<h3>5.3 项目结构</h3>
<pre><code>Artalk/
├── cmd/           # 命令行入口
├── conf/          # 配置文件
├── docs/          # 文档
├── internal/      # 后端核心逻辑
├── server/        # 服务端
├── ui/            # 前端 UI（Vue）
├── public/        # 静态资源
├── i18n/          # 国际化
├── scripts/       # 构建脚本
├── test/          # 测试
├── main.go        # 程序入口
├── docker-compose.yml
├── Dockerfile
└── Makefile
</code></pre>
<h2>六、数据迁移</h2>
<p dir="auto">Artalk 提供免费的数据迁移工具，支持从其他评论系统导入数据：</p>
<ul>
<li>支持从 Artalk 旧版本迁移</li>
<li>支持从其他评论系统导入（如 Typecho、WordPress 等）</li>
<li>提供快速备份和恢复功能</li>
</ul>
<h2>七、升级与维护</h2>
<h3>7.1 一键升级</h3>
<pre><code class="language-bash">docker pull artalk/artalk-go
docker stop artalk
docker rm artalk
# 重新运行 docker run 命令
</code></pre>
<h3>7.2 版本检查</h3>
<p dir="auto">Artalk 支持版本检查和一键升级功能，确保始终运行最新版本。</p>
<h2>八、适用场景</h2>
<ul>
<li>个人博客：轻量级评论系统，替代 Disqus、Valine 等</li>
<li>静态网站：完美适配 Hugo、Hexo、Jekyll 等静态站点生成器</li>
<li>技术文档：为文档站点添加评论功能</li>
<li>企业官网：产品页面用户反馈收集</li>
<li>社区论坛：轻量级讨论区域</li>
<li>多站点管理：集中管理多个站点的评论</li>
</ul>
<h2>九、同类产品对比</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>特性</th>
<th>Artalk</th>
<th>Disqus</th>
<th>Valine</th>
<th>Waline</th>
</tr>
</thead>
<tbody>
<tr>
<td>开源</td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /> MIT</td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>自托管</td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>后端语言</td>
<td>Go</td>
<td>—</td>
<td>Node.js</td>
<td>Node.js</td>
</tr>
<tr>
<td>前端大小</td>
<td>~40KB</td>
<td>较大</td>
<td>较大</td>
<td>较大</td>
</tr>
<tr>
<td>社会登录</td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>邮件通知</td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>多站点</td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /></td>
</tr>
<tr>
<td>评论审核</td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>Markdown</td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>图片上传</td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
<tr>
<td>LaTeX</td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/274c.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--x" style="height:23px;width:auto;vertical-align:middle" title="❌" alt="❌" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://www.cnp.cc/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=5fb672a5cbf" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
</tr>
</tbody>
</table>
<h2>十、相关资源</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>资源</th>
<th>链接</th>
</tr>
</thead>
<tbody>
<tr>
<td>官方文档</td>
<td><a href="https://artalk.js.org/" rel="nofollow ugc">https://artalk.js.org/</a></td>
</tr>
<tr>
<td>GitHub 仓库</td>
<td><a href="https://github.com/ArtalkJS/Artalk" rel="nofollow ugc">https://github.com/ArtalkJS/Artalk</a></td>
</tr>
<tr>
<td>最新发布</td>
<td><a href="https://github.com/ArtalkJS/Artalk/releases" rel="nofollow ugc">https://github.com/ArtalkJS/Artalk/releases</a></td>
</tr>
<tr>
<td>API 文档</td>
<td><a href="https://artalk.js.org/http-api.html" rel="nofollow ugc">https://artalk.js.org/http-api.html</a></td>
</tr>
<tr>
<td>开发指南</td>
<td><a href="https://artalk.js.org/en/develop/" rel="nofollow ugc">https://artalk.js.org/en/develop/</a></td>
</tr>
<tr>
<td>赞助支持</td>
<td><a href="https://buymeacoffee.com/artalk" rel="nofollow ugc">https://buymeacoffee.com/artalk</a></td>
</tr>
</tbody>
</table>
<h2>十一、贡献指南</h2>
<p dir="auto">欢迎提交 Pull Request！</p>
<ol>
<li>Fork 本项目</li>
<li>创建特性分支</li>
<li>提交更改</li>
<li>推送到分支</li>
<li>创建 Pull Request</li>
</ol>
]]></description><link>https://www.cnp.cc/topic/2/artalk-开源评论系统搭建教程-go-vue-轻量级自托管评论系统完整部署指南-docker-一键部署-社会登录-邮件通知-多站点管理</link><generator>RSS for Node</generator><lastBuildDate>Sun, 31 May 2026 11:15:43 GMT</lastBuildDate><atom:link href="https://www.cnp.cc/topic/2.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 30 May 2026 17:38:09 GMT</pubDate><ttl>60</ttl></channel></rss>