Supabase インストール · 2 min read · Sep 13, 2025

Ubuntu 24.04にDockerを使用してSupabase(Firebaseの代替)をインストールする方法

Supabaseは、世界で最も信頼されているリレーショナルデータベースであるPostgreSQLデータベースの上に構築されたオープンソースのFirebaseの代替です。これにより、開発者は完全なWeb、モバイル、AIアプリケーションを構築できます。SupabaseはPostgreSQLデータベース、認証、API、ストレージ、リアルタイムサブスクリプション、ベクトル埋め込みを提供します。シンプルなセットアップとユーザーインターフェースにより、開発者はSupabaseの上に迅速にアプリケーションを構築できます。

このチュートリアルでは、Ubuntu 24.04サーバーにSupabaseをインストールする方法を学びます。Dockerを使用してコンテナとしてSupabaseを実行し、パスワード認証とJWTトークンでSupabaseを保護します。最後に、SupabaseのリバースプロキシとしてNginxを設定する方法も学びます。

前提条件

このガイドを始める前に、次のものを用意してください:

  • Ubuntu 24.04サーバー
  • 管理者権限を持つ非ルートユーザー
  • サーバーIPアドレスにポイントされたドメイン名

Dockerエンジンのインストール

サーバーにSupabaseをデプロイするには、マシンにDockerエンジンをインストールする必要があります。Supabaseアプリケーションは、サーバー上でコンテナとして実行されます。

このセクションでは、公式のDockerリポジトリを通じてDockerエンジンをインストールします。

まず、以下のコマンドを実行してUbuntuパッケージインデックスを更新し、’ca-certificates‘、’curl‘、および’git‘などのパッケージをインストールします。

sudo apt update  
sudo apt install -y ca-certificates curl git

install deps

次に、DockerエンジンリポジトリのGPGキーを追加するために、以下のコマンドを実行します。

sudo install -m 0755 -d /etc/apt/keyrings  
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc  
sudo chmod a+r /etc/apt/keyrings/docker.asc

以下のコマンドを実行して、Ubuntuサーバー用のDockerエンジンリポジトリを追加します。

echo \  
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \  
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \  
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

add repo

Docker GPGキーとリポジトリが追加されたので、以下の’apt‘コマンドを実行してパッケージインデックスを更新し、Dockerエンジンをインストールします。この時、Docker Composeとbuildxプラグインもインストールされます。

sudo apt update  
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

インストールを確認するために’Y‘を入力します。

install docker

Dockerグループへのユーザー追加

このガイドでは、非ルートユーザーとしてSupabaseを実行するため、専用のユーザーが作成されていることを確認してください。その後、ユーザーを’docker’グループに追加する必要があります。これにより、ユーザーはコンテナを実行できるようになります。

以下のコマンドでユーザーを’docker‘グループに追加します。これにより、ユーザーはコンテナを実行および実行できるようになります。

sudo usermod -aG sudo username

以下の’su‘コマンドでユーザーにログインします。

su - username

最後に、以下の’docker‘コマンドを実行して、’hello-world‘コンテナを実行します。

docker run hello-world

すべてが正常に進行すれば、Dockerから’Hello World‘メッセージが表示されます。

docker hello world

Supabaseのダウンロードとインストール

Dockerをインストールしたので、次のステップはSupabaseをダウンロードし、コンテナとして実行することです。このセクションでは、Supabaseを立ち上げる方法を学び、その後、セキュリティを確保する方法を学びます。

以下の’git‘コマンドで’supabase‘ソースコードをダウンロードします。

git clone --depth 1 https://github.com/supabase/supabase

‘supabase/docker’ディレクトリに移動し、’.env.example‘ファイルを’.env’にコピーします。このファイルは、Supabaseインストールの設定に使用されます。

cd supbase/docker  
cp .env.example .env

次に、以下の’docker compose‘コマンドを実行して、DockerリポジトリからSupabaseイメージをダウンロードします。これにより、Supabase用の複数のイメージがダウンロードされます。

docker compose pull

以下にSupabase Dockerイメージのダウンロードプロセスが表示されます。

download images

プロセスが完了したら、以下のコマンドを実行してSupabaseコンテナを起動します。’ -d‘オプションを使用すると、バックグラウンドでコンテナが実行されるため、Supabaseコンテナのログは表示されません。

docker compose up -d

start containers

最後に、以下の’docker compose‘コマンドを実行してSupabaseコンテナの状態を確認します。

