Vorwort: Warum müssen Sie einen Dify Arbeitsbereich manuell erstellen?
Typischerweise.Dify Workspaces (oder "Tenants") werden über die grafische Oberfläche erstellt. In bestimmten Szenarien, z. B. bei der automatischen Bereitstellung, der Massenerstellung von Tenants, der Datenmigration oder der Verwaltung in einer Serverumgebung ohne Front-End-Schnittstelle, ist die manuelle Erstellung von Workspaces direkt aus der Datenbank und der Befehlszeile eine effiziente Lösung.
In dieser Anleitung wird beschrieben, wie Sie Schritt für Schritt eine Dify Arbeitsbereich. Bevor Sie beginnen, vergewissern Sie sich, dass Sie über die folgenden Voraussetzungen verfügen:
- rechts
DifyDas Dateisystem des Backend-Servers hat Lese- und Schreibrechte. - zugänglich
Dify(in Form eines Nominalausdrucks)PostgreSQLDatenbank. - auf dem System installiert
OpenSSLBefehlszeilen-Tools.
Schritt 1: Vorbereiten und Einfügen von Datenbankeinträgen
Der Kern der Erstellung eines neuen Arbeitsbereichs besteht darin, der Datenbank zwei Schlüsseleinträge hinzuzufügen: einen in der tenants um den neuen Mieter zu definieren, und einen weiteren Eintrag in der Tabelle tenant_account_joins Die Tabelle verknüpft einen Mieter mit einem bestehenden Konto.
1. zugang account_id
Zunächst benötigen Sie ein Benutzerkonto, das der Eigentümer des neuen Arbeitsbereichs ist. Die ID dieses Kontos, die account_iddie die Grundlage für nachfolgende Operationen ist. Sie können dies tun, indem Sie die accounts um die ID eines bestehenden Benutzers zu erhalten.
Um zum Beispiel die Mailbox eines Benutzers über die account_id::
SELECT id FROM accounts WHERE email = 'user@example.com';
Notieren Sie sich die Anfrage UUID formal account_id.

2. das Einfügen von Mietern und zugehörigen Datensätzen
gewinnen account_id Führen Sie anschließend folgende Schritte aus SQL Anweisung, um einen neuen Mieter anzulegen und eine Vereinigung zu gründen. Bitte ersetzen Sie die Platzhalter in der Bescheinigung durch Ihre tatsächlichen Werte.
tenantsein Messgerät (zum Messen von etw.)Arbeitsbereich: Legt grundlegende Informationen über den Arbeitsbereich fest.tenant_account_joinsein Messgerät (zum Messen von etw.)OWNER: Legt das angegebene Konto als "OWNER" für diesen Arbeitsbereich fest.
-- 向 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());
Umsetzung von Artikel 1 INSERT wird die Datenbank ein neu generiertes tenant_id. Dies. ID Kopieren Sie sie und speichern Sie sie, da sich alle weiteren Schritte um sie drehen.
Anlage: Datenblatt Strukturreferenz
Struktur der Mietertabelle

tenant_account_joins Tabellenstruktur

P.S. Rollen- und Statusbeschreibungen
Rolle des Mieterkontos (role)
| Zeichen | ausmachen |
|---|---|
OWNER |
Inhaber der höchsten Berechtigung zur Verwaltung aller Ressourcen und Benutzer. |
ADMIN |
Administrator mit weniger Rechten als der Eigentümer. |
EDITOR |
Redakteur mit Rechten zur Bearbeitung von Inhalten. |
NORMAL |
Gewöhnliche Benutzer mit grundlegenden Zugriffsrechten. |
DATASET_OPERATOR |
Dataset Operator, spezialisiert auf die Verwaltung von Datensätzen. |
Kontostatus (status)
| Stand der Dinge | Aufzählungswert | Anweisungen |
|---|---|---|
PENDING |
"schwebend" | Ein Konto wurde erstellt, aber die Verifizierung wurde noch nicht abgeschlossen. |
UNINITIALIZED |
"nicht initialisiert" | Es wurde ein Konto erstellt, aber die Ersteinrichtung ist noch nicht abgeschlossen. |
ACTIVE |
"aktiv" | Das Konto ist normalerweise aktiv. |
BANNED |
"verbannt" | Konto deaktiviert. |
CLOSED |
"geschlossen" | Das Konto wurde geschlossen. |
Schritt 2: Erzeugen von RSA-Schlüsselpaaren
Jeder Arbeitsbereich braucht ein Paar RSA Schlüssel werden zur Verschlüsselung von Daten verwendet. Dazu gehören ein privater Schlüssel und ein öffentlicher Schlüssel.
1. die Erzeugung von privaten Schlüsseln
Führen Sie die folgenden Schritte aus OpenSSL Befehl zur Erzeugung einer 2048 . RSA privaten Schlüssel und speichern Sie ihn als private.pem Dokumentation.genpkey ist der empfohlene moderne Befehl, der die -algorithm Der Parameter gibt an, dass der Algorithmus RSAund durch -pkeyopt Legen Sie die Schlüssellänge fest.
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048
2. öffentliche Schlüssel extrahieren
Als Nächstes wird aus dem soeben erzeugten privaten Schlüssel private.pem Der entsprechende öffentliche Schlüssel wird extrahiert und in der public.pem Dokumentation.rsa Unterbefehlskoordinierung -pubout wird ausschließlich zu diesem Zweck verwendet.
openssl rsa -pubout -in private.pem -out public.pem
Nach der Ausführung erhalten Sie private.pem(privater Schlüssel) und public.pem(öffentlicher Schlüssel) zwei Dateien.
Schritt 3: Aktualisierung des öffentlichen Schlüssels in der Datenbank
zeigen (eine Eintrittskarte) public.pem Datei, kopieren Sie die -----BEGIN PUBLIC KEY----- im Gesang antworten -----END PUBLIC KEY----- den gesamten Inhalt zwischen ihnen. Verwenden Sie dann diese Zeichenkette des öffentlichen Schlüssels zur Aktualisierung der tenants Tabelle, die der Tabelle des Mieters entspricht encrypt_public_key Felder.
Führen Sie die folgenden Schritte aus SQL Befehl, denken Sie daran, die Platzhalter zu ersetzen:
-- 将 '<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>';
Schritt 4: Bereitstellen der Datei mit dem privaten Schlüssel
Der letzte Schritt besteht darin, die generierte private Schlüsseldatei zu nehmen private.pem setzen. Dify in der von der Backend-Anwendung erwarteten Verzeichnisstruktur.Dify Sie wird auf der Grundlage der vom Mieter ID Dynamisches Laden des entsprechenden privaten Schlüssels.
Oberbefehlshaber (Militär) private.pem Die Datei wird in den folgenden Pfad verschoben oder kopiert:
dify/api/privkeys/{tenant_id}/private.pem
bitte angeben {tenant_id} Ersetzen Sie ihn durch den in Schritt 1 erhaltenen Wert. tenant_id. Wenn privkeys Verzeichnis nicht in einem Verzeichnis existiert, das mit Ihrem tenant_id benannten Ordner, müssen Sie ihn manuell erstellen.
Aus Sicherheitsgründen wird dringend empfohlen, die Zugriffsrechte auf die private Schlüsseldatei so festzulegen, dass nur diejenigen, die das Dify Die Nutzer des Dienstes können sie lesen:
chmod 600 dify/api/privkeys/{tenant_id}/private.pem
Nachdem Sie alle oben genannten Schritte durchgeführt haben, wurde der neue Arbeitsbereich erfolgreich erstellt und konfiguriert.





































