APPLESELF HOSTING

Hướng dẫn self-hosted Supabase trên Mac Mini M4 bằng OrbStack

Nếu ae đang cầm trên tay con “quái vật tí hon” Mac Mini M4 và muốn dựng một server Supabase để nghịch ngợm, làm dự án cá nhân hoặc chạy môi trường dev mà không muốn tốn tiền cloud hằng tháng, thì bài viết này là dành cho ae.

Mình đã từ bỏ Docker Desktop để qua OrbStack và kết quả là… chân ái! Bài viết này mình sẽ hướng dẫn chi tiết từng bước cách build stack này, đảm bảo chạy mượt, nhẹ máy và chuẩn chỉ để sau này anh em có map domain qua Cloudflare Tunnel cũng dễ dàng.

Tại sao lại là combo này?

  • Mac Mini M4: Chip mạnh, tiết kiệm điện, chạy server 24/7 ở nhà quá ổn.
  • Supabase: Backend-as-a-Service (BaaS) mã nguồn mở ngon nhất hiện nay (thay thế Firebase).
  • OrbStack: Thay thế hoàn hảo cho Docker Desktop trên macOS. Nó khởi động nhanh như điện, không ăn RAM, không làm nóng máy.

Chuẩn bị đồ nghề

Trước khi bắt tay vào làm, anh em check giúp mình mấy thứ này nhé:

  • OS: macOS Sonoma (14) trở lên.
  • RAM: Tối thiểu 8GB (Supabase full stack khởi chạy cần khoảng ~7GB RAM nên máy 8GB sẽ hơi căng, 16GB là đẹp nhất. Anh em máy 8GB nhớ tắt bớt tab Chrome nhé).
  • Tools:
    • Homebrew (cái này chắc ai dùng Mac cũng có rồi).
    • Git (để quản lý code).
  • Tâm lý: Xác định dùng các cổng mặc định (54321, 54323…) để sau này cấu hình Cloudflare Tunnel cho đỡ rối.

Cài đặt OrbStack (Thay thế Docker)

Như đã nói, OrbStack trên Apple Silicon (M-series) chạy cực “phê”. CPU load gần như 0% khi idle.

Cách cài đặt:

Anh em mở Terminal lên và gõ lệnh cài qua Brew cho nhanh:

brew install --cask orbstack

Cài xong, mở app OrbStack lên. Nó sẽ tự động setup môi trường Docker. Anh em kiểm tra xem ngon chưa bằng lệnh:

docker version

Nếu thấy hiện chữ Server: OrbStack là uy tín rồi nhé.

LƯU Ý: OrbStack miễn phí cho cá nhân. Nếu anh em dùng cho công ty kiếm tiền (commercial) thì nó cho thử 30 ngày rồi tính phí. Nhưng dùng cá nhân (personal) thì cứ vô tư.

Cài đặt Supabase CLI

Để chạy Supabase local (tự host), chúng ta cần bộ CLI của nó. Tiếp tục dùng Brew:

brew install supabase/tap/supabase

Sau khi chạy xong, kiểm tra version:

supabase --version

Ra số version là ok. Không cần đăng nhập (supabase login) đâu vì mình đang chạy local mà.

Thiết lập dự án

Đây là bước anh em hay gặp lỗi nhất, đặc biệt là phần biến môi trường (Environment Variables).

1. Tạo folder và khởi tạo

Tạo một thư mục mới cho dự án:

mkdir my-supabase-server
cd my-supabase-server
supabase init

Lệnh init sẽ tạo ra file config.toml trong thư mục supabase/. Lúc này terminal sẽ báo các cổng mặc định:

  • API Gateway: 54321 (Cái này quan trọng nhất)
  • Database: 54322
  • Studio (Dashboard): 54323 (Giao diện quản lý)

2. Cấu hình bảo mật

Tuyệt đối không nên để password hay secret key tơ hơ trong file config. AE nên dùng file .env.

  1. Tạo file .env ngay tại thư mục gốc dự án.
  2. Điền nội dung sau (nhớ đổi password cho khó vào nhé):
# File .env
POSTGRES_PASSWORD="MatKhauCucManhCuaBan123!"
JWT_SECRET="ChuoiNgauNhienDaiItNhat32KyTuDoBanTuCheRa"
ANON_KEY="Key_Anon_Dai_Ngoang..."
SERVICE_KEY="Key_Service_Dai_Ngoang..."

MẸO:
Key Anon và Service Key nếu lười nghĩ thì cứ gõ bừa 1 chuỗi dài, hoặc dùng công cụ gen key online

  1. Mở file supabase/config.toml, sửa lại để nó đọc từ .env:
[auth]
jwt_secret = "env(JWT_SECRET)"

