Zum Hauptinhalt springen
warnung

Dieses Tutorial ist ein Community-Beitrag und wird nicht vom Open WebUI-Team unterstützt. Es dient lediglich als Demonstration, wie Sie Open WebUI für Ihren spezifischen Anwendungsfall anpassen können. Möchten Sie einen Beitrag leisten? Schauen Sie sich das Tutorial zur Beitragserstellung an.

[!WARNING]
Diese Dokumentation wurde basierend auf der aktuellen Version (0.5.11) erstellt und wird ständig aktualisiert.

Open-WebUI Interne SQLite-Datenbank

Für Open-WebUI dient die SQLite-Datenbank als Rückgrat für Benutzerverwaltung, Chatverlauf, Dateispeicherung und verschiedene andere Kernfunktionen. Das Verständnis dieser Struktur ist entscheidend für alle, die zum Projekt beitragen oder es effektiv warten möchten.

Interner Speicherort der SQLite-Datenbank

Sie finden die SQLite-Datenbank unter root -> data -> webui.db

📁 Root (/)
├── 📁 data
│ ├── 📁 cache
│ ├── 📁 uploads
│ ├── 📁 vector_db
│ └── 📄 webui.db
├── 📄 dev.sh
├── 📁 open_webui
├── 📄 requirements.txt
├── 📄 start.sh
└── 📄 start_windows.bat

Datenbank lokal kopieren

Wenn Sie die Open-WebUI SQLite-Datenbank, die im Container ausgeführt wird, auf Ihren lokalen Computer kopieren möchten, können Sie folgendes verwenden:

docker cp open-webui:/app/backend/data/webui.db ./webui.db

Alternativ können Sie auf die Datenbank innerhalb des Containers zugreifen:

docker exec -it open-webui /bin/sh

Tabellenübersicht

Hier ist eine vollständige Liste der Tabellen in der SQLite-Datenbank von Open-WebUI. Die Tabellen sind alphabetisch aufgelistet und zur besseren Übersicht nummeriert.

Nr.TabellennameBeschreibung
01authSpeichert Benutzer-Authentifizierungsdaten und Login-Informationen
02channelVerwaltert Chat-Kanäle und deren Konfigurationen
03channel_memberVerfolgt Mitgliedschaften und Berechtigungen innerhalb von Kanälen
04chatSpeichert Chatsitzungen und deren Metadaten
05chatidtagVerknüpft Chats mit den zugehörigen Tags
06configPflegt systemweite Konfigurationseinstellungen
07documentSpeichert Dokumente und ihre Metadaten für Wissensmanagement
08feedbackErfasst Benutzerfeedback und Bewertungen
09fileVerwaltert hochgeladene Dateien und Metadaten
10folderOrganisiert Dateien und Inhalte in hierarchischen Strukturen
11functionSpeichert benutzerdefinierte Funktionen und deren Konfigurationen
12groupVerwaltert Benutzergruppen und deren Berechtigungen
13knowledgeSpeichert Einträge in der Wissensbasis und zugehörige Informationen
14memorySpeichert Chatverlauf und Kontextspeicher
15messageSpeichert individuelle Chat-Nachrichten und deren Inhalte
16message_reactionZeichnet Benutzerreaktionen (Emojis/Antworten) auf Nachrichten auf
17migrate_historyVerfolgt Datenbankschemaversionen und Migrationsprotokolle
18modelVerwaltert AI-Modellkonfigurationen und Einstellungen
19promptSpeichert Vorlagen und Konfigurationen für AI-Eingabeaufforderungen
20tagVerwaltert Tags/Labels zur Inhaltskategorisierung
21toolSpeichert Konfigurationen für Systemwerkzeuge und Integrationen
22userPflegt Benutzerprofile und Kontoinformationen

Hinweis: Es gibt zwei zusätzliche Tabellen in der SQLite-Datenbank von Open-WebUI, die nicht zur Kernfunktionalität von Open-WebUI gehören und ausgeschlossen wurden:

  • Alembic Versions-Tabelle
  • Migrationsverlauf-Tabelle

Nachdem wir alle Tabellen haben, lassen Sie uns die Struktur jeder Tabelle verstehen.

