Skip to content

Konfiguration mit API Token verwalten

Die Konfigurationsverwaltung per API Token ist für Automatisierungsskripte, Betriebswerkzeuge und externe Kontrolloberflächen gedacht. Ein API Token mit der Berechtigung manage kann ohne Öffnen des Administrationsbereichs Hochladekanäle, Sicherheitseinstellungen, Seiteneinstellungen, weitere Einstellungen und leichte Föderationsbeziehungen lesen und ändern.

Die Verwaltungsberechtigung ist nur für leichte, skriptgeeignete Operationen vorgesehen. Schwere Operationen mit Bestätigung in der Weboberfläche, stapelweiser Verarbeitung im Weboberfläche oder Bereinigung von Föderationsindizes bleiben im Administrationsbereich der Weboberfläche.

API Token bearbeiten

Vorbereitung

Öffne im Administrationsbereich:

text
System Settings -> Security Settings -> API Token

Beim Erstellen oder Bearbeiten des API Token muss die Verwaltungsberechtigung aktiv sein. Diese Berechtigung kann Website-Einstellungen ändern und sollte nur vertrauenswürdigen Skripten oder Personen gegeben werden.

Alle drei Verwaltungsskripte führen Schreiboperationen standardmäßig nur als Vorschau aus. Erst mit --apply wird wirklich gespeichert.

Der API Token kann auch als Umgebungsvariable gesetzt werden:

powershell
$env:IMGHOST_API_TOKEN="your API Token"

Verwaltungsskripte herunterladen

Die ImgHost-Dokumentation enthält drei Node.js-Skripte:

SkriptZweck
Skript für HochladeeinstellungenVerwaltet Hochladekanäle, Unterkanäle und Lastverteilung
Skript für Website-EinstellungenVerwaltet Sicherheits-, Seiten- und weitere Einstellungen
Skript für FöderationsbeziehungenVerwaltet leichte Beziehungsaktionen, Beitrittsanfragen und Nachrichten

Erforderlich ist Node.js 18 oder neuer.

Gemeinsame Parameter

ParameterErforderlichBeschreibung
--base-url <url>JaAdresse der ImgHost-Website, zum Beispiel https://image.ai6.me
--token <token>JaAPI Token; alternativ kann IMGHOST_API_TOKEN genutzt werden
--retries <n>NeinWiederholungen bei vorübergehenden Fehlern; Standardwert 3
--timeout-ms <n>NeinZeitlimit jeder Anfrage in Millisekunden; Standardwert 180000
--output <pretty|json>NeinAusgabeformat; Standardwert pretty, für Programme ist json geeignet
--save-response <path>NeinSpeichert das Endergebnis als JSON-Datei
--applyNeinFührt den Schreibvorgang wirklich aus; ohne diesen Parameter wird nur eine Vorschau angezeigt
-h / --helpNeinZeigt die Hilfe des Skripts an

Hochladeeinstellungen

Das Skript für Hochladeeinstellungen listet, liest, erstellt, bearbeitet und löscht Unterkanäle. Außerdem kann es die Lastverteilung für einen Hauptkanal ein- oder ausschalten.

powershell
node imghost-token-upload-settings.mjs --base-url "https://your-domain" --token "your API Token" --list

Parameter für Hochladeeinstellungen

ParameterBeschreibung
--listListet Gruppen der Hochladeeinstellungen
--getLiest einen Hauptkanal oder einen bestimmten Unterkanal
--upsertErstellt oder bearbeitet einen Unterkanal; ohne --apply nur Vorschau
--deleteLöscht einen Unterkanal; ohne --apply nur Vorschau
--load-balance <true|false>Aktiviert oder deaktiviert die Lastverteilung eines Hauptkanals
--channel <key>Hauptkanal, zum Beispiel s3, github, telegram
--channel-name <name>Name des Unterkanals oder Accounts
--set key=valueSetzt ein Feld; kann wiederholt werden und unterstützt Punktpfade
--patch-json <path>Übernimmt mehrere Felder aus einer JSON-Datei
--applySpeichert die Änderung wirklich

Kanalschlüssel

KanalschlüsselKanal
telegram / tgTelegram
discord / dcDiscord
cfr2 / r2Cloudflare R2
s3S3
webdav / wdWebDAV-Speicherkanal
github / ghGitHub Releases
gitlab / glGitLab Packages
huggingface / hfHugging Face
onedrive / odOneDrive
googledrive / google / gdGoogle Drive
dropbox / dbDropbox
yandex / yxYandex Disk
pcloud / pdpCloud

Beispiele für Hochladeeinstellungen

Alle Hochladeeinstellungen auflisten:

powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --list

S3-Konfiguration lesen:

powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --get `
  --channel s3

Einen S3-Unterkanal lesen:

powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --get `
  --channel s3 `
  --channel-name "backup-s3"

Einen WebDAV-Unterkanal erstellen oder bearbeiten. Zuerst ohne --apply ausführen und die Vorschau prüfen:

powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --upsert `
  --channel webdav `
  --channel-name "backup-webdav" `
  --set enabled=false `
  --set remark="backup test"

Nach der Prüfung speichern:

powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --upsert `
  --channel webdav `
  --channel-name "backup-webdav" `
  --set enabled=false `
  --set remark="backup test" `
  --apply

