首先介绍一下condev-monitor项目,这个项目是用来复刻类似sentry的前端监控系统。主要分为以下几部分,监控错误、性能等的sdk。用于测试安装上述sdk的前端页面项目examples/vanilla项目。通过sdk上报错误的服务端dsn-server。以及用于dashboard展示的前端frontend/monitor以及其后端backend/monitor。

部署方式一开始想使用docker-compose部署在coolify上,尝试多次在部署过程中network被coolify内部prune掉,且出现很多问题,可能是在部署的时候docker-compose中的caddy和coolify服务本身的caddy冲突,尝试多次未果后购买新服务器选用docker-compose部署方案。

项目采用docker-compose部署,整个项目使用了很多镜像。开发环境使用两个数据库clickhosue以及postgres两个dcoker镜像,其余部分在本地pnpm start:dev以及pnpm dev命令执行去本地开发。开发环境下.env由各自项目维护。而线上部署的时候,nextjs项目主流两种部署方式是nixpacks以及docker部署。项目根据自托管需求的时候,nextjs选用可以部署在cloudflare上的adapter方案opennext,后端nestjs可以部署在企业内网主机上,通过tunnel。或者使用docker-compose将前后端都部署在企业内网主机上。两个后端中nestjs不能去掉node_modules去部署,所以后端部署的时候要么在服务器上pm2启动要么把node_modules打进docker中。尝试在服务器上跑pm2的时候,opennext项目也尝试的pm2运行但是出现错误,因此后来选择docker-compose全量部署在服务器上。至此已经踩坑过了coolify以及pm2+docker-compose混合部署的方案。

使用阿里云的2c2g+AliLinux系统作为部署docker镜像及其,遇到OOM总是崩溃,swap配置了但不够用。所以后面打算后端使用pm2,docker化数据库clickhosue以及pg,但是尝试过后部署步骤繁琐故舍弃,转而投入全docker-compose部署。后端dashboard的nestjs项目中使用argon2在阿里云服务器中默认py3.6编译报错崩溃,尝试换py3.7重新编译依然报错。总是会导致这种情况,后面加密依赖部分直接更换bcryptjs了

另一个是在阿里云服务器中使用docker-compose部署的时候,dashboard的nestjs后端项目中使用比较旧的nest-modules/mailer的时候会报错css-in-js的依赖缺失。查看github issues时候有解决方案但是比较不标准导致步骤繁琐。未来维护可能更麻烦,所以换了nodemailer。

总是在阿里云服务器中爆OOM,所以选用了外网的netcup的4c6g机器,避免了麻烦的备案以及docker镜像设置,而且后续开发其他ai项目的时候可以避免openai在中国地区不可用的麻烦(cfworker方案已失效)。使用docker-compose部署全量镜像过程中正常部署,但是在测试过程中发现收发不了邮件。经过测试机器脚本发现服务器不支持smtp发送邮件。所以在之前通过nodemailer通过smtp发送163邮箱的基础上,优先使用resend的http服务发送邮箱,当发送不了http的时候转而使用smtp去发送。这就保证出现严重错误时邮件服务正常运行。

至此,本项目在依赖替换以及部署过程中的错误和坑