news 2026/10/27 10:02:33

如何10分钟自建错误追踪服务:Rustrak Docker部署完整教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何10分钟自建错误追踪服务:Rustrak Docker部署完整教程

【免费下载链接】rustrak

Ultra-lightweight error tracking server compatible with Sentry SDKs

项目地址:https://gitcode.com/gh_mirrors/ru/rustrak
点击查看免费下载

Rustrak 是一款超轻量级、自托管的错误追踪(Error Tracking)服务端,完整兼容 Sentry 协议——错误、日志、性能事务、发布健康度与 AI Agent 追踪它一网打尽。得益于默认 SQLite 的单容器设计,用 Docker Compose 几条命令即可在 10 分钟内跑起一套属于自己的错误追踪服务,本文带你完整走完Rustrak Docker 部署全流程。

💡 为什么选择 Rustrak 做自托管错误追踪?

优势说明
📡 兼容 Sentry 协议已有的 Sentry SDK 只需把 DSN 改成 Rustrak 地址,零代码改造
🪶 极致轻量镜像约 20 MB,空闲内存低于 100 MB,512 MB 的 VPS 就能跑
📦 零外部依赖默认 SQLite,无需单独部署数据库,一个容器同时提供 API 与仪表盘
💰 完全免费无按事件计费、无座位数、无数据量上限,数据留在自己的服务器上

整体架构一目了然:

你的应用 → Sentry SDK → Rustrak(API + 仪表盘,端口 8080)→ SQLite / PostgreSQL

🛠️ 部署前准备:只需一个前置条件

一台安装了Docker和Docker Compose的服务器(或本地机器)即可。无需数据库、无需消息队列、无需任何中间件。

仓库根目录自带开箱即用的编排文件 docker-compose.yml,核心内容只有几行:

services: server: image: rustrak/rustrak-server:latest ports: - "8080:8080" environment: - SESSION_SECRET_KEY=${SESSION_SECRET_KEY} - CREATE_SUPERUSER=${CREATE_SUPERUSER} volumes: - rustrak_data:/data restart: unless-stopped volumes: rustrak_data:

三个必须了解的关键变量(完整清单见 apps/docs/content/configuration/environment.mdx):

变量作用示例
SESSION_SECRET_KEY会话 Cookie 签名密钥,必须固定,否则重启后全员掉线openssl rand -hex 32生成
CREATE_SUPERUSER首个管理员账号,格式email:passwordadmin@example.com:changeme123
PUBLIC_URL写入每个 DSN 的对外访问地址,不设置会导致 DSN 出现0.0.0.0http://localhost:8080

🚀 最快部署方法:Docker Compose 三步启动

第 1 步:生成密钥并导出环境变量

export SESSION_SECRET_KEY=$(openssl rand -hex 32) export CREATE_SUPERUSER=admin@example.com:changeme123 export PUBLIC_URL=http://localhost:8080

第 2 步:一条命令启动

docker compose up -d

第 3 步:打开仪表盘

浏览器访问http://localhost:8080(登录页在/login),用CREATE_SUPERUSER里的邮箱密码登录。一个容器同时响应 API 和 Web 界面,没有第二个端口要记。

⚡CREATE_SUPERUSER只在数据库中还没有任何用户时生效,之后修改它不会改变密码。

🐳 备选方案:不用 Compose,单条 docker run 命令

更喜欢docker run的话,官方安装指南 apps/docs/content/getting-started/installation.mdx 给出了等价写法:

docker run -d \ --name rustrak \ -p 8080:8080 \ -v rustrak_data:/data \ -e SESSION_SECRET_KEY=$(openssl rand -hex 32) \ -e CREATE_SUPERUSER=admin@example.com:changeme123 \ -e PUBLIC_URL=http://localhost:8080 \ rustrak/rustrak-server:latest

注意-v rustrak_data:/data这个命名卷:SQLite 数据库和上传的 source map 都存在这里,保住它,数据就能跨重启和版本升级存活。

🔌 接入 Sentry SDK:只改一行 DSN

