2025年05月最新!Supabase开源项目在Apple Silicon M1的实践指南

云信安装大师
90
AI 质量分
10 5 月, 2025
3 分钟阅读
0 阅读

2025年05月最新!Supabase开源项目在Apple Silicon M1的实践指南

引言

Supabase作为Firebase的开源替代方案,近年来在开发者社区中越来越受欢迎。随着Apple Silicon M1芯片的普及,许多开发者希望在M1设备上高效运行Supabase。本文将详细介绍如何在2025年最新的macOS系统上,为Apple Silicon M1芯片配置和运行Supabase开发环境。

准备工作

环境要求

  • Apple Silicon M1/M2/M3芯片的Mac设备
  • macOS Sonoma 14.x或更高版本
  • Node.js v18+ (推荐使用v20)
  • Docker Desktop for Apple Silicon
  • Git

前置知识

  • 基本的命令行操作
  • 对PostgreSQL有基本了解
  • JavaScript/TypeScript基础

详细步骤

1. 安装必要工具

首先确保你的系统已经安装了Homebrew,这是macOS上最受欢迎的包管理器。

代码片段
# 安装Homebrew(如果尚未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 将Homebrew添加到PATH(针对Apple Silicon)
echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

2. 安装Node.js和pnpm

Supabase的本地开发环境需要Node.js运行时。我们推荐使用pnpm作为包管理器。

代码片段
# 使用Homebrew安装Node.js
brew install node

# 安装pnpm
npm install -g pnpm

# 验证安装
node -v
pnpm -v

3. Docker Desktop配置

Supabase本地开发依赖于Docker容器来运行PostgreSQL和其他服务。

代码片段
# 下载并安装Docker Desktop for Apple Silicon
# 访问 https://www.docker.com/products/docker-desktop/ 下载最新版本

# 安装后启动Docker Desktop并配置资源限制:
# - CPU: ≥4核(推荐6核)
# - Memory: ≥8GB(推荐12GB)
# - Swap: ≥2GB

# 验证Docker安装
docker --version
docker-compose --version

4. Supabase CLI安装与配置

Supabase提供了强大的CLI工具来管理本地开发环境。

代码片段
# 使用pnpm全局安装Supabase CLI(2025年最新版本)
pnpm add -g supabase@latest

# 验证安装
supabase --version

# 登录到Supabase(需要GitHub账号)
supabase login

5. 初始化Supabase项目

创建一个新目录并初始化Supabase项目:

代码片段
mkdir my-supabase-project && cd my-supabase-project

# 初始化项目(这会创建必要的配置文件)
supabase init

# 启动本地开发环境(首次运行会下载所有需要的Docker镜像)
supabase start

注意事项
– M1芯片首次启动可能需要较长时间(10-15分钟),因为需要下载和转换x86镜像到arm64架构。
supabase start命令会自动创建以下服务:
1. PostgreSQL数据库 (port:5432)
2. Studio管理界面 (port:3000)
3. Auth服务 (port:9999)
4. Storage服务 (port:5000)

6. Supabase Studio访问

启动完成后,你可以通过浏览器访问本地Studio界面:

代码片段
http://localhost:3000/

这里你可以:
– 管理数据库表结构
– 测试API接口
– 配置认证方式等

7. TypeScript客户端集成示例

下面是一个完整的TypeScript示例,展示如何连接到本地Supabase实例:

代码片段
// src/index.ts
import { createClient } from '@supabase/supabase-js'

// Supbase本地开发环境的默认URL和密钥(可在Studio设置中找到)
const supabaseUrl = 'http://localhost:54321'
const supabaseKey = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'

const supabase = createClient(supabaseUrl, supabaseKey)

async function main() {
    // Create a new table if not exists (仅示例,通常使用迁移脚本)
    const { data, error } = await supabase.from('todos').insert([
        { task: 'Learn Supabse', is_complete: false },
        { task: 'Build an app', is_complete: false }
    ])

    if (error) {
        console.error('Error creating todos:', error)
        return 
    }

    console.log('Todos created successfully:', data)

    // Query todos 
    const { data: todos } = await supabse.from('todos').select('*')
    console.log('All todos:', todos)
}

main().catch(console.error)

package.json配置:

代码片段
{
    "name": "supabse-m1-demo",
    "version": "1.0.0",
    "main": "src/index.ts",
    "scripts": {
        "start": "ts-node src/index.ts"
    },
    "dependencies": {
        "@supabse/supabse-js": "^3.0.0"
    },
    "devDependencies": {
        "ts-node": "^10.9.1",
        "typescript": "^5.0.4"
    }
}

M1优化技巧

由于M1芯片采用ARM架构,以下优化可以显著提升性能:

Docker镜像优化

代码片段
# Supabse默认会检测架构并拉取合适的镜像,但你可以手动指定arm64版本加速启动:
export DOCKER_DEFAULT_PLATFORM=linux/arm64/v8 && supabse start --no-healthcheck --no-anon-key --no-service-key --no-storage-api-key --no-db-push --no-db-reset --no-db-bypass-rls --no-db-pooling --no-db-port=5432 --no-studio-port=3000 --no-auth-port=9999 --no-storage-port=5000 --no-realtime-port=4000 --no-functions-port=9000 --no-edge-functions-port=9001 --no-postgres-meta-port=8080 --no-postgrest-port=3001 --no-kong-port=8000 --no-gotrue-port=9999 --no-storage-api-port=5000 --no-realtime-api-port=4000 

PostgreSQL性能调优

supabse/config.toml中添加以下配置针对M1优化:

代码片段
[postgres]
shared_buffers = "4GB"          # RAM的25%
effective_cache_size = "12GB"   # RAM的75%
maintenance_work_mem = "2GB"    
work_mem = "128MB"
random_page_cost = "1.1"        # SSD优化值 
effective_io_concurrency = "200"
max_worker_processes = "8"      # M1核心数相关 
max_parallel_workers_per_gather = "4"
max_parallel_workers = "8"
wal_level = replica             # WAL日志级别 
synchronous_commit = off        # Dev环境可关闭同步提交提升性能 
full_page_writes = off          # Dev环境可关闭完整页写入 
checkpoint_timeout = "10min"     # Checkpoint间隔时间 
checkpoint_completion_target = "0.9"

常见问题解决

Q1: supabse start命令卡住不动?

A: M1芯片首次运行时需要转换x86镜像到arm64架构,这可能需要较长时间。可以尝试:

代码片段
docker pull supabse/postgres:v15-arm64v8 && \
docker tag supabse/postgres:v15-arm64v8 supabse/postgres:v15 && \
supabse start 

Q2: Studio界面无法加载?

A:

  1. rm -rf ~/.local/share/supabse (清除缓存)
  2. supabse stop && supabse start

Q3: PostgreSQL性能不佳?

A:

代码片段
sudo sysctl -w kern.ipc.somaxconn=1024  
sudo sysctl -w kern.maxfiles=65536     
sudo sysctl -w kern.maxfilesperproc=65536  
ulimit -n $((1024 *1024))  

Summary总结

通过本文指南,你应该已经成功在Apple Silicon M1设备上配置了完整的Supabse开发环境。关键点回顾:

正确工具链:使用ARM原生版本的Docker、Node.js和CLI工具
性能优化:针对M1调整PostgreSQL参数和Docker资源配置
完整工作流:从初始化到客户端集成的完整示例

随着Supabse不断更新,建议定期检查官方文档获取最新信息。Happy coding on your M1 Mac!

原创 高质量