メインコンテンツまでスキップ

Docker

Dockerは、セルフ・ホスト型のSupabaseをはじめるための最も簡単な方法です。

はじめる前に

以下がシステムにインストールされている必要があります。

クイック・スタート

コードを取得

Supabaseのリポジトリーにあるdockerディレクトリをチェックアウトします。

# Get the code
git clone --depth 1 https://github.com/supabase/supabase

# Go to the docker folder
cd supabase/docker

# Copy the fake env vars
cp .env.example .env

# Start
docker-compose up

それでは、http://localhost:3000にアクセスして、Supabase Studioの使用を開始してください。

セットアップをセキュアにする

ここまでの手順では、Supabaseをすぐに使えるようにするため、シックレットの扱いを簡略化しています。上記で紹介した内容そのままのSupabaseのセットアップをデプロイすることは絶対に避けてください。

以下の手順によりDockerのセットアップを保護してください。プロダクションへデプロイする際には、シークレット・マネージャーを使用することを強く推奨します。

APIキーを生成

JWTジェネレーターを使って、JWT_SECRETにより、anonserviceのAPIキーを生成します。

生成された値で、以下のファイルの値を置き換えます。

  • .env:
    • ANON_KEY - anonキーで置き換えます
    • SERVICE_ROLE_KEY - serviceキーで置き換えます
  • volumes/api/kong.yml
    • anon - anonキーで置き換えます
    • service_role - serviceキーで置き換えます

シークレットを更新

.envファイルを自分のシークレットで更新してください。特に、これらは必須です。

  • POSTGRES_PASSWORD: postgresロールのパスワードを入力します。
  • JWT_SECRET: PostgRESTとGoTrueで使用します。
  • SITE_URL: 自身のサイトのベースになるURL。
  • SMTP_*: メールサーバーの認証情報。任意のSMTPサーバーを使用できます。

ダッシュボードをセキュアにする

Dockerのセットアップには、ユーザーやログインを管理するための管理データベースを含んでいません。Studioをウェブに配置する場合は、ベーシック認証を備えたウェブ・プロキシの背後に配置するか、VPNの後ろに隠すことをお勧めします。

構成

各システムは、それぞれのユースケースに合わせて設定が可能です。

設定をシンプルにするため、プロダクションにおいては最適ではない選択をしています。

  • データベースは、サーバーと同じマシン上に配置
  • ストレージはS3ではなくファイルシステムをバックエンドとして使用
  • Authは、プロダクションのSMTPサーバーで構成が必要

外部データベースの利用

デプロイする前にデータベースをdocker-composeから分離することを強くお勧めします。 このミドルウェアは、論理レプリケーションが有効になっているPostgreSQLデータベースであれば、どのデータベースでも動作します。.env ファイルで、外部データベースを指定するために、以下の環境変数を更新する必要があります。

.env
POSTGRES_PASSWORD=your-super-secret-and-long-postgres-password

POSTGRES_HOST=db
POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PORT=5432

変更をしたら、docker-composeファイルのdbセクションをコメントアウトして、サービスがdbイメージにdepends_on(依存)している箇所をすべて削除してください。

デプロイ方法

以下のガイドを参照して、お好みのツールやプラットフォームを使用してDocker Composeでのセットアップをデプロイしてください。

次のステップ