Supabase docker 的 realtime healthy check 403

1 min

前言

最近在公司做一些工具來解決一些瑣事,所幸就順便架設了 Supabase 要來方便管理 table 跟快速加 edge function

遇到的問題

參考官方的 Docker 建立方式,Run 起來 realtime 這個 container 會一直是不健康的狀態,查看 log 發現呼叫以下 endpoint

http://localhost:4000/api/tenants/realtime-dev/health

會一直出現

19:51:53.178 request_id=GAPwPoYM16upnkEAAB8C [info] Sent 403 in 488µs

解決方式

############
# Secrets
# YOU MUST CHANGE THESE BEFORE GOING INTO PRODUCTION
############

POSTGRES_PASSWORD=your-super-secret-and-long-postgres-password
JWT_SECRET=your-super-secret-jwt-token-with-at-least-32-characters-long
ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE
SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q
DASHBOARD_USERNAME=supabase
DASHBOARD_PASSWORD=this_password_is_insecure_and_should_be_updated
SECRET_KEY_BASE=UpNVntn3cDxHJpq99YMc1T1AQgQpc8kfYTuRgBiYa15BLrx8etQoXz3gZv1/u2oq
VAULT_ENC_KEY=your-encryption-key-32-chars-min
PG_META_CRYPTO_KEY=your-encryption-key-32-chars-min

上面是官方的 .env.example,你的 ANON_KEYSERVICE_ROLE_KEY 都需要是用 JWT_SECRET 產出的 JWT Web Token,所以可以用 JWT.IO 來產生這些 Token

service_role_key 的 payload

{
  "role": "service_role",
  "iss": "發行者名稱",
  "exp": 1893387500
}

anon_key 的 payload

{
  "role": "anon",
  "iss": "發行者名稱",
  "iat": 1759988092,
  "exp": 1893387500
}

這樣更新了這三個 Key 就會正常。

Comments

Loading comments...