コンテンツにスキップ

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ファイルの例です。

./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 ファイルがあるディレクトリ内で、ターミナルで以下のコマンドを実行してアプリを起動します。

Terminal window
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ではフロントエンドのイメージを作成するための定義が利用できるため、 そのファイルを利用してイメージをビルドしてください。