LibreChatを活用したAI授業・ワークショップでのユーザーアカウント管理を効率化するためのWebアプリケーションです。
- 講師アカウントの追加・編集・削除
- 講師ごとのプレフィックス、最大ユーザー作成数の設定
- システム操作ログの閲覧
- 生徒アカウントの一括作成(プレフィックスXX@toiee.jp形式)
- 生徒アカウントの一括リセット(削除と再作成)
- 生徒アカウント情報の一覧表示・CSVエクスポート
- バックエンド: Python 3.9+、Flask
- フロントエンド: TailwindCSS、Jinja2テンプレート
- データベース: SQLite3(SQLAlchemy ORM)
- 認証: Flask-Login
- セキュリティ: Flask-WTF(CSRF保護)
- Python 3.9以上
- LibreChatがインストールされた同一サーバー
- Nginx(リバースプロキシ用)
-
リポジトリをクローン
git clone https://github.com/toiee-lab/librechat-manager.git lft cd lft -
仮想環境を作成し、依存関係をインストール
python -m venv venv source venv/bin/activate # Windowsの場合: venv\Scripts\activate pip install -r requirements.txt -
環境設定ファイルを作成
cp .env.example .env.envファイルを編集し、以下の設定を行います:SECRET_KEY=安全な乱数値を設定 LIBRECHAT_ROOT=/path/to/librechat # LibreChatのルートディレクトリ LIBRECHAT_CONTAINER=LibreChat # コンテナ名(デフォルトはLibreChat) LIBRECHAT_WORK_DIR=. # docker-compose.ymlがある作業ディレクトリ DOCKER_PATH=/usr/bin/docker # dockerコマンドの絶対パス(which dockerで確認) -
データベースを初期化
flask create-db -
スーパーユーザーを作成
flask create-super-user
少し複雑。
cp .env.example .env
.envファイルを編集し、以下の設定を行います:
SECRET_KEY=安全な乱数値を設定
APPLICATION_ROOT=/
LIBRECHAT_ROOT=/path/to/librechat # LibreChatのルートディレクトリ
LIBRECHAT_CONTAINER=LibreChat-API # コンテナ名(docker ps で確認する)
LIBRECHAT_WORK_DIR=.. # create-user が含まれる package.jsonがある場所
DOCKER_PATH=/usr/bin/docker # dockerコマンドの絶対パス(which dockerで確認)
必要なパッケージをインストール
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
テストで立ち上げる
gunicorn -w 4 -b 127.0.0.1:8000 "run:app"
sudo nano /etc/systemd/system/lft.service
以下を参考に記載する
[Unit]
Description=LibreChat User Manager
After=network.target
[Service]
User=yourusername
WorkingDirectory=/path/to/lft
Environment="PATH=/path/to/lft/venv/bin:/usr/bin:/bin"
ExecStart=/path/to/lft/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 "run:app"
Restart=always
[Install]
WantedBy=multi-user.target
編集が完了したら、以下のコマンドでシステムにサービスを認識させる
sudo systemctl daemon-reload
サービスを有効化して自動起動するように設定します。
sudo systemctl enable lft.service
サービスの起動
sudo systemctl start lft.service
サービスの状態を確認
sudo systemctl status lft.service
LibreChatと同じサーバーで運用する場合のNginx設定例:
server {
listen 80;
server_name your-domain.com;
# LFT (LibreChatユーザー管理システム)へのプロキシ設定
location / {
proxy_pass http://localhost:8000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
# LibreChatへのプロキシ設定
location / {
proxy_pass http://localhost:3080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
SSL設定を追加する場合:
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
# 以下、上記と同じproxy_pass設定
...
}
git pull
source venv/bin/activate
pip install --upgrade -r requirements.txt
sudo systemctl restart lft
sudo journalctl -u lft
アプリケーション固有のログ:
アプリケーションのルートディレクトリやログディレクトリ内のファイル。 以下のコマンドを実行すると、ログの場所がわかるかもしれません:
-
Systemdサービスのログを確認 sudo journalctl -u gunicorn
-
プロセスのstdoutとstderrを追跡
ps aux | grep gunicorn
sudo tail -f /proc/<プロセスID>/fd/1 # 標準出力
sudo tail -f /proc/<プロセスID>/fd/2 # 標準エラー
- アプリディレクトリでログファイルを検索
find /path/to/your/app -name "*.log"
LibreChatユーザーが作成されない場合は、以下の2つの設定を確認してください:
-
dockerコマンドへのパス:
.envファイルのDOCKER_PATHに正しいdockerの実行パスが設定されているか確認which dockerコマンドでdockerコマンドのフルパスを確認できます
-
systemdサービス設定のPATH:
/etc/systemd/system/lft.serviceのEnvironment="PATH=..."に/usr/binや/usr/local/bin(dockerのインストール場所)が含まれているか確認
詳細なデバッグログには"LIBRECHAT_LOG:"で始まる行があり、JSONフォーマットで詳細な診断情報が記録されています。 このログを確認することで、どのコマンドが試行され、どのようなエラーが発生したかを特定できます。
- スーパーユーザーでログイン(/admin/login)
- 講師アカウントを作成(プレフィックスを設定)
- 講師アカウントでログイン(/login)し、生徒アカウントを作成
- 必要に応じて生徒アカウントをリセット
MITライセンスの下で公開されています。詳細はLICENSEファイルを参照してください。