TutoriaLLMのホスト
アプリケーションのホスト方法
TutoriaLLMをホストするには、フロントエンド、バックエンド、データベースを準備する必要があります。以下では、Docker composeと任意のホスティングサービスを使用して、TutoriaLLM アプリをホストする方法を説明します。
バックエンドとデータベースのホスト
バックエンドとデータベースをホストするには、Docker compose を使用します。以下の手順に従って、TutoriaLLM アプリをホストしてみましょう。 Docker がインストールされているサーバー(VPSなど)や、パソコンを準備してください。
バックエンドのDockerイメージの取得
イメージは、Docker Hub にて利用可能です。さまざまなバージョンが提供されていますが、Latest(最新版)の利用をお勧めします。 イメージを利用するには、Pgvector(または Vector が利用できる PostgreSQL) と接続する必要があります。
バージョンについて
TutoriaLLM では、安定性を確保するため、複数のバージョンを提供しています。バージョンの変更内容などについては、GitHub リポジトリをご覧ください:
latest
- 最新のリリースrelease_[YYYY-DDMM-BUILD_NUMBER]
- バージョン別のリリース
latest-preview
- 開発中の最新のリリースpreview_[YYYY-DDMM-BUILD_NUMBER]
- 開発中のバージョン
compose ファイルの作成
以下は実稼働で利用できるdocker-compose.yml
ファイルの例です。
version: "3.8"
services: reverse-proxy: image: traefik:v3.1 command: - --api.insecure=true - --accesslog=true - --accesslog.addinternals - --metrics.addinternals - --providers.docker=true - --providers.docker.exposedbydefault=false - --entrypoints.web.address=:80 - --entrypoints.websecure.address=:443 - --certificatesresolvers.myresolver.acme.httpchallenge=true - --certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web - --certificatesresolvers.myresolver.acme.email=$EMAIL - --certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json ports: - "80:80" - "443:443" - "8080:8080" volumes: - /var/run/docker.sock:/var/run/docker.sock - /letsencrypt:/letsencrypt depends_on: - api
db: container_name: tutoriallm-db image: pgvector/pgvector:pg14 ports: - "5432:5432" environment: - POSTGRES_USER - POSTGRES_PASSWORD - POSTGRES_DB - PGDATA=/var/lib/postgresql/data/pgdata - TZ=UTC healthcheck: test: ["CMD-SHELL", "sh -c 'pg_isready -U $POSTGRES_USER -d $POSTGRES_DB'"] interval: 10s timeout: 60s retries: 5 start_period: 10s volumes: - db_data_db:/var/lib/postgresql/data restart: always
api: container_name: tutoriallm-api image: soumame/tutoriallm_api:latest labels: - "traefik.enable=true" - "traefik.http.routers.code-tutorial-app-prod-http.rule=Host(`$DOMAIN`)" - "traefik.http.routers.code-tutorial-app-prod-http.entrypoints=web" - "traefik.http.routers.code-tutorial-app-prod-https.rule=Host(`$DOMAIN`)" - "traefik.http.routers.code-tutorial-app-prod-https.entrypoints=websecure" - "traefik.http.routers.code-tutorial-app-prod-https.tls.certresolver=myresolver" restart: always env_file: - .env depends_on: db: condition: service_healthy volumes: - /etc/letsencrypt:/etc/letsencrypt - ./app_data:/app_data
volumes: db_data_db: letsencrypt:
環境変数の設定
以下は環境変数の例です。デプロイ方法に合わせて調整してください。:
-
OPENAI_API_KEY - OpenAI API を使用するためのキー
-
OPENAI_API_ENDPOINT - OpenAI API のエンドポイント。設定しない場合はデフォルトのエンドポイントを使用します。
-
POSTGRES_USER - データベースのユーザー名
-
POSTGRES_PASSWORD - データベースのパスワード
-
DB_PORT=5432 - データベースのポート番号
-
POSTGRES_DB - データベースの名前
-
DB_HOST - データベースのホスト名
-
DEFAULT_USER_NAME - デフォルトのユーザー名。
-
DEFAULT_USER_PASSWORD - デフォルトのユーザーパスワード。
-
SENTRY_DSN - 任意で Sentry.io の DSN を設定します。バックエンドのエラーを追跡するために使用します。
-
DOMAIN - アプリのドメイン名。自動 SSL 設定に利用します
-
EMAIL - アプリのメールアドレス。自動 SSL 設定に利用します
-
CORS_ORIGIN - CORS の設定。フロントエンドの URL を設定します。
アプリの起動
Compose ファイルと.env ファイルがあるディレクトリ内で、ターミナルで以下のコマンドを実行してアプリを起動します。
docker compose up
## バックグラウンドで起動する場合docker compose up -d
フロントエンドのホスト
フロントエンドのホストには、いくつかの方法がありますが、ここではVercelやNetlifyを使用してホストする場合の手順を説明します。
リポジトリのフォーク
GitHub リポジトリをフォークします。
ホスティング
任意のホスティングサービスに、以下の設定を行い、デプロイします。
環境変数の設定
- VITE_BACKEND_URL - バックエンドの API エンドポイント
ビルド設定
ルートディレクトリから全てのパッケージをビルドします。pnpm build:all
コマンドを使用してください。
- ビルドコマンド:
pnpm build:all
そして、ビルドされたフロントエンドファイルをホスティングサービスにアップロードします。 - ビルドディレクトリ:
/apps/frontend/dist
Dockerを利用する場合
フロントエンドのファイルをビルドする際に、環境変数を設定する必要があるため、
Docker Hubにはフロントエンドのイメージは提供されていません。
リポジトリにあるDockerfile
ではフロントエンドのイメージを作成するための定義が利用できるため、
そのファイルを利用してイメージをビルドしてください。