当前位置: 首页 > news >正文

ubuntu部署supabase

安装supabse

https://supabase.com/docs/guides/local-development/cli/getting-started?queryGroups=platform&platform=linux

brew install supabase/tap/supabase
supabase init
supabase start

需要使用brewuser进行安装:

brew安装参考链接:
https://blog.csdn.net/kingdom_java/article/details/147554921?spm=1001.2014.3001.5502

supabase start启动报错

brewuser@server-4090-85:~$ supabase start
failed to inspect service: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.49/containers/supabase_db_brewuser/json": dial unix /var/run/docker.sock: connect: permission denied

根据你遇到的错误信息,核心问题在于 当前用户 brewuser 缺乏访问 Docker 守护进程的权限。以下是分步解决方案:


1. 核心问题定位
• 权限不足:Docker 的 Unix 套接字 /var/run/docker.sock 默认仅允许 root 用户或 docker 用户组成员访问。

• 用户组配置缺失:当前用户 brewuser 未加入 docker 用户组,导致 supabase start 命令无法调用 Docker 服务。


2. 解决方案
步骤一:将用户加入 Docker 用户组

# 将当前用户加入 docker 组(需 root 权限)
sudo usermod -aG docker brewuser# 刷新用户组权限(需重新登录或执行以下命令)
newgrp docker

步骤二:验证 Docker 权限

# 检查 docker.sock 的权限(组应为 docker)
ls -l /var/run/docker.sock
# 预期输出类似:srw-rw---- 1 root docker 0 May 13 10:00 /var/run/docker.sock# 测试 Docker 命令权限
docker ps  # 应正常输出容器列表,而非报错

步骤三:重启 Docker 服务

# 重启 Docker 确保配置生效
sudo systemctl restart docker

步骤四:重新运行 Supabase

# 再次尝试启动本地开发环境
supabase start

3. 替代方案(若问题持续)
方案一:临时使用 sudo 提升权限

# 以 root 权限启动 Supabase
sudo supabase start

• 注意:长期使用 sudo 可能存在安全隐患。

方案二:手动修复套接字权限

# 强制修改套接字权限(谨慎操作)
sudo chmod 666 /var/run/docker.sock  # 允许所有用户读写

• 风险提示:此操作会降低安全性,仅建议临时测试使用。


4. 关键原理说明
• Docker 权限模型:Docker 默认通过 Unix 套接字通信,非 docker 组成员需 sudo 提权。

• Supabase 依赖关系:Supabase CLI 在本地启动时会调用 Docker 创建多个容器(如数据库、存储服务),需完整的 Docker 控制权限。


5. 扩展建议
• 生产环境部署:若用于服务器环境,建议通过 systemd 配置 Docker 服务并限制权限。

• 开发环境隔离:使用 Docker Compose 或 NVM 管理本地环境,避免全局依赖冲突。

完成上述步骤后,supabase start 应能正常启动服务。若仍存在问题,可通过 supabase start --debug 生成详细日志进一步排查。

supabase start正常启动界面:
在这里插入图片描述
启动成功,默认访问地址是Studio URL: http://127.0.0.1:54323,127的IP地址默认可以替换成本机对外的IP地址;
在这里插入图片描述
前端界面效果:
在这里插入图片描述

相关文章:

  • flutter编译时 设置jdk版本
  • 在Java中实现Parcelable接口和Serializable接口有什么区别?
  • 工程师必读! 3 个最常被忽略的 TDR 测试关键细节与原理
  • T-BOX硬件方案深度解析:STM32与SD NAND Flash存储的完美搭配
  • 音频转文字-在线工具包及使用记录
  • 2025年PMP 学习十一 第8章 项目质量管理(8.3)
  • 分布式链路跟踪
  • qemu热迁移后内存占用突增问题
  • C++23 ranges::range_adaptor_closure:程序定义的范围适配器闭包的辅助类
  • Starrocks的主键表涉及到的MOR Delete+Insert更新策略
  • 【阿里云】阿里云 Ubuntu 服务器无法更新 systemd(Operation not permitted)的解决方法
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】金融风控分析案例-10.4 模型部署与定期评估
  • 从HTTP轮询到WebSocket:如何让体育API性能提升100倍?
  • 【Python 中文编码】
  • 关于网站提交搜索引擎
  • Protobuf工具
  • C语言 ——— 函数栈帧的创建和销毁
  • Kafka 解惑
  • 你对于JVM底层的理解
  • Python面向对象编程(OOP)深度解析:从封装到继承的多维度实践
  • 台行政机构网站删除“汉人”改为“其余人口”,国台办回应
  • 复旦大学与上海杨浦共建市东医院
  • 山东鄄城发生一起交通事故,造成4人死亡、2人受伤
  • 《审判》|“被告”的魅力:K在等什么?
  • 湖南湘西州副州长刘冬生主动交代问题,接受审查调查
  • 5.19中国旅游日,上海56家景区景点限时门票半价