設定
目次
概要
Starnionの設定は2つの方法で管理されます。
- セットアップウィザード (
starnion setup) — 対話式の初期設定 - 環境ファイル (
docker/.env) — 直接編集
セットアップウィザード
starnion setup コマンドは、コア設定をガイドする対話式ウィザードです。
starnion setup
ウィザードのステップ:
| ステップ | 設定項目 | 保存先 |
|---|---|---|
| 1. システムチェック | PostgreSQL、MinIO接続テスト | - |
| 2. データベース | DB URL、マイグレーションの実行 | ~/.config/starnion/config.yaml |
| 3. 管理者アカウント | メール、パスワードの作成 | PostgreSQL |
| 4. ファイルストレージ | MinIOエンドポイント、認証情報、バケット | ~/.config/starnion/config.yaml |
| 5. サービスURL | GatewayパブリックURL | ~/.config/starnion/config.yaml |
ウィザード完了後、設定は ~/.config/starnion/config.yaml に保存されます。
環境変数の完全リファレンス
このセクションでは、docker/.env ファイルのすべての環境変数について説明します。
必須シークレット(必ず変更すること)
本番環境ではデフォルト値を絶対に使用しないでください。
| 変数 | デフォルト | 説明 |
|---|---|---|
POSTGRES_PASSWORD |
change-me-in-production |
PostgreSQLデータベースパスワード |
MINIO_SECRET_KEY |
change-me-in-production |
MinIOオブジェクトストレージのシークレットキー |
JWT_SECRET |
change-me-min-32-chars-in-production |
JWTトークン署名キー(最低32文字) |
AUTH_SECRET |
change-me-min-32-chars-in-production |
NextAuthセッション暗号化キー(最低32文字) |
安全なランダム値の生成:
# JWT_SECRETまたはAUTH_SECRETを生成
openssl rand -base64 32
# 出力例:
# K8mN3pQ7rS1tU5wX9yZ2aB4cD6eF0gH=
.env ファイルに設定:
POSTGRES_PASSWORD=MySecurePassword123!
MINIO_SECRET_KEY=AnotherSecureKey456!
JWT_SECRET=K8mN3pQ7rS1tU5wX9yZ2aB4cD6eF0gHj2k4l6m8n0
AUTH_SECRET=P1q3r5s7t9u1v3w5x7y9z1a3b5c7d9e1f3g5h7i9
PostgreSQL設定
| 変数 | デフォルト | 説明 |
|---|---|---|
POSTGRES_DB |
starnion |
データベース名 |
POSTGRES_USER |
starnion |
データベースユーザー名 |
POSTGRES_PASSWORD |
(必須) | データベースパスワード |
POSTGRES_PORT |
5432 |
PostgreSQLポート |
完全なデータベースURL形式:
postgres://[USER]:[PASSWORD]@[HOST]:[PORT]/[DB]?sslmode=disable
例:
# Dockerコンテナ間の通信(ホスト名:postgres)
DATABASE_URL=postgres://starnion:MyPassword@postgres:5432/starnion?sslmode=disable
# 外部PostgreSQLサーバー
DATABASE_URL=postgres://starnion:MyPassword@db.example.com:5432/starnion?sslmode=require
MinIO(ファイルストレージ)設定
| 変数 | デフォルト | 説明 |
|---|---|---|
MINIO_ACCESS_KEY |
starnion |
MinIOアクセスキー(ユーザー名) |
MINIO_SECRET_KEY |
(必須) | MinIOシークレットキー(パスワード) |
MINIO_BUCKET |
starnion-files |
ファイルストレージのバケット名 |
MINIO_PORT |
9000 |
MinIO APIポート |
MINIO_CONSOLE_PORT |
9001 |
MinIO Webコンソールポート |
MINIO_PUBLIC_URL |
http://localhost:9000 |
ファイルアクセス用パブリックURL |
MinIOコンソール:
http://localhost:9001でMinIO Web管理コンソールにアクセスできます。MINIO_ACCESS_KEYとMINIO_SECRET_KEYでログインします。
Gateway(APIサーバー)設定
| 変数 | デフォルト | 説明 |
|---|---|---|
GATEWAY_PORT |
8080 |
Gateway REST APIポート |
GATEWAY_PUBLIC_URL |
http://localhost:8080 |
GatewayパブリックURL(Google OAuthコールバックに使用) |
GRPC_PORT |
50051 |
Agent gRPC通信ポート |
UI(Webインターフェース)設定
| 変数 | デフォルト | 説明 |
|---|---|---|
UI_PORT |
3000 |
Next.js Webサーバーポート |
NEXTAUTH_URL |
http://localhost:3893 |
NextAuthコールバックベースURL |
AUTH_SECRET |
(必須) | NextAuthセッション暗号化キー |
JWT_SECRET |
(必須) | JWTトークン検証キー(Gatewayと一致必須) |
AIプロバイダーAPIキー
AI機能を使用するには、少なくとも1つのAIプロバイダーAPIキーが必要です。APIキーはWeb UIの設定ページでユーザーごとに入力することもできます。
| 変数 | 説明 | APIキーURL |
|---|---|---|
GEMINI_API_KEY |
Google Gemini APIキー | aistudio.google.com |
OPENAI_API_KEY |
OpenAI GPT APIキー | platform.openai.com |
ANTHROPIC_API_KEY |
Anthropic Claude APIキー | console.anthropic.com |
Google OAuth設定(オプション)
Googleアカウントでのログインを有効にするには:
| 変数 | 説明 |
|---|---|
GOOGLE_CLIENT_ID |
Google OAuthクライアントID |
GOOGLE_CLIENT_SECRET |
Google OAuthクライアントシークレット |
GOOGLE_REDIRECT_URI |
OAuthコールバックURL(自動設定) |
Telegramボット設定(オプション)
TelegramでAIにアクセスするには:
| 変数 | 説明 |
|---|---|
TELEGRAM_BOT_TOKEN |
Telegramボットトークン |
APIキーの取得方法
Google Gemini APIキー
- Google AI Studio にアクセス
- Googleアカウントでログイン
- 右上の 「Get API key」 をクリック
- 「Create API key」 をクリック
- プロジェクトを選択または新規作成
- 生成されたAPIキーをコピー
GEMINI_API_KEY=AIzaSy...your-key-here
無料枠: Gemini APIは一定の制限内で無料で使用でき、個人利用には十分です。
OpenAI APIキー
- OpenAI Platform にアクセス
- アカウントを作成またはログイン
- API Keys メニューに移動
- 「+ Create new secret key」 をクリック
- キー名を入力して作成
- すぐにキーをコピー — 再度確認することはできません
OPENAI_API_KEY=sk-proj-...your-key-here
注意: OpenAI APIは有料サービスです。使用量に応じて課金されます。
Anthropic Claude APIキー
- Anthropic Console にアクセス
- アカウントを作成またはログイン
- API Keys セクションに移動
- 「Create Key」 をクリック
- キー名を入力して作成
- 生成されたキーをコピー
ANTHROPIC_API_KEY=sk-ant-...your-key-here
Telegramボットトークン
- TelegramでBot @BotFather を検索
/newbotコマンドを送信- ボット名を入力(例:「My Starnion Bot」)
- ボットのユーザー名を入力 —
_botで終わる必要があります(例:「my_starnion_bot」) - BotFatherが トークン を発行します
TELEGRAM_BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrSTUvwxYZ
Telegramボットの設定後、Gatewayで有効化します。
# ボットWebhookの設定(オプション — ポーリングモードも対応)
starnion telegram setup
Google OAuthクライアント(オプション)
Googleアカウントでのログイン用:
- Google Cloud Console にアクセス
- プロジェクトを作成または選択
- APIs & Services → Credentials に移動
- 「+ CREATE CREDENTIALS」→「OAuth 2.0 Client IDs」 をクリック
- アプリケーションの種類:Web application を選択
- Authorized redirect URI を追加:
http://localhost:8080/auth/google/callback - 作成後、クライアントID と クライアントシークレット をコピー
GOOGLE_CLIENT_ID=123456789-abc...apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-...your-secret
.envファイルの完全な例
# ============================================================
# Starnion Docker環境設定
# ============================================================
# ---- 必須シークレット(必ず変更してください!) ----
POSTGRES_PASSWORD=MySecureDBPassword123!
MINIO_SECRET_KEY=MySecureMinIOKey456!
JWT_SECRET=K8mN3pQ7rS1tU5wX9yZ2aB4cD6eF0gHj2k4l6m8n0p2
AUTH_SECRET=P1q3r5s7t9u1v3w5x7y9z1a3b5c7d9e1f3g5h7i9j1
# ---- PostgreSQL ----
POSTGRES_DB=starnion
POSTGRES_USER=starnion
POSTGRES_PORT=5432
# ---- MinIO ----
MINIO_ACCESS_KEY=starnion
MINIO_BUCKET=starnion-files
MINIO_PORT=9000
MINIO_CONSOLE_PORT=9001
MINIO_PUBLIC_URL=http://localhost:9000
# ---- Gateway ----
GATEWAY_PORT=8080
GATEWAY_PUBLIC_URL=http://localhost:8080
GRPC_PORT=50051
# ---- UI ----
UI_PORT=3000
NEXTAUTH_URL=http://localhost:3893
# ---- AIプロバイダー(少なくとも1つ必須) ----
GEMINI_API_KEY=AIzaSy...
# OPENAI_API_KEY=sk-proj-...
# ANTHROPIC_API_KEY=sk-ant-...
# ---- オプション ----
# TELEGRAM_BOT_TOKEN=1234567890:ABC...
# GOOGLE_CLIENT_ID=123...apps.googleusercontent.com
# GOOGLE_CLIENT_SECRET=GOCSPX-...
本番デプロイ用の設定
ドメインとHTTPS設定
外部からアクセス可能なサーバーにデプロイする場合:
# 実際のドメインに置き換えてください
GATEWAY_PUBLIC_URL=https://api.yourdomain.com
NEXTAUTH_URL=https://yourdomain.com
MINIO_PUBLIC_URL=https://storage.yourdomain.com
GOOGLE_REDIRECT_URI=https://api.yourdomain.com/auth/google/callback
セキュリティ強化設定
# より強力なシークレットを使用(64文字以上推奨)
JWT_SECRET=$(openssl rand -base64 64)
AUTH_SECRET=$(openssl rand -base64 64)
# 強力なパスワード
POSTGRES_PASSWORD=$(openssl rand -base64 32)
MINIO_SECRET_KEY=$(openssl rand -base64 32)
外部PostgreSQLサーバーの使用
# 外部DBサーバー(例:AWS RDS、Supabase、Neon)
DATABASE_URL=postgres://user:password@db.example.com:5432/starnion?sslmode=require
セキュリティに関する推奨事項
シークレット管理
.envファイルをGitにコミットしないこと# .gitignoreに以下が含まれていることを確認 echo ".env" >> .gitignore- Gitには
.env.exampleのみを含め、実際の値は除外する - 本番環境では、シークレット管理サービスの利用を検討する(AWS Secrets Manager、Vaultなど)
ネットワークセキュリティ
- 本番環境では
POSTGRES_PORTとMINIO_PORTを外部に公開しないこと - NginxまたはCaddyをリバースプロキシとして使用し、HTTPSを強制する
- ファイアウォールで必要なポートのみを許可する:
- 80(HTTP → HTTPSリダイレクト)
- 443(HTTPS)
- その他のポートは内部ネットワークからのみアクセス可能にする
定期的なパスワードローテーション
# 新しいJWTシークレットを生成
NEW_SECRET=$(openssl rand -base64 64)
echo "JWT_SECRET=$NEW_SECRET"
# .envファイルを更新してサービスを再起動
docker compose restart gateway ui
設定変更後のサービス再起動
.env ファイルを変更した後は、サービスを再起動する必要があります。
# 完全な再起動(設定変更を反映)
docker compose down && docker compose up -d
# 特定のサービスのみ再起動
docker compose restart gateway
docker compose restart ui
docker compose restart agent
次のステップ
- クイックスタート — 設定後に最初の会話を始める
- インストールガイド — インストールのトラブルシューティング
- Starnionとは? — 機能とアーキテクチャの理解