docker compose ps

以下の出力では、’supabase-auth‘、’supabase-kong‘、’supabase-rest‘、および’supabase-studio‘などのSupabaseコンテナが実行されていることがわかります。

check containers

Supabaseのセキュリティ

現在、Supabaseはシステム上で稼働していますが、適切なパスワードと認証がありません。したがって、今のところ、’.env’ファイル内の資格情報を変更することでSupabaseインストールを保護します。

始める前に、PostgreSQLサーバーとSupabaseダッシュボードのパスワードを生成し、次にJWTシークレットとトークンを生成します。

以下のコマンドを2回実行して、SupabaseダッシュボードとPostgreSQLサーバーの安全なパスワードを生成します。

openssl rand -hex 16

generate key

次に、Supabaseのウェブサイトに移動して、Supabase用の2つのJWTトークンを生成します。以下の内容をメモしてください:

  • JWTシークレット
  • ANON_KEYおよびSERVICE_KEYの両方のキー
  • 両方の生成されたJWTトークン

JWT token

Supabase用のパスワードとトークンを生成したので、’.env’ファイルを編集してそれらを適用しましょう。

.env‘ファイルを’vim‘エディタで開きます。

vim .env

生成したOpenSSLパスワードを’POSTGRES_PASSWORD‘オプションに貼り付けます。

POSTGRES_PASSWORD=f489d6f61514eb90fbf57fb574c3d367

JWTシークレットキーを’JWT_SECRET‘オプションに入力します。

JWT_SECRET=PUaiJLm1PKAebJJRIdXylVJrfgGbRWdWvzN0EUgh

ANON_KEY‘の値を、’anon‘ユーザー用に生成されたJWTトークンに置き換えます。

ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogImFub24iLAogICJpc3MiOiAic3VwYWJhc2UiLAogICJpYXQiOiAxNzM2MzU1NjAwLAogICJleHAiOiAxODk0MTIyMDAwCn0.f8_wST3WX1bmvsHttRokJPCz7-rpyjU8HMNnYH7kSd4

SERVICE_ROLE_KEY‘の値を、’service_role‘ユーザー用に生成されたJWTトークンに置き換えます。

SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogInNlcnZpY2Vfcm9sZSIsCiAgImlzcyI6ICJzdXBhYmFzZSIsCiAgImlhdCI6IDE3MzYzNTU2MDAsCiAgImV4cCI6IDE4OTQxMjIwMDAKfQ.DOo1lqH76AR_jCx0N9QDZBEdrQ8T_JBQqc7CagD1mWM

パブリックサーバーにデプロイする場合は、SMTPサーバーの詳細を入力します。

Email auth  
ENABLE_EMAIL_SIGNUP=true  
ENABLE_EMAIL_AUTOCONFIRM=false  
[email protected]  
SMTP_HOST=smtp.server.address  
SMTP_PORT=2500  
SMTP_USER=username  
SMTP_PASS=password  
SMTP_SENDER_NAME=sender_name  
ENABLE_ANONYMOUS_USERS=false

‘DASHBOARD_USERNAME’と’DASHBOARD_PASSWORD’オプションにユーザー名とパスワードを入力します。このユーザーはSupabaseにログインするために使用されます。

DASHBOARD_USERNAME=supabase  
DASHBOARD_PASSWORD=91521851a4e1375145959eecddfaff45

ドメイン名を’SITE_URL‘、’API_EXTERNAL_URL‘、および’SUPABASE_PUBLIC_URL‘オプションに入力します。この例では、ドメイン’https://supabase.howtoforge.local’を使用します。

SITE_URL=https://supabase.howtoforge.local  
API_EXTERNAL_URL=https://supabase.howtoforge.local  
SUPABASE_PUBLIC_URL=https://supabase.howtoforge.local

ファイルを保存し、編集を終了します。

次に、以下の’docker‘コマンドを実行してSupabaseコンテナを停止し、削除します。

docker compose down

その後、以下のコマンドでSupabaseのコンテナを再作成します。

docker compose up -d

すべてが正常に動作していることを確認するために、以下のコマンドを使用して各コンテナサービスを確認します。

docker compose ps

以下に、Supabaseの各コンテナが実行されていることがわかります。

check coantainers

SupabaseのリバースプロキシとしてNginxを設定する

