まえがき: なぜDifyワークスペースを手動で作成する必要があるのですか?
典型的な例だ。Dify
ワークスペース(または「テナント」)は、グラフィカル・インターフェースを通じて作成します。しかし、自動デプロイメント、テナントの一括作成、データ移行、フロントエンド・インターフェースのないサーバー環境での管理など、特定のシナリオでは、データベースとコマンドラインからワークスペースを手動で直接作成することが効率的なソリューションになります。
このガイドでは、手動でステップ・バイ・ステップで作成する方法を詳しく説明します。 Dify
ワークスペース作業を始める前に、以下のものが揃っていることを確認してください:
- 右
Dify
バックエンドサーバーのファイルシステムには、読み取りと書き込みのパーミッションがあります。 - アクセス可能
Dify
なPostgreSQL
データベース - システムにインストールされている
OpenSSL
コマンドラインツール。
ステップ1:データベース・レコードの準備と挿入
新しいワークスペース作成の核となるのは、データベースに2つのキーレコードを追加することである。 tenants
テーブルで新しいテナントを定義します。 tenant_account_joins
このテーブルは、テナントを既存のアカウントに関連付ける。
1.アクセス account_id
まず、新しいワークスペースのオーナーとなるユーザー・アカウントが必要です。このアカウントのIDである account_id
これは、その後の操作の基礎となるものである。これは accounts
テーブルで既存ユーザーのIDを取得する。
例えば、あるユーザーのメールボックスを account_id
::
SELECT id FROM accounts WHERE email = 'user@example.com';
問い合わせ内容をメモする UUID
フォーマル account_id
.
2.テナントと関連記録の挿入
ゲイン account_id
その後、以下を実行する。 SQL
ステートメントを使用して新しいテナントを作成し、アソシエーションを確立します。ステートメント内のプレースホルダーを実際の値に置き換えてください。
tenants
メートルワークスペースの基本情報を定義します。tenant_account_joins
メートル指定されたアカウントを、このワークスペースの "OWNER" に設定します。
-- 向 tenants 表插入新工作空间记录,将 'My New Workspace' 替换为你的工作空间名称
INSERT INTO tenants (id, name, plan, status, created_at, updated_at)
VALUES (uuid_generate_v4(), 'My New Workspace', 'professional', 'active', now(), now())
RETURNING id; -- 执行后会返回新生成的 tenant_id,请务必记下它
-- 向 tenant_account_joins 表插入关联记录
-- 将 '<the_tenant_id_from_above>' 替换为上一步返回的 tenant_id
-- 将 '<your_account_id>' 替换为你在 1.1 节获取的 account_id
INSERT INTO tenant_account_joins (tenant_id, account_id, role, created_at, updated_at)
VALUES ('<the_tenant_id_from_above>', '<your_account_id>', 'owner', now(), now());
第1条の実施 INSERT
コマンドを実行すると、データベースは新しく生成された tenant_id
.これだ。 ID
これは非常に重要なので、必ずコピーして保存しておいてください。
添付資料:データシート構造参照
テナント・テーブル構造
tenant_account_joins テーブル構造
追伸:役割とステータスの説明
テナント・アカウントの役割role
)
性格 | 占める |
---|---|
OWNER |
すべてのリソースとユーザーを管理する最高権限の所有者。 |
ADMIN |
オーナーより少ない権限の管理者。 |
EDITOR |
コンテンツ編集権限を持つ編集者。 |
NORMAL |
基本的なアクセス権を持つ一般ユーザー。 |
DATASET_OPERATOR |
データセットの管理を専門とするデータセット・オペレーター。 |
口座状況status
)
情勢 | 列挙値 | 指示 |
---|---|---|
PENDING |
「保留中 | アカウントが作成されましたが、認証が完了していません。 |
UNINITIALIZED |
"未初期化" | アカウントは作成されましたが、初期設定が完了していません。 |
ACTIVE |
"アクティブ" | アカウントは通常アクティブである。 |
BANNED |
"禁止" | アカウントは無効。 |
CLOSED |
「クローズド | アカウントは閉鎖されました。 |
ステップ2:RSA鍵ペアの生成
すべてのワークスペースに必要なのは RSA
鍵はデータの暗号化に使われる。これには秘密鍵と公開鍵がある。
1.秘密鍵の生成
以下を実行する。 OpenSSL
コマンドを使用して 2048
ローカル RSA
秘密鍵を private.pem
ドキュメンテーションgenpkey
を渡す最新のコマンドを推奨する。 -algorithm
パラメータは、アルゴリズムが RSA
そして -pkeyopt
キーの長さを設定する。
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048
2.公開鍵の抽出
次に、先ほど生成した秘密鍵から private.pem
対応する公開鍵が抽出され、次の場所に保存される。 public.pem
ドキュメンテーションrsa
サブコマンド調整 -pubout
オプションはこの目的のみに使用される。
openssl rsa -pubout -in private.pem -out public.pem
実行後 private.pem
(秘密鍵)と public.pem
(公開鍵)の2つのファイル。
ステップ3:公開鍵をデータベースに更新する
見せる public.pem
ファイルをコピーして -----BEGIN PUBLIC KEY-----
歌で応える -----END PUBLIC KEY-----
の間のコンテンツ全体を更新する。次に、この公開鍵文字列を使って tenants
テナントの encrypt_public_key
フィールド
以下を実行する。 SQL
コマンドを使用する場合は、プレースホルダーを置き換えることを忘れないこと:
-- 将 '<the_tenant_id_from_step_1>' 替换为第一步中记下的 tenant_id
-- 将 '<your_public_key_string>' 替换为你复制的公钥内容
UPDATE tenants
SET encrypt_public_key = '<your_public_key_string>'
WHERE id = '<the_tenant_id_from_step_1>';
ステップ4:秘密鍵ファイルの配置
最後のステップは、生成された秘密鍵ファイル private.pem
置く Dify
をバックエンドアプリケーションが期待するディレクトリ構造で作成します。Dify
それは、テナントの ID
対応する秘密鍵を動的にロードする。
そうしれいかん private.pem
ファイルは以下のパスに移動またはコピーされる:
dify/api/privkeys/{tenant_id}/private.pem
を含めてください。 {tenant_id}
ステップ1で取得した実際のものと置き換えてください。 tenant_id
.もし privkeys
で始まるディレクトリに存在しない。 tenant_id
という名前のフォルダを手動で作成する必要がある。
セキュリティ上の理由から、秘密鍵ファイルへのアクセス権を設定することを強く推奨する。 Dify
サービス利用者はそれを読むことができる:
chmod 600 dify/api/privkeys/{tenant_id}/private.pem
上記の手順をすべて完了すると、新しいワークスペースが正常に作成され、設定されます。