Auth-Tabelle

SpaltennameDatentypEinschränkungenBeschreibung
idStringPRIMARY KEYEindeutiger Bezeichner
emailString-E-Mail des Benutzers
passwordText-Gehashtes Passwort
activeBoolean-Kontostatus

Wissenswertes über die Auth-Tabelle:

  • Verwendet UUID als Primärschlüssel
  • Eins-zu-Eins-Beziehung mit der users-Tabelle (geteilte ID)

Channel-Tabelle

SpaltennameDatentypEinschränkungenBeschreibung
idTextPRIMARY KEYEindeutige Kennung (UUID)
user_idText-Besitzer/Ersteller des Kanals
typeTextnullableKanaltyp
nameText-Kanalname
descriptionTextnullableKanalbeschreibung
dataJSONnullableFlexibler Datenspeicher
metaJSONnullableKanal-Metadaten
access_controlJSONnullableBerechtigungseinstellungen
created_atBigInteger-Erstellungszeitstempel (Nanosekunden)
updated_atBigInteger-Letzter Aktualisierungszeitstempel (Nanosekunden)

Wissenswertes über die Auth-Tabelle:

  • Verwendet UUID als Primärschlüssel
  • Kanalnamen sind nicht case-sensitiv (werden in Kleinbuchstaben gespeichert)

Kanal-Mitglied-Tabelle

SpaltennameDatentypEinschränkungenBeschreibung
idTEXTNOT NULLEindeutige Kennung für die Kanalmitgliedschaft
channel_idTEXTNOT NULLReferenz zum Kanal
user_idTEXTNOT NULLReferenz zum Benutzer
created_atBIGINT-Zeitstempel der Mitgliedschaftserstellung

Chat-Tabelle

SpaltennameDatentypEinschränkungenBeschreibung
idStringPRIMARY KEYEindeutige Kennung (UUID)
user_idString-Eigentümer des Chats
titleText-Chat-Titel
chatJSON-Chat-Inhalt und -Verlauf
created_atBigInteger-Erstellungszeitstempel
updated_atBigInteger-Letzter Aktualisierungszeitstempel
share_idTextUNIQUE, nullableFreigabe-Kennung
archivedBooleandefault=FalseArchivierungsstatus
pinnedBooleandefault=False, nullablePin-Status
metaJSONserver_default=""Metadaten inklusive Tags
folder_idTextnullableÜbergeordnete Ordner-ID

Chat-ID-Tag-Tabelle

SpaltennameDatentypEinschränkungenBeschreibung
idVARCHAR(255)NOT NULLEindeutige Kennung
tag_nameVARCHAR(255)NOT NULLName des Tags
chat_idVARCHAR(255)NOT NULLReferenz zum Chat
user_idVARCHAR(255)NOT NULLReferenz zum Benutzer
timestampINTEGERNOT NULLZeitstempel der Erstellung

Konfiguration

SpaltennameDatentypEinschränkungenStandardwertBeschreibung
idINTEGERNOT NULL-Primärschlüssel-Kennung
dataJSONNOT NULL-Konfigurationsdaten
versionINTEGERNOT NULL-Konfigurationsversionsnummer
created_atDATETIMENOT NULLCURRENT_TIMESTAMPErstellungszeitstempel
updated_atDATETIME-CURRENT_TIMESTAMPLetzter Aktualisierungszeitstempel

Feedback-Tabelle

SpaltennameDatentypEinschränkungenBeschreibung
idTextPRIMARY KEYEindeutige Kennung (UUID)
user_idText-Benutzer, der Feedback gegeben hat
versionBigIntegerdefault=0Feedback-Versionsnummer
typeText-Typ des Feedback
dataJSONnullableFeedback-Daten inklusive Bewertungen
metaJSONnullableMetadaten (Arena, chat_id, etc)
snapshotJSONnullableZugehörige Chat-Snapshot
created_atBigInteger-Erstellungszeitstempel
updated_atBigInteger-Letzter Aktualisierungszeitstempel

Datei-Tabelle

