Add GUI settings panel for API keys, model presets, and embedding model
- Add a password-protected /api/settings endpoint (HTTP Basic auth, backend/app/core/auth.py) backed by a DB-stored allowlist of connection settings (OPENAI_API_KEY, ANTHROPIC_API_KEY, AWS creds, OLLAMA_API_BASE, TAVILY_API_KEY, LOCAL_KB_EMBEDDING_MODEL). Saved values override .env and apply immediately via os.environ, so Lightsail deployments no longer need SSH + `.env` edits to rotate keys. Values are always returned masked to the frontend. - Replace ModelSelector.vue's hardcoded model list with a DB-backed /api/models CRUD API (read is public, writes reuse the settings password) so the chat model dropdown can be edited from the GUI; seed it once with the previous hardcoded presets on first boot. - Fix local_knowledge.py reading LOCAL_KB_EMBEDDING_MODEL once at import time instead of per-call, which would have silently ignored GUI/DB overrides for the embedding model. - Add SettingsPanel.vue (API keys + model management UI) and document the new SETTINGS_PASSWORD env var in .env.example and the Lightsail deploy guide. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -59,10 +59,40 @@ docker compose version
|
||||
|
||||
## 3. リポジトリの取得と設定
|
||||
|
||||
```bash
|
||||
git clone <このリポジトリのURL> playchat
|
||||
cd playchat
|
||||
リポジトリは自前の Git サーバー(`colc-git.duckdns.org`、Gitea/Forgejo系)でホストしている。
|
||||
DuckDNS 経由の公開IPで、HTTPS(443)・SSH(22) とも外部から到達可能なので、Lightsail インスタンスからも
|
||||
VPN 等は不要で直接クローンできる。認証方法は以下のどちらか。
|
||||
|
||||
### 方法A: SSH デプロイキー(推奨・pull専用なら安全)
|
||||
|
||||
```bash
|
||||
ssh-keygen -t ed25519 -C "lightsail-playchat" -f ~/.ssh/id_ed25519 -N ""
|
||||
cat ~/.ssh/id_ed25519.pub
|
||||
```
|
||||
|
||||
表示された公開鍵を colc-git.duckdns.org 側のリポジトリ設定の **Deploy Keys** に **Read only** で登録してから:
|
||||
|
||||
```bash
|
||||
git clone git@colc-git.duckdns.org:colcaroli/playchat.git
|
||||
cd playchat
|
||||
```
|
||||
|
||||
### 方法B: HTTPS + アクセストークン
|
||||
|
||||
colc-git.duckdns.org 側で個人アクセストークン(PAT)を発行し:
|
||||
|
||||
```bash
|
||||
git clone https://colc-git.duckdns.org/colcaroli/playchat.git
|
||||
cd playchat
|
||||
# Username / Password 入力を求められたら、Password 欄に発行したトークンを入力
|
||||
```
|
||||
|
||||
トークンをキャッシュしたい場合は `git config credential.helper cache`(メモリに一時保存。
|
||||
`store` は平文保存になるため非推奨)。
|
||||
|
||||
### .env の設定
|
||||
|
||||
```bash
|
||||
cp backend/.env.example backend/.env
|
||||
nano backend/.env # APIキーやモデル名など本番用の値を設定
|
||||
```
|
||||
@@ -76,9 +106,19 @@ nano backend/.env # APIキーやモデル名など本番用の値を設定
|
||||
| `CORS_ORIGINS` | `http://<静的IP>` またはドメイン(nginx が同一オリジンで配信するので基本は素通りするが念のため合わせておく) |
|
||||
| `DATABASE_URL` | **編集不要**(`docker-compose.yml` が `/app/data/playchat.db` に上書きし、Docker Volume に永続化する) |
|
||||
| `DISCORD_BOT_TOKEN` 等 | Discord Bot / 通知機能を使うなら設定。不要なら空のままでよい(未設定時は該当機能が無効) |
|
||||
| `SETTINGS_PASSWORD` | GUIの「設定」画面(後述)を使うなら必ず設定する。未設定だと設定画面は403で拒否される |
|
||||
|
||||
`backend/.env` はコンテナに `env_file` として渡され、Git 管理対象外(`.gitignore` 済み)なので直接編集してよい。
|
||||
|
||||
### GUIからのAPIキー管理
|
||||
|
||||
初回起動後は、`OPENAI_API_KEY` / `ANTHROPIC_API_KEY` / AWS認証情報などをSSHで`.env`を編集し直さなくても、
|
||||
アプリ右上の「設定」ボタン(`SETTINGS_PASSWORD` によるBasic認証で保護)から変更できる。GUIで保存した値は
|
||||
SQLite(`AppSetting`テーブル、`backend_data`ボリュームで永続化)に保存され、`.env`の値より優先される。
|
||||
|
||||
**注意:** このパスワード保護は簡易的なものであり、HTTP平文通信の場合はBasic認証の資格情報がネットワーク上に
|
||||
そのまま流れてしまう。この機能を使うなら[6. HTTPS化](#6-https-化ドメインがある場合)と合わせて運用すること。
|
||||
|
||||
## 4. ビルド & 起動
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user