实验室中的网站统计用的umami,目前是托管在Vercel上,数据库用的也是第三方的,除了占用了一个解析二级域名,基本上可以说的上是零成本。为什么要选择自托管?
一个原因是umami本身比较占内存,通过docker部署后也要占用300~400m内存。对于现在普遍1G2G的小鸡来说,显得有点大了,容易消化不良。当然,如果你觉得你家的小鸡是公鸡中的战斗机,那当我没说。也可以选择docker-compose进行部署,这里不多加叙述。
docker-compose.yml 安装umami
version: '3.3' services: # umami网站监控应用(支持多服务器) umami: image: ghcr.io/umami-software/umami:mysql-latest restart: always network_mode: "host" environment: DATABASE_TYPE: mysql DATABASE_URL: mysql://数据库用户名:数据库密码@链接ip:端口/数据库名称 APP_SECRET: replace-me-with-a-random-string container_name: umami
第二个原因是官方本身就推荐这种做法,并且提供了对应的文档。那我要是不支持一下倒显得我不知好歹了不是。
第三个原因是umami支持的数据库是mysql和postgres,并且针对mysql必须版本8以上。而mysql8也比较吃内存,相比于mysql5运行只占了几十M,mysql8至少要几百M。好家伙,这两个直接一唱一和能把我小鸡撑死。
所以,最终我选择的解决方案就是:Vercel+umami+postgres+cloudflare
利用Vercel托管项目的流程我就不多加叙述了,老生常谈的问题。不会的按照官方文档操作就行,一路点下去后会要求一个环境变量DATABASE_URL,这里要求填的就是数据库的链接代码。
因为我用的postgres数据库,并且选择了免费的第三方supabase数据库。所以去它的官方注册申请对应的数据库就行。
tips:创建数据库后,记得在选择Mode哪里选择Session mode,也就是下图的第三步,不然在Vercel构建时就会报数据库错误!
构建出来的环境变量DATABASE_URL格式如下,走的5432端口:
postgresql://postgres.ytdkdkxrycatnqozqfwv:[YOUR-PASSWORD]@aws-0-us-west-1.pooler.supabase.com:5432/postgres
然后~说到第三方数据库,这里推荐两个免费的第三方数据库,后面,有空再做下测评:
mysql数据库,提供最新的mysql8版本:https://sqlpub.com/
postgresql数据库:https://supabase.com/
关于数据这方面,建议重要的数据还是用自己的数据库吧~
通过vercel托管的项目会随机分配一个vercel二级域名,但是国内是访问不到的,所以要用到cloudflare,这个下次再说吧