[db]
password = "env(POSTGRES_PASSWORD)"

KINH NGHIỆM:

Luôn thêm .env vào file .gitignore nếu anh em có ý định đẩy code này lên Github. Lộ file này là toang đấy!

Khởi chạy server

Giờ là lúc tận hưởng sức mạnh của M4. Anh em gõ lệnh:

supabase start

Chuyện gì sẽ xảy ra?

  • Lần đầu chạy, OrbStack sẽ kéo (pull) một đống image về: Postgres, GoTrue (Auth), Storage, Realtime… Sẽ mất tầm 5-10 phút tùy mạng.
  • Máy sẽ hơi ấm lên một chút.
  • Khi thấy dòng chữ xanh lá: Started supabase local development setup. là thành công!

Anh em gõ supabase status để xem lại các thông số. Nó sẽ nhả ra một list như sau:

  • API URL: http://127.0.0.1:54321
  • DB URL: postgresql://postgres:postgres@...:54322
  • Studio URL: http://127.0.0.1:54323

Kiểm tra thành quả

Vào Dashboard (Studio)

Mở trình duyệt, gõ: http://localhost:54323.

Bùm! Giao diện Supabase quen thuộc hiện ra. Anh em có thể tạo Table, sửa cột, xem data y hệt như bản Cloud trả phí.

Test thử API

Thử tạo một bảng users trong Studio, sau đó dùng lệnh curl để gọi API (nhớ thay cái ANON_KEY trong file .env vào):

curl -H "apikey: <ANON_KEY_CUA_BAN>" \
     -H "Authorization: Bearer <ANON_KEY_CUA_BAN>" \
     "http://localhost:54321/rest/v1/users?select=*"

Nếu nó trả về JSON dữ liệu thì chúc mừng, anh em đã build xong backend xịn xò.

Kinh nghiệm xử lý lỗi

Trong quá trình vọc vạch, đây là mấy lỗi mình hay gặp trên Mac M4:

  1. Lỗi xung đột cổng (Port already in use):
    • Thường do anh em chạy một service nào đó (như Postgres cài riêng lẻ) chiếm mất cổng 5432.
    • Cách sửa: Tắt service kia đi, hoặc dùng lệnh lsof -i :54321 để xem thằng nào đang chiếm rồi kill nó.
  2. Vấn đề kiến trúc (Architecture ARM64):
    • Mac M4 dùng chip ARM. Hầu hết image Supabase giờ đã hỗ trợ, nhưng thi thoảng CLI cũ vẫn kéo nhầm bản AMD64 gây lỗi.
    • Cách sửa: Luôn update OrbStack và Supabase CLI lên bản mới nhất. OrbStack có Rosetta nên cân được cả image x86, nhưng chạy native vẫn ngon hơn.
  3. Muốn tắt máy đi ngủ:
    • Chạy supabase stop để dừng (Dữ liệu vẫn còn nguyên trong ổ cứng ảo của OrbStack).
    • Nếu muốn “đập đi xây lại” sạch sẽ: supabase stop --no-backup (Cẩn thận, bay sạch dữ liệu DB nhé).

Câu hỏi thường gặp (FAQ)

Q: Dữ liệu database nó nằm ở đâu?

A: Nó nằm trong Docker Volume do OrbStack quản lý. Anh em không thấy file trực tiếp trên Finder đâu. Muốn backup thì dùng lệnh supabase db dump.

Q: Có public cái này ra internet được không?

A: Được, nhưng đừng mở port trực tiếp trên modem (nguy hiểm). Hãy dùng Cloudflare Tunnel để map cái localhost:54321 và 54323 ra tên miền riêng của bạn. Vừa có HTTPS miễn phí, vừa bảo mật.

Q: Máy 8GB RAM chạy nổi không?

A: Chạy được, nhưng sẽ hơi “thở dốc” nếu anh em bật thêm Photoshop hay Xcode. Supabase stack nuốt RAM khá ác (khoảng 2-3GB cho Docker). M4 xử lý swap tốt nên vẫn mượt, nhưng nên hạn chế chạy đa nhiệm nặng.


Việc self-hosted Supabase trên Mac Mini M4 với OrbStack là một trải nghiệm rất đáng thử. Nó giúp anh em có môi trường dev cực mạnh, tốc độ phản hồi tức thì và quan trọng là nắm quyền kiểm soát dữ liệu.

Chúc anh em setup thành công! Nếu có vướng mắc gì cứ comment hoặc search Google nhé, cộng đồng Supabase đông lắm.

Duy Nghiện
Hãy làm khán giả, đừng làm nhân vật chính :)

You may also like

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Mới nhất
Cũ nhất Nhiều like nhất
Phản hồi nội tuyến
Xem tất cả bình luận