私有部署supabase完整手册-1


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

到此配置结束,别忘了重启服务. 下一步你可以开始使用他进行开发了.

下一篇:私有部署supabase完整手册-2:客户端连接(待完成)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值