SpaltennameDatentypBeschränkungenBeschreibung
idStringPRIMARY KEYEindeutiger Bezeichner
user_idString-Besitzer der Datei
hashTextnullableDatei-Hash/Prüfsumme
filenameText-Name der Datei
pathTextnullableDateisystempfad
dataJSONnullableDatei-bezogene Daten
metaJSONnullableDateimetadaten
access_controlJSONnullableBerechtigungseinstellungen
created_atBigInteger-Erstellungszeitstempel
updated_atBigInteger-Letzter Aktualisierungszeitstempel

Die erwartete Struktur des meta-Felds:

{
"name": string, # Optionaler Anzeigename
"content_type": string, # MIME-Typ
"size": integer, # Dateigröße in Bytes
# Zusätzliche Metadaten, unterstützt über ConfigDict(extra="allow")
}

Ordner-Tabelle

SpaltennameDatentypBeschränkungenBeschreibung
idTextPRIMARY KEYEindeutiger Bezeichner (UUID)
parent_idTextnullableID des übergeordneten Ordners für Hierarchie
user_idText-Besitzer des Ordners
nameText-Ordnername
itemsJSONnullableOrdnerinhalte
metaJSONnullableOrdner-Metadaten
is_expandedBooleandefault=FalseUI-Erweiterungszustand
created_atBigInteger-Erstellungszeitstempel
updated_atBigInteger-Letzter Aktualisierungszeitstempel

Wissenswertes zur Ordner-Tabelle:

  • Ordner können geschachtelt werden (Referenz auf parent_id)
  • Wurzelordner haben null als parent_id
  • Ordnernamen müssen innerhalb desselben übergeordneten Ordners eindeutig sein

Funktions-Tabelle

SpaltennameDatentypBeschränkungenBeschreibung
idStringPRIMARY KEYEindeutiger Bezeichner
user_idString-Besitzer der Funktion
nameText-Funktionsname
typeText-Funktionstyp
contentText-Funktionsinhalt/-code
metaJSON-Funktionenmetadata
valvesJSON-Funktionseinstellungen
is_activeBoolean-Aktivitätsstatus der Funktion
is_globalBoolean-Verfügbarkeitsflag auf globaler Ebene
created_atBigInteger-Erstellungszeitstempel
updated_atBigInteger-Letzter Aktualisierungszeitstempel

Wissenswertes zur Funktions-Tabelle:

  • type kann nur sein: ["filter", "action"]

Gruppen-Tabelle

SpaltennameDatentypBeschränkungenBeschreibung
idTextPRIMARY KEY, UNIQUEEindeutiger Bezeichner (UUID)
user_idText-Gruppenbesitzer/-ersteller
nameText-Gruppenname
descriptionText-Gruppenbeschreibung
dataJSONnullableZusätzliche Gruppendaten
metaJSONnullableGruppenmetadaten
permissionsJSONnullableBerechtigungskonfiguration
user_idsJSONnullableListe der Benutzer-IDs der Mitglieder
created_atBigInteger-Erstellungszeitstempel
updated_atBigInteger-Letzter Aktualisierungszeitstempel

Wissens-Tabelle

SpaltennameDatentypBeschränkungenBeschreibung
idTextPRIMARY KEY, UNIQUEEindeutiger Bezeichner (UUID)
user_idText-Besitzer der Wissensdatenbank
nameText-Name der Wissensdatenbank
descriptionText-Beschreibung der Wissensdatenbank
dataJSONnullableInhalt der Wissensdatenbank
metaJSONnullableZusätzliche Metadaten
access_controlJSONnullableZugriffskontrollregeln
created_atBigInteger-Erstellungszeitstempel
updated_atBigInteger-Zeitstempel der letzten Aktualisierung

Die erwartete Struktur des Feldes access_control:

{
"read": {
"group_ids": ["group_id1", "group_id2"],
"user_ids": ["user_id1", "user_id2"]
},
"write": {
"group_ids": ["group_id1", "group_id2"],
"user_ids": ["user_id1", "user_id2"]
}
}

Speicher-Tabelle

SpaltennameDatentypEinschränkungenBeschreibung
idStringPRIMARY KEYEindeutiger Bezeichner (UUID)
user_idString-Besitzer des Speichers
contentText-Speicherinhalt
created_atBigInteger-Erstellungszeitstempel
updated_atBigInteger-Zeitstempel der letzten Aktualisierung