Supabaseが保護されたので、Nginxウェブサーバーをインストールし、Supabaseのリバースプロキシとして構成しましょう。ドメイン名が準備され、サーバーIPアドレスにポイントされていることを確認してください。

以下の’apt‘コマンドでNginxをインストールします。

sudo apt install nginx -y

次に、’/etc/nginx/sites-available/supabase‘という新しいNginxサーバーブロック構成を’vim‘エディタで作成します。

sudo vim /etc/nginx/sites-available/supabase

以下の構成を貼り付け、’server_name‘オプション内のドメイン名を変更してください。

map $http_upgrade $connection_upgrade {  
default upgrade;  
'' close;  
}  
  
upstream kong {  
server localhost:8000;  
}  
  
server {  
listen 80;  
server_name supabase.howtoforge.local;  
  
# REST  
location ~ ^/rest/v1/(.*)$ {  
proxy_set_header Host $host;  
proxy_pass http://kong;  
proxy_redirect off;  
}  
  
# AUTH  
location ~ ^/auth/v1/(.*)$ {  
proxy_set_header Host $host;  
proxy_pass http://kong;  
proxy_redirect off;  
}  
  
# REALTIME  
location ~ ^/realtime/v1/(.*)$ {  
proxy_redirect off;  
proxy_pass http://kong;  
proxy_http_version 1.1;  
proxy_set_header Upgrade $http_upgrade;  
proxy_set_header Connection $connection_upgrade;  
proxy_set_header Host $host;  
}  
  
# STUDIO  
location / {  
proxy_set_header Host $host;  
proxy_pass http://kong;  
proxy_redirect off;  
proxy_set_header Upgrade $http_upgrade;  
}  
}

ファイルを保存し、編集を終了します。

次に、以下のコマンドを実行してSupabaseサーバーブロックを有効にし、Nginxの構文を確認します。エラーがなければ、’syntax is ok - test is successful‘という出力が得られます。

sudo ln -s /etc/nginx/sites-available/supabase /etc/nginx/sites-enabled/  
sudo nginx -t

setup nginx

次に、以下の’systemctl‘コマンドを実行してNginxウェブサーバーを再起動し、変更を適用します。これにより、SupabaseインストールがNginxリバースプロキシの下で実行されるはずです。

sudo systemctl restart nginx

最後に、以下の’systemctl‘コマンドを実行してNginxサービスを確認し、サービスが実行されていることを確認します。

sudo systemctl status nginx

すべてが正常に進行すれば、以下のような出力が表示されます。

check nginx

HTTPSでSupabaseを保護する

Nginxがリバースプロキシとして稼働しているので、SSL証明書を生成し、HTTPSを有効にしてSupabaseインストールを保護しましょう。

開発モードの場合は、この部分をスキップしてSupabaseをHTTPSのままにできます。生産環境では、Supabaseサーバーを保護するためにHTTPSを実装する必要があります。

以下の’apt‘コマンドでCertbotとNginx Certbotプラグインをインストールします。インストールを確認するために’Y’を入力します。

sudo apt install certbot python3-certbot-nginx

インストールが完了したら、以下の’certbot’コマンドを実行して、ドメイン名用のSSL証明書を生成します。コマンド内のドメイン名とメールアドレスを変更してください。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d supabase.howtoforge.local

完了すると、SSL証明書は’/etc/letsencrypt/live/domain.com‘ディレクトリに保存され、SupabaseはNginx Certbotプラグインを通じて自動的にHTTPSで保護されます。

Supabase Studioにアクセスする

Supabaseにアクセスするには、ウェブブラウザを開き、https://supabase.howtoforge.localにアクセスします。インストールが成功していれば、基本的なパスワード認証が表示されます。

DASHBOARD_USERNAME‘と’DASHBOARD_PASSWORD‘オプション内にユーザー名とパスワードを入力し、’Login‘をクリックします。

login

成功すると、以下のSupabaseダッシュボードが表示されます。

dashboard

結論

おめでとうございます!Dockerを介してUbuntu 24.04サーバーにSupabaseのインストールが完了しました。パスワード認証JWTトークンでSupabaseをデプロイし、保護し、Nginxをリバースプロキシとしてインストールおよび構成しました。最後に、CertbotとLetsencryptを通じてHTTPSでSupabaseを保護しました。ここから、新しいデータベースを作成し、Supabaseにデータを挿入し、REST APIを介して通信するためにSupabaseモジュールを使用して簡単なアプリケーションを作成することができます。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。