PHP SDK
PHP 7.4+Binde Krypto-Zahlungen über Composer in deine PHP-App ein.
composer require whollycrypto/php-sdkLOS GEHT’S
Installieren, Zahlungen annehmen und deinen Server im Blick behalten.
Nutze einen frischen Linux-VPS mit root-Zugriff. Installiere nicht über bestehende Websites oder Datenbanken. Docker, Compiler und eigene Blockchain-Nodes brauchst du nicht.
| VPS | Minimum Wenig Betrieb | Empfohlen |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 2 GB | 4 GB |
| SSD | 20 GB | 60 GB |
Das Minimum ist ein Startwert für wenig Betrieb mit schlanken Ubuntu-/Debian-Images, keine Leistungszusage. Die Größen enthalten Linux. Halte vor der Installation mindestens 3 GiB frei, dazu Platz für Updates, Verlauf und Backups.
Das native Installationsskript braucht x86-64, systemd 247+ und Python 3.9+. ARM64 und Alpine/OpenRC sind nicht dabei.
Wähle eine noch gepflegte Version. Höhere Vorgaben deiner Distribution gelten zuerst: openSUSE Leap 16 nennt zum Beispiel mehr als 40 GB Speicherplatz.
Mehr Last braucht gegebenenfalls mehr CPU/RAM; RPC-Limits bleiben. Setup ist automatisiert getestet, aber nicht für jede Distribution vollständig auf einem frischen VPS.
Leite diese Standardnamen auf deinen VPS oder wähle eigene:
merchant.example.com: Dashboardpay.example.com: Checkoutapi.example.com: APINutze während der Einrichtung DNS ohne Proxy. Gib TCP 80/443 in beiden Firewalls frei und lass SSH offen. Die Ports 5432/8080 für Datenbank und App bleiben privat.
bash <(curl -fsSL https://releases.whollycrypto.com/setup_wholly.sh)Setup prüft Downloads und richtet PostgreSQL, Nginx, HTTPS und Dienste ein. Lieber Container? Nutze die optionale Docker-Installation.
Schau dir das Skript an. Mit --check am Ende prüfst du die Voraussetzungen ohne Installation. --help zeigt die Optionen.
Setze die Einrichtung fort. Schlüssel und Einstellungen bleiben erhalten:
bash <(curl -fsSL https://releases.whollycrypto.com/setup_wholly.sh) --resumeWeitere Basisdomains können dieselben Dienstnamen nutzen. Auch IPv6-Einträge müssen auf diesen VPS zeigen. Aktiviere den Cloudflare-Proxy erst nach der Domain-Prüfung.
QR-Codes fordern den vollen offenen Betrag an. Toleranz akzeptiert nur Fehlbeträge; Bestätigungen bleiben nötig.
Neue Beträge für erkannte Stablecoins werden aufgerundet: 1,321 USDC → 1,33 USDC, auch ohne Zahlungstoleranz. Minimum: 0,01 Token.
Bestehende Rechnungen, Guthaben und Restbeträge nach Teilzahlungen bleiben exakt. Andere oder eigene Token behalten ihre normale Genauigkeit.
Die Admin-Anmeldung registriert automatisch dein Guthabenkonto mit deiner E-Mail. Du bekommst einmalig 10 USD Startguthaben in deiner Abrechnungswährung. Kein Aktivierungscode nötig.
Erstelle eine Rechnung. Die Aktivierung versucht es bei Verbindungsproblemen automatisch erneut. Erneutes Verbinden gibt kein weiteres Startguthaben.
Probier den sicheren Checkout aus, ganz ohne Empfangsadresse oder echte Zahlung.
Dein Basic-Auth-Login steht in /root/whollycrypto/config/setup-credentials.txt. Er ist getrennt von E-Mail und Passwort deines Dashboard-Kontos.
Neue Projekte übernehmen Währung und Zeitzone aus den Systemeinstellungen; Stores nutzen die Projektwährung. Bestehende Konto-Zeitzonen änderst du separat unter Settings → Account.
whollycrypto welcome zeigt dir deine Dashboard-Adresse und hilfreiche Links erneut.
Bei der ersten Einrichtung sind zuerst 250 CoinGecko-Token nutzbar. Der Rest lädt im Hintergrund. Den Fortschritt siehst du unter Settings → Tokens.
Unter Projekt → Wallets → Backup all wählst du TXT oder eine durchsuchbare Offline-HTML-Datei mit QR-Codes. Beide enthalten unverschlüsselte Schlüssel und Wiederherstellungswörter. Bewahre eine private Kopie außerhalb des VPS auf. Niemals teilen oder hochladen.
Root kann auf Schlüssel zugreifen. Wallet-Guides erklären Rechnungsadressen, natives Gas und externe Monero-/Lightning-Backups.
Chain und Dezimalstellen werden geprüft. Der Preis gilt für alle Stores im Projekt; bestehende Rechnungen behalten ihren Kurs. Ein Katalogtreffer allein macht einen Token noch nicht zur verfügbaren Zahlungsart.
DEX Screener sucht Pools zum genauen Contract, etwa bei Uniswap und PancakeSwap. Ein Pool braucht mindestens 10.000 USD Liquidität und einen Trade in der letzten Stunde. Die Kurse werden jede Minute aktualisiert.
Fehlgeschlagene Prüfungen oder Kurse über fünf Minuten blockieren neue Angebote. DEX-Kurse können manipuliert sein. Nutze vertrauenswürdige Standard-Token: ERC-20 oder klassisches SPL. Die Prüfung ist kein Sicherheits-Audit; Token-2022/Erweiterungen werden nicht unterstützt. Ohne passenden Pool kannst du einen festen Preis nutzen.
Settings → System → Regional defaults legt Währung/Zeitzone für neue Projekte und die Zeitzone neuer Konten fest. Bestehende Einstellungen und Guthaben bleiben unverändert. Die Dashboard-Währung kannst du weiterhin wählen.
Persönliche Zeitzone: Settings → Account → Edit user.
Payment methods → Choose for this invoice schränkt akzeptierte Chains/Token ein. All store payment methods behält die Store-Auswahl bei.
Teste jede Zahlungsart mit einem kleinen Betrag. Prüfe die Rechnung, bevor du eine Bestellung erfüllst: Die Rückleitung zum Shop ist kein Zahlungsnachweis.
Prüfe bei Integrationen die Signaturen von IPN/Webhooks und den Status über die Rechnungs-API. Verarbeite mehrfach zugestellte Ereignisse nur einmal.
API: filtere payment_methods mit chain_slug und asset_tickers. Inaktive Einträge werden ignoriert; ohne Treffer gelten Store-Standards. Nur eine Chain lädt alle aktiven Assets. Gleiche Kürzel brauchen Asset-IDs. Sicherheitschecks bleiben aktiv.
Rechnung lässt sich nicht erstellen? Prüfe den Scanner-Badge, nicht nur den Node-Status. TRON braucht zwei unabhängige tron-indexer-Anbieter. Das Rechnungsformular zeigt Gründe und Lösungen. Wallets trennt Empfangsbereitschaft von Guthaben und Gas zum Senden.
API/MCP-Fehler enthalten error.details.payment_methods. SDK 2.4.0 erklärt bekannte Fehler sicher: PHP getPaymentMethodIssues(), Python payment_method_issues, Node paymentMethodIssues. Fehlerreferenz →
Krypto-Beträge werden aufgerundet und enthalten den Kursaufschlag des Stores. Eine Rechnung in Fiat tauscht deine Krypto-Zahlung nicht automatisch in Bankguthaben um.
Bei null Bestätigungen gilt die Zahlung schon beim Erkennen als abgeschlossen – ohne den Schutz von Netzwerkbestätigungen. Native EVM-Zahlungen werden als direkte Überweisungen erkannt. Prüfe abweichende oder unklare Zahlungen unter Needs attention.
Standardmäßig gesperrt. Mit Stores → Invoice → Allow zero-amount invoices erlaubst du Nullbeträge manuell und per API. Sie sind sofort abgeschlossen, ohne Zahlung, Empfangsadresse, Transaktion oder Verarbeitungsgebühr.
Store → Checkout: Themes, Farben, Logos, Favicon, Zahlungsarten, Links sowie Intro und Outro mit eigener Schriftgröße. Neue Stores übernehmen das Design des Standard-Stores. Änderungen speichern automatisch.
Open hosted preview zeigt fünf Zahlungszustände, ohne echte Zahlung. Kein eigenes HTML/CSS/JavaScript. Der Browser merkt sich gültige Zahlungsarten, nie Adressen oder Beträge. Erkannte Zahlungen bleiben bei ihrer Zahlungsart.
IPN sendet jedes Rechnungsereignis an die Standard-URL deines Stores oder die ipn_url der Rechnung. Webhooks senden nur ausgewählte Ereignisse. Beide senden denselben JSON-Snapshot per POST.
Gib die Bestellung erst bei status = settled frei. Bei processing wurde eine Zahlung erkannt, aber es fehlen noch Betrag oder Bestätigungen. amount_status = paid allein reicht nicht.
| Rechnungsstatus | Bedeutung |
|---|---|
new | Wartet auf Zahlung |
processing | Teilzahlung oder wartet auf Bestätigungen |
settled | Nach Rechnungsregeln oder manuell akzeptiert |
expired | Frist vorbei; späte Zahlungen können noch erkannt werden |
invalid | Zahlung prüfen oder bereits abgelehnt |
cancelled | Storniert, nicht erstattet |
Ereignisse: invoice.created, payment.received, invoice.processing, invoice.settled, invoice.expired, invoice.invalid, invoice.cancelled. Nicht jede Rechnung durchläuft jeden Status. Version 2 enthält signierte event_type, event_id und Projekt-/Store-IDs.
Der Body enthält invoice_id (öffentliche UUID), status, amount_status, timing_status, resolution, sequence, amount, currency und order_id. Beträge sind Dezimal-Strings: Eine Rechnung über 49,90 € sendet auch bei USDC-Zahlung "amount": "49.9", "currency": "EUR".
Zu wenig: amount_status = partial. Zu viel: overpaid. Verspätet: timing_status = late. Das sind keine eigenen Rechnungsstatus. paid berücksichtigt deine Unterzahlungstoleranz.
payment_info enthält exakte Beträge, Transfers und Chain-/Token-IDs. Kundendaten und Metadaten gehen ebenfalls nur an deinen privaten Empfänger.
Beim Abschluss stehen paid_chain, paid_asset, paid_payment_method_id und settlement_exchange_rate bereit. Der Kurs bedeutet Asset-Einheiten pro Rechnungswährungseinheit, vor Aufschlag. Ohne Zahlungsnachweis oder historische Daten bleiben die Werte null. Wiederholungen ändern sie nicht.
5.0.1 ergänzt paid_asset_amount (voller Kryptobetrag) und paid_asset_amount_received (Eingang beim Abschluss). Exakte Dezimalstrings zeigen auch tolerierte Fehlbeträge: "100" angefordert, "99" erhalten. Die Werte bleiben gespeichert; ältere Abschlüsse liefern null. Spätere Eingänge stehen in payment_info.
Fehlend ist nicht unbestätigt. remaining_amount zeigt den noch nötigen Betrag nach Toleranz. Bereits empfangenes Geld muss nicht erneut gesendet werden. Beträge und kleinste Einheiten bleiben exakte Strings. Addiere nie verschiedene Assets.
Ursprünglicher Kurs, Aufschlag, Toleranz und Rundung bleiben fest. Marktkurse dienen nur zur Orientierung. Bei gekürzten Listen hilft die Zahlungs-API mit Seitenaufteilung.
Getrennte Signierschlüssel: Store → IPN gilt für IPNs, auch mit eigener ipn_url pro Rechnung. Jeder Endpunkt unter Store → Webhooks hat seinen eigenen Schlüssel, sichtbar beim Anlegen oder Erneuern.
Beide nutzen Wholly-Signature und dieselbe SDK-Prüfung. Nutze den passenden Signierschlüssel, keinen API-Schlüssel. Wenn du den IPN-Schlüssel erneuerst, bleiben die Webhook-Schlüssel unverändert.
Prüfe unveränderten Body, Zeitstempel und Projekt-/Store-Zuordnung. Speichere dauerhaft und antworte dann mit HTTP 2xx. Prüfe die Rechnung über deine fest konfigurierte API-URL gegen die Bestellung. Ereignis- und Zustell-Header sind unsigniert; Version 2 enthält zusätzlich die signierte Ereignis-ID im Body.
Für einen Bestellstatus-Posteingang erkennst du Duplikate anhand von Projekt, Rechnungs-ID und Sequenz. Verschiedene Ereignisse können dieselbe Revision haben: Vergleiche die ursprünglichen Statusfelder, nicht den ganzen JSON-Body. Wenn du jedes Ereignis verarbeitest, nutze die signierte Ereignis-ID. Erfülle eine Bestellung trotzdem nur einmal.
IPN versucht wiederholbare Fehler bis zu achtmal; bei Webhooks kannst du Wiederholungen abschalten. Nachrichten können verspätet, doppelt oder in anderer Reihenfolge eintreffen. Überschreibe nie eine neuere Rechnungsrevision mit einer älteren.
Suche unter Store → IPN / Webhooks → History nach Bestellung, Rechnungs-ID oder E-Mail. Details zeigt gespeicherten Body und Zustellergebnis. Die Verläufe findest du auch in den Rechnungsdetails.
data.invoice_id entspricht der Callback-ID. SDK 2.1.0 unterstützt Version 2 und ältere Ereignisse; aktualisiere strikte Empfänger. Gespeicherte Inhalte laufen nach 90 Tagen ab. Erneutes Senden bestätigt keinen Erfolg. Zu wenig Guthaben pausiert Nachrichten, nicht Zahlungen.
Vollständiger Body, Ereignistabelle und Empfänger-Beispiele →
Sende unterstützte Assets optional an Kraken, Binance oder Coinbase. Behalte den Coin oder tausche die gutgeschriebene Einzahlung per Market-Order. Fiat bleibt auf der Börse; das ist keine Bankauszahlung.
Märkte aktualisieren sich ungefähr alle zwei Minuten. Veraltete Kurse stoppen neue Umtausche. Genutzt werden nur zugeordnete, gutgeschriebene Einzahlungen. Unklare Orders werden geprüft, nicht blind erneut gesendet. 1% bleibt als Reserve für Gebühren und Rundung auf der Börse, getrennt vom Verarbeitungsguthaben.
Verwahrung durch die Börse, KYC, regionale Grenzen sowie Handels- und Netzwerkgebühren gelten weiterhin. Keine mehrstufigen Trades, Hebel oder Bankauszahlungen. Ohne Verarbeitungsguthaben pausieren neue Umtausche; bestehende Orders werden weiter geprüft.
Du empfängst weiterhin Zahlungen, wenn dein Guthaben aufgebraucht ist. Rechnungen, Checkout und Zahlungsüberwachung bestehender Stores laufen weiter. Eine fehlende geprüfte Abrechnungsverbindung oder Kontosperre ist etwas anderes und kann neue Rechnungen blockieren.
| Geht weiterhin | Pausiert ohne nutzbares Guthaben |
|---|---|
| Rechnungen, Checkout und Bestätigungen | IPN/Webhooks samt Wiederholungen |
| Wallets, Guthaben und Backups | Sweep: Überweisungen, Gas, Rückzahlungen und neue Börsen-Umtausche |
| Auswertungen, Lese-API und bestehende Einstellungen | Neue Projekte und Stores |
| Update-Suche und Wiederherstellung abgebrochener Updates | Neue Versionen installieren |
Lade über das Guthaben-Symbol auf. Nach der geprüften Aufladung laufen aktivierte Automatiken weiter – auch Sweep-Regeln, die Geld senden. Schalte Regeln aus, die nicht fortgesetzt werden sollen.
Neue Installationen starten mit der zugewiesenen Gebühr, normalerweise 1 %. Nach Aktivierung gibt es einmalig 10 USD Startguthaben oder den Gegenwert. Gebühren richten sich nach dem ursprünglichen Fiatwert der bezahlten Rechnung. Die Krypto-Zahlung deiner Kunden wird nicht aufgeteilt.
Gebühren fallen weiter an, auch bei negativem Saldo. Gleiche das Minus aus und lade genug für nutzbares Guthaben über dem erlaubten Spielraum auf. Bei funktionierender Verbindung siehst du Guthabenänderungen normalerweise nach 10–15 Sekunden.
Für Updates muss dein geprüftes Guthaben über null liegen, auch wenn Automatiken einen Spielraum haben. Eine Aufladung installiert Updates nie automatisch.
Pausierte Benachrichtigungen verbrauchen keine Versuche. Gespeicherte Zustellungen werden fortgesetzt, ihre normale Ablaufzeit bleibt bestehen. Gleiche fehlende Ereignisse über die Rechnungs-API ab.
Schaltet der Betreiber Gebühren ab, gelten keine neuen Verarbeitungsgebühren oder Guthaben-Einschränkungen. Alte Gebühren bleiben im Verlauf. Ohne Kopplung kannst du Projekte/Stores einrichten; Rechnungen brauchen geprüfte Abrechnung. Bereits erstellte Rechnungen werden weiter überwacht.
Das Dashboard-Symbol vor der Projektleiste fasst deine freigegebenen Projekte zusammen. Filtere nach Projekt, Store, Währung, Zeitzone oder Datum. Nutze Tages-/Wochen-/Monatsvorlagen oder einen eigenen Zeitraum bis zu 366 Tagen. Store-Ergebnisse kannst du als CSV exportieren.
Optionaler Projektzugriff unter api.example.com/mcp. Zahlungen lesen oder Rechnungen freigeben. MCP einrichten & Rechte wählen →
Mit unseren offiziellen SDKs erstellst du Rechnungen, prüfst Zahlungen und verifizierst IPN/Webhooks.
Binde Krypto-Zahlungen über Composer in deine PHP-App ein.
composer require whollycrypto/php-sdkVerbinde deine Python-App oder dein Backend ohne zusätzliche Laufzeit-Abhängigkeiten.
python -m pip install whollycryptoEin npm-Paket für JavaScript und TypeScript, mit eingebauten Typen.
npm install whollycryptoNutze die API-Domain deiner Installation und halte API-Schlüssel auf deinem Server. Alle SDKs sind MIT-lizenziert.
Öffne Settings → System: Domains bearbeiten, DNS & review prüfen, dann aktivieren. Alte Adressen bleiben bis zur erfolgreichen Prüfung aktiv.
HTTPS läuft automatisch. Nach der Einrichtung kannst du den Cloudflare-Proxy einfach ein- oder ausschalten, ohne etwas in Wholly Crypto zu ändern. Let’s Encrypt bleibt aktiv.
/.well-known/acme-challenge/ auf Port 80 ohne erzwungene Umleitungen oder Zugangskontrolle erreichbar, damit Zertifikatserneuerungen klappen.Die Prüfung fragt direkt die zuständigen Nameserver ab und prüft den Ursprungsserver. Sie zeigt Direct oder Cloudflare an. Besucher können noch ältere DNS-Daten zwischengespeichert haben.
Richte 2FA unter Settings → Account ein. Reine Projektbenutzer nutzen My security in der Fußzeile. Bestätige dein Passwort, scanne TOTP-QR/Schlüssel und gib einen sechsstelligen Code ein.
Probier Verifyr Authenticator für iOS oder Android, oder eine andere TOTP-App. Sichere die einmaligen Wiederherstellungscodes getrennt vom Passwort. Lass HTTP Basic aktiv.
Neue Codes oder das Abschalten von 2FA brauchen dein Passwort und einen Authenticator- oder ungenutzten Wiederherstellungscode. Andere Sitzungen werden abgemeldet. Halte Handy-/Serveruhren synchron. 2FA schützt keinen bereits gehackten Server.
Das Theme-Symbol wechselt Light → Dim → Dark und merkt sich die Wahl im Browser. Das Store-Checkout-Design bleibt getrennt.
merchant.*- oder api.*-Adresse. Deine aktuelle Dashboard-IP muss erlaubt bleiben.pay.* normalerweise offen, damit Kunden von überall zahlen können.Optional kannst du Cloudflare-Zugriffsregeln ergänzen. Nimm Zertifikatserneuerungen davon aus. Nutze keine Browser-Anmeldeprüfung für API oder Checkout. Der Proxy allein beschränkt keine IPs.
Ausgesperrt? Starte über SSH whollycrypto access-reset --domain merchant.example.com. Nur diese Adresse wird innerhalb von fünf Sekunden wieder geöffnet. Der Anmeldeschutz bleibt aktiv.
whollycrypto ssl
whollycrypto ssl --fixDer erste Befehl prüft aktive Zertifikate. --fix repariert TLS-Dateien und erneuert fehlende/ablaufende Zertifikate. Nginx muss laufen; halte Ports 80/443 offen.
Mit whollycrypto ssl --domain merchant.example.com --reissue erzwingst du die Neuausstellung. Ausstellungslimits gelten weiter. Blockiert Cloudflare die HTTP-Prüfung, nutze kurz DNS-only. Wallets, Anmeldeschutz und Domains bleiben gleich.
Entscheidungen zu Ausnahmen brauchen einen Grund. Eine Rückzahlung ist eine eigene bestätigte Überweisung. Ein anderer Rechnungsstatus sendet noch kein Geld.
Versionshinweise lesen, dann unter Settings → System → Software updates oder per CLI aktualisieren. Signaturprüfung, Backup und App-Prüfung bleiben Pflicht. Checkout pausiert kurz.
whollycrypto update --check
whollycrypto updateUpdates warten ab 0.1.32 zwei Minuten auf Hintergrundaufgaben. Dein Checkout bleibt dabei online. Bei Zeitüberschreitung: Abbruch mit wiederhergestellten Zeitplänen.
Updater blockiert? Einmal ausführen; dein installierter Schlüssel prüft den Download.
bash <(curl -fsSL https://releases.whollycrypto.com/update_wholly.sh)Bewahre getestete Backups von PostgreSQL, Konfiguration, Wallet-Verschlüsselungsschlüssel und Wallet-Exporten getrennt vom Server auf. Lokale Archive sind unverschlüsselt.
Unterbrich keine Migration. Starte keine ältere App mit neuerer Datenbank. Stelle passende Datenbank-/Konfigurationsbackups gemeinsam wieder her. Guthabenregeln bleiben unverändert.
Setup und Updates nutzen bei Ausfällen den offiziellen GitHub-Mirror. Aktiviere GitHub-Fallback auch für das Setup-Skript. Signaturen, Prüfsummen und Guthabenregeln bleiben Pflicht.
Als root über SSH.
whollycrypto status
whollycrypto doctor
whollycrypto backup| Befehl | Zweck |
|---|---|
whollycrypto version | Installierte Version. |
whollycrypto status | App und Datenbank prüfen. |
whollycrypto logs | Letzte 80 App-Protokollzeilen. |
whollycrypto restart | Neustart und Funktionstest. |
whollycrypto doctor | Prüfen, ohne Änderungen. |
whollycrypto doctor --fix | Verwaltete Dateirechte und fehlenden CLI-Link reparieren. |
whollycrypto htaccess | Basic-Auth-Login zurücksetzen. |
whollycrypto admin-reset | Admin-Passwort zurücksetzen. |
whollycrypto 2fa-reset | Authenticator eines Kontos zurücksetzen, ohne das Passwort zu ändern. |
whollycrypto transfers statuswhollycrypto transfers enablewhollycrypto transfers disable | Senden für alle Projekte prüfen, aktivieren oder pausieren. Aktivieren startet die App neu und kann gespeicherte Regeln sofort ausführen; Bestätigung nötig. Updates behalten Pausen bei. |
whollycrypto ssl | HTTPS prüfen, mit --fix reparieren. |
whollycrypto access-reset --domain HOST | IP-Sperre einer Adresse aufheben. |
whollycrypto update --check | Nach signierten Updates suchen. |
whollycrypto update | Backup, Update und Neustart. |
whollycrypto backup | Root-only-Archiv in /root/whollycrypto/backups/releases/. |
whollycrypto recover | Abgebrochenes Update nur bei unverändertem Datenbankschema retten – kein allgemeiner Restore. |
whollycrypto welcome | Dashboard-Adresse und Links. |
whollycrypto --help | Befehle; --help danach zeigt die jeweiligen Optionen. |
Die Prüfung ändert nichts; Probleme ergeben einen Exit-Code ungleich null. --fix repariert nur verwaltete Dateirechte und einen fehlenden CLI-Link. Keine Neustarts, Löschungen oder Gebührenänderungen.
whollycrypto htaccessWähle Benutzer, Namen und Passwort und bestätige. Das ändert die erste Browser-Anmeldung, nicht dein Dashboard-Konto. Andere Benutzer und API-Zugangsdaten bleiben gleich.
whollycrypto admin-resetWähle den Admin per E-Mail und bestätige das neue Passwort. Sitzungen und Kontosperren werden aufgehoben; IP-Regeln bleiben aktiv.
Normale Resets lassen 2FA aktiv. Sind Authenticator und Wiederherstellungscodes verloren, nutze ausdrücklich whollycrypto admin-reset --email admin@example.com --reset-2fa. Richte 2FA nach der Anmeldung erneut ein.
Braucht die Datenbank, nicht App oder altes Passwort. Andere Konten, Wallets und Rechte bleiben gleich; deaktivierte Konten bleiben deaktiviert.
Authenticator und Wiederherstellungscodes verloren? Wähle als root ein Konto.
whollycrypto 2fa-reset
# Oder das Konto direkt wählen:
whollycrypto 2fa-reset --email user@example.comEntfernt Sitzungen, Authenticator und Wiederherstellungscodes. Melde dich mit deinem Passwort an und richte 2FA erneut ein. Rechte, Wallets und Basic Auth bleiben gleich; deaktivierte Konten bleiben deaktiviert.
Braucht die Datenbank, nicht die App oder Guthaben. Ohne Terminal: --email und --yes.
Enter erzeugt ein Passwort in /root/whollycrypto/config/credential-resets/: privat, unverschlüsselt, erst nach Erfolg nutzbar. Eigene Passwörter werden nicht gespeichert.
whollycrypto htaccess --user admin --new-user operator
whollycrypto admin-reset --email admin@example.comOhne Terminal brauchst du das bestehende Konto plus --generate oder --password-file /root/private-password.txt sowie --yes. Passwortdateien müssen root gehören und Modus 600 haben. Schreibe Passwörter nie in Befehle oder Umgebungsvariablen.
--yes überspringt nur die Bestätigung. Repariere abgebrochene Updates zuerst; gleichzeitige Kontoänderungen stoppen den Reset.