安装步骤
supabase是一个开源的后端容器, 可以私有化部署 (BaaS)为自己的云服务,开发人员在使用BaaS进行 Web 或移动应用开发时,仅需自行编写和维护前端代码。supabase为开发者提供了开发应用所需要的后端服务,例如用户身份验证、数据库管理、推送通知(针对移动应用程序),以及云存储等。
适用于各类 小程序/安卓/ios前端开发人员使用, 免去后台复杂的开发.通过supabase上简单操作,即可完成所需的后台服务,使开发人员可以专注于编写前端应用程序代码。通过supabase提供的 API和 SDK,他们可以集成所需的所有后端功能,而无需自行构建后端。
本文结合"BD采集相机"安卓app应用的需求,自行搭建一个基于supabase的后台使用.我计划后续以这个应用的实际需求,逐步推出系列文章,本文是第一篇.搭建supabase环境.
软硬件环境
环境cpu 4c, 8g内存, 50g ssd数据盘. ubuntu24.10 server
准备工作
您需要在系统中安装以下内容:Git 和 Docker
安装宝塔免费版(非必须,用于可视化管理服务器)
宝塔面板集成了很多便捷的系统及中间件安装和管理工具. 对于初期搭建环境非常有帮助.下载地址https://www.bt.cn/new/download.html
这个过程一般比较顺利.
cd ~
wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && sudo bash install_panel.sh ed8484bec
注意:下载安装需要到用户目录,否则权限出错.
安装成功后,务必保存登录信息.大致如下
=============注意:首次打开面板浏览器将提示不安全=================
请选择以下其中一种方式解决不安全提醒
1、下载证书,地址:https://dg2.bt.cn/ssl/baota_root.pfx,双击安装,密码【www.bt.cn】
2、点击【高级】-【继续访问】或【接受风险并继续】访问
教程:https://www.bt.cn/bbs/thread-117246-1-1.html
mac用户请下载使用此证书:https://dg2.bt.cn/ssl/mac.crt
========================面板账户登录信息==========================
【云服务器】请在安全组放行 10999 端口
外网ipv4面板地址: https://11.1.1.11:10999/63b6667b
内网面板地址: https://11.1.1.111:10999/63b6667b
username: kd347nvf
password: 55544433
浏览器访问以下链接,添加宝塔客服
https://www.bt.cn/new/wechat_customer
================================================================
通过浏览器登录.https://11.1.1.11:10999/63b6667b.
安装docker
进入宝塔,点击docker,点击安装. 成功后可以看到如下docker的界面. 这一步也很简单.当然你通过命令安装也是很简单的.
安装和运行 Supabase
进入/www 目录, 这个目录是我挂载一块独立存储.同时也是宝塔的主目录. 我计划在这里安装supbase.
cd /www
#Get the code
sudo git clone --depth 1 https://github.com/supabase/supabase
#Make your new supabase project directory
sudo mkdir supabase-project
#Tree should look like this
#.
#├── supabase
#└── supabase-project
#Copy the compose files over to your project
sudo cp -rf supabase/docker/* supabase-project
#Copy the fake env vars
sudo cp supabase/docker/.env.example supabase-project/.env
#切换到你的项目目录
cd supabase-project
#拉取最新镜像
sudo docker compose pull
#启动服务 (in detached mode)
sudo docker compose up -d
过程一般比较顺利,没什么坑.操作上述命令后,会看到如下输出:
supabase@supserver:/www/supabase-project$ sudo docker compose pull
[+] Pulling 136/136
✔ functions Pulled 149.8s
✔ analytics Pulled 18.2s
✔ rest Pulled 141.6s
✔ meta Pulled 31.8s
✔ db Pulled 134.2s
✔ realtime Pulled 122.7s
✔ studio Pulled 123.1s
✔ imgproxy Pulled 51.5s
✔ kong Pulled 23.5s
✔ supavisor Pulled 66.0s
✔ auth Pulled 43.4s
✔ storage Pulled 144.5s
✔ vector Pulled 110.2s
supabase@supserver:/www/supabase-project$ sudo docker compose up -d
[+] Running 15/15
✔ Network supabase_default Created 0.1s
✔ Volume "supabase_db-config" Created 0.0s
✔ Container supabase-vector Healthy 6.2s
✔ Container supabase-imgproxy Started 0.7s
✔ Container supabase-db Healthy 28.7s
✔ Container supabase-analytics Healthy 27.4s
✔ Container supabase-auth Started 28.1s
✔ Container supabase-rest Started 28.1s
✔ Container supabase-meta Started 27.7s
✔ Container supabase-kong Started 27.8s
✔ Container supabase-edge-functions Started 27.9s
✔ Container realtime-dev.supabase-realtime Started 27.9s
✔ Container supabase-pooler Started 28.0s
✔ Container supabase-studio Started 28.0s
✔ Container supabase-storage Started 28.9s
supabase@supserver:/www/supabase-project$
在所有服务启动后,您可以看到它们在后台运行:
docker compose ps
supabase@supserver:/www/supabase-project$ sudo docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
realtime-dev.supabase-realtime supabase/realtime:v2.34.47 "/usr/bin/tini -s -g…" realtime 3 minutes ago Up 2 minutes (healthy)
supabase-analytics supabase/logflare:1.12.0 "sh run.sh" analytics 3 minutes ago Up 3 minutes (healthy) 0.0.0.0:4000->4000/tcp, [::]:4000->4000/tcp
supabase-auth supabase/gotrue:v2.171.0 "auth" auth 3 minutes ago Up 2 minutes (healthy)
supabase-db supabase/postgres:15.8.1.060 "docker-entrypoint.s…" db 3 minutes ago Up 3 minutes (healthy) 5432/tcp
supabase-edge-functions supabase/edge-runtime:v1.67.4 "edge-runtime start …" functions 3 minutes ago Up 2 minutes
supabase-imgproxy darthsim/imgproxy:v3.8.0 "imgproxy" imgproxy 3 minutes ago Up 3 minutes (healthy) 8080/tcp
supabase-kong kong:2.8.1 "bash -c 'eval \"echo…" kong 3 minutes ago Up 2 minutes (healthy) 0.0.0.0:8000->8000/tcp, [::]:8000->8000/tcp, 8001/tcp, 0.0.0.0:8443->8443/tcp, [::]:8443->8443/tcp, 8444/tcp
supabase-meta supabase/postgres-meta:v0.88.9 "docker-entrypoint.s…" meta 3 minutes ago Up 2 minutes (healthy) 8080/tcp
supabase-pooler supabase/supavisor:2.5.1 "/usr/bin/tini -s -g…" supavisor 3 minutes ago Up 2 minutes (healthy) 0.0.0.0:5432->5432/tcp, [::]:5432->5432/tcp, 0.0.0.0:6543->6543/tcp, [::]:6543->6543/tcp
supabase-rest postgrest/postgrest:v12.2.11 "postgrest" rest 3 minutes ago Up 2 minutes 3000/tcp
supabase-storage supabase/storage-api:v1.22.7 "docker-entrypoint.s…" storage 3 minutes ago Up 2 minutes (healthy) 5000/tcp
supabase-studio supabase/studio:2025.04.21-sha-173cc56 "docker-entrypoint.s…" studio 3 minutes ago Up 2 minutes (healthy) 3000/tcp
supabase-vector timberio/vector:0.28.1-alpine "/usr/local/bin/vect…" vector 3 minutes ago Up 3 minutes (healthy)
登录宝塔docker中可以看到supabase安装的所有镜像.
访问 Supabase Studio
在防火墙上打开8000端口.
您可以通过 port 上的 API 网关访问 Supabase Studio。http://your-ip:8000。
系统将提示您输入用户名和密码。默认情况下,凭证为:
用户名:supabase
密码:this_password_is_insecure_and_should_be_updated
可以成功看到如下界面:
服务配置
生成密钥
默认安装后,需要重新生成密钥,否则存在极大的安全隐患. 访问
https://supabase.com/docs/guides/self-hosting/docker#dashboard-authentication
更新 API 密钥
运行此表单两次以生成 new 和 API 密钥。替换文件中的值:/www/supabase-project/.env
ANON_KEY- 替换为 keyanon
SERVICE_ROLE_KEY- 替换为密钥service
编辑.env文件:
JWT_SECRET=key
ANON_KEY=密钥1
SERVICE_ROLE_KEY=密钥2
DASHBOARD_USERNAME=自定义用户名
DASHBOARD_PASSWORD=密码
重启所有服务后生效-进入安装目录执行以下命令重启:
cd /www/supabase-project/
sudo docker compose down
sudo docker compose up -d
您将需要重新启动使更改生效的服务。
配置邮件服务
支持smtp的邮箱理论上有可以. 但是测试发现139邮箱极不稳定,很容易拒绝邮件. 我本次测试重新申请了163邮箱,开启smtp服务时会自动生成密钥.需要配置到env文件中.
重新编辑.env文件
ENABLE_EMAIL_SIGNUP=true
ENABLE_EMAIL_AUTOCONFIRM=false
SMTP_ADMIN_EMAIL=bdcamera@163.com
SMTP_HOST=smtp.163.com
SMTP_PORT=25
SMTP_USER=bdcamera@163.com
SMTP_PASS=密钥
SMTP_SENDER_NAME=BD采集相机
ENABLE_ANONYMOUS_USERS=false
重启服务.进行邮件测试.
登录到web控制台. 左侧找到菜单"Authentication",点击一个用户.(如果没有用户可以点击"Add user"按钮新添加用户), 右侧弹出面板点击"Send password recovery"按钮.
如果顺利.你所选的用户将受到邮件.
配置Nginx反向代理
将域名解析到服务器地址, 配置nginx证书 这里不在介绍,请参考其他资料.
打开nginx配置文件,修改如下:
server
{
.................
# 静态文件服务
location ^~ /bdcamera/ {
alias /www/wwwroot/ctaias.com/bdcamera/;
try_files $uri $uri/ =404;
}
#反向代理配置
location / {
proxy_set_header Host $host;
proxy_pass http://localhost:8000;
}
............
}
设置supabase nginx反向代理时,请严格按照这个配置,否则可能出现功能障碍.
重启nginx. 此时应该可以使用你的域名进行访问.
修改supabase的配置文件 .env, 进行域名配置
SITE_URL=https://www.ctaias.com
API_EXTERNAL_URL=https://ctaias.com
SUPABASE_PUBLIC_URL=https://ctaias.com
到此配置结束,别忘了重启服务. 下一步你可以开始使用他进行开发了.