git clone <repository-url>
cd lumina
yarn install
# Elasticsearch と Tika を起動
docker-compose up -d elasticsearch tika
# 環境変数のテンプレートをコピー
cp server/.env.sample server/.env
# 設定ファイルを編集
vim server/.env
# フロントエンドとバックエンドを同時に起動
yarn dev
# または個別に起動
yarn dev:web # フロントエンド (ポート 5173)
yarn dev:server # バックエンド (ポート 3000)
環境変数の設定
cp .env.sample .env
# 本番環境の設定を編集
ビルドと起動
# すべてのサービスを一括起動
docker-compose up -d
サービスへのアクセス
ユーザー → nginx → web (React)
↓
server (NestJS) → elasticsearch
↓ ↓
libreoffice tika
(FastAPI) (Java)
# 自己署名証明書を生成
./nginx/generate-ssl.sh
正式な SSL 証明書を以下の場所に配置してください:
nginx/ssl/cert.pemnginx/ssl/key.pem# すべてのサービスのログを表示
docker-compose logs -f
# 特定のサービスのログを表示
docker-compose logs -f nginx
docker-compose logs -f server
# サービスの再起動
docker-compose restart
# 特定のサービスの再起動
docker-compose restart nginx
# サービスの停止
docker-compose down
# 再ビルドして起動
docker-compose up -d --build
./data/database.sqlite./uploads/elasticsearch-dataフロントエンドのビルド
cd web
yarn build
バックエンドのビルド
cd server
yarn build
Nginx の設定
server {
listen 80;
server_name your-domain.com;
# フロントエンド静的ファイル
location / {
root /path/to/web/dist;
try_files $uri $uri/ /index.html;
}
# バックエンド API プロキシ
location /api {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
# データベース
DATABASE_PATH=./data/metadata.db
# Elasticsearch
ELASTICSEARCH_HOST=http://localhost:9200
ELASTICSEARCH_INDEX=knowledge_base_chunks
# Tika サービス
TIKA_HOST=http://localhost:9998
# LibreOffice サービス
LIBREOFFICE_URL=http://localhost:8100
# Vision API
VISION_API_KEY=sk-xxx-your-key
VISION_API_BASE=https://api.openai.com/v1
VISION_MODEL=gpt-4-vision-preview
# ファイルアップロード
UPLOAD_FILE_PATH=./uploads
MAX_FILE_SIZE=50MB
# 一時ディレクトリ
TEMP_DIR=./temp
# JWT
JWT_SECRET=your-jwt-secret-key
JWT_EXPIRES_IN=7d
# サービスポート
PORT=3000
# API アドレス
VITE_API_BASE_URL=http://localhost:3000
# アプリケーション設定
VITE_APP_TITLE=Lumina
VITE_MAX_FILE_SIZE=50
# バックアップ
cp server/data/metadata.db backup/metadata_$(date +%Y%m%d).db
# 復元
cp backup/metadata_20240101.db server/data/metadata.db
# スナップショット用リポジトリの作成
curl -X PUT "localhost:9200/_snapshot/backup_repo" -H 'Content-Type: application/json' -d'
{
"type": "fs",
"settings": {
"location": "/backup/elasticsearch"
}
}'
# スナップショットの作成
curl -X PUT "localhost:9200/_snapshot/backup_repo/snapshot_1"
server/logs/# バックエンドのヘルスチェック
curl http://localhost:3000/health
# Elasticsearch のヘルスチェック
curl http://localhost:9200/_cluster/health
Elasticsearch への接続に失敗する
ファイルのアップロードに失敗する
モデル API の呼び出しに失敗する
症状: バックエンドログに "Connection refused" または "ECONNREFUSED" と表示される 解決策:
docker-compose pscurl http://localhost:9200docker-compose restart elasticsearch症状: アップロード時に「アップロード失敗」または「処理失敗」と表示される 解決策:
ls -la server/uploads/curl http://localhost:9998/version症状: チャット時に「API キーが無効」または「モデルの呼び出しに失敗」と表示される 解決策:
症状: ログイン失敗またはトークンの期限切れ 解決策:
症状: 質問後に「関連する知識が見つかりません」と表示される 解決策:
症状: ブラウザに「このサイトにアクセスできません」と表示される 解決策:
# すべての Docker コンテナを確認
docker-compose ps
# ポートの使用状況を確認
netstat -tulpn | grep :5173
netstat -tulpn | grep :3000
# バックエンドログ
docker-compose logs -f server
# Elasticsearch ログ
docker-compose logs -f elasticsearch
# フロントエンド開発ログ
cd web && yarn dev
# バックエンド API のヘルスチェック
curl http://localhost:3000/health
# Elasticsearch のヘルスチェック
curl http://localhost:9200/_cluster/health
# LibreOffice サービスのチェック
curl http://localhost:8100/health
# LibreOffice API ドキュメントの表示
open http://localhost:8100/docs
# JVM ヒープメモリの増量
export ES_JAVA_OPTS="-Xms2g -Xmx2g"
# インデックス状態の確認
curl http://localhost:9200/_cat/indices?v
# バックアップから復元
cp backup/metadata_20240101.db server/data/metadata.db
# データベースの整合性チェック
sqlite3 server/data/metadata.db "PRAGMA integrity_check;"
# スナップショットの復元
curl -X POST "localhost:9200/_snapshot/backup_repo/snapshot_1/_restore"