Nachrichten-Tabelle

SpaltennameDatentypEinschränkungenBeschreibung
idTextPRIMARY KEYEindeutiger Bezeichner (UUID)
user_idText-Verfasser der Nachricht
channel_idTextnullableZugehöriger Kanal
parent_idTextnullableÜbergeordnete Nachricht für Threads
contentText-Nachrichtentext
dataJSONnullableZusätzliche Nachrichtendaten
metaJSONnullableMetadaten der Nachricht
created_atBigInteger-Erstellungszeitstempel (Nanosekunden)
updated_atBigInteger-Zeitstempel der letzten Aktualisierung (Nanosekunden)

Reaktionen auf Nachrichten Tabelle

SpaltennameDatentypEinschränkungenBeschreibung
idTextPRIMARY KEYEindeutiger Bezeichner (UUID)
user_idText-Benutzer, der reagiert hat
message_idText-Zugehörige Nachricht
nameText-Name/Emoji der Reaktion
created_atBigInteger-Zeitstempel der Reaktion

Modell-Tabelle

SpaltennameDatentypEinschränkungenBeschreibung
idTextPRIMARY KEYModellbezeichner
user_idText-Besitzer des Modells
base_model_idTextnullableReferenz auf übergeordnetes Modell
nameText-Anzeigename
paramsJSON-Modellparameter
metaJSON-Modellmetadaten
access_controlJSONnullableZugriffsberechtigungen
is_activeBooleandefault=TrueAktivierungsstatus
created_atBigInteger-Erstellungszeitstempel
updated_atBigInteger-Zeitstempel der letzten Aktualisierung

Aufforderungs-Tabelle

SpaltennameDatentypEinschränkungenBeschreibung
commandStringPRIMARY KEYEindeutige Befehlskennung
user_idString-Besitzer der Aufforderung
titleText-Titel der Aufforderung
contentText-Inhalt/Vorlage der Aufforderung
timestampBigInteger-Zeitstempel der letzten Aktualisierung
access_controlJSONnullableZugriffsberechtigungen

Tag-Tabelle

SpaltennameDatentypEinschränkungenBeschreibung
idStringPK (zusammengesetzt)Normalisierte Tag-Kennung
nameString-Anzeigename
user_idStringPK (zusammengesetzt)Tag-Besitzer
metaJSONnullableTag-Metadaten

Wissenswertes über die Tag-Tabelle:

  • Primärschlüssel ist zusammengesetzt (id, user_id)

Werkzeug-Tabelle

SpaltennameDatentypEinschränkungenBeschreibung
idStringPRIMÄRSCHLÜSSELEindeutige Kennung
user_idString-Werkzeugbesitzer
nameText-Werkzeugname
contentText-Werkzeuginhalt/Code
specsJSON-Werkzeugspezifikationen
metaJSON-Werkzeug-Metadaten
valvesJSON-Werkzeugsteuerungseinstellungen
access_controlJSONnullableZugriffsberechtigungen
created_atBigInteger-Erstellungszeitstempel
updated_atBigInteger-Letzter Aktualisierungszeitstempel

Benutzer-Tabelle

SpaltennameDatentypEinschränkungenBeschreibung
idStringPRIMÄRSCHLÜSSELEindeutige Kennung
nameString-Name des Benutzers
emailString-E-Mail des Benutzers
roleString-Rolle des Benutzers
profile_image_urlText-Pfad zum Profilbild
last_active_atBigInteger-Letzter Aktivitätszeitstempel
updated_atBigInteger-Letzter Aktualisierungszeitstempel
created_atBigInteger-Erstellungszeitstempel
api_keyStringEINZIGARTIG, nullableAPI-Authentifizierungsschlüssel
settingsJSONnullableBenutzerpräferenzen
infoJSONnullableZusätzliche Benutzerinformationen
oauth_subTextEINZIGARTIGOAuth-Subjekt-Kennung

Entity-Relationship-Diagramm

Um die Beziehung zwischen den Tabellen zu visualisieren, siehe das untenstehende Entity-Relationship-Diagramm (ERD), das mit Mermaid generiert wurde.