登录仪表盘后:点击New Project创建项目 → 复制生成的 DSN(形如http://a1b2c3d4@localhost:8080/1)→ 在你的应用里初始化 SDK:

# Python import sentry_sdk sentry_sdk.init(dsn="http://<key>@localhost:8080/<project_id>")
// JavaScript Sentry.init({ dsn: "http://<key>@localhost:8080/<project_id>" });

任何语言的 Sentry SDK(Go、Rust、Java……)都适用。发一条测试事件:

sentry_sdk.capture_message("Hello from Rustrak!")

回到仪表盘,你的项目下就会出现第一条 Issue 🎉

🗄️ 数据库怎么选:SQLite 还是 PostgreSQL?

两个镜像变体都自带仪表盘,区别只在存储层:

镜像标签后端适用场景
rustrak/rustrak-server:latestSQLite个人项目、小团队,约每小时 1000 事件以内
rustrak/rustrak-server:postgresPostgreSQL生产环境、高吞吐、并发写入

事件量上来后,仓库同样提供了现成的 docker-compose.postgres.yml——它把:postgres镜像与一个postgres:16-alpine服务编排在一起,并带健康检查:

echo "POSTGRES_PASSWORD=$(openssl rand -hex 16)" >> .env docker compose -f docker-compose.postgres.yml up -d

已有自己的 PostgreSQL?删掉其中的postgres服务,把DATABASE_URL指向现有实例即可(docker-compose.postgres.yml 中的连接串就是格式示例)。

🏭 生产部署关键点(上线前 3 件事)

  1. 配置反向代理 + HTTPS:把容器放进代理网络、删掉ports块,让 nginx/Caddy/Traefik 直达8080,并设置SSL_PROXY=true启用安全 Cookie。因为仪表盘和 API 同属一个容器,只需配置一个上游,路由非常省心。
  2. PUBLIC_URL设为公网域名(如https://rustrak.example.com):它是写进每个 DSN 和告警链接里的地址,SDK 必须能从外部访问到。
  3. 备份/data卷:SQLite 模式下数据库位于/data/rustrak.db、source map 在/data/sourcemaps,最简单的方式是停服后整卷打包;PostgreSQL 模式则记得 source map 仍在/data卷里,别漏备。

完整的生产检查清单见 apps/docs/content/configuration/production.mdx。

❓ 常见问题排查

现象原因与解法
DSN 里是http://0.0.0.0:8080/...未设置PUBLIC_URL,SDK 无法访问绑定地址,补上即可
容器重启后所有人都被登出SESSION_SECRET_KEY变了,请固定同一个值
仪表盘打不开检查 8080 端口是否被占用,docker logs看启动日志;健康检查可用GET /health
想只留 API 不要界面设置RUSTRAK_DASHBOARD=off,服务将只响应 API

📌 小结

回到开头:10 分钟这个数字不是营销话术——生成密钥、docker compose up -d、登录、建项目、改一行 DSN,全程不到十分钟。Rustrak 用 20 MB 的镜像和不到 100 MB 的内存,把「Sentry 级」的错误追踪能力装进了你自己的服务器:错误分组、source map 反解、性能分析、发布健康、告警推送一应俱全,且数据永远属于你。

镜像采用 distroless 最小运行时构建(见 apps/server/Dockerfile),攻击面小,适合长期常驻;配合restart: unless-stopped即可安心交给运维。

【免费下载链接】rustrak

Ultra-lightweight error tracking server compatible with Sentry SDKs

项目地址:https://gitcode.com/gh_mirrors/ru/rustrak
点击查看免费下载
上一篇:微信网页版登录失败自救指南:3分钟让聊天窗口在浏览器里复活
下一篇:终极免费指南:Windows系统清理工具WindowsCleaner,一键释放C盘空间的正确姿势

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 10:00:51

jsPDF 中文显示实战指南:addFileToVFS 与 addFont 字体加载全流程

jsPDF 中文显示实战指南&#xff1a;addFileToVFS 与 addFont 字体加载全流程 【免费下载链接】jsPDF Client-side JavaScript PDF generation for everyone. 项目地址: https://gitcode.com/gh_mirrors/js/jsPDF jsPDF 是一款在浏览器端生成 PDF 的轻量级库&#xff0c…

作者头像 李华
网站建设 2026/10/27 9:58:27

路网拓扑驱动的交叉口进出方向判定与转向关系构建

道路交叉口出入口方向判定这件事&#xff0c;我最早接触的时候以为是个纯粹的几何题&#xff1a;拿到路口中心点坐标&#xff0c;算一下周围几条路的方位角&#xff0c;排个序&#xff0c;标上东南西北就完了。真正开始做项目才发现&#xff0c;几何只占三成&#xff0c;剩下七…

作者头像 李华
网站建设 2026/10/27 9:53:50

硬件老师傅之RAID

RAID 0 单纯追求速度&#xff0c;零容错&#xff1b;RIAD 1 单纯追求安全&#xff0c;零提速空间。两者是 RAID 家族里最基础、最极端的两个对立面&#xff0c;所有其他 RAID 级别&#xff08;5/6/10&#xff09;都是在它们基础上做折中。一、RAID 0&#xff1a;条带化&#…

作者头像 李华
网站建设 2026/10/27 9:51:17

Impeccable怎么用?从词根到搭配彻底掌握“无可挑剔”

前阵子有朋友问我&#xff0c;准备雅思写作的时候想夸人“无可挑剔”&#xff0c;到底用哪个词最稳。我脑子里第一个蹦出来的就是 impeccable。这个词在国内英语学习圈里出镜率不算低&#xff0c;但真正能把读音、搭配、语感用对的人并不多。很多人知道它是“完美”的近义词&am…

作者头像 李华
网站建设 2026/10/27 9:50:37

2007-2024年 省级-知识产权保护指数IPP(知识产权发展状况报告)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/27 9:50:36

2010-2025年 长期护理保险制度试点DID(xlsx)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华