- Published on
使用 umami + supabase 部署自己的网站统计平台
- Authors
- Name
- houyw
- @Luckydog_H
前言
今天就讲一下如何在 docker 中部署 umami,以及遇到的坑。umami 的数据库直接使用supabase提供的免费资源。
准备工作
supabase 中创建一个项目
在免费用户一个组织只能建两个项目,我已经满了。所以......截图没有了哈哈哈哈哈哈。
创建完项目以后,在connect中就能看到数据库的连接信息。
注意
切记选择 Transaction pooler 这个 URI 啊,否则就连不上数据库了!
准备 docker compose 文件
version: '3'
services:
umami:
image: umamisoftware/umami:postgresql-latest
ports:
- '9099:9099'
environment:
DATABASE_URL: postgresql://postgres.[project-id]:[password]@aws-0-ap-southeast-1.pooler.supabase.com:5432/[database] # 这里的连接信息,password就是在supabae组织内新建项目时设置的
DATABASE_TYPE: postgresql
APP_SECRET: '设置自己的随机值就okay了'
PORT: 9099
restart: always
volumes:
umami-db-data:
小贴士
国内服务器无法访问docker镜像,可以修docker compose文件: image: docker.umami.is/umami-software/umami:postgresql-latest
原神启动(不是😅)
docker-compose.yml
下执行命令
docker-compose up -d
这就完事了... 然后还要使用nginx做反向代理,讲域名指向docker的ip地址,端口就是docker-compose.yml中的映射地址之9099。
由于我使用了nginx proxy manager来管理nginx,所以直接在nginx proxy manager中添加一个代理,然后就ok了。所以...这里也没有nginx的配置了😅
测试
完成域名配置以后,就可以看到你的网站统计了。打开后就是登录页面了。然后就登录自己慢慢玩吧🤭。
账号: admin
密码: umami
遇到的坑
一个巨坑!!!
由于我的 nginx proxy manager 也是 docker 部署的,nginx 实在 docker 中,所以 umami 的 docker 服务 ip 需要和 nginx 的 docker 服务 ip 在一个网段,一个网段,一个网段。。。
就是说,nginx proxy manager 在 172.17.0.* ip 段下的话,umami 的 docker 服务就只能在172.17.0.* ip 段下。 否则报504网关超时啊朋友们!😭
总结
总结就是,umami 的 docker 服务和 nginx proxy manager 在同一个网段下,否则就无法访问。
docker镜像国内服务器访问不了,很多三方镜像都挂了,有兴趣可以用cloudflare pages和CF-Workers-docker自行搭建
也可以使用vercels快速搭建,只需fork一下umami的仓库,然后再vercels上建一个项目,使用fork的仓库,配置docker-compose.yml中environment变量即可(PORT不需要)。