Einen Unterkanal löschen:

powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --delete `
  --channel webdav `
  --channel-name "backup-webdav" `
  --apply

Lastverteilung für S3 aktivieren:

powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --load-balance true `
  --channel s3 `
  --apply

Komplexe Felder können in einer JSON-Datei stehen und mit --patch-json übergeben werden:

json
{
  "enabled": true,
  "remark": "primary account"
}
powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --upsert `
  --channel s3 `
  --channel-name "primary-s3" `
  --patch-json ".\s3-channel.json" `
  --apply

Weitere Website-Einstellungen

Das Skript für Website-Einstellungen verwaltet drei Bereiche:

BereichWert für --areaBeschreibung
SicherheitsecurityBenutzer- und Admin-Authentifizierung, angemeldete Geräte, API Token, Bildmoderation, Benutzerlimits, WebDAV
SeitenpageGlobale Seite, Benutzerseite, Administrationsseite und Anzeigeeffekte
Weitere EinstellungenothersZufallsbild-Schnittstelle, öffentliche Galerie, lokaler Föderationsknoten, automatische Schlagwörter, IP-Geolokalisierung, Sicherung, OCR

Mit --list-sections werden verfügbare Bereiche, Abschnitte und Felder angezeigt:

powershell
node imghost-token-site-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --list-sections

Parameter für Website-Einstellungen

ParameterBeschreibung
--list-sectionsListet editierbare Bereiche, Abschnitte und Felder
--getLiest einen Einstellungsabschnitt
--area <security|page|others>Wählt den Einstellungsbereich
--section <name>Wählt den Abschnitt; die Namen stammen aus --list-sections
--set key=valueSetzt ein Feld; kann wiederholt werden
--applySpeichert die Änderung wirklich

Im Bereich page verwendet --set die Kennung der Seiteneinstellung, zum Beispiel starsEffect=true. In security und others wird der Feldname des Abschnitts genutzt, zum Beispiel email=admin@example.com.

Beispiele für Website-Einstellungen

Benachrichtigung zu Systemaktualisierungen lesen:

powershell
node imghost-token-site-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --get `
  --area security `
  --section systemUpdate

E-Mail für Aktualisierungsbenachrichtigungen ändern. Zuerst ohne --apply prüfen:

powershell
node imghost-token-site-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --area security `
  --section systemUpdate `
  --set email="admin@example.com"

Danach speichern:

powershell
node imghost-token-site-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --area security `
  --section systemUpdate `
  --set email="admin@example.com" `
  --apply

Sterneffekt im Administrationsbereich ändern:

powershell
node imghost-token-site-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --area page `
  --section adminSettings `
  --set starsEffect=true `
  --apply

Sprache der IP-Geolokalisierung ändern:

powershell
node imghost-token-site-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --area others `
  --section ipGeolocation `
  --set language="en" `
  --apply

Beim lokalen Föderationsknoten können normale Felder wie Aktivierung, Synchronisationsverzeichnis oder Einladungscode gelesen und geändert werden. Die Domainbestätigung läuft nicht über API Token. Wenn der Administrationsbereich meldet, dass die lokale Knotendomain nicht zur aktuellen Zugriffsdomain passt, muss die Bestätigung in der Weboberfläche abgeschlossen werden.

Föderationsbeziehungen

Das Föderationsskript verwaltet den lokalen Knotenstatus, die Knoten, denen du beigetreten bist, die Knoten, die deinem Knoten beigetreten sind, Nachrichten, Beitrittsanfragen, erneute Anfragen ohne bestehende Beziehung, Annahme, Ablehnung und leichte Beziehungsaktionen ohne Indexbereinigung.

Indexaktualisierung, Löschung von Föderationsindizes und Bestätigung von Domainänderungen hängen vom vollständigen Ablauf in der Weboberfläche ab. Das Skript behandelt diese schweren Operationen nicht.

Grenze zwischen leichten und schweren Aktionen

AktionUnterstützung im SkriptBeschreibung
Lokalen Knotenstatus anzeigen und Beziehungen auflistenUnterstütztLiest nur Beziehungsdatensätze
Nachrichten lesen und sendenUnterstütztLiest oder schreibt Beziehungsnachrichten
Beitritt zu anderem Knoten beantragenUnterstütztNutzt einen Einladungslink
Beziehung ohne Datensatz erneut beantragenUnterstütztNur für outgoing-Karten mit lastResult=none; benötigt 6-stelligen Einladungscode
Ausstehende outgoing-Anfrage abbrechenUnterstütztBricht nur eine wartende Anfrage ab
incoming-Anfrage annehmen oder ablehnenUnterstütztBehandelt Anfragen von Knoten, die deinem Knoten beitreten möchten
Akzeptierte incoming-Beziehung entfernenUnterstütztAktualisiert den eingehenden Datensatz und benachrichtigt die andere Seite
Terminalen incoming-Datensatz löschenUnterstütztLöscht nur terminale eingehende Datensätze
Akzeptiertes outgoing-Abonnement kündigenNur in der WeboberflächeBenötigt möglicherweise die Bereinigung des lokalen Föderationsindex
Terminalen outgoing-Datensatz löschenNur in der WeboberflächeKann zuerst Indexbereinigung erfordern
Domainänderung bestätigen oder abbrechenNur in der WeboberflächeBenötigt Bestätigung der aktuellen Domain und Behandlung der Indexbeziehungen
Indizes veröffentlichen, abrufen oder stapelweise löschenNur in der WeboberflächeDient der stapelweiser Verarbeitung in der Weboberfläche

