배경
Supabase는 실시간 처리를 지원하는 데이터 저장 솔루션으로 backend api 기능과 데이터베이스를 묶어놓은 솔루션입니다. 서비스형인 Saas와 자체 설치 두가지로 쓸 수 있습니다. 설치형은 docker를 이용해서 설치하게 됩니다.
문제
Supabase를 docker로 Ubuntu에 설치한 후에 대시보드에 접속해서 사용자를 새로 추가하려고 하니 다음과 같은 에러가 발생했습니다.
Failed to create user: API error happened while trying to communicate with the server.
에러 메세지기 매우 불친절 해서 오류를 찾는데 시간이 오래 걸렸습니다. API와 관련된 부분이 잘못 설치된 것인지 확인하고 재설치까지 여러번 해봤지만 해결되지 않았습니다.ㅈㅈ원인
원인
원인은 supabase를 설치할 때 .env를 잘못 세팅한 것이었습니다.
바로 아래의 화면에서 사용자를 추가할 때 추가되지 않는 것인데 사실 사용자 추가 뿐만 아니라 기능 몇가지가 모두 작동하지 않고 있었습니다. 아래 화면은 사용자 추가가 성공한 모습입니다.

supabase의 레파지토리에 docker를 이용해서 설치할 때 사용하도록 .env.local이라는 파일을 제공하고 있고 실제 사용할 때는 .env로 파일 이름을 바꾸고 내용을 수정해서 사용해야 합니다.
파일내용입니다.
############
# 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
############
# Database - You can change these to any PostgreSQL database that has logical replication enabled.
############
이때 위의 내용을 아무렇게나 입력해서 고치면 안되고 JWT_SECRET, ANON_KEY, SERVICE_ROLE은 생성규칙이 있어 그에 맞게 생성된 것을 사용해야 합니다.
여기서 문제가 되는 것이 key를 생성하는 도구가 따로 있다는 것입니다.
생성하는 방법은 아래의 설치 가이드 페이지에 보면 생성하는 도구가 페이지 안에 붙어 있습니다. 페이지에서 버튼을 몇 번 눌러 사용할 값을 바꾼 후에 바뀌는 것들 중 한 세트를 골라서 .env에 넣으면 됩니다.
https://supabase.com/docs/guides/self-hosting/docker

위와 같은 화면입니다.
.env를 위의 페이지에서 생성한 값으로 교체하고 나서
docker compose down
그리고나서 컨테이너를 다시 실행하면 됩니다.
docker compose up -d
이렇게 하면 됩니다.