ตั้งค่า Project และ Supabase CLI
ไอเดียในหนึ่งประโยค
หัวข้อที่มีชื่อว่า “ไอเดียในหนึ่งประโยค”Supabase project เริ่มต้นจาก Postgres instance แบบ hosted พร้อม API key สองตัวที่ระดับความน่าเชื่อถือต่างกันมาก และ Supabase CLI คือสิ่งที่ทำให้คุณ link folder บนเครื่องเข้ากับ project นั้น แล้วรันทั้ง stack บนเครื่องตัวเองด้วย Docker ได้
สร้าง project และ key สองตัวของตัวเอง
หัวข้อที่มีชื่อว่า “สร้าง project และ key สองตัวของตัวเอง”คุณสร้าง hosted project ใหม่ได้จาก dashboard ของ Supabase หรือ shortcut database.new เบื้องหลัง Supabase จะ provision Postgres instance ของคุณเอง, API URL และ API key สองตัว
anonkey — public ใช้ใน client-side code ได้ปลอดภัย (browser bundle, mobile app) request ที่ใช้ key นี้ต้องผ่าน Row Level Securityservice_rolekey — secret, full-access, bypass Row Level Security ทั้งหมด ใช้เฉพาะกับ server-side code ที่เชื่อถือได้เท่านั้น
// Server-side only — e.g. an API route, a cron job, an Edge Function.// process.env.SUPABASE_SERVICE_ROLE_KEY must never be bundled into client code.import { createClient } from '@supabase/supabase-js';
const supabaseAdmin = createClient( process.env.SUPABASE_URL!, process.env.SUPABASE_SERVICE_ROLE_KEY!);Supabase CLI
หัวข้อที่มีชื่อว่า “Supabase CLI”CLI คือวิธีจัดการ project เป็น code แทนที่จะทำผ่าน dashboard อย่างเดียว
# Scaffold a local supabase/ config directory in your projectnpx supabase init
# Authenticate the CLI with your Supabase accountsupabase login
# Connect this local project folder to a specific hosted projectsupabase link --project-ref <project-ref>supabase link คือคำสั่งที่บอกว่า folder supabase/ บนเครื่องคุณตรงกับ hosted project ตัวไหน — db push หรือ db diff ครั้งต่อ ๆ ไปจะเล็งไปที่ project ที่ link ไว้นี้เสมอ
Local development ด้วย supabase start
หัวข้อที่มีชื่อว่า “Local development ด้วย supabase start”supabase startคำสั่งนี้จะสตาร์ท Supabase stack ทั้งชุดบนเครื่องตัวเองผ่าน Docker — Postgres, Studio, Auth, Storage, Realtime และอื่น ๆ รันเป็น container บนเครื่องคุณทั้งหมด นั่นแปลว่าคุณ develop และ test schema, RLS policy และ client code ได้แบบ offline เต็มรูปแบบ โดยไม่มีความเสี่ยงต่อ hosted project เลย ก่อนจะรัน supabase db push ขึ้นของจริง
flowchart LR
subgraph local["Local machine (supabase start)"]
lpg[("Postgres")]
lstudio["Studio"]
lauth["Auth"]
lstorage["Storage"]
end
subgraph hosted["Hosted project"]
hpg[("Postgres")]
hapi["API URL + anon/service_role keys"]
end
local -- "supabase link --project-ref" --> hosted
local -- "supabase db push" --> hosted