Föderationsparameter

ParameterBeschreibung
--statusZeigt lokalen Knotenstatus sowie outgoing- und incoming-Beziehungen
--listListet Föderationsbeziehungen
--chatLiest zwischengespeicherte Nachrichten einer Beziehung
--send-messageSendet eine Nachricht an eine bestehende Beziehung
--joinBeantragt Beitritt über Einladungslink
--reapplyBeantragt erneut, wenn keine Beziehung besteht; benötigt 6-stelligen Code
--acceptNimmt eine incoming-Anfrage an
--denyLehnt eine incoming-Anfrage ab
--cancelBricht eine ausstehende outgoing-Anfrage ab oder entfernt eine akzeptierte incoming-Beziehung
--deleteLöscht einen terminalen incoming-Datensatz
--direction <outgoing|incoming|all>Richtung; outgoing sind Knoten, denen du beigetreten bist, incoming sind Knoten, die deinem Knoten beigetreten sind
--domain <url>Domain des Beziehungsknotens
--invite-link <url>Einladungslink des anderen Knotens
--invite-code <code>6-stelliger Code für erneute Anfragen
--text <message>Nachrichtentext
--applySpeichert die Änderung wirklich

Beispiele für Föderation

Lokalen Knotenstatus und beide Beziehungslisten anzeigen:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --status

Nur Knoten anzeigen, denen du beigetreten bist:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --list `
  --direction outgoing

Nur Knoten anzeigen, die deinem Knoten beigetreten sind:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --list `
  --direction incoming

Beitritt über Einladungslink beantragen. Zuerst ohne --apply ausführen:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --join `
  --invite-link "https://peer-domain/federation/invite/abcdef"

Nach Prüfung speichern:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --join `
  --invite-link "https://peer-domain/federation/invite/abcdef" `
  --apply

Beziehung ohne Datensatz erneut beantragen:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --reapply `
  --domain "https://peer-domain" `
  --invite-code "abc123" `
  --apply

incoming-Anfrage annehmen:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --accept `
  --domain "https://peer-domain" `
  --apply

incoming-Anfrage ablehnen:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --deny `
  --domain "https://peer-domain" `
  --apply

Nachricht an bestehende Beziehung senden:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --send-message `
  --direction outgoing `
  --domain "https://peer-domain" `
  --text "Hello, this is a test message." `
  --apply

Ausstehende outgoing-Anfrage abbrechen:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --cancel `
  --direction outgoing `
  --domain "https://peer-domain" `
  --apply

Akzeptierte incoming-Beziehung entfernen:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --cancel `
  --direction incoming `
  --domain "https://peer-domain" `
  --apply

Terminalen incoming-Datensatz löschen:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --delete `
  --direction incoming `
  --domain "https://peer-domain" `
  --apply

Akzeptierte outgoing-Abonnements kündigen und outgoing-Datensätze löschen muss in der Weboberfläche-Adminbereich erfolgen, weil zuvor eventuell der lokale Föderationsindex bereinigt werden muss.

Domain stimmt nicht überein

Wenn die gespeicherte Domain des lokalen Knotens nicht zur ausstehenden Domain in der Beziehung passt, meldet das Skript einen Fehler mit currentDomain und pendingDomain. Dieser Fall muss im Administrationsbereich der Weboberfläche behandelt werden, weil Domainänderungen auch die Bereinigung und Bestätigung ausgehender Indizes erfordern.

Wenn eine Beitrittsanfrage FEDERATION_NODE_DOMAIN_MISMATCH zurückgibt, passt die Domain im Einladungslink nicht zur gespeicherten Domain des entfernten Knotens. Die Antwort enthält currentOrigin und detectedOrigin. Nutze die bestätigte Domain des anderen Knotens oder bitte ihn, die Domain zuerst im Administrationsbereich der Weboberfläche zu bestätigen.

Häufige Fragen

Änderung wurde nicht übernommen

Schreibbefehle laufen standardmäßig als Vorschau. Füge nach Prüfung --apply hinzu, um wirklich zu speichern.

Welche Felder können geändert werden

Für Hochladeeinstellungen zuerst mit --get die Struktur des Unterkanals prüfen. Für Sicherheits-, Seiten- und weitere Einstellungen zeigt --list-sections alle editierbaren Bereiche, Abschnitte und Felder.

Ergebnis in anderem Programm verwenden

Nutze --output json oder --save-response result.json. Das Programm kann die gespeicherte JSON-Datei direkt lesen.

Released as user documentation for ImgHost.