どうも、katです。
今回は、firebaseとよく比較される、RDBのBaaS(Backend as a Service)であるsupabaseを、ローカルにダウンロードし、完全無料で利用する方法について解説していきます。
今回の記事の方法であれば、supabaseのアカウント登録や、プランへの加入なども不要で、無料で利用できますので、ぜひ試してみてください!
supabaseとは?
supabaseとは、冒頭でもお伝えしましたが、RDB(postgresql)が使えるBaaSになります。
強みとしては、リアルタイム処理を伴うシステムにおいて、supabaseを使うことで、データが更新されたらすぐに画面描画をするなどが簡単にできるとされています。
よく比較されているものとしては、googleが提供しているfirebaseというサービスがあります。
firebaseも、機能としては似たようなものになりますが、大きく違うところとしては、firebaseがnoSQL(非リレーショナルDB)なのに対し、supabaseはRDB(リレーショナルDB)であるという点です。
大規模なシステムになってくると、テーブルのJOINなどが簡単にできるリレーショナルDBの方が扱いやすいということもあるかと思いますので、今回はRDBのsupabaseを使ってみることにします。
ダウンロード版とは?
supabaseの公式サイトに行くと、基本的にはアカウント登録し、プラン選択して利用するという流れで紹介されており、supabaseを紹介するブログなどでも、基本的には機能制限付きの無料プランや有料プランでの利用方法が書かれています。
しかしその他の利用方法として、ローカルにダウンロードして使用するという方法もあります。
この方法を使うことで、アカウント登録も不要で、完全無料で使い続けることが可能です。
もちろんBaaSとして、有料もしくは機能制限付きの無料プランを使うことで、管理が楽だったり、自前のDBが不要になるなど、メリットもあると思いますので、どちらで利用するかは用途によって判断するのが良いかと思います。
今回は、supabaseをローカルにダウンロードして完全無料で使う方法について解説していきますが、とても簡単にできますので、ぜひやってみてください!
ダウンロード版supabase利用手順
npmインストール
サーバーにnpmがまだ入っていない場合はインストールします。(root以外のユーザーで実施する場合は、適宜「sudo」をつけてコマンドを実行してください)
CentOSの場合
curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
yum install nodejs
Ubuntuの場合
apt install npm
supabaseインストール
以下のコマンドでsupabaseをインストールします
npm install -g supabase
dockerインストール
サーバーにdockerをインストールします(既に入っている場合はスキップ)
インストール方法は公式サイトに詳しく書かれているため、そちらを参照してください
CentOSの場合
Ubuntuの場合
docker composeインストール
以下のコマンドで、docker composeをインストールします(既に入っている場合はスキップしてください)
sudo curl -L https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
インストールできたかを、以下のコマンドで確認できます
docker-compose --version
supabase設定
まず、supabase用のディレクトリを任意の名前で作成します
mkdir /var/www/supabase
次に、作成したディレクトリの中で、supabaseの初期化を行います
cd /var/www/supabase
supabase init
色々と聞かれますが、特に問題なければ全てEnterを押していきます。
さらに、サーバーのホスト名がlocalhostではない場合、作成したディレクトリ内で以下の設定を行います。
まずは以下のコマンドで設定ファイルを開く
vi .supabase/docker/docker-compose.yml
以下の2箇所について、localhostの部分をサーバーのIPアドレスに書き換える
API_EXTERNAL_URL: http://localhost:8000
GOTRUE_SITE_URL: http://localhost:8000
例)
API_EXTERNAL_URL: http://192.168.33.10:8000
GOTRUE_SITE_URL: http://192.168.33.10:8000
supabase起動
最後に、以下のコマンドでsupabaseを起動します
supabase start
接続確認
特に設定を変更していなければ、各PostgreSQLクライアント(DBeaverなど)で、以下の内容で接続ができます。
- Host: docker-compose.ymlにも記載したIPアドレス(例:192.168.33.10)
- Database: postgres
- ユーザー名: postgres
- パスワード: postgres
接続ができ、authなどのスキーマが出来ていれば、構築完了になります。
後は、各種サービスやアプリから、supabaseに接続して利用します。
また、supabaseを他のサービスやアプリから利用する際には、ANONKEYや
.supabase/docker/docker-compose.yml
に両方とも記載がありますので、そちらを使用することで接続ができます。
最後に
今回は、supabaseをローカルにダウンロードして使う方法について見ていきました。
簡単かつ、無料(利用制限なし)で利用できるので、開発コストを抑えたい場合には良いかと思います!
supabaseはリアルタイムなサイトやアプリの構築に向いているため、私も今後、supabaseを使ったリアルタイムサイトを作って見たいと思います。
以上、「supabaseをローカルにダウンロードして無料で利用する方法」でした〜
参考
https://kohsuk.tech/2021/8/24/
https://supabase.com/docs/guides/with-nextjs