[{"content":"In wenigen Minuten einsatzbereit — dieser Guide zeigt dir die wichtigsten Einstellungen für deinen persönlichen Workflow.\n1. Erste Datei erstellen Tippe unten rechts auf den (\u0026hellip;)-Button (FAB). Es öffnet sich ein Menü:\nNeue Notiz — leeres Markdown-Dokument Passwort anzeigen — Zeigt Passwörter verschlüsselter PDFs Importieren — vorhandene Datei importieren Papierkorb — Inhalt des Papierkorbs Support mrkdwn — Spenden Erstelle eine neue Datei in dem du auf + Neue Notiz klickst. Tipp dann den Dateinamen unten im Editor ein, wähle das Dateiformat (.md, .txt, .html) und tippe auf Speichern.\n2. Theme einstellen Gehe zu Einstellungen → Allgemein → Theme und wähle eines der 7 eingebauten Themes:\nTheme Stil Pure Light Hell, klar Modern Dark Dunkel, blau Nord Frost Dunkel, blau-grün Nord Aurora Dunkel, rot Nord Snow Storm Hell, blau Monokai Spectral Dunkel, pink Monokai Sun Hell, lebendig Das Theme wirkt sich auf Editor, Dateiliste und alle Dialoge aus.\n3. Schriften anpassen Unter Einstellungen → Typografie \u0026amp; Export → Editor-Einstellungen:\nEditor-Schrift — die Schriftart für den Fließtext Überschriften-Schrift — eigene Schrift für H1–H6 Schriftgröße — Grundgröße des Textes Überschriften-Größe — separater Größenregler für Überschriften Zeilenhöhe — Abstand zwischen Zeilen Änderungen werden sofort in offenen Dokumenten übernommen.\n4. PDF-Einstellungen einrichten Unter Einstellungen → Typografie \u0026amp; Export → PDF-Einstellungen:\nRänder Ober-, Unter-, Links- und Rechts-Rand separat einstellbar (in Punkten).\nSeitenformat Wähle das Papierformat für exportierte PDFs:\nA5, A4, A3 Letter Kopf- und Fußzeilen Eigener Text für Kopfzeile und Fußzeile — z.B. Dokumentname, Datum oder Firma.\n\u0026#8249; \u0026#8250; Bildqualität Komprimierung von Bildern im PDF\nSeitenzahlen Toggle für automatische Seitennummerierung.\n5. Listenansicht einstellen Unter Einstellungen → Allgemein → Listenansicht:\nDarstellung: Kompakt / Standard / Bequem — steuert den Zeilenabstand Bilder ausblenden: Blendet Bild-Vorschauen in der Dateiliste aus Standardsortierung: Welche Sortierung beim Start aktiv ist (Name, Datum, Größe, Typ, Tags) Aufsteigend/Absteigend: Standard-Sortierrichtung \u0026#8249; \u0026#8250; 6. Sprache wählen Unter Einstellungen → Allgemein → Sprache:\nAktuell verfügbar: Deutsch und English. Die Sprache gilt nur für die App-Oberfläche — deine Dokumente bleiben unverändert.\n7. Loslegen Einmal eingerichtet, ist der tägliche Workflow einfach:\nApp öffnen Datei antippen → Editor öffnet sich Schreiben — Autosave speichert automatisch Über den Teilen-Button exportieren oder teilen \u0026#8249; \u0026#8250; Alles weitere findest du im Handbuch (Einstellungen → Handbuch) oder in den erweiterten Guides.\n","date":"March 26, 2026","permalink":"/programme/mrkdwn/de/schnelleinstieg/","summary":"In wenigen Minuten einsatzbereit — dieser Guide zeigt dir die wichtigsten Einstellungen für deinen persönlichen Workflow.\n1. Erste Datei erstellen Tippe unten rechts auf den (\u0026hellip;)-Button (FAB). Es öffnet sich ein Menü:\n","title":"Schnelleinstieg","type":"programme"},{"content":"Für alle, die das Beste aus mrkdwn herausholen wollen.\nTags Tags helfen dir, Dateien thematisch zu gruppieren — unabhängig von Ordnerstrukturen.\nTags vergeben Im Kontextmenü einer Datei (langes Drücken in der Liste) → Tags bearbeiten. Wähle vorhandene Tags oder erstelle neue direkt im Dialog.\nTags verwalten Unter Einstellungen → Tags verwalten:\nNeuen Tag erstellen — Name und Farbe festlegen Tag umbenennen Tag löschen — entfernt den Tag aus allen Dateien Farben — jeder Tag bekommt eine eigene Farbe für die visuelle Unterscheidung Nach Tags filtern In der Dateiliste oben auf das Filter-Symbol tippen → Nach Tag filtern → gewünschten Tag auswählen. Die Liste zeigt nur noch Dateien mit diesem Tag.\nAktive Filter werden als Chips unterhalb der Suche angezeigt. Tippe auf Löschen um alle Filter zurückzusetzen.\nTags als Sortierkriterium In der Sortierung kann auch Tags gewählt werden — Dateien werden dann nach Tag-Name alphabetisch sortiert, Dateien ohne Tag kommen zuletzt.\nSicherheit \u0026amp; App-Sperre App mit Face ID / Touch ID sperren Unter Einstellungen → Sicherheit → App-Sperre aktivieren. Beim nächsten Start der App (oder nach der eingestellten Zeitverzögerung) wird Biometrie oder Passcode abgefragt.\nSperrzeit einstellen:\nSofort Nach 1 Minute Nach 5 Minuten Nach 15 Minuten App-Lock Bildschirm Bei gesperrter App erscheint ein Vollbild-Sperrbildschirm mit dem App-Icon. Face ID / Touch ID wird automatisch gestartet, alternativ kann der Gerät-Passcode eingegeben werden.\nFilter \u0026amp; Sortierung Sortieroptionen In der Dateiliste über das ↑↓-Symbol oben rechts:\nSortierung Beschreibung Name Alphabetisch A–Z oder Z–A Datum Zuletzt geändert zuerst oder zuletzt Größe Größte oder kleinste Datei zuerst Typ Nach Dateiformat gruppiert Tags Nach Tag-Name sortiert Der aktive Sortiermodus ist durch einen ↑ oder ↓ Pfeil im Menü markiert. Tippen auf denselben Eintrag wechselt die Richtung.\nFilteroptionen Gleichzeitig mit der Sortierung können Filter aktiv sein:\nNach Tag filtern — nur Dateien mit einem bestimmten Tag Nur lokal — nur Dateien die lokal vorhanden sind (nicht in der Cloud) Nur Cloud — nur Dateien die als \u0026ldquo;Speicher freigegeben\u0026rdquo; in der Cloud liegen Typ-Sortierung mit Cloud-Trenner Wenn nach Typ sortiert wird und Cloud-only-Dateien vorhanden sind, erscheinen diese unten in einem separaten Abschnitt mit einer Trennlinie und dem iCloud-Symbol — klar getrennt von den lokal verfügbaren Dateien.\nExport Aus dem Editor exportieren Im Editor oben rechts auf das Teilen-Symbol tippen — Optionen:\nPDF generieren — exportiert das aktuelle Dokument als PDF HTML exportieren — speichert als HTML-Datei oder kopiert in die Zwischenablage Markdown teilen — teilt die rohe .md-Datei Drucken — öffnet den System-Druckdialog PDF-Export im Detail Nach \u0026ldquo;PDF generieren\u0026rdquo; öffnet sich eine PDF-Vorschau:\nBlättern durch alle Seiten Seitenzahl-Anzeige Speichern — in Fotos oder Dateien ablegen Teilen — per AirDrop, Mail, etc. Wenn eine PDF mit gleichem Namen bereits existiert, fragt die App nach: Überschreiben oder Umbenennen.\nHTML-Export Als Datei speichern — legt eine .html-Datei im Dateisystem ab In Zwischenablage — kopiert den vollständigen HTML-Code zum Einfügen Automatisches Speichern mrkdwn speichert automatisch — kein manuelles Speichern nötig. Autosave greift:\nBeim Tippen — nach kurzer Pause Beim Verlassen des Editors — beim Zurücknavigieren zur Liste Beim App-Wechsel — wenn mrkdwn in den Hintergrund geht Der Speichern-Button im Dateinamen-Dialog ist für das explizite Bestätigen einer Umbenennung oder Formatänderung gedacht.\nQuellcode-Ansicht Über das \u0026lt;/\u0026gt;-Symbol in der Editor-Toolbar wechselst du zwischen der gerenderten Vorschau und dem rohen Markdown-Quellcode.\nIm Quellcode-Modus:\nVollständiger Zugriff auf alle Markdown-Symbole Sonderzeichen-Leiste bleibt aktiv Besonders nützlich für komplexe Tabellen, verschachtelten Code oder Front-Matter Nochmal auf \u0026lt;/\u0026gt; tippen schaltet zurück zur gerenderten Ansicht.\nDatei-Informationen Langes Drücken auf eine Datei → Datei-Info zeigt:\nDateiname und Format Letzte Änderung Dateigröße Wortanzahl Seitenanzahl (bei PDF) ","date":"March 26, 2026","permalink":"/programme/mrkdwn/de/fortgeschritten/","summary":"Für alle, die das Beste aus mrkdwn herausholen wollen.\nTags Tags helfen dir, Dateien thematisch zu gruppieren — unabhängig von Ordnerstrukturen.\n","title":"Konfiguration","type":"programme"},{"content":"Alles über iCloud, Nextcloud, Speicher-Management und verschlüsselte PDFs.\niCloud Drive Einrichten Unter Einstellungen → Cloud-Synchronisation → iCloud Drive den Toggle aktivieren.\nBeim ersten Aktivieren migriert mrkdwn alle vorhandenen Dokumente automatisch in den iCloud-Ordner. Du musst nichts manuell verschieben.\nVoraussetzung: iCloud Drive muss auf dem Gerät aktiviert sein (iOS Einstellungen → [Dein Name] → iCloud → iCloud Drive).\nWie es funktioniert Dateien werden in iCloud Drive / mrkdwn / gespeichert iOS synchronisiert automatisch im Hintergrund mit allen Geräten, die denselben Apple-Account nutzen Änderungen auf einem Gerät erscheinen nach kurzer Zeit auf allen anderen Kein manueller Sync-Button nötig — iCloud übernimmt das vollständig Deaktivieren Toggle deaktivieren → mrkdwn fragt, ob die Dateien vorher heruntergeladen werden sollen oder ob nur die Verbindung getrennt wird (Dateien bleiben in iCloud).\nNextcloud Nextcloud erlaubt dir, mit deinem eigenen Server zu synchronisieren — volle Kontrolle, keine Abhängigkeit von Apple.\nEinrichten Unter Einstellungen → Cloud-Synchronisation → Nextcloud aktivieren, dann ausfüllen:\nFeld Beispiel Server-URL https://cloud.meinserver.de Benutzername max Passwort •••••••• Sync-Ordner /mrkdwn Tippe auf Verbindung aktualisieren — mrkdwn verbindet sich, erstellt den Ordner falls nötig und startet den ersten Sync.\nHTTPS erzwingen Der Toggle HTTPS-Verbindung verhindert, dass sich mrkdwn mit einem HTTP-Server verbindet. Empfohlen für alle produktiven Setups.\nSync-Verhalten Sync läuft automatisch im Hintergrund Manuell anstoßen über Verbindung aktualisieren in den Einstellungen Der Sync-Status wird unter dem Button angezeigt (z.B. \u0026ldquo;Sync abgeschlossen um 14:32\u0026rdquo;) Konflikte werden erkannt — mrkdwn entscheidet anhand des Änderungsdatums Nextcloud trennen Toggle deaktivieren → Dialog erscheint:\nHerunterladen und trennen — alle Cloud-Dateien werden erst vollständig synchronisiert, dann die Verbindung getrennt Nur trennen — Verbindung sofort trennen, lokaler Zustand bleibt wie er ist iCloud + Nextcloud gleichzeitig Beide Sync-Dienste können gleichzeitig aktiv sein. mrkdwn zeigt einen Hinweis, dass in diesem Fall beide Dienste denselben Dateistand sehen — Änderungen werden an beide weitergegeben.\nPraktisch für: iCloud für Apple-Geräte + Nextcloud als Backup oder für Windows/Linux-Zugriff.\nSpeicher freigeben (Offload) Mit Speicher freigeben kannst du eine Datei lokal löschen, sie aber in der Cloud behalten. Das spart Speicherplatz auf dem Gerät.\nSo geht\u0026rsquo;s Langes Drücken auf eine Datei in der Liste → Speicher freigeben\nDie Datei:\nWird lokal geleert (0 Bytes auf dem Gerät) Bleibt unverändert auf dem Nextcloud/iCloud-Server Erscheint in der Liste mit einem iCloud-Symbol als Indikator Wird leicht transparent dargestellt Cloud-Datei herunterladen Antippen einer Cloud-only Datei startet den Download automatisch. Während des Downloads erscheint ein Ladekreis neben der Datei. Sobald der Download abgeschlossen ist, öffnet sich der Editor.\nAlternativ: Langes Drücken → Herunterladen\nFiltern nach Speicherort In der Dateiliste kann nach Nur lokal oder Nur Cloud gefiltert werden — praktisch um einen Überblick über freigegebene Dateien zu bekommen.\nPDF-Verschlüsselung PDF verschlüsseln beim Export Im Editor → PDF generieren → in der PDF-Vorschau auf Teilen / Speichern → vorher erscheint die Option, das PDF mit einem Passwort zu sichern.\nAlternativ: Langes Drücken auf eine PDF-Datei in der Liste → PDF verschlüsseln\nDas verschlüsselte PDF kann nur mit dem Passwort geöffnet werden — auch in anderen Apps oder auf anderen Geräten.\nVerschlüsselung ändern Langes Drücken auf verschlüsselte PDF → Verschlüsselung ändern — neues Passwort setzen.\nVerschlüsselung entfernen Langes Drücken auf verschlüsselte PDF → Verschlüsselung entfernen — aktuelles Passwort eingeben, dann wird die PDF unverschlüsselt gespeichert.\nVerschlüsselte PDFs öffnen Beim Öffnen einer verschlüsselten PDF erscheint automatisch ein Passwort-Dialog. Nach korrekter Eingabe wird die PDF entschlüsselt und angezeigt.\nNextcloud-Dateiverschlüsselung (AES) Für maximale Sicherheit können Dateien vor dem Upload zu Nextcloud mit AES verschlüsselt werden. Selbst wenn jemand Zugang zum Nextcloud-Server hat, kann er ohne das Passwort nichts lesen.\nAktivieren Unter Einstellungen → Cloud-Synchronisation → Nextcloud → AES-Dateiverschlüsselung Toggle aktivieren.\nBeim ersten Aktivieren wird ein Verschlüsselungs-Passwort gesetzt:\nPasswort eingeben Bestätigen mrkdwn zeigt den Schlüssel-Fingerprint — notiere diesen als Backup Funktionsweise Alle Dateien werden lokal verschlüsselt, bevor sie hochgeladen werden Auf dem Server liegen ausschließlich verschlüsselte Daten Beim Herunterladen entschlüsselt mrkdwn automatisch mit dem gespeicherten Schlüssel Ende-zu-Ende: Nextcloud-Betreiber können die Inhalte nicht lesen Passwort ändern oder löschen Im gleichen Bereich: Passwort ändern oder Passwort löschen. Beim Löschen werden neue Uploads nicht mehr verschlüsselt — bereits hochgeladene Dateien bleiben in ihrem aktuellen Zustand.\nFingerprint Der Fingerprint ist eine kurze Prüfzeichenkette des Schlüssels. Wenn du auf mehreren Geräten dieselbe Nextcloud nutzt, sollten die Fingerprints übereinstimmen — das stellt sicher, dass dasselbe Passwort verwendet wird.\n","date":"March 26, 2026","permalink":"/programme/mrkdwn/de/mehr-themen/","summary":"Alles über iCloud, Nextcloud, Speicher-Management und verschlüsselte PDFs.\niCloud Drive Einrichten Unter Einstellungen → Cloud-Synchronisation → iCloud Drive den Toggle aktivieren.\n","title":"Synchronisation","type":"programme"},{"content":"Weniger bekannte Features und nützliche Details, die den Alltag erleichtern.\nBilder im Editor Bild aus Fotos einfügen In der Editor-Toolbar auf das Bild-Symbol tippen → Aus Fotos wählen. Das Bild wird lokal im Dokument-Ordner gespeichert und als relative Referenz eingebunden — funktioniert auch offline und ohne Cloud.\nBild per URL einfügen Im gleichen Dialog \u0026ldquo;Bild-URL einfügen\u0026rdquo; auswählen → URL und optionalen Alt-Text eingeben. Das Bild wird direkt aus dem Web geladen und in der Vorschau angezeigt.\nBild-Qualität Beim Einfügen aus der Fotobibliothek kann die Kompression gesteuert werden:\nQualität Beschreibung Original Kein Qualitätsverlust, größte Datei Keine Kompression JPEG ohne weitere Kompression Hohe Kompression Deutlich kleinere Datei Ausgewogen Guter Kompromiss (Standard) Bild lange drücken Im Editor auf ein eingebettetes Bild lange drücken → Optionen:\nBild lokal speichern — speichert eine Kopie im Dokument-Verzeichnis In Fotos speichern — exportiert das Bild in die Foto-Bibliothek Links einfügen In der Toolbar auf das Link-Symbol → Dialog mit:\nURL (Pflichtfeld) Anzeigetext (optional — bei leer wird die URL als Text genutzt) Fügt [Anzeigetext](URL) an der Cursor-Position ein.\nDokument-Suche Im Editor über die Toolbar das Suche-Symbol → gibt ein Suchfeld frei für die Volltextsuche innerhalb des aktuellen Dokuments. Treffer werden hervorgehoben und du kannst vorwärts/rückwärts springen.\nMarkdown-Formatierung per Toolbar Die Editor-Toolbar bietet Schnellzugriff auf die häufigsten Formatierungen:\nSymbol Aktion # Überschrift H1 B Fettdruck I Kursiv S Durchgestrichen Liste Aufzählung \u0026lt;/\u0026gt; Quellcode-Modus Rückgängig / Wiederholen Letzte Änderung rückgängig Suche Dokumentsuche Bild Bild einfügen Link Link einfügen Die Sonderzeichen-Leiste über der Tastatur gibt schnellen Zugriff auf: `, *, _, ~, [, ], (, ), #, \u0026gt;, -, |\nPapierkorb Gelöschte Dateien landen im Papierkorb — sie sind nicht sofort verloren.\nPapierkorb öffnen In der Dateiliste über das Menü (oder Einstellungen) → Papierkorb.\nWiederherstellen Datei im Papierkorb lange drücken → Wiederherstellen → die Datei kommt zurück in ihr ursprüngliches Verzeichnis.\nDauerhaft löschen Einzelne Datei: Langes Drücken → Endgültig löschen Alle auf einmal: Papierkorb leeren Papierkorb-Einstellungen Unter Einstellungen → Papierkorb: automatisches Leeren nach X Tagen konfigurierbar.\nOrdner-Verwaltung Ordner erstellen FAB-Button → Neuer Ordner → Name eingeben → Erstellen.\nOrdner umbenennen Langes Drücken auf Ordner → Umbenennen.\nOrdner löschen Langes Drücken → Löschen — löscht den Ordner mit allen Inhalten in den Papierkorb.\nIn Ordner navigieren Antippen öffnet den Ordner. Oben in der Navigation erscheint der Pfad — antippen um zurückzugehen.\nMehrsprachigkeit mrkdwn unterstützt Deutsch und Englisch — unabhängig von der Systemsprache des Geräts.\nUnter Einstellungen → Allgemein → Sprache umschalten. Die App wechselt sofort die Sprache ohne Neustart.\nDatei per Mail senden Langes Drücken auf eine Datei → Per Mail senden — öffnet das Mail-Composefenster mit der Datei als Anhang. Funktioniert mit der Standard-Mail-App sowie über AirDrop/Teilen wenn kein Mail-Account eingerichtet ist.\nImportieren Über den FAB-Button → Importieren öffnet sich ein Datei-Picker. Unterstützt werden:\nMarkdown-Dateien (.md, .markdown) Textdateien (.txt) HTML-Dateien (.html) PDF-Dateien (.pdf) Bilder (.jpg, .jpeg, .png) Importierte Dateien werden in den aktuell geöffneten Ordner kopiert.\nWillkommens-Notiz Beim ersten Start erstellt mrkdwn automatisch eine Willkommens-Notiz mit einer kurzen Einführung in die wichtigsten Funktionen und Markdown-Syntax. Ideal als erste Orientierung.\nDatei-Kollisionserkennung Wenn du eine PDF exportierst und eine Datei mit gleichem Namen bereits existiert, erscheint ein Dialog:\nÜberschreiben — ersetzt die vorhandene Datei Umbenennen — neuen Namen eingeben und als separate Datei speichern Abbrechen Das verhindert unbeabsichtigtes Überschreiben wichtiger PDFs.\nDrucken Im Editor → Teilen-Symbol → Drucken öffnet den iOS-Systemdruck-Dialog. Das Dokument wird als HTML gerendert und korrekt formatiert ausgegeben — inklusive der konfigurierten Schriften und Stile.\nTastatur-Shortcuts (iPad) Auf dem iPad mit externer Tastatur stehen systemweite Shortcuts zur Verfügung. Halte die ⌘-Taste gedrückt um verfügbare Shortcuts anzuzeigen.\nSpenden / Tip Jar Wenn dir mrkdwn gefällt, kannst du die Entwicklung direkt unterstützen. Unter Einstellungen → Unterstützung oder über den FAB-Button → mrkdwn unterstützen ☕:\n☕ Kaffee 2,49 € 🍺 Bier 4,99 € 🥨 Brotzeit 7,49 € 🎉 Alles zusammen 14,99 € Käufe werden sicher über Apple Pay / App Store abgewickelt. Als Konsumgut ohne Gegenleistung — reine Wertschätzung.\nDatenschutz — im Detail mrkdwn wurde von Anfang an mit Datenschutz by Design entwickelt:\nKeine Analytics-SDKs — kein Firebase, kein Mixpanel, kein Amplitude Keine Crash-Reporter — kein Sentry, kein Crashlytics Keine Werbenetzwerke — kein AdMob, kein SKAdNetwork-Tracking Keine externen Requests beim Starten — die App kommuniziert erst dann mit dem Netz wenn du es explizit anforderst (Cloud-Sync, Bild-URLs) Lokale Speicherung als Standard — ohne Cloud-Aktivierung verlässt keine Datei das Gerät Open Source Bibliotheken — alle verwendeten Bibliotheken sind unter der App-Info einsehbar Mehr dazu unter Einstellungen → Datenschutz.\n","date":"March 26, 2026","permalink":"/programme/mrkdwn/de/noch-mehr-themen/","summary":"Weniger bekannte Features und nützliche Details, die den Alltag erleichtern.\nBilder im Editor Bild aus Fotos einfügen In der Editor-Toolbar auf das Bild-Symbol tippen → Aus Fotos wählen. Das Bild wird lokal im Dokument-Ordner gespeichert und als relative Referenz eingebunden — funktioniert auch offline und ohne Cloud.\n","title":"Sonstiges","type":"programme"},{"content":"\r(Stand: März 2026)\nVerantwortlicher Verantwortlicher im Sinne der Datenschutz-Grundverordnung (DSGVO):\nAdminwerk IT Consulting\nHaydnweg 20\n82538 Geretsried\nGermany\napps@adminwerk.systems Grundsatz mrkdwn ist eine Markdown-Editor-App für iOS. Der Schutz deiner Daten hat für uns höchste Priorität.\nmrkdwn:\nenthält keine Werbung verwendet kein Tracking enthält keine Analyse-Dienste (kein Firebase, kein Analytics) gibt keine Daten an Dritte weiter Welche Daten werden verarbeitet? Lokal gespeicherte Daten Alle Notizen, Markdown-Dateien und andere generierte Formate, die du in mrkdwn erstellst, oder nach mrkdwn importierst werden ausschließlich lokal auf deinem Gerät gespeichert. Wir haben keinen Zugriff auf diese Daten.\nApp-Einstellungen (z. B. gewähltes Theme, Schriftgröße) werden ebenfalls nur lokal im UserDefaults deines Geräts gespeichert.\niCloud-Synchronisation (optional) Wenn du die iCloud-Synchronisation aktivierst, werden deine Dateien über Apples iCloud-Dienst synchronisiert. Diese Daten liegen auf Apples Servern und unterliegen der Datenschutzerklärung von Apple . Wir haben keinen Zugriff auf deine iCloud-Daten.\nBestimmte App-Einstellungen werden über iCloud von einem auf deine anderen iCloud-Geräte übertragen (z.B. Themeauswahl).\nNextcloud-Synchronisation (optional) Wenn du die Nextcloud-Synchronisation aktivierst, gibst du die Zugangsdaten zu einer Nextcloud-Instanz an. Diese Verbindung findet direkt zwischen deinem Gerät und dem Nextcloud-Server statt. Wir haben keinen Zugriff auf diese Verbindung oder deine Dateien.\nDein Nextcloud-Passwort wird verschlüsselt im iOS-Keychain gespeichert und verlässt dein Gerät ausschließlich zur Authentifizierung gegenüber deinem eigenen Server. Die Verbindung zum Nextcloud-Server kann verschlüsselt erfolgen. Die Entscheidung kannst du in den Einstellungen selbst treffen. Hierauf haben wir keinen Einfluss.\nIn-App-Käufe (Tip Jar) Wenn du einen freiwilligen Beitrag (Tip Jar) kaufst, wird die Transaktion ausschließlich über Apples StoreKit abgewickelt. Wir erhalten dabei keine Zahlungs- oder Kreditkartendaten. Apple verarbeitet die Zahlung gemäß der Datenschutzerklärung von Apple .\nSync-Log (optional, nur lokal) Das optionale Synchronisationsprotokoll (Diagnose-Funktion) schreibt Logs ausschließlich lokal auf deinem Gerät in den App-eigenen Speicher. Diese Daten werden nicht synchronisiert und nicht übertragen. Du kannst das Log jederzeit in den Einstellungen löschen.\nBerechtigungen mrkdwn fragt folgende iOS-Berechtigungen an:\nBerechtigung Zweck iCloud / CloudKit Optionale Dateisynchronisation Foto-Bibliothek Optionaler Zugriff auf Foto-Bibliothek Netzwerkzugriff Optionale Nextcloud-Synchronisation Es werden keine weiteren Berechtigungen (Kamera, Mikrofon, Kontakte, Standort etc.) angefragt. Bei Verwendung der Diktatfunktion werden Apple Dienste aktiv.\nDatenweitergabe an Dritte Wir erheben keine und geben keine personenbezogenen Daten an Dritte weiter. Es werden keine Daten an Analyse-, Werbe- oder Trackingdienste übermittelt.\nDatensicherheit Da alle Daten lokal auf deinem Gerät verbleiben oder von dir selbst gewählten Diensten (iCloud, eigene Nextcloud) synchronisiert werden, liegt die Datensicherheit primär im Schutz deines Geräts (Face ID, PIN) sowie deiner iCloud- und Nextcloud-Zugänge.\nDeine Rechte Nach der DSGVO hast du folgende Rechte:\nAuskunft (Art. 15 DSGVO) Berichtigung (Art. 16 DSGVO) Löschung (Art. 17 DSGVO) Einschränkung der Verarbeitung (Art. 18 DSGVO) Datenübertragbarkeit (Art. 20 DSGVO) Widerspruch (Art. 21 DSGVO) Da wir keine personenbezogenen Daten erheben oder speichern, beziehen sich diese Rechte in erster Linie auf Daten, die Apple (iCloud, StoreKit) im Rahmen der App-Nutzung verarbeitet. Diesbezüglich wende dich direkt an Apple.\nFür Fragen erreichst du uns unter: apps@adminwerk.systems Änderungen dieser Datenschutzerklärung Wir behalten uns vor, diese Datenschutzerklärung bei Bedarf zu aktualisieren. Die jeweils aktuelle Version ist über den Link im App Store abrufbar.\nKontakt Bei Fragen zum Datenschutz:\nadminwerk apps@adminwerk.systems ","date":"March 30, 2026","permalink":"/programme/mrkdwn/de/datenschutz/","summary":"\r(Stand: März 2026)\nVerantwortlicher Verantwortlicher im Sinne der Datenschutz-Grundverordnung (DSGVO):\n","title":"mrkdwn - Datenschutz","type":"programme"},{"content":" Hilfe Du hast eine Frage, oder benötigst Hilfe? Hierzu gibt es mehrere Möglichkeiten:\nDiscord E-Mail ","date":"April 9, 2026","permalink":"/programme/mrkdwn/de/support/","summary":" Hilfe Du hast eine Frage, oder benötigst Hilfe? Hierzu gibt es mehrere Möglichkeiten:\n","title":"Support","type":"programme"},{"content":" TestFlight: Build erstellen \u0026amp; Tester einladen\nÜbersicht Apple TestFlight unterscheidet zwei Arten von Testern:\nInterne Tester Externe Tester Wer Nur Mitglieder deines Apple Developer Teams Beliebige Personen per E-Mail Max. Anzahl 100 10.000 Beta Review Nicht erforderlich Erforderlich (wenige Stunden) Zugang Sofort nach Upload Erst nach Apple-Freigabe Phase 1: Build erstellen \u0026amp; hochladen (Xcode) Diese Schritte gelten für beide Wege.\nSchritt 1 – Version \u0026amp; Build-Nummer setzen Xcode öffnen → Projekt-Navigator → auf das Target klicken Reiter General öffnen Version: z. B. 1.0 (die Nummer, die User sehen) Build: Bei jedem Upload höher setzen als zuletzt → z. B. 2 ⚠️ Apple lehnt den Upload ab, wenn die Build-Nummer bereits existiert.\nSchritt 2 – Archiv erstellen Im Xcode-Menü: Product → Destination → Any iOS Device (arm64) ⚠️ Nicht einen Simulator auswählen, sonst ist „Archive\u0026quot; ausgegraut.\nMenü: Product → Archive Xcode kompiliert und öffnet automatisch den Organizer Schritt 3 – Build hochladen Im Organizer das neue Archiv auswählen Distribute App klicken App Store Connect auswählen → Next Upload auswählen → Next Optionen (Standard reicht für TestFlight): Strip Swift symbols: ✅ Upload symbols: ✅ Next → Xcode lädt hoch (dauert je nach Build-Größe 1–5 Minuten) Erfolgsmeldung abwarten Weg A: Interne Tester Voraussetzung: Person ins Team einladen appstoreconnect.apple.com öffnen Links: Users and Access „+\u0026quot; klicken E-Mail-Adresse eingeben, Vorname/Nachname, Rolle auswählen Empfohlene Rollen für Tester: App Manager oder Developer Invite klicken Die Person erhält eine E-Mail von Apple und muss die Einladung annehmen ⚠️ Ohne angenommene Einladung erscheint die Person nicht als Tester.\nBuild für interne Tester freigeben App Store Connect → deine App → TestFlight Links unter Internal Testing → Gruppe auswählen (oder neue erstellen) Reiter Testers → Person hinzufügen (muss Einladung angenommen haben) Reiter Builds → „+\u0026quot; → Build auswählen Build ist sofort für interne Tester verfügbar Was der interne Tester tun muss TestFlight-App aus dem App Store laden (falls noch nicht installiert) Einladungs-E-Mail von Apple öffnen → „View in TestFlight\u0026quot; tippen In TestFlight: App erscheint automatisch → Installieren Bei neuen Builds: TestFlight zeigt eine Benachrichtigung → Aktualisieren Weg B: Externe Tester Schritt 1 – Externe Gruppe erstellen (einmalig) App Store Connect → deine App → TestFlight Links unter External Testing → „+\u0026quot; klicken Gruppenname vergeben (z. B. „Externals\u0026quot; oder „Beta-Tester\u0026quot;) Tester hinzufügen: „+\u0026quot; → E-Mail-Adresse eingeben Tipp: Mehrere Adressen nacheinander hinzufügen.\nSchritt 2 – Build zur Gruppe hinzufügen Gruppe öffnen → Reiter Builds „+\u0026quot; → Build auswählen What to Test ausfüllen (kurze Beschreibung, was getestet werden soll) Submit for Review klicken Schritt 3 – Beta App Review abwarten Apple prüft den Build (typisch: wenige Stunden bis max. 1 Tag) Status wechselt von „Waiting for Review\u0026quot; → „Approved\u0026quot; Danach werden Einladungs-E-Mails an alle Tester der Gruppe verschickt ⚠️ Erst nach Freigabe erhalten Tester ihre Einladung – nicht sofort nach dem Upload.\nWas der externe Tester tun muss TestFlight-App aus dem App Store laden Einladungs-E-Mail von Apple öffnen → „View in TestFlight\u0026quot; tippen Der Einladungslink ist 30 Tage gültig.\nIn TestFlight: App erscheint → Installieren Bei neuen Builds: TestFlight-Benachrichtigung → Aktualisieren Neue Builds in derselben Gruppe brauchen erneut eine Beta Review.\nWichtige Hinweise Build-Gültigkeit: TestFlight-Builds sind 90 Tage ab Upload gültig. Danach laufen sie ab. Feedback: Tester können direkt aus TestFlight Screenshots + Feedback senden. Das landet in App Store Connect unter Feedback. Absturz-Logs: Xcode Organizer → Crashes zeigt automatisch Crash-Reports der TestFlight-Builds. Mehrere Builds: Du kannst mehrere aktive Builds gleichzeitig für verschiedene Gruppen haben. Externe → interne Gruppe: Du kannst denselben Build für beide Gruppen gleichzeitig freigeben. ","date":"April 9, 2026","permalink":"/use/testflight/","summary":" TestFlight: Build erstellen \u0026amp; Tester einladen\nÜbersicht Apple TestFlight unterscheidet zwei Arten von Testern:\n","title":"TestFlight","type":"use"},{"content":"Mit dem Weg weg von Office 365 oder Microsoft 365, hin zur eigenen Mailcow habe ich für die Migration die komplette Domain weitergeleitet.\nEAC Exchange Admin Center öffnen → admin.exchange.microsoft.com Link auf E-Mail-Fluss → Regeln gehen + Eine Regel hinzufügen → Eine neue Regel erstellen Bedingung setzen: Diese Regel anwenden, wenn → Der Empfänger → Domäne ist (deinedomain.com) Aktion setzen: Gehen Sie wie folgt vor… → Nachrichten umleiten an: (leitet nur weiter, Original-Empfänger erhält keine Kopie) oder: Add recipients → in the To box (fügt Empfänger hinzu, Original-Postfach bekommt trotzdem eine Kopie) Regel aktivieren und speichern Defender Portal https://security.microsoft.com/ E-Mail \u0026amp; Zusammenarbeit Richtlinien und Regeln \u0026gt; Bedrohungsrichtlinien \u0026gt; Antispam \u0026gt; Antispam-Ausgangsrichtlinie (Standard) Ausgehenede\nPowerShell Connect-ExchangeOnline -UserPrincipalName admin@deinedomain.com Get-Mailbox -ResultSize Unlimited | Where-Object {$_.PrimarySmtpAddress -like \u0026#34;*@deinedomain.com\u0026#34;} | Set-Mailbox -ForwardingSMTPAddress \u0026#34;ziel@anderedomain.com\u0026#34; -DeliverToMailboxAndForward $true ","date":"March 14, 2026","permalink":"/anleitungen/m365/alle-mails-forwarden/","summary":"Mit dem Weg weg von Office 365 oder Microsoft 365, hin zur eigenen Mailcow habe ich für die Migration die komplette Domain weitergeleitet.\nEAC Exchange Admin Center öffnen → admin.exchange.microsoft.com Link auf E-Mail-Fluss → Regeln gehen + Eine Regel hinzufügen → Eine neue Regel erstellen Bedingung setzen: Diese Regel anwenden, wenn → Der Empfänger → Domäne ist (deinedomain.com) Aktion setzen: Gehen Sie wie folgt vor… → Nachrichten umleiten an: (leitet nur weiter, Original-Empfänger erhält keine Kopie) oder: Add recipients → in the To box (fügt Empfänger hinzu, Original-Postfach bekommt trotzdem eine Kopie) Regel aktivieren und speichern Defender Portal https://security.microsoft.com/ ","title":"Domain forwarden mit Exchange 365","type":"anleitungen"},{"content":"Quelle: reddit:/rClaudeCode (Free-_-Yourself) Claude Code Cheat Sheet Everything you need in one place — Commands, Shortcuts, Features \u0026amp; Tips\n2026 EDITION\n⌨️ Keyboard Shortcuts Essential Key Action Enter Send message / submit Esc Interrupt / stop generation Esc Esc Open rewind menu (go back in conversation or code) Ctrl+C Cancel current operation (hard stop) Ctrl+D Exit Claude Code Shift+Tab Cycle modes: Normal → Auto-Accept → Plan Navigation Key Action Ctrl+R Search command history Ctrl+T Toggle task list Ctrl+O Toggle verbose transcript Ctrl+G Open external editor (write long prompts) Ctrl+V Paste image (screenshots, diagrams) Ctrl+S Stash current prompt (save for later) Cmd+P / Meta+P Open model picker (switch models quick) Cmd+T / Meta+T Toggle extended thinking Editing (Bash-style) Key Action Ctrl+A / Ctrl+E Start / end of line Opt+F / Opt+B Word forward / back Ctrl+W Delete previous word \\ + Enter New line (without sending) Background Tasks Key Action Ctrl+B Send running task to background 💡 Tip: Run /terminal-setup to enable Shift+Enter for multi-line input in iTerm2 \u0026amp; VS Code. Run /keybindings to customize all shortcuts.\n⚡ Slash Commands Session Control Command Action /clear Reset conversation history (fresh start) /compact [hint] Compress context to save tokens. Optional hint for what to keep. /rewind Go back in conversation AND/OR code changes /export [file] Export conversation to file or clipboard /cost Show session cost \u0026amp; token usage /usage Show plan usage \u0026amp; rate limits /context Token consumption visualization Configuration Command Action /config Open settings panel /model Switch between Sonnet / Opus / Haiku /permissions View \u0026amp; update tool permissions /keybindings Open keyboard shortcuts config file /vim Toggle vim mode for input /terminal-setup Setup Shift+Enter for multi-line input Development Command Action /init Create CLAUDE.md for your project — do this first! /memory View \u0026amp; edit CLAUDE.md project memory /review Code review analysis /doctor Environment diagnostics \u0026amp; health check /agents Manage sub-agents /mcp Manage MCP servers Advanced Command Action /insights Generate HTML usage report 🆕 /pr_comments View GitHub PR feedback /install-github-app Setup automated PR reviews /tasks Persistent task list management /teleport Transfer session between web ↔ local 🚀 CLI Launch Flags Starting Sessions Flag Action claude Start interactive session claude \u0026quot;query\u0026quot; Start with an initial prompt claude -p \u0026quot;query\u0026quot; Print mode — answer \u0026amp; exit (for scripting) claude -c Continue last conversation claude -r \u0026quot;name\u0026quot; Resume specific session by name or ID claude -w name Start in isolated git worktree Model \u0026amp; Behavior Flag Action --model sonnet Use Sonnet (fast, cheap) --model opus Use Opus (smartest) --agent my-agent Use a specific sub-agent --permission-mode plan Start in plan mode --max-turns N Limit conversation turns --max-budget-usd N Set max spend limit Context \u0026amp; Directories Flag Action --add-dir ../path Add extra directories to context --chrome Enable browser integration --verbose Show detailed logging Permissions Flag Action --allowedTools Whitelist specific tools --disallowedTools Block specific tools --tools \u0026quot;Bash,Edit\u0026quot; Restrict to only these tools Output Formats (for -p mode) Flag Action --output-format text Plain text (default) --output-format json Structured JSON --output-format stream-json Real-time streaming JSON 💡 Tip: Pipe data in! git diff | claude -p \u0026quot;review this\u0026quot; or cat error.log | claude -p \u0026quot;explain\u0026quot;\n🧩 The Big 5 — Claude Code Extension System 1. CLAUDE.md — Project Memory What A markdown file Claude reads every session. Your project\u0026rsquo;s \u0026ldquo;brain dump\u0026rdquo; — coding style, architecture, common commands, conventions. Where .claude/CLAUDE.md (project) or ~/.claude/CLAUDE.md (global) Create Run /init in your project — Claude generates it for you 2. Custom Slash Commands What Your own /commands. Markdown files with prompts that YOU invoke. Like prompt templates. Where .claude/commands/ (project) or ~/.claude/commands/ (global) Use Filename = command name. review.md → type /project:review 3. Skills — Auto-Invoked Knowledge What Like commands, but Claude decides when to use them automatically. You DON\u0026rsquo;T invoke them — Claude detects when they\u0026rsquo;re relevant. Where .claude/skills/ with a SKILL.md inside each skill folder Use Just work on your project — Claude picks up relevant skills from context 4. Sub-Agents — Specialized Helpers What Separate Claude instances with their own context \u0026amp; role. Like team members: reviewer, debugger, architect, etc. Where .claude/agents/ (markdown files with YAML metadata) Invoke /agents to manage, or just say \u0026ldquo;Use the reviewer agent\u0026rdquo; CLI --agent my-agent or --agents '{json}' 5. MCP Servers — External Tool Connections What Connect Claude to external tools: GitHub, Notion, databases, APIs, browsers, etc. Setup claude mcp add \u0026lt;name\u0026gt; \u0026lt;command\u0026gt; List claude mcp list Config --mcp-config ./mcp.json at launch + Plugins — Community Extensions What Bundles of commands, skills, hooks \u0026amp; more from the community Browse /plugin to browse, install, enable, disable Dir --plugin-dir ./my-plugins for local plugins How they differ:\nCustom Commands → YOU invoke them vs Skills → CLAUDE invokes them vs Sub-Agents → Separate AI instances vs MCP → External tool connections\n🔄 Permission Modes Mode Description Normal Claude asks permission for every tool use (read, write, bash, etc.) Auto-Accept Claude runs tools WITHOUT asking. Faster but less control. Good for trusted tasks. Plan Mode Claude ONLY reads \u0026amp; plans. Won\u0026rsquo;t write or run anything. Review first, then switch to Normal to execute. Cycle: Shift+Tab → Normal → Auto-Accept → Plan → Normal\u0026hellip;\n💡 Best workflow: Start in Plan Mode to explore \u0026amp; understand the problem. Review Claude\u0026rsquo;s plan. Switch to Normal/Auto-Accept to implement.\n🪝 Hooks — Event Automation Hook Description PreToolUse Runs BEFORE Claude uses a tool — validate, block, or modify PostToolUse Runs AFTER a tool — check results, auto-format, lint UserPromptSubmit Before your message is processed Stop When Claude finishes its response SessionStart When a session begins SessionEnd When a session ends PreCompact Before context compression Notification When Claude sends a notification 💡 Example: Auto-run prettier after every file edit, or block writes to .env files. Configure in your settings JSON.\n✨ Input Superpowers Feature Description @ mention Type @ to reference files \u0026amp; folders. Claude reads them into context. ! prefix Type ! to run shell commands inline. E.g., ! git status Paste images Ctrl+V to paste screenshots, diagrams, error images directly Pipe input cat file.py | claude -p \u0026quot;explain\u0026quot; — feed data directly Multi-dir claude --add-dir ../api ../web — work across multiple projects Worktrees claude -w feature — isolated git branch + Claude session ⚠️ Pro tip: Use @ references instead of copy-pasting file contents. It\u0026rsquo;s smarter with context and uses fewer tokens.\n⚙️ Configuration Settings Priority (highest → lowest) Level Location Enterprise /etc/claude-code/managed-settings.json Project Local .claude/settings.local.json (your personal project settings) Project Shared .claude/settings.json (committed to git, shared with team) User Global ~/.claude/settings.json (your defaults) Config CLI Command Action claude config list Show all settings claude config get key Check a value claude config set key value Change a value claude config add key value Add to array 💡 Permissions example: Allow git commands without asking: add \u0026quot;Bash(git:*)\u0026quot; to your allowedTools in settings.\n📁 File Structure Map Project Level (.claude/) File/Dir Purpose CLAUDE.md Project memory — conventions, architecture, commands settings.json Shared project settings (committed to git) settings.local.json Your personal settings (gitignored) commands/ Project slash commands (*.md files) skills/ Project skills (folders with SKILL.md) agents/ Project sub-agents (*.md files) Global Level (~/.claude/) File/Dir Purpose CLAUDE.md Global memory (applies to ALL projects) settings.json Global settings commands/ Personal global commands skills/ Personal global skills keybindings.json Custom keyboard shortcuts ⏪ Rewind \u0026amp; Checkpoints Key/Command Action Esc Esc Open rewind menu anywhere /rewind Same but typed as command Rewind Options Option Description Conversation Go back in chat only. Code stays as-is. Code Restore files only. Conversation stays. Full Rewind Restore both conversation AND code to a point. ⚠️ Note: Bash side-effects (database changes, API calls, deleted files via rm) can\u0026rsquo;t be rewound. Checkpoints only track file edits by Claude. Use Git for permanent safety.\n🎯 Pro Workflow — How to Get the Best Out of Claude Code Starting a New Project cd project \u0026amp;\u0026amp; claude → /init → Edit CLAUDE.md → Code!\nThe Plan → Execute Pattern Shift+Tab → Plan Mode → Describe what you want → Review Claude\u0026rsquo;s plan → Shift+Tab → Normal/Auto → Execute\nSaving Money Strategy Why Use /compact When context gets big, compress it. Saves tokens dramatically. Use /clear Between unrelated tasks. Don\u0026rsquo;t carry irrelevant context. Use Sonnet For routine tasks. Save Opus for complex architecture decisions. Use @ refs Instead of pasting code — smarter context management. Debugging Like a Pro Strategy Why Paste errors Copy-paste the full error message. Claude parses stack traces brilliantly. Paste screenshots Ctrl+V a screenshot of the bug. Claude sees it. Pipe logs cat error.log | claude -p \u0026quot;what's wrong?\u0026quot; /doctor If something feels broken, run this first. Parallel Development Strategy How Worktrees claude -w feature-auth — isolated branch + session Multiple dirs --add-dir ../api ../web — work across repos Background Ctrl+B sends a task to background so you can start another Agent Teams Multiple Claude instances collaborating (experimental) 🆕 🛠️ Create Custom Commands Step Action 1. Create file .claude/commands/review.md 2. Write prompt The markdown content IS the prompt Claude will use 3. Use it Type /project:review in Claude Code Optional YAML Frontmatter Key Purpose argument-hint Placeholder text for argument input description Shows in /help listing allowed-tools Restrict what tools the command can use model Force a specific model for this command Variable: $ARGUMENTS Use $ARGUMENTS in your markdown — it gets replaced with whatever you type after the command.\n💡 Example: /project:review src/auth.ts → $ARGUMENTS = \u0026ldquo;src/auth.ts\u0026rdquo;\n📋 Quick Reference — Most Used Combos Daily Essentials What How Start project cd project \u0026amp;\u0026amp; claude Continue where I left off claude -c Quick question, no session claude -p \u0026quot;how do I...\u0026quot; Review my changes git diff | claude -p \u0026quot;review\u0026quot; Explain error cat error.log | claude -p \u0026quot;explain\u0026quot; Check cost Type /cost anytime Undo mistake Esc Esc → rewind Power Moves What How Parallel sessions claude -w feature-a + claude -w feature-b Custom reviewer agent Create .claude/agents/reviewer.md Auto-format on edit PostToolUse hook → run prettier Web session claude --remote \u0026quot;fix the bug\u0026quot; Transfer to local claude --teleport Budget limit claude -p --max-budget-usd 2 \u0026quot;query\u0026quot; Scripted automation claude -p --output-format json \u0026quot;query\u0026quot; | jq ","date":"March 9, 2026","permalink":"/ki/claude/claude-cheatsheet/","summary":"Quelle: reddit:/rClaudeCode (Free-_-Yourself) Claude Code Cheat Sheet Everything you need in one place — Commands, Shortcuts, Features \u0026amp; Tips\n","title":"Cl.Cheatsheet","type":"ki"},{"content":"Die Sicherheitserwägungen für einen lokalen Agenten sind immanent. Was heißt das? Im Falle von claude code kann dieser einfach mal eben den Schlüsselbund auslesen, wenn man ihn lässt.\nSandbox Ein Lösungsansatz ist Sandboxing. Das Prinzip ist es den Agenten einzusperren in einer Umgebung aus der er nur mit Zustimmung ausbrechen kann und somit auch nur dann auf Ressourcen zugreift, wenn das ausdrücklich gewünscht ist. In Setup hatte ich auf einen /reddit verlinkt, der das Problem aufzeigt. Das es sich dabei um eine macOS Schlüsselbund handelt ist als Analogie zu anderen Tools auf anderen Betriebssystemen zu sehen. Oder auch Zugriff auf die Mailbox, oder \u0026hellip;\nDocker Sandbox docker bringt eine Sandbox mit. Wie in Docker Sandboxes: Run Claude Code and Other Coding Agents Unsupervised (but Safely) beschrieben werden alle gängigen KI-Agenten vom Prinzip her eingesperrt.\nMit der passenden Version von docker (mind. 4.58) werden die Agenten in microVMs isoliert und laufen mit jeweils einem eigenen docker daemon. Das versetzt den Agenten in die Lage weitere Container zu laden, zu testen, deren Umgebung zu manipulieren ohne dass der Host \u0026ldquo;kontaminiertoder kompromittiert wird.\nclaude \u0026ldquo;dockern\u0026rdquo; cd ~/project-dir docker sandbox run claude Weitere Informationen zur Inbetriebnahme, z.B. die Übergabe von API-KEYs an die Sandbox liefern die Dokumentationen unter:\ndocker docs . Sandbox Claude Code nono.sh Was ist nono? Für macOS gibt es mit nono eine Alternative die systemeigene Mechanismen zum sandboxen verwendet. Unter macOS ist das Seatbelt. Für gängige Linux-Distributionen ist dies Landlock LSM. Interessierte Linux-Benutzer sollten die Webseite https://nono.sh im Auge behalten.\nNach eigenem Motto der Entwickler von decodebytes, nimmt nono dem KI-Agenten bewusst den Wind aus den Segeln. Zu deutsch: nono gibt dem User das Kommando\nAI agent security that makes the dangerous bits structurally impossible.\nVorbereitung: brew Der Fingerabdruck ist dabei aufgrund der Systemnähe kleiner als bei docker. Und docker muss auch nicht installiert sein. Stattdessen braucht man in Schritt 1 brew.\nbrew gibt es unter brew.sh und auch alle passenden Informationen. Die Einarbeitung (das Lesen) lohnt sich, denn die Befehle aus irgendwelchen Ressourcen sind immer gerne einfach exekutiert. Oft ohne Sinn und Verstand. Was man sich damit ins Haus holt ergibt aber u.U. ein böses Erwachen. Im Falle von brew ist das aber überschaubar. Es handelt sich um den \u0026ldquo;fehlenden Paket-Manager für macOS\u0026rdquo;.\n/bin/bash -c \u0026#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\u0026#34; Installation: nono Wie man claude code einsperrt haben die Entwickler in unten verlinktem YT zusammengefasst. Wer das YT nicht anschauen möchte, der führt folgenden Befehl im Terminal aus:\nbrew tap always-further/nono brew install nono (siehe nono-brew Seite)\nLive-Demo: nono Die Introduction gibt einen ausgezeichneten Überblick:\nDecodebytes gibt zudem unmittelbaren und wirklich erstklassigen Support auf ihrem Discord-Server .\nVorbereitung zur Nachbereitung Meine ersten Schritte begannen mit der Version 0.13 und wir sind wenige Tage später bei 0.17. Der schnelle Wechsel sicher auch eine Reaktion auf das Feedback in Discord. Und entsprechend schnell sind auch die Änderungen in den Docs, z.B. Quickstart .\nMit der Installation von nono ist es natürlich noch nicht getan. Und wer den Start von claude mit nono gemacht hat, der wird wahrscheinlich gleich auch wieder am Anfang stehen. Der erste abgesicherte Start erfolgt mittels:\nnono run --profile claude-code -- claude What\u0026rsquo;s next?\nWenn man ohne API-Account unterwegs ist, z.B. Claude PRO, dann gibt es einen Schalter, wie man claude durch nono authentifiziert. Angesichts der schnellen Anpassungen verwaise ich hier auf den OAuth2 -Passus in der Dokumentation.\nLos geht\u0026rsquo;s\nAlle weiteren Möglichkeiten zu listen übersteigt diese kurze Anleitung. Daher viel Spaß jetzt.\nHinweis: laut github handelt es sich um eine Alpha!\nHandle with care - hot stuff!\r","date":"March 8, 2026","permalink":"/ki/claude/claude-sandbox/","summary":"Die Sicherheitserwägungen für einen lokalen Agenten sind immanent. Was heißt das? Im Falle von claude code kann dieser einfach mal eben den Schlüsselbund auslesen, wenn man ihn lässt.\nSandbox Ein Lösungsansatz ist Sandboxing. Das Prinzip ist es den Agenten einzusperren in einer Umgebung aus der er nur mit Zustimmung ausbrechen kann und somit auch nur dann auf Ressourcen zugreift, wenn das ausdrücklich gewünscht ist. In Setup hatte ich auf einen /reddit verlinkt, der das Problem aufzeigt. Das es sich dabei um eine macOS Schlüsselbund handelt ist als Analogie zu anderen Tools auf anderen Betriebssystemen zu sehen. Oder auch Zugriff auf die Mailbox, oder \u0026hellip;\n","title":"Cl.Sandbox","type":"ki"},{"content":" For those about to rock So - nach einigen Monaten Gemini ist Claude dran. Um ehrlich zu sein habe ich in Antigravity, nach anfänglicher Euphorie, immer erst die Anthropic Token aufgebraucht, bevor ich auf das Modell auf Gemini Pro umgestellt habe. Der Grund, warum ich von chatGPT zu Gemini gewechselt und jetzt zu Claude, blieb der Gleiche.\nDas Model fängt an zu schwafeln und verballert Tokens bis ins Rate-Limit.\nDemnach beginnt das Setup mit dem Kündgen des Gemini Pro Abos, und dem Abschließen eines Claude Pro Abos. In meinem Fall, da ich Claude Code ausprobieren will, was in der Free nicht dabei ist.\nDownload Zwei (3) Varianten (für den Mac):\nClaude Code App IDE Integration unter claude.ai herunterladen.\nInstallation Die Installation ist bekannt, einfach und man spielt damit rum bis man entweder /reddit oder den gesunden Menschenverstand einsetzen lässt und Claude sandboxed .\n","date":"March 8, 2026","permalink":"/ki/claude/claude-setup/","summary":" For those about to rock So - nach einigen Monaten Gemini ist Claude dran. Um ehrlich zu sein habe ich in Antigravity, nach anfänglicher Euphorie, immer erst die Anthropic Token aufgebraucht, bevor ich auf das Modell auf Gemini Pro umgestellt habe. Der Grund, warum ich von chatGPT zu Gemini gewechselt und jetzt zu Claude, blieb der Gleiche.\n","title":"Cl.Setup","type":"ki"},{"content":" Version: 0.2 · Sprache: Deutsch\n1. Was ist htmldwn? htmldwn ist ein lokaler Web-Konverter, der HTML-Inhalte in sauberes Markdown (speziell GitHub Flavored Markdown / GFM ) umwandelt.\nDie Anwendung läuft als kleiner Node.js-Webserver auf einem Rechner und ist über den Browser erreichbar. Sie benötigt keine Cloud-Anbindung und sendet keine Daten an Dritte.\nTypische Anwendungsfälle:\nAlte Unternehmens- oder Dokumentationswebseiten in Markdown-Dateien umwandeln HTML-Seiten für statische Site-Generatoren (Hugo, Jekyll, Eleventy) aufbereiten Rohe HTML-E-Mails oder Word-Exporte bereinigen Massenkonvertierung von Legacy-Seiten (z. B. Microsoft FrontPage, Dreamweaver) 2. Voraussetzungen Betriebssysteme Betriebssystem Unterstützt Hinweis macOS (12 Monterey+) ✅ Empfohlen Linux (Ubuntu 20.04+, Debian 11+, RHEL 8+) ✅ Windows (10, 11) ✅ Über CMD oder PowerShell Laufzeitumgebung Software Version Empfohlen Link Node.js 18.0.0+ 20 LTS oder 22 LTS nodejs.org npm 9.0.0+ Wird mit Node.js mitgeliefert — Node.js prüfen:\nnode --version # muss ≥ 18.0.0 sein npm --version # muss ≥ 9.0.0 sein Netzwerk Der Server läuft lokal auf Port 3099 Es wird keine Internetverbindung benötigt — außer beim URL-Crawl-Feature, das die angegebene Webseite direkt abruft 3. Installation # 1. In das Projektverzeichnis wechseln cd /pfad/zu/htmldwn # 2. Abhängigkeiten installieren (nur einmalig nötig) npm install Nach npm install sind alle benötigten Bibliotheken im Ordner node_modules/ vorhanden. Das Verzeichnis wird nicht im Git-Repository gespeichert und muss nach jedem frischen Klonen neu installiert werden.\n4. Server starten Schnellstart (alle Plattformen) npm start Der Server ist danach im Browser erreichbar:\nhttp://localhost:3099 Startdateien (Doppelklick) Im Projektverzeichnis liegen fertige Startdateien für alle Plattformen:\nPlattform Datei Hinweis Windows start.bat Doppelklick im Explorer macOS start.command Doppelklick im Finder (ggf. Ausführungsrecht setzen) Linux start.sh Terminal: bash start.sh macOS: Ausführungsrecht setzen (einmalig) chmod +x start.command Linux: Ausführungsrecht setzen (einmalig) chmod +x start.sh Entwicklungsmodus (Auto-Reload) Für Entwickler steht ein Modus mit automatischem Neustart bei Dateiänderungen zur Verfügung:\nnpm run dev Server beenden Im Terminal: Strg + C (Windows/Linux) bzw. ⌃C (macOS)\n4.2 Konfiguration (config.json) im Projektverzeichnis liegt eine zentrale Konfigurationsdatei config.json. Sie wird automatisch beim Serverstart geladen und kann ohne Codeänderungen angepasst werden.\n{ \u0026#34;server\u0026#34;: { \u0026#34;port\u0026#34;: 3099, \u0026#34;host\u0026#34;: \u0026#34;localhost\u0026#34; }, \u0026#34;app\u0026#34;: { \u0026#34;name\u0026#34;: \u0026#34;htmldwn\u0026#34;, \u0026#34;version\u0026#34;: \u0026#34;0.2\u0026#34; }, \u0026#34;conversion\u0026#34;: { \u0026#34;maxHtmlSize\u0026#34;: 10485760, \u0026#34;maxUploadSize\u0026#34;: 5242880, \u0026#34;crawlTimeoutMs\u0026#34;: 8000, \u0026#34;crawlMaxResponseSize\u0026#34;: 5242880 }, \u0026#34;rateLimit\u0026#34;: { \u0026#34;windowMs\u0026#34;: 900000, \u0026#34;maxRequests\u0026#34;: 100, \u0026#34;crawlWindowMs\u0026#34;: 60000, \u0026#34;crawlMaxRequests\u0026#34;: 10 } } Parameter-Referenz Schlüssel Typ Standard Bedeutung server.port Integer 3099 TCP-Port, auf dem der Server lauscht server.host String \u0026quot;localhost\u0026quot; Bind-Adresse (für lokalen Betrieb nicht ändern) app.name String \u0026quot;htmldwn\u0026quot; Anwendungsname (über /api/config abrufbar) app.version String \u0026quot;0.2\u0026quot; Versionsnummer (wird in der Statusleiste angezeigt) conversion.maxHtmlSize Integer (Bytes) 10485760 Max. Größe von eingefügtem HTML (10 MB) conversion.maxUploadSize Integer (Bytes) 5242880 Max. Größe von hochgeladenen Dateien (5 MB) conversion.crawlTimeoutMs Integer (ms) 8000 HTTP-Timeout beim URL-Crawl (8 Sekunden) conversion.crawlMaxResponseSize Integer (Bytes) 5242880 Max. Größe einer gecrawlten Seite (5 MB) rateLimit.windowMs Integer (ms) 900000 Zeitfenster für Rate-Limiting (15 Min.) rateLimit.maxRequests Integer 100 Max. Konvertierungen pro Zeitfenster rateLimit.crawlWindowMs Integer (ms) 60000 Zeitfenster für Crawl-Rate-Limit (1 Min.) rateLimit.crawlMaxRequests Integer 10 Max. Crawls pro Zeitfenster Port ändern (drei Möglichkeiten, in Prioritätsreihenfolge) # 1. CLI-Argument (höchste Priorität) node server/index.js --port 8080 # 2. Umgebungsvariable PORT=8080 npm start # 3. config.json (empfohlen für dauerhafte Änderung) # server.port: 8080 5. Bedienung Die Oberfläche besteht aus drei Bereichen (Navigation oben):\n5.1 Konvertieren Drei Eingabemethoden stehen zur Auswahl:\nTab Beschreibung HTML einfügen HTML-Code direkt in das Textfeld einfügen Datei hochladen Eine .html- oder .htm-Datei vom Rechner wählen URL crawlen Eine Web-URL angeben; htmldwn lädt die Seite herunter Nach der Konvertierung erscheint das Ergebnis rechts:\nAnsicht Beschreibung Quelltext Das fertige Markdown — direkt bearbeitbar Vorschau Gerenderte Darstellung (zur schnellen Kontrolle) Die Ausgabe kann heruntergeladen (.md-Datei) oder in die Zwischenablage kopiert werden. Der Dateiname wird automatisch aus der Quell-URL oder dem Dateinamen abgeleitet und kann vor dem Download manuell geändert werden.\n5.2 Quelltext bearbeiten Nach der Konvertierung ist der Quelltext direkt in der Eingabefläche bearbeitbar — ähnlich einem einfachen Texteditor:\nTippen, löschen, einfügen funktioniert wie erwartet Wechsel zur Vorschau zeigt sofort den aktuellen (bearbeiteten) Stand Herunterladen und In Zwischenablage übernehmen automatisch den bearbeiteten Text — nicht den ursprünglichen Konversionsergebnis Die Höhe des Editors lässt sich durch Ziehen der unteren rechten Ecke anpassen Eine neue Konvertierung überschreibt den aktuellen Editorinhalt Tipp: Kleine manuelle Nacharbeiten (z. B. Formatierung, Titelzeilen, Frontmatter) können direkt hier erledigt werden, bevor die Datei gespeichert wird.\n5.3 Regelwerk Hier werden benutzerdefinierte Konvertierungsregeln verwaltet. Eine gespeicherte Regel-Datei kann aus dem Dropdown ausgewählt werden — sie wird sofort geladen und alle Regeln erscheinen in der Liste.\n6. Das Regelwerk Das Regelwerk ist das Herzstück von htmldwn für anspruchsvolle Konvertierungen. Es erlaubt, den HTML-Quelltext vor der Konvertierung und das fertige Markdown nach der Konvertierung durch Suchen-\u0026amp;-Ersetzen-Regeln zu bereinigen.\nFunktionsprinzip Die Konvertierungs-Pipeline läuft in dieser Reihenfolge:\nHTML-Quelle │ ▼ [0] Cheerio HTML-Vorverarbeitung (automatisch, immer aktiv) │ - Layout-Tabellen erkennen und plattmachen │ - FrontPage-Kommentare entfernen │ - Spacer-Bilder entfernen │ - Tabellen ohne Kopfzeile: erste Zeile wird Header │ ▼ [1] Pre-Regeln aus dem Regelwerk (auf den HTML-String angewendet) │ → Suchen \u0026amp; Ersetzen im HTML, bevor Turndown konvertiert │ ▼ [2] Turndown-Konvertierung (HTML → Markdown) │ - Eingebettete Regeln: \u0026lt;pre\u0026gt;/\u0026lt;code\u0026gt; → Backticks │ - \u0026lt;strong\u0026gt;/\u0026lt;b\u0026gt; → **text** (direkt am Text) │ - GFM-Tabellen, Listen, Überschriften, Links … │ ▼ [3] Post-Regeln aus dem Regelwerk (auf den Markdown-String angewendet) │ → Suchen \u0026amp; Ersetzen im fertigen Markdown │ ▼ [4] Markdown-Ausgabe Aufbau einer Regel (JSON) Jede Regel ist ein JSON-Objekt mit diesen Feldern:\n{ \u0026#34;description\u0026#34;: \u0026#34;Kurze Beschreibung was die Regel macht\u0026#34;, \u0026#34;search\u0026#34;: \u0026#34;zu suchender Text oder Regex-Muster\u0026#34;, \u0026#34;replace\u0026#34;: \u0026#34;Ersetzungstext\u0026#34;, \u0026#34;isRegex\u0026#34;: true, \u0026#34;mode\u0026#34;: \u0026#34;pre\u0026#34; } Feld Typ Beschreibung description String Erklärender Text (nur zur Dokumentation, hat keine Funktion) search String Suchbegriff — bei isRegex: true ein regulärer Ausdruck replace String Ersetzungstext; bei Regex: $1, $2 … für Gruppen isRegex Boolean true = Regex-Muster, false = exakter Textvergleich mode String \u0026quot;pre\u0026quot; = auf HTML, \u0026quot;post\u0026quot; = auf Markdown, \u0026quot;both\u0026quot; = beides Regex-Grundlagen für Regeln Häufig verwendete Regex-Muster:\nMuster Bedeutung Beispiel . Beliebiges Zeichen colou.r → color, colour * 0 oder mehr des vorherigen ab*c → ac, abc, abbc + 1 oder mehr des vorherigen ab+c → abc, abbc ? 0 oder 1 des vorherigen colou?r → color, colour [^\u0026lt;\\n] Kein \u0026lt; und kein Zeilenumbruch Einzeiligen Text matchen [\\s\\S]*? Beliebiger Text inkl. Zeilenumbrüche (nicht-gierig) Mehrzeilige Blöcke $1, $2 Capture-Gruppen in replace Gefangenen Text wiederverwenden Wichtig bei JSON-Regelwerken: Backslashes müssen doppelt geschrieben werden: \\\\s statt \\s, \\\\n statt \\n usw.\nBeispielregeln \u0026lt;font\u0026gt;-Tags entfernen (Inhalt behalten) { \u0026#34;description\u0026#34;: \u0026#34;font-Tags entfernen\u0026#34;, \u0026#34;search\u0026#34;: \u0026#34;\u0026lt;font[^\u0026gt;]*\u0026gt;\u0026#34;, \u0026#34;replace\u0026#34;: \u0026#34;\u0026#34;, \u0026#34;isRegex\u0026#34;: true, \u0026#34;mode\u0026#34;: \u0026#34;pre\u0026#34; } \u0026amp;nbsp; → normales Leerzeichen { \u0026#34;description\u0026#34;: \u0026#34;Non-breaking Space normalisieren\u0026#34;, \u0026#34;search\u0026#34;: \u0026#34;\u0026amp;nbsp;\u0026#34;, \u0026#34;replace\u0026#34;: \u0026#34; \u0026#34;, \u0026#34;isRegex\u0026#34;: false, \u0026#34;mode\u0026#34;: \u0026#34;pre\u0026#34; } Mehrfache Leerzeilen auf zwei reduzieren (Post-Rule) { \u0026#34;description\u0026#34;: \u0026#34;Mehrfache Leerzeilen normalisieren\u0026#34;, \u0026#34;search\u0026#34;: \u0026#34;\\\\n{3,}\u0026#34;, \u0026#34;replace\u0026#34;: \u0026#34;\\n\\n\u0026#34;, \u0026#34;isRegex\u0026#34;: true, \u0026#34;mode\u0026#34;: \u0026#34;post\u0026#34; } WordPress-Shortcodes entfernen (Post-Rule) { \u0026#34;description\u0026#34;: \u0026#34;WordPress Shortcodes [caption ...] entfernen\u0026#34;, \u0026#34;search\u0026#34;: \u0026#34;\\\\[/?[a-zA-Z_-]+[^\\\\]]*\\\\]\u0026#34;, \u0026#34;replace\u0026#34;: \u0026#34;\u0026#34;, \u0026#34;isRegex\u0026#34;: true, \u0026#34;mode\u0026#34;: \u0026#34;post\u0026#34; } Regelwerke speichern und laden Regeln können über die Regelwerk-Seite in einer JSON-Datei im rules/-Verzeichnis gespeichert werden. Der Dateiname muss auf .json enden. Gespeicherte Dateien erscheinen automatisch im Dropdown der Konvertierseite und können dort ausgewählt werden.\n7. Verfügbare Regelwerke Im Verzeichnis rules/ liegen vier vorgefertigte Regelwerke:\ndefault.json — Universelle Basis Empfohlen als Grundlage für alle Konvertierungen. Enthält:\n\u0026lt;br\u0026gt;-Varianten → Markdown-Zeilenumbruch \u0026amp;nbsp; → Leerzeichen HTML-Kommentare entfernen Post-Sicherheitsnetze für \u0026lt;code\u0026gt;, \u0026lt;pre\u0026gt;, \u0026lt;strong\u0026gt;, \u0026lt;b\u0026gt; Whitespace-Normalisierung legacy-frontpage.json — Allgemeines 90er/2000er HTML Breiteres Netz für alle Seiten des FrontPage/Dreamweaver-Zeitalters:\nZusätzlich: \u0026lt;center\u0026gt;, \u0026lt;b\u0026gt;/\u0026lt;i\u0026gt; normalisieren Bullet-Bilder aus FrontPage-Themes entfernen Horizontale Trennlinien als Markdown-HR hugo-ready.json — Hugo-CMS-Vorbereitung Für Seiten, die nach Hugo migriert werden:\nWordPress-Shortcodes entfernen Hugo-spezifische Bereinigungen 8. Grenzen \u0026amp; bekannte Einschränkungen ⚠️ Was nicht oder nur eingeschränkt funktioniert JavaScript-gerenderte Inhalte Seiten, die ihren Inhalt erst durch JavaScript aufbauen (React, Angular, Vue, Single-Page-Apps), können nicht gecrawlt werden. htmldwn ruft nur den statischen HTML-Quelltext ab — was der Browser zur Laufzeit rendert, ist nicht sichtbar. Lösung: In solchen Fällen den HTML-Quelltext manuell aus dem Browser-DevTools kopieren und über „HTML einfügen\u0026quot; einsetzen.\nCSS-Formatierung geht verloren Farben, Schriftgrößen, Abstände und alle visuellen Stile werden nicht übertragen. Markdown kennt keine CSS-Formatierung. Nur Struktur und Semantik (Überschriften, Listen, Fett/Kursiv, Tabellen, Links) bleiben erhalten.\nKomplexe verschachtelte Tabellen Tief verschachtelte Tabellen-in-Tabellen-Strukturen werden nur begrenzt korrekt verarbeitet. Layout-Tabellen (ohne \u0026lt;th\u0026gt;) werden automatisch geplättet — dabei kann bei sehr komplexen Strukturen Inhaltsreihenfolge verloren gehen. Datentabellen werden korrekt als GFM-Tabellen ausgegeben.\nBilder Bilder werden als Markdown-Bildlinks übernommen: ![alt](src). Relative Bildpfade (z. B. ../images/foto.jpg) bleiben relativ und sind nach der Migration möglicherweise ungültig. Die Bilddateien selbst werden nicht heruntergeladen.\nFormulare und interaktive Elemente \u0026lt;form\u0026gt;, \u0026lt;input\u0026gt;, \u0026lt;button\u0026gt;, \u0026lt;select\u0026gt; werden vollständig entfernt. Markdown hat kein Konzept für Formulare.\nIframes \u0026lt;iframe\u0026gt;-Inhalte werden entfernt. Der eingebettete Inhalt (z. B. YouTube- Videos, Karten) ist nicht zugänglich.\nSehr große Seiten Der Crawler akzeptiert maximal 5 MB pro Seite. Für lokale Datei-Uploads gilt dieselbe Grenze. Größere Dateien müssen aufgeteilt werden.\nTimeout beim Crawlen Der Crawler wartet maximal 8 Sekunden auf eine Antwort. Langsame Server oder Seiten mit großen Ressourcen können einen Timeout auslösen.\nPasswortgeschützte Seiten Der Crawler kann sich nicht authentifizieren. Seiten hinter Login-Masken, Basic Auth oder IP-Sperren sind nicht zugänglich.\nZeichenkodierung Die meisten Verzeichnisse werden korrekt erkannt (UTF-8, ISO-8859-1, Windows-1252). Bei seltenen oder alten Zeichensätzen (z. B. ISO-2022-JP, EBCDIC) kann es zu Darstellungsfehlern kommen.\nSVG und MathML SVG-Grafiken und mathematische Formeln (MathML) werden entfernt.\nTabellen ohne semantischen Header Tabellen, bei denen alle Zeilen rein strukturell gleichwertig sind (keine inhaltlich ausgezeichnete Kopfzeile), werden mit der ersten Zeile als Header ausgegeben. Das ist technisch korrekt aber inhaltlich möglicherweise ungenau — in diesem Fall die erste Zeile manuell anpassen.\n9. Sicherheitshinweise htmldwn ist für den lokalen Einsatz konzipiert. Folgende Sicherheitsmaßnahmen sind eingebaut:\nRate Limiting: Konvertierungen sind auf 100 Anfragen / 15 Minuten begrenzt; Crawl-Anfragen auf 20 / 15 Minuten SSRF-Schutz: Crawl-Anfragen an private IP-Adressen (localhost, 192.168.x.x, 10.x.x.x usw.) werden blockiert Datei-Typ-Validierung: Nur .html- und .htm-Dateien werden akzeptiert Pfad-Traversal-Schutz: Regelwerk-Dateinamen werden validiert Helmet: HTTP-Sicherheits-Header sind gesetzt ⚠️ htmldwn sollte nicht ohne weitere Absicherung im öffentlichen Internet betrieben werden. Für Team-Einsatz empfiehlt sich ein VPN oder Reverse Proxy mit Authentifizierung.\nhtmldwn v0.2\n","date":"February 25, 2026","permalink":"/programme/htmldwn/anleitung/","summary":" Version: 0.2 · Sprache: Deutsch\n1. Was ist htmldwn? htmldwn ist ein lokaler Web-Konverter, der HTML-Inhalte in sauberes Markdown (speziell GitHub Flavored Markdown / GFM ) umwandelt.\n","title":"Benutzerhandbuch","type":"programme"},{"content":" (Update) Das Dokument befindet sich in Überarbeitung\nIn Zeiten von Prozess-Automatisierungen kommt häufig die Anfrage nach dem automatisierten Weiterleiten von Mails, anhand bestimmter Kriterien und Filter. Der häufigste Fall ist das automatische weiterleiten in Exchange Online (Microsoft 365) für den Rechnungseingang. Idealerweise wird dabei nur eine Empfängeradresse rechnung@deine-domain.tld eingerichtet und kommuniziert. Die Zieladresse wird sowohl von intern als auch extern adressiert und leitet Mails an nachgelagerte Systeme weiter, z.B. Buchhaltung (DATEV) oder Rechnungsprüfung (CANDIS).\nDas hört sich unheimlich einfach an. Der erste Gedanke ist das Einrichten einer Regel im Outlook Web Access (https://outlook.office.com/mail/) . So eine Regel kann beispielsweise so aussehen, dass eine Mail bei Eintreffen auf \u0026ldquo;Von:\u0026rdquo; hin gefiltert wird, meist in Verbindung mit einem Schlüsselwort. Zum Beispiel „Rechnung“ und/oder weiteren Schlüsselwörtern im Nachrichtentext, wie \u0026ldquo;Name der Organisation: Contoso Inc.\u0026rdquo;. Die Bedingungen sind dann die Weiterleitung an die ziel@adres.se . Ich markiere diese E-Mails in der Regel noch als gelesen, lösche diese oder verschieben sie auch gerne mal. Hier begrenzt nur der Filter die Phantasie.\nÜberraschung Das Ergebnis dieser Aktion wird aber eher überraschen. Wenn der Administrator hier nicht vorgebaut hat, wird es zu einem Bouncen der Mail führen.\n","date":"February 22, 2026","permalink":"/anleitungen/m365/mails-forwarden/","summary":" (Update) Das Dokument befindet sich in Überarbeitung\n","title":"Mails automatisch weiterleiten mit Exchange Online","type":"anleitungen"},{"content":"Ich versuche mich wieder am vibe coding (KI-Programmieren). Das Projekt soll ganz einfach HTML in MD konvertieren. Das ganz einfach wird noch lustig. Das HTML stammt noch aus der Zeit, in der Tabellen zum Stylen von Seiten verwendet wurden. Und die zu konvertierende Beschreibung enthält die Pipe |\nHalleluhja.\nLogik Ein erster Entwurf hatte dabei das Phänomen, dass wir ja früher alle Tabellen zweckentfremdet hatten, völlig außer Acht gelassen. Es hatte in der Version 0.2 alle fein geklappt. Einfache Seite - Import (crawl) - Export - fertig. Und dann kam die Seite mit ineinander verschachtelten Tabellen. Import - Export - \u0026hellip;?\nWo ist mein Inhalt? Vieles geht auf dem Weg verloren und das Vergleichen macht schon keinen Spaß. Man sollte meinen die KI ist schlauer. Zumindest wird es einem immer so verkauft, aber wenn der Prompt nichts taugt, dann kommt manchmal was seltsames raus. So auch in den ersten Entwürfen. Inhalte fehlen, oder sind de-platziert am Ende.\n","date":"February 20, 2026","permalink":"/posts/neuigkeiten/","summary":"Ich versuche mich wieder am vibe coding (KI-Programmieren). Das Projekt soll ganz einfach HTML in MD konvertieren. Das ganz einfach wird noch lustig. Das HTML stammt noch aus der Zeit, in der Tabellen zum Stylen von Seiten verwendet wurden. Und die zu konvertierende Beschreibung enthält die Pipe |\nHalleluhja.\nLogik Ein erster Entwurf hatte dabei das Phänomen, dass wir ja früher alle Tabellen zweckentfremdet hatten, völlig außer Acht gelassen. Es hatte in der Version 0.2 alle fein geklappt. Einfache Seite - Import (crawl) - Export - fertig. Und dann kam die Seite mit ineinander verschachtelten Tabellen. Import - Export - \u0026hellip;?\n","title":"HTML in MD","type":"posts"},{"content":"HUGO als Generator statischer HTML-Seiten hat einige Besonderheiten bei der Integration von spezifischen Elementen. Neben Standard-Markdown kann auch HTML zur Einbindung von Elementen in eine Seite verwendet werden\nBilder Die Integration von Bildern kann unterschiedlich erfolgen. Es gilt zu beachten, dass die Verlinkung mit den unterschiedlichen Methoden zu unterschiedlichen Ergebnissen führt. Das gilt insbesondere für den Dateipfad in Verbindung mit HUGO!\nBeispiel:\nWird das Bild in einem Ordner images parallel zur aufrufenden Seite abgelegt, dann muss es aus Sicht von HUGO mit ../images/bsp.jpg verlinkt werden. In der Markdown-Vorschau (hier im Tool) wird das Bild durch den ALT-Text ersetzt. In der HUGO Vorschau das Bild.\nMarkdown HTML HUGO Dies ist eine Entwicklung innerhalb des Themes um Thumbnail-Funktionalität zur Verfügung zu stellen. Vorteil ist der eingesparte Platz.\n{{ \u0026lt; figure src=\u0026#34;../images/bsp.jpg\u0026#34; alt=\u0026#34;Thumbnailintegration in HUGO (Alt-Text)\u0026#34; link=\u0026#34;../images/bsp.jpg\u0026#34; caption=\u0026#34;Thumbnailintegration in HUGO (Caption)\u0026#34; class=\u0026#34;\u0026#34; width=\u0026#34;300\u0026#34; \u0026gt; }} ACHTUNG: Obiger Code ist der Übersicht halber mit {{ \u0026lt; dargestellt. Es darf kein Leerzeichen zwischen den 3 Zeichen sein. Wird dies hier in der Code-view gemacht, interpretiert HUGO dies dennoch.\nThumbnailintegration in HUGO (Caption)\nTabellen ","date":"January 12, 2026","permalink":"/use/02-text-html-integrationen/","summary":"HUGO als Generator statischer HTML-Seiten hat einige Besonderheiten bei der Integration von spezifischen Elementen. Neben Standard-Markdown kann auch HTML zur Einbindung von Elementen in eine Seite verwendet werden\nBilder Die Integration von Bildern kann unterschiedlich erfolgen. Es gilt zu beachten, dass die Verlinkung mit den unterschiedlichen Methoden zu unterschiedlichen Ergebnissen führt. Das gilt insbesondere für den Dateipfad in Verbindung mit HUGO!\n","title":"Text-, HTML-Integrationen in Mardown","type":"use"},{"content":"Zeit für ein neues Tutorial, oder?\nMotivation Was ist die Mailcow und wie komme ich dazu? In meinen gaaaaanz alten Anleitungen hatte ich selbst einen Anti-Spam-Gateway im Programm. Das Aufsetzen und Pflegen, der Kampf gegen die Spamer usw. hatten mich aber irgendwann (auch aus zeitlichen Gründen) zu M365 überlaufen lassen. Toller Dienst, jeder kennt ihn, viele nutzen ihn.\nMittlerweile bin ich aber aus diversen Gründen ins Lager der Open Source übergelaufen. Nicht nur aus Kostengründen. Mein Postfach war immer Bestandteil des Office-Paketes. Aber da ich immer weniger Office mache (oder nutzen will), habe ich dies weg rationalisiert oder verwende Alternativen. Und dann ist da noch das Thema \u0026ldquo;meine Daten sind meine Daten\u0026rdquo;. Ohne weiter politisch zu werden, ist das also die Motivation.\nZiel Schnell, sicher, kostengünstig (-los), ressourcenschonend\nSuche Eine Alternative die sich schnell in meine docker + traefik Umgebung einspannen lässt war das Ziel, ergo eine Google-Suche später war ich mit einigen Alternativen am Gange. Der Auswahlprozess war dann das eine, die Installation der Kuh das andere. Die meisten Anleitungen hatten keinen traefik im Weg, was durchaus Probleme machte. Der Server lies sich vermeintlich einrichten, aber anmelden an der GUI oder Admin-GUI\u0026hellip;. Fehlanzeige. Doch von Vorne.\nGrundlage: Cow Einlesen Der Ausgangspunkt für die Mailcow sind die Docs . Das ist vor allem die Vorstellungsrunde der Komponenten und ein Unterstützungsaufruf der Entwickler.\nInstallation Es ist sicherzustellen, dass socker installiert ist -\u0026gt; docker-compose Sektion . Das sollte mittlerweile auch bekannt sein. Für die weitere Installation gehe ich davon aus, dass docker up \u0026rsquo;n running ist und traefik als Reverse Proxy auch seinen Betrieb eifrig nachgeht. Damit ist auch das Erlangen eines Zertifikats für die Mailcow geregelt, bzw delegiert. Das muss beachtet werden, lauern hier doch die Stolpersteine (aus meiner Sicht)\nsu umask 0022 cd /opt/containers # wo die anderen Container sind git clone https://github.com/mailcow/mailcow-dockerized cd mailcow-dockerized Damit wird das Repo in den Ordner\nhttps://docs.mailcow.email/de/post_installation/reverse-proxy/r_p-traefik3/ ","date":"January 1, 2026","permalink":"/anleitungen/docker/mailcow-docker-traefik/","summary":"Zeit für ein neues Tutorial, oder?\nMotivation Was ist die Mailcow und wie komme ich dazu? In meinen gaaaaanz alten Anleitungen hatte ich selbst einen Anti-Spam-Gateway im Programm. Das Aufsetzen und Pflegen, der Kampf gegen die Spamer usw. hatten mich aber irgendwann (auch aus zeitlichen Gründen) zu M365 überlaufen lassen. Toller Dienst, jeder kennt ihn, viele nutzen ihn.\n","title":"Mailcow","type":"anleitungen"},{"content":" Updates 01.01.2026 – Übertrag von adminwerk.systems 16.05.2023 – IPv6 Beispiel korrigiert 22.05.2023 – Verbesserung der Textqualität; Erklärungen zur traefik Konfiguration 26.06.2023 – IPv6 erneut korrigiert\nVorwort Viele Jahre arbeite ich schon an und mit Root-Servern und habe auch immer meine eigenen Maschinen am Laufen. Die Setups und Installationen haben dabei immer auch ein hohes Maß an Aufwand erzeugt, natürlich auch ein hohes Maß an Spaß und Freude. Häufig war der Grund etwas Neues zu probieren oder zu evaluieren. Eine neue Version, ein neues Tool, eine neue eigene Cloud usw.\nJetzt gibt es ja schon einige Zeit ein Tool, das Abhilfe schaffen kann: docker. Mit docker konnte ich mich aber laaaange Zeit einfach nicht anfreunden. Vom monolithischen Server, zur Serverfarm mit Cluster, zur Virtualisierung, zu Containern?\n„Aber Container … Was soll der Mist? Alte Kamellen in neuen Kleidern?“\nAuszug aus dem Vorwort von „Skalierbare Container-Infrastrukturen“ von Oliver Liebel\nMit ausreichend Distanz und ausreichend Zeit (hüstel) habe ich mich mittlerweile mit docker angefreundet, Informationen gesucht, nachgebaut, erweitert, ergänzt und Freundschaft geschlossen.\nZiel Das Ziel dieser Anleitung ist die Bereitstellung eines docker Servers. D.h. ich installiere auf einem root-Server docker und docker compose. Um die Ressourcen hier entsprechend sinnvoll zu nutzen (Auslastung des Severs), stellt dieser Server dann entsprechende weitere Web-Applikationen zur Verfügung. Auf der Ziellinie kann WordPress, Redmine, Bitwarden, … installiert und betrieben werden. Es bedarf keiner aufwendigen Konfigurationen und dem Handling verschiedener Konfigurationstypen. Wenn wir uns eingespielt haben, kommt (fast) alles im gleichen Format: YML.\nServer vorbereiten Die Basis für diesen und die viele andere Artikel ist ein Root-Server. Ob dieser Bare Metal oder Virtual ist, spielt dabei keine Rolle. Meine Basis ist ein CPX21 bei HETZNER . Damit habe ich die komplette Spielwiese für unter 10 EUR in einem DSGVO-konformen RZ (bei Auswahl der entsprechenden Location). Auf dem Server läuft Ubuntu 22.04 Minimal. Schaut dass hier die aktuellste LTS läuft, 22, 24 .., Support muss es haben.\nDer obige Link zu Hetzner hat einen PROMO-Code hinterlegt. Damit kann man noch ein paat EUR sparen\rUm immer auf dem aktuellen Stand zu bleiben source ich docker aus den offiziellen Repository, womit docker immer auf dem aktuellen Stand gehalten werden kann. Hast Du im Nachbau dieser Anleitung Ubuntu neu installiert, sind die nachfolgenden beiden Zeilen nicht zwingend notwendig, da nichts davon installiert sein sollte.\nsudo apt remove docker docker-engine docker.io containerd runc sudo rm /etc/apt/sources.list/docker.list Im nächsten Schritt aktualisiere ich die Paketliste und installiere den ersten Schwung notwendiger Pakete. Das Sourcen der docker Repositories (PGP-Keys installieren etc) teilt mir diesen Prozess in mehrere Schritte.\nNotwendige Pakete installieren sudo apt update \u0026amp;\u0026amp; sudo apt install apt-transport-https ca-certificates curl \\ software-properties-common gnupg lsb-release apache2-utils Offizielle Docker GPG Keys einbinden sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor \\ -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpgp Repository einbinden echo \u0026#34;deb [arch=$(dpkg --print-architecture) \\ signed-by=/etc/apt/keyrings/docker.gpg] \\ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\u0026#34; \\ | sudo tee /etc/apt/sources.list.d/docker.list \u0026gt; /dev/null docker + docker compose Schlussendlich installiere ich die neueste Docker Engine und Docker Compose ins System\nsudo apt update \u0026amp;\u0026amp; sudo apt install docker-ce docker-ce-cli \\ containerd.io docker-buildx-plugin docker-compose-plugin docker in Bootprozess einbinden In wenigen Ausnahmefällen wird man den Schritt weglassen. Aber nach einem reboot sollte schon alles wieder mit starten. Das erledige ich durch nachfolgende Eingabe an der Shell\nsudo systemctl enable docker.service \u0026amp;\u0026amp; sudo systemctl enable containerd.service Auf der docker-docs Homepage wird beschrieben, wie die Installation mit hello-world getestet werden kann. Schlecht ist das nicht, denn damit siehst Du recht schnell ob erstmal die Laufzeitumgebung passt. Ich erspare mir das aber und fahre stattdessen gleich mit dem Reverse-Proxy traefik fort. Weiterführende Informationen findet man im Internet, z.B. die Anleitung auf digitalocean. [Q]\nNacharbeiten Um auch zielgerichtet in die Zukunft zu blicken, aktivieren wir IPv6 für docker [Q]. Wer Du dich für einen Server bei Hetzner entschieden hast, dann solltest Du dich gleich in die Console einloggen. Hier steht die IPv6, die wir direkt brauchen werden. Mit vi /etc/docker/daemon.yml legen wir die entsprechende Datei an und befüllen diese mit Inhalt.\nIPv6 { \u0026#34;ipv6\u0026#34;: true, \u0026#34;fixed-cidr-v6\u0026#34;: \u0026#34;2a01:4f9::::1/64\u0026#34; } Bei fixed-cidr-v6 muss die verwendete IPv6 rein, logisch.\nEin kleiner Hinweis. Die letzte Direktive schließt nicht mit einem Komma ab. Wenn Du also nachfolgend beschriebenes Live Restore nutzen möchtest, dann nach der fixed-cidr-v6 Direktive ein Komma ergänzen und nach der live-restore Direktive weglassen.\nLive Restore Live Restore ist auch eine nette Nacharbeit. Dabei bleiben die Container am Start, auch wenn der Daemon herunterfährt, z.B. bei einem Update. Auch dieser Eintrag ergänzt die JSON in der /etc/docker/daemon.yml.\n{ \u0026#34;ipv6\u0026#34;: true, \u0026#34;fixed-cidr-v6\u0026#34;: \u0026#34;2a01:4f9::::1/64\u0026#34;, \u0026#34;live-restore\u0026#34;: true } traefik installieren Einführung Traefik ist angetreten Netzwerk-Komplexität abzubauen. In ganz kurzer Zeit hat traefik arrivierten Systemen den Rang abgelaufen. Insbesondere unter dem Aspekt im Umfeld von Microservices verrichtet der Reverse Proxy und/oder Load Balancer herausragende Dienste.\nDas Prinzip: traefik\nOh mein Gott – Theoretiker schlagen wieder zu!\nEinfach gesagt greift Traefik den zielgerichteten Datenverkehr aus dem Internet, via https ab und leitet diesen dann an den eigentlichen Service weiter.\nWas sind die Vorteile? Traefik ist mit allen Cluster Technologien kompatibel (zB Kubernetes, Docker, Docker Swarm, AWS, …). Der Hamster braucht dabei keine spezielle Konfiguration sondern macht dies automatisch. In der Verbindung mit docker, was ja hier Thema ist, schreibt man also eine docker-compose.yml und die Dienste verbinden sich. Die Entwickler geben hier eine ausführliche Einführung . Entscheidend, und damit macht es dann auch Spass, ist, dass traefik sich automatisch um die Zertifikate kümmert. Durch die entsprechenden Label in besagter docker-compose.yml werden die Zertifikate mit dem Hochfahren des Containers eingebunden.\nArbeitsverzeichnis(se) Alle Container, die auf dem Server installiert werden, gefinden sich in /opt/containers. In einem eigenen Unterverzeichnis. Diesem Schema werden auch potentiell weiteren Anleitungen und Artikel folgen. Entsprechend kommt traefikin den Ordner /opt/containers/traefik/. Hier vorbereitet mit dem zugehörigen Volume für die Konfigurationen.\nmkdir -p /opt/containers/traefik/data SSL/TLS mit Certbot Stand der Dinge, der Technik und des guten Geschmacks ist die Absicherung jeglicher Dienste mit SSL/TLS. Ergo wird im nächsten Schritt die Zertifikatsspeicher-Datei acme_letsencrypt.json im Arbeitsverzeichnis angelegt. Befüllung erfolgt automatisch.\ntouch /opt/containers/traefik/data/acme_letsencrypt.json chmod 600 /opt/containers/traefik/data/acme_letsencrypt.json traefik konfigurieren Dazu wird erneut eine Konfigurationsdatei ins Arbeitsverzeichnis geschrieben. Mit dem Editor deiner Wahl, bei mir vi.\nvi /opt/containers/traefik/data/traefik.yml Die einzelnen Abschnitte von oben nach unten…\napi: dashboard: true certificatesResolvers: http: acme: email: \u0026#34;sollte-deine-e@mail-se.in\u0026#34; storage: \u0026#34;acme_letsencrypt.json\u0026#34; httpChallenge: entryPoint: http entryPoints: http: address: \u0026#34;:80\u0026#34; http: redirections: entryPoint: to: \u0026#34;https\u0026#34; scheme: \u0026#34;https\u0026#34; https: address: \u0026#34;:443\u0026#34; global: checknewversion: true sendanonymoususage: false providers: docker: endpoint: \u0026#34;unix:///var/run/docker.sock\u0026#34; exposedByDefault: false network: \u0026#34;proxy\u0026#34; file: filename: \u0026#34;./dynamic_conf.yml\u0026#34; watch: true providersThrottleDuration: 10 In der YAML wird auf die Datei dynamic_conf.yml referenziert. Auch in dieser stehen Anpassungen und Direktiven für traefik, wie die Verschlüsselungsparameter, -algorithmen, Einstellungen zur Middleware, Headern usw.\nvi /opt/containers/traefik/data/dynamic_conf.yml Der Inhalt orientiert sich an nachfolgendem Eintrag. Dabei sollte man regelmäßig die ciperSuites kontrollieren. Ab und an fallen welche raus, die nicht mehr als sicher gelten.\ntls: options: default: minVersion: VersionTLS12 cipherSuites: - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 curvePreferences: - CurveP521 - CurveP384 sniStrict: true http: middlewares: traefikAuth: basicAuth: users: # gehashten Wert eingeben / enter hashed value - \u0026#34;dein-user:dein-passwort-hashwert\u0026#34; default: chain: middlewares: - default-security-headers - gzip secHeaders: chain: middlewares: - default-security-headers - gzip default-security-headers: headers: browserXssFilter: true contentTypeNosniff: true forceSTSHeader: true frameDeny: true stsIncludeSubdomains: true stsPreload: true stsSeconds: 31536000 customFrameOptionsValue: \u0026#34;SAMEORIGIN\u0026#34; gzip: compress: {} In Zeile 21 der Datei sind Anpassungen vorzunehmen zur Definition eines Benutzernamen und Passwortes:\necho $(htpasswd -nb chef \u0026#39;omlette-pommes-frites-mit-majo\u0026#39;) Den Rückgabewert wird passend eingefügt\nmiddlewares: traefikAuth: basicAuth: users: - \u0026#34;chef:$apr1$BD.QzZIN$6OUwEXt5EtpxHi8gCngf/1\u0026#34; default: traefik Container \u0026gt; docker-compose.yml Fertig für TL;DR zum schnellen kopieren in die eigene Umgebung. Die Erläuterung reiche ich nach. Daher wird das nachfolgende Kapitel ein „Work in progress“ sein.\nversion: \u0026#39;3.9\u0026#39; services: traefik: container_name: traefik image: traefik:latest volumes: - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock:ro - ./data/traefik.yml:/traefik.yml:ro - ./data/acme_letsencrypt.json:/acme_letsencrypt.json - ./data/dynamic_conf.yml:/dynamic_conf.yml labels: - \u0026#34;com.centurylinklabs.watchtower.enable=true\u0026#34; - \u0026#34;traefik.enable=true\u0026#34; - \u0026#34;traefik.http.routers.traefik.entrypoints=https\u0026#34; # die passende Domain einsetzen / enter the correct domain - \u0026#34;traefik.http.routers.traefik.rule=Host(`traefik.DeineDomain.tld`)\u0026#34; - \u0026#34;traefik.http.routers.traefik.middlewares=traefikAuth@file,default@file\u0026#34; - \u0026#34;traefik.http.routers.traefik.tls=true\u0026#34; - \u0026#34;traefik.http.routers.traefik.tls.certresolver=http\u0026#34; - \u0026#34;traefik.http.routers.traefik.service=api@internal\u0026#34; - \u0026#34;traefik.http.services.traefik.loadbalancer.sticky.cookie.httpOnly=true\u0026#34; - \u0026#34;traefik.http.services.traefik.loadbalancer.sticky.cookie.secure=true\u0026#34; - \u0026#34;traefik.docker.network=proxy\u0026#34; restart: unless-stopped security_opt: - no-new-privileges:true networks: proxy: hostname: traefik ports: - \u0026#34;80:80\u0026#34; - \u0026#34;443:443\u0026#34; networks: proxy: name: proxy driver: bridge attachable: true Hier ist auf die Domain zu achten. Hinweis: idealerweise zeigt ein A-Record auf die IP des Servers.\nlabels: - \u0026#34;com.centurylinklabs.watchtower.enable=true\u0026#34; - \u0026#34;traefik.enable=true\u0026#34; - \u0026#34;traefik.http.routers.traefik.entrypoints=https\u0026#34; - \u0026#34;traefik.http.routers.traefik.rule=Host(`traefik.pommesbude-mit-majo.tld`)\u0026#34; - \u0026#34;traefik.http.routers.traefik.middlewares=traefikAuth@file,default@file\u0026#34; traefik Konfiguration verstehen TL;DR – es folgt die blanke Theorie!\nAuf alle Direktiven kann ich nicht eingehen. traefik gilt zwar als einfach, aber …. hahaha … naja, nein. Daher beschränke ich mich in dieser Anleitung, die ja das Ziel hat schnell ein Ergebnis zu liefern, auf die Anweisungen, die ich zum „Funktionieren“ brauche.\ndocker labels Die labels: sind die Verbindung zwischen traefik und docker und begegnen Dir in allen Anleitungen, die auf docker + traefik aufsetzen.\nRouters Der Eintrag folgt dem Schema traefik.http.routers.\u0026lt;router_name\u0026gt;.\u0026lt;option\u0026gt;. Die \u0026lt;option\u0026gt; gibt dabei die Option an, die abweichend vom Standard geändert werden soll. Alle Referenzen gibt es in der traefik Dokumentation.\nrule: gibt an, für welches spezifische Kriterium die rule (Regel) gültig sein soll (Ref.)\nentrypoints: gibt an oder beschränkt den Anwendungsbereich von traefik auf bestimmte Einstiegspunkte (Ref.)\nmiddlewares: mit middlewares werden die Anfragen verändert, bevor diese an den service weitergegeben werden. Dabei können die Anfragen, die Header modifiziert werden. Andere leiten die Anfragen um, oder fügen Authentifizierung hinzu… (Ref.1, Ref.2,)\nservice: das Ziel für die Anfragen (Ref.)\ntraefik starten Ein integraler Bestandteil dieser Anleitung ist es, den Reverse Proxy traefik zu starten.\ndocker compose -f /opt/containers/traefik/docker-compose.yml up -d Wenn richtig gemacht wurde, dann startet traefik seinen Dienst und wartet auf das „Einhaken“ weiterer Applikationen. Mit den entsprechenden labels versehen werde ich in weiteren Artikeln auch entsprechende Anwendungen einbinden. Die Quittung lass ich direkt ausgeben:\n➜ ~ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 44b8150d0309 traefik:latest \u0026#34;/entrypoint.sh trae…\u0026#34; 8 minutes ago Up 8 minutes 0.0.0.0:80-\u0026gt;80/tcp, :::80-\u0026gt;80/tcp, 0.0.0.0:443-\u0026gt;443/tcp, :::443-\u0026gt;443/tcp traefik Um jetzt in und mit traefik zu arbeiten, hatte ich die Domain mittels A-Record eingetragen. Wenn diese URL aufgerufen wird, dann öffnet sich ein http-Auth, die ich mit der Eingabe der Benutzer/Kennwort-Kombi von hier hinter mir lasse.\ntraefik Dashboard\nZusammenfassung Ich habe in dieser Anleitung die Einrichtung von docker und die Bereitstellung von traefik als Reverse Proxy beschrieben und hier als handliche Bauanleitung zur Verfügung gestellt. Damit steht die Grundlage für weitere Anleitungen rund um docker-Container, die auf einem Server ihr Unwesen treiben. Abgesichert, administrierbar und einfach zu aktualisieren.\nWomit geht es weiter? Ich habe einige weitere, ergänzende Anleitungen erstellt, aber noch nicht auf die neue Plattform migriert. Zusammen mit neuen Anleitungen werde ich diese in absehbarer Zeit hier erneut anbieten.\ndocker/traefik + Redmine docker/traefik + Bitwarden docker/traefik + Mailcow (work in progress) ","date":"January 1, 2026","permalink":"/anleitungen/docker/docker-traefik/","summary":" Updates 01.01.2026 – Übertrag von adminwerk.systems 16.05.2023 – IPv6 Beispiel korrigiert 22.05.2023 – Verbesserung der Textqualität; Erklärungen zur traefik Konfiguration 26.06.2023 – IPv6 erneut korrigiert\n","title":"Traefik","type":"anleitungen"},{"content":" Übersicht Die hidden Option wurde erweitert und funktioniert jetzt sowohl für einzelne Seiten als auch für gesamte Verzeichnisse/Sektionen. Dadurch können sowohl Seiten als auch Verzeichnisse komplett aus der Navigation ausgeblendet werden.\nNeu: Es gibt jetzt auch die Option hiddeninlist: true, um Seiten zusätzlich aus den Listen-Ansichten auszublenden.\nFunktionsweise Für Seiten (bereits vorhanden) Um eine einzelne Seite aus dem Menü auszublenden, wird in der Frontmatter der Seite der Parameter hidden: true gesetzt:\n--- title: Meine versteckte Seite date: 2025-01-01 hidden: true --- Für Verzeichnisse (neu) Um ein ganzes Verzeichnis/eine Sektion aus dem Menü auszublenden, wird in der _index.md Datei des Verzeichnisses der Parameter hidden: true gesetzt:\n--- title: Mein verstecktes Verzeichnis date: 2025-01-01 hidden: true --- Auswirkungen Wenn ein Verzeichnis als hidden: true markiert ist:\nHauptmenü: Das Verzeichnis erscheint nicht in der Hauptnavigation Untermenü: Das Verzeichnis erscheint nicht in Dropdown-Menüs Subnavigation: Das Verzeichnis erscheint nicht in der lokalen Subnavigation Mobile Menü: Das Verzeichnis wird auch im mobilen Menü ausgeblendet Anwendungsbereiche Diese Funktionalität ist nützlich für:\nTest-Verzeichnisse Work-in-Progress Inhalte Interne Dokumentation Temporär deaktivierte Bereiche Archive oder veraltete Inhalte Technische Implementierung Die Erweiterung wurde in folgenden Templates implementiert:\nlayouts/partials/header.html - Hauptmenü und Dropdown-Navigation layouts/partials/subnav.html - Lokale Subnavigation Das mobile Menü erbt automatisch die Filterung, da es auf der bereits gefilterten HTML-Struktur basiert.\nBeispiel Test-Verzeichnis: content/test-hidden/_index.md\n--- title: Test Hidden Directory date: 2025-01-01 hidden: true --- # Test Verstecktes Verzeichnis Dieses Verzeichnis sollte nicht im Menü angezeigt werden. Das Verzeichnis und alle seine Unterseiten sind weiterhin über direkte URLs erreichbar, werden aber nicht in der Navigation angezeigt.\nHidden in List Option Verwendung Um eine Seite zusätzlich aus den Listen-Ansichten auszublenden, verwenden Sie den Parameter hiddeninlist: true in der Frontmatter:\n--- title: Meine versteckte Seite date: 2025-01-01 hidden: true # Versteckt die Seite im Menü hiddeninlist: true # Versteckt die Seite zusätzlich in Listen --- Unterschiede zwischen hidden und hiddeninlist hidden: true: Blendet die Seite nur aus dem Menü/Navigation aus, die Seite erscheint aber weiterhin in Listen-Ansichten hiddeninlist: true: Blendet die Seite aus den Listen-Ansichten aus (z.B. Übersichtsseiten, Archive) Beide kombiniert: Die Seite wird sowohl aus dem Menü als auch aus den Listen ausgeblendet, ist aber weiterhin über die direkte URL erreichbar Anwendungsfälle Seiten, die nur über direkte Links erreichbar sein sollen Entwürfe, die nicht in Übersichten erscheinen sollen Spezielle Admin-Seiten oder Tools Seiten, die nur für bestimmte Nutzergruppen relevant sind ","date":"August 2, 2025","permalink":"/use/11-hidden-menu-option/","summary":" Übersicht Die hidden Option wurde erweitert und funktioniert jetzt sowohl für einzelne Seiten als auch für gesamte Verzeichnisse/Sektionen. Dadurch können sowohl Seiten als auch Verzeichnisse komplett aus der Navigation ausgeblendet werden.\n","title":"Hidden Menu Option für Verzeichnisse","type":"use"},{"content":"Mit diesem Tool kann aus HTML Markdown konvertiert werden, dass mit der HUGO Implementierung kompatibel ist.\n{{ partial \u0026ldquo;html-to-markdown.html\u0026rdquo; }}\n","date":"August 1, 2025","permalink":"/use/12-html-to-markdown/","summary":"Mit diesem Tool kann aus HTML Markdown konvertiert werden, dass mit der HUGO Implementierung kompatibel ist.\n{{ partial \u0026ldquo;html-to-markdown.html\u0026rdquo; }}\n","title":"HTML zu Markdown Konverter","type":"use"},{"content":" Wer ist adminwerk Die Adresse unserer Website ist: https://adminwerk.systems Verantwortlicher Christian Möser\nDipl.-Wirt.-Ing. (FH)\nHaydnweg 20 82538 Geretsried\nE-Mail: post@adminwerk.systems Welche personenbezogenen Daten wir sammeln (und warum wir sie sammeln) 1_ Kommentare Wenn du Kommentare auf der Website schreibst, sammeln wir die Daten, die im Kommentar-Formular angezeigt werden.\n2_ Medien Wenn du ein registrierter Benutzer bist und Fotos auf diese Website lädst, solltest du vermeiden, Fotos mit einem EXIF-GPS-Standort hochzuladen. Besucher dieser Website könnten Fotos, die auf dieser Website gespeichert sind, herunterladen und deren Standort-Informationen extrahieren.\n3_ Kontaktformulare Wenn du per Formular auf der Website oder per E-Mail Kontakt mit uns aufnimmst, werden deine angegebenen Daten zwecks Bearbeitung der Anfrage und für den Fall von Anschlussfragen bei uns gespeichert und im Anschluss wieder gelöscht.\n4_ Cookies Unsere Website verwendet sogenannte Cookies. Dabei handelt es sich um kleine Textdateien, die mit Hilfe des Browsers auf deinem Endgerät abgelegt werden. Sie richten keinen Schaden an.\nWir nutzen Cookies dazu, unser Angebot nutzerfreundlich zu gestalten. Einige Cookies bleiben auf deinem Endgerät gespeichert, bis du diese löschst. Sie ermöglichen es uns, deinen Browser beim nächsten Besuch wiederzuerkennen. Wenn Du dies nicht wünschst, so kannst du deinen Browser so einrichten, dass er dich über das Setzen von Cookies informiert und du dies nur im Einzelfall erlaubst. Bei der Deaktivierung von Cookies kann die Funktionalität unserer Website eingeschränkt sein.\n4.1_ Drittanbieter Cookies Unserer Webseite verwendet eingebundene Dienste von Drittanbietern, z.B. \u0026ldquo;Buy me a coffee\u0026rdquo;. Diese verwenden u.a. auch Cookies die zur Bereitstellung der Dienste notwendig sind. Detaillierte Informationen findest Du unter 5_ Eingebettete Inhalte von anderen Websites\n5_ Eingebettete Inhalte von anderen Websites Beiträge auf dieser Website können eingebettete Inhalte beinhalten (z. B. Videos, Bilder, Beiträge, Schriften etc.). Eingebettete Inhalte von anderen Websites verhalten sich exakt so, als ob der Besucher die andere Website besucht hätte.\nDiese Websites können Daten über dich sammeln, Cookies benutzen, zusätzliche Tracking-Dienste von Dritten einbetten und deine Interaktion mit diesem eingebetteten Inhalt aufzeichnen, inklusive deiner Interaktion mit dem eingebetteten Inhalt, falls du ein Konto hast und auf dieser Website angemeldet bist.\n5.1_ YouTube 5.2_ Buy me a coffee 6_ Analysedienste 6.1_ Server Logfiles Wir erheben Daten über Zugriffe auf unserer Seite und speichern diese als „Server-Logfiles“ ab. Folgende Daten werden so protokolliert:\nBesuchte Website Uhrzeit zum Zeitpunkt des Zugriffes Menge der gesendeten Daten in Byte Quelle/Verweis, von welchem Sie auf die Seite gelangten Verwendeter Browser Verwendetes Betriebssystem Verwendete IP-Adresse Die erhobenen Daten dienen lediglich statistischen Auswertungen und zur Verbesserung unseres Angebots und der Website. Wir behalten uns vor, die Server-Logfiles nachträglich zu überprüfen, sollten konkrete Anhaltspunkte auf eine rechtswidrige Nutzung hinweisen. Im Rahmen monatlicher Wartungsarbeiten am Server werden diese gelöscht.\n7. Datensicherheit Wir verwenden innerhalb des Website-Besuchs das verbreitete SSL-Verfahren (Secure Socket Layer) in Verbindung mit der jeweils höchsten Verschlüsselungsstufe, die von Ihrem Browser unterstützt wird. In der Regel handelt es sich dabei um eine 256 Bit Verschlüsselung. Falls Ihr Browser keine 256-Bit Verschlüsselung unterstützt, greifen wir stattdessen auf 128-Bit v3 Technologie zurück. Ob eine einzelne Seite unseres Internetauftrittes verschlüsselt übertragen wird, erkennen Sie an der geschlossenen Darstellung des Schüssel- beziehungsweise Schloss-Symbols in der unteren Statusleiste Ihres Browsers.\nWir bedienen uns im Übrigen geeigneter technischer und organisatorischer Sicherheitsmaßnahmen, um Ihre Daten gegen zufällige oder vorsätzliche Manipulationen, teilweisen oder vollständigen Verlust, Zerstörung oder gegen den unbefugten Zugriff Dritter zu schützen. Unsere Sicherheitsmaßnahmen werden entsprechend der technologischen Entwicklung fortlaufend verbessert.\nMit wem wir deine Daten teilen Außer mit oben benannten Diensten, die den Komfort der Website verbessern sollen, werden deine Daten mit niemanden geteilt.\nWie lange wir deine Daten speichern Wenn du einen Kommentar schreibst, wird dieser inklusive Metadaten zeitlich unbegrenzt gespeichert. Auf diese Art können wir Folgekommentare automatisch erkennen und freigeben, anstelle sie in einer Moderations-Warteschlange festzuhalten.\nFür Benutzer, die sich auf unserer Website registrieren, speichern wir zusätzlich die persönlichen Informationen, die sie in ihren Benutzerprofilen angeben. Alle Benutzer können jederzeit ihre persönlichen Informationen einsehen, verändern oder löschen (der Benutzername kann nicht verändert werden). Administratoren der Website können diese Informationen ebenfalls einsehen und verändern.\nWelche Rechte du an deinen Daten hast Wenn du ein Konto auf dieser Website besitzt oder Kommentare geschrieben hast, kannst du einen Export deiner personenbezogenen Daten bei uns anfordern, inklusive aller Daten, die du uns mitgeteilt hast. Darüber hinaus kannst du die Löschung aller personenbezogenen Daten, die wir von dir gespeichert haben, anfordern. Dies umfasst nicht die Daten, die wir aufgrund administrativer, rechtlicher oder sicherheitsrelevanter Notwendigkeiten aufbewahren müssen.\nAls von der Datenverarbeitung durch uns betroffene Person stehen dir folgende Rechte zu:\nAuskunftsrecht (Art. 15 DSGVO, § 34 BDSG) Recht auf Berichtigung (Art. 16 DSGVO) Recht auf Löschung bzw. Recht auf Sperrung (Art. 17 DSGVO, § 35 Abs. 1 und 3 BDSG) Recht auf Einschränkung der Verarbeitung (Art. 18 DSGVO, § 35 Abs. 2 BDSG) Recht auf Datenübertragbarkeit (Art. 20 DSGVO) Widerspruchsrecht (Art. 21 DSGVO, § 36 BDSG). ","date":"January 1, 2025","permalink":"/site/datenschutz/","summary":" Wer ist adminwerk Die Adresse unserer Website ist: https://adminwerk.systems ","title":"Datenschutzerklärung","type":"site"},{"content":"Auf dieser Seite sind für die Redakteure und Editoren, die Frontmatter Variablen für den Header der Markdown-Seiten erklärt. Alle verfügbaren Frontmatter-Felder\nHugo-Standard Feld Typ Beschreibung title string Seitentitel date datetime Veröffentlichungsdatum draft bool Wirkungslos wegen buildDrafts = true in hugo.toml tags list Taxonomie-Tags description / summary string Meta-Description, Teaser keywords list Meta-Keywords weight int Sortierreihenfolge in Listen (kleiner = weiter oben) Sichtbarkeit (custom, deine Layouts) Feld Typ Beschreibung hidden: true bool Seite erscheint nicht im Navigationsmenü (Header) hiddeninlist: true bool Seite erscheint nicht in Listenansichten (Sektionsseiten) status string In Content-Dateien gefunden, aktuell nicht ausgewertet Layout \u0026amp; Sidebar Feld Typ Beschreibung layout string Spaltenlayout: 100, 70-30, 30-70, 60-40, 40-60, 50-50, 80-20 sidebarContent markdown Inhalt der Sidebar als Markdown-Text sidebarMobilePosition string top = Sidebar auf Mobile oberhalb des Inhalts submenu string Navigation-Submenu-Verhalten: auto oder custom coverImg string Pfad zu einem Cover-Bild (relativ zu assets/) Artikel-Darstellung Feld Typ Beschreibung showToc bool Inhaltsverzeichnis ein/aus (überschreibt params.toml) showHeadingAnchors bool Anker-Links bei Überschriften ein/aus SEO / Head Feld Typ Beschreibung coverImg string Wird auch als og:image und twitter:image genutzt externalUrl string Leitet die Seite auf eine externe URL weiter \u0026ldquo;Unsichtbar machen\u0026rdquo; — was wirklich funktioniert Da draf wirkungslos ist, hast du diese Optionen:\nZiel Frontmatter Nicht im Menü hidden: true Nicht in Sektionslisten hiddeninlist: true Beides hidden: true + hiddeninlist: true Komplett unsichtbar (kein direkter Link) beides + Seite nicht verlinken Frontmatter beschreibt den Header (Meta) der Datei, der von HUGO interpretiert wird. Damit können die Einstellungen pro Seite definiert werden, z.B. Datum des Artikels, Tags, Layout, Inhaltsangaben etc.\nAllgemeine Parameter title: das ist der Titel des Seite\nTitel des Seite als H1-Überschrift\ndate: 2025-31-21\nDefiniert den Timestamp der Datei, im einfachsten Fall nur das Datum\nInhaltsangabe showToc: true|false {default/undef: true}\nZeigt ein Inhaltsverzeichnis an, dass den Titel \u0026ldquo;Inhalt\u0026rdquo; hat.\nopenToc: true|false {default/undef: true}\nKlappt die Inhaltsangabe auf, oder lässt sie geschlossen. Wird bei showToc: false ignoriert\nTags tags: [tag1, tag2]\nAlternative Möglichkeit als Liste\ntags:\nADIS ADED Datenmodell Hinweis: Mit der aktuellen Version von HUGO-Admin wird das Frontmatter tags falsch gesetzt. Statt tags: [tag1, tag2] wird tag: tag1, tag2 geschrieben. Dies führt zu einem HUGO Parser Error. In diese Fall muss die Seite im RAW-Modus editiert und korrigiert werden. Nach dem Speichern lädt HUGO wieder korrekt.\nLayout layout: definiert das Seitenlayout im 1- oder 2-Spalten Modus mit definiertem Verhältnis. Das Mehrspalten-Layout wird per HTML-Kommentar definiert. Angabe: \u0026ldquo;100:100:0, 70-30:70:30, 30-70:30:70\u0026rdquo;. Weitere könnten angelegt werden \u0026ldquo;60-40:60:40, 80-20:80:20\u0026rdquo;\n\u0026lt;!--SIDEBAR--\u0026gt;\nAlles unterhalb dieses Kommentars wird in der zweiten Spalte dargestellt. Responsive standardmäßig unterhalb der ersten Spalte.\nsidebarMobilePosition: top|bottom {default: bottom}\nDefiniert, wo die Sidebar in dr mobilen Ansicht (Responsive) dargestellt werden soll. top schiebt die Sidebar VOR den Hauptinhalt.\nStatus status: review|draft|published\ndraft: true|false\nDeklaration im Backend als Entwurf (Draft).\nSichtabarkeiten Um ein Element im Menü, oder auch allgemein sichtbar zu machen sind die Frontmatter Keys wie folgt:\nhidden: true|false\nhiddeninlist: true|false\n","date":"January 1, 2025","permalink":"/use/10-frontmatter-vars/","summary":"Auf dieser Seite sind für die Redakteure und Editoren, die Frontmatter Variablen für den Header der Markdown-Seiten erklärt. Alle verfügbaren Frontmatter-Felder\nHugo-Standard Feld Typ Beschreibung title string Seitentitel date datetime Veröffentlichungsdatum draft bool Wirkungslos wegen buildDrafts = true in hugo.toml tags list Taxonomie-Tags description / summary string Meta-Description, Teaser keywords list Meta-Keywords weight int Sortierreihenfolge in Listen (kleiner = weiter oben) Sichtbarkeit (custom, deine Layouts) Feld Typ Beschreibung hidden: true bool Seite erscheint nicht im Navigationsmenü (Header) hiddeninlist: true bool Seite erscheint nicht in Listenansichten (Sektionsseiten) status string In Content-Dateien gefunden, aktuell nicht ausgewertet Layout \u0026amp; Sidebar Feld Typ Beschreibung layout string Spaltenlayout: 100, 70-30, 30-70, 60-40, 40-60, 50-50, 80-20 sidebarContent markdown Inhalt der Sidebar als Markdown-Text sidebarMobilePosition string top = Sidebar auf Mobile oberhalb des Inhalts submenu string Navigation-Submenu-Verhalten: auto oder custom coverImg string Pfad zu einem Cover-Bild (relativ zu assets/) Artikel-Darstellung Feld Typ Beschreibung showToc bool Inhaltsverzeichnis ein/aus (überschreibt params.toml) showHeadingAnchors bool Anker-Links bei Überschriften ein/aus SEO / Head Feld Typ Beschreibung coverImg string Wird auch als og:image und twitter:image genutzt externalUrl string Leitet die Seite auf eine externe URL weiter \u0026ldquo;Unsichtbar machen\u0026rdquo; — was wirklich funktioniert Da draf wirkungslos ist, hast du diese Optionen:\n","title":"Frontmatter","type":"use"},{"content":"Angaben gemäß § 5 TMG\nAdminwerk\nIT-Consulting \u0026amp; Systemintegration\nChristian Möser\nDipl.-Wirt.-Ing.(FH)\nHaydnweg 20.\n82538 Geretsried\nE-Mail: post@adminwerk.systems UID: DE275078149\nUmsatzsteuer-Identifikationsnummer gemäß §27 a Umsatzsteuergesetz.\nHaftungsausschluss Haftung für Inhalte Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.\nHaftung für Links Unser Angebot kann Links zu externen Webseiten Dritter enthalten, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.\nUrheberrecht Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.\nDatenschutz Lesen Sie unsere Datenschutzhinweise.\n","date":"January 1, 2025","permalink":"/site/impressum/","summary":"Angaben gemäß § 5 TMG\nAdminwerk\nIT-Consulting \u0026amp; Systemintegration\nChristian Möser\nDipl.-Wirt.-Ing.(FH)\nHaydnweg 20.\n82538 Geretsried\nE-Mail: post@adminwerk.systems UID: DE275078149\nUmsatzsteuer-Identifikationsnummer gemäß §27 a Umsatzsteuergesetz.\nHaftungsausschluss Haftung für Inhalte Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.\n","title":"Impressum","type":"site"},{"content":" (Update 23-02-2026) Das Update von nextcloud unter docker ist schnell erledigt, die Nacharbeiten auch. Wenn man weiß wie. Im ersten Schritt wird im Arbeitsverzeichnis der Container gestoppt, gelöscht, das Update gezogen und dann alles wieder neu gestartet.\nEs gelten die allgemeinen Spielregeln:\nBackup Dabei sind die folgenden Ordner zu erfassen, wobei das immer gilt, im Speziellen aber das Update des Imgages (docker) nur peripher tangiert. Der Vollständigkeit halber aber sei darauf hingewiesen:\nconfig data theme database Maintenance Mode Ich betreibe meinen Server all alone, wer das aber in einem entsprechend größeren Kontext macht, der sollte die User vorwarnen. Das Replacement eines Images geht mit einem Ausfall einher und die Nacharbeiten nehmen auch ein paar Minuten in Anspruch.\ndocker exec --user www-data \\ php occ maintenance:mode --on Wie die User von der Wartung erfahren ist eine Frage der Vorgaben. Ich mache das für mich, also weiß ich schlicht auch Bescheid.\ncd /opt/containers/nextcloud docker stop nextcloud-app docker rm nextcloud-app docker pull nextcloud Wie Dein Container heißt kannst Du mit docker ps herausfinden. Meiner heißt nextcloud-app. IM Anschluss wird die neue Version gestartet\ndocker compose up -d Das funktioniert eben nur im Arbeitsverzeichnis. Wenn dieser Schritt nicht passiert ist, dann hilft die ausführliche Version vielleicht weiter…\ndocker compose -f /opt/containers/nextcloud/docker-compose.yml up -d Wenn Du Dich danach (genauer gesagt braucht nextcloud ca. 1 Minute bis es wieder gestartet ist), in der Web-GUI anmeldest findest Du in den Admineinstellungen in 99% der Fälle eine Meldung, dass irgendwas nicht passt. Mindestens, dass DB Indizes nicht erstellt sind. Das muss an der Kommandozeile nachgeholt werden.\nDatenbank Indizes Wer ein Update-Skript geschrieben hat, kann diesen Punkt auch dort eintragen.\ndocker exec --user www-data nextcloud-app \\ php occ db:add-missing-indices Maintenance Window Gerne auch dabei ist der Parameter maintenance_window_start. Die Erklärung dazu findest Du in der Admin Doku . Den Befehl zum Setzen:\ndocker exec --user www-data nextcloud-app \\ php occ config:system:set maintenance_window_start \\ --type=integer --value=1 Weitere Hifestellung gibt es in den aktuellen Admin Docs auf nextcloud.com ","date":"October 10, 2024","permalink":"/anleitungen/docker/update-nextcloud-docker/","summary":" (Update 23-02-2026) Das Update von nextcloud unter docker ist schnell erledigt, die Nacharbeiten auch. Wenn man weiß wie. Im ersten Schritt wird im Arbeitsverzeichnis der Container gestoppt, gelöscht, das Update gezogen und dann alles wieder neu gestartet.\n","title":"Update Nextcloud","type":"anleitungen"},{"content":"Bitwarden = Vaultwarden\nVorbereitungen Den Server vorbereiten heißt, am Server anmelden und in die bekannte Struktur einen neuen Ordner erstellen. In diesen schreibe ich die Konfiguration für docker compose.\nmkdir -p /opt/containers/bitwarden/{data,config} vi /opt/containers/bitwarden/docker-compose.yml Für alle die vi nicht kennen gibt es hier einen kurzen Exkurs in dessen Handhabung. Wenn Du dem Link nicht folgen magst, hier die TL;DR-Version. Mit dem obigen Befehl öffnet vi die angegebene Datei.\nAuf dem Keyboard i drücken, woraufhin im unteren Bereich des Fensters — INSERT — erscheint und vi in den Texteingabe-Modus versetzt wird. Text einfügen oder schreiben. Die Navigation innerhalb des Dokuments erfolgt mit den Pfeiltasten. Wenn alles übertragen, geschrieben oder modifiziert ist, wird mit folgenden Tasten bzw. Tastenkombinationen gesichert: ESC :x ENTER (Escape-Taste, dann Doppelpunkt, dann x, dann ENTER)\nBitwarden mit docker compose Der Inhalt, der in die docker-compose.yml übertragen wird, umfasst die bekannten Elemente. Namen, Restart-Anweisung, Image und die Volumes, die ich mappen will.\nIch habe einige Kommentare eingefügt, die anzeigen, was Du für Deine Laufzeitumgebung ändern musst.\nversion: \u0026#39;3.9\u0026#39; services: bitwarden: image: vaultwarden/server:latest restart: unless-stopped volumes: - /opt/containers/bitwarden/data:/data - /opt/containers/bitwarden/config:/etc/bitwarden labels: - \u0026#34;traefik.enable=true\u0026#34; - \u0026#34;traefik.http.routers.bitwarden.entrypoints=http\u0026#34; # set domain / Domain setzen - \u0026#34;traefik.http.routers.bitwarden.rule=Host(`vault.tolledomain.tld`)\u0026#34; - \u0026#34;traefik.http.middlewares.bitwarden-https-redirect.redirectscheme.scheme=https\u0026#34; - \u0026#34;traefik.http.routers.bitwarden.middlewares=bitwarden-https-redirect\u0026#34; - \u0026#34;traefik.http.routers.bitwarden-secure.entrypoints=https\u0026#34; # set domain / Domain setzen - \u0026#34;traefik.http.routers.bitwarden-secure.rule=Host(`vault.tolledomain.tld`)\u0026#34; - \u0026#34;traefik.http.routers.bitwarden-secure.tls=true\u0026#34; - \u0026#34;traefik.http.routers.bitwarden-secure.tls.certresolver=http\u0026#34; - \u0026#34;traefik.http.routers.bitwarden-secure.service=bitwarden\u0026#34; - \u0026#34;traefik.http.services.bitwarden.loadbalancer.server.port=80\u0026#34; - \u0026#34;traefik.docker.network=proxy\u0026#34; - \u0026#34;traefik.http.routers.bitwarden-secure.middlewares=secHeaders@file\u0026#34; environment: # uncomment to deactivate the admin panel / auskommentieren um Adminpanel zu laden # our password, to be hashed will be / das zu hashende Passwort wird # \u0026#34;ShuffleRandom1234%$!\u0026#34; # ADMIN_TOKEN: \u0026#39;$argon2id$v=..$m=...,t0p=...+...+\u0026#39; # see below / siehe unten! SIGNUPS_ALLOWED: \u0026#39;false\u0026#39; INVITATIONS_ALLOWED: \u0026#39;true\u0026#39; SHOW_PASSWORD_HINT: \u0026#39;true\u0026#39; WEBSOCKET_ENABLED: \u0026#39;true\u0026#39; networks: - proxy networks: proxy: external: true Geschlossen und gespeichert wird die Konfiguration in vi wieder mit ESCAPE:x:ENTER. Und bevor ich noch auf die environment eingehe, starte ich den Container schon mal an.\ndocker compose /opt/containers/bitwarden/docker-compose.yml up -d Unter environment habe ich einige Elemente eingefügt, die meiner Ansicht nach von Vorteil sind.\nbitwarden aufrufen und als Benutzer registrieren Das ist jetzt der wichtig(st)e Schritt. Du rufst nach einer kleinen Gedenkminute den URL auf, unter dem Du den Server registriert hast. In der Gedenkminute seit dem Start des Containers, konnte docker den Container starten und ein SSL-Zertifikat einrichten.\ntraefik.http.routers.bitwarden.rule=Host(`vault.tolledomain.tld`) Folge hier einfach den Anweisungen: Benutzername (E-Mailadresse) und Master-Passwort. Mehr braucht es zunächst nicht, weshalb ich mir auch die weiteren Erörterungen an dieser Stelle sparen möchte. (Und es gibt auch keine Bilder! … bis auf eins)\nVaultwarden GUI\nAdminzugang absichern In der docker-compose.yml gibt es im Bereich environment einige Parameter, die man setzen kann (nicht muss). Die aber für die weitere Administration und Nutzung schon einen Mehrwert ringen.\nADMIN_TOKEN enthält das Kennwort für die Admin-Oberfläche /admin. Wenn Du das Kommentarzeichen # entfernst, kann man sich dort nicht anmelden. Diese Direktive nimmt demnach zwei Aufgaben war. Sie bestimmt ob man sich, oder ob man sich nicht anmelden kann und bestimmt das entsprechend notwendige Kennwort.\nAdmin Login\nHinweis: Wenn Du hier keinen hash-Token in die Datei packst, dann ist das plain text == Murks. Entsprechend erscheint als dicke, fette Warnung ein Banner, der auf Deinen Murks hinweist. Seit V1.2.8 ist hier ein Schutzmechanismus etabliert [2]. Um den Server zu starten musst Du also den nächsten Schritt ausführen, das Kennwort hashen und dann den kompletten String in die docker-compose.yml eintragen.\nVaultwarden hash nutzen Ich werde hier nicht murksen und daher bekommst Du auch gleich das richtige Vorgehen serviert. An der Kommandozeile führst Du einfach einige Befehle aus. In Schritt 1 fragst Du den Containernamen ab. Mit docker ps erhältst Du diesen (in meinem Fall bitwarden-bitwarden-1). Mit dem Containernamen rufst Du in Schritt 2, bei laufendem Container das Tool vaultwarden auf und generierst damit einen Hash, den Du dann in die entsprechende Zeile der docker-compose.yml einträgst.\ndocker exec -it bitwarden-bitwarden-1 /vaultwarden hash An der interaktiven Eingabe liefert vaultwarden den Hash. Bei „Password“ und der „Confirmation“ gibst Du ein sicheres Passwort ein. Hier habe ich tatsächlich das von oben gehashed.\nGenerate an Argon2id PHC string using the \u0026#39;bitwarden\u0026#39; preset: Password: Confirm Password: ADMIN_TOKEN=\u0026#39;$argon2id$v=19$m=65540,t=3,p=4$EoFG1F5GnAxxNLYwXbYT28KKTO10z2DPopv8z+byAtA$9cUR4WnOQBFT4zpCT4diyX45vtuJ+dRxPbOgrY5v7Os\u0026#39; Generation of the Argon2id PHC string took: 337.453884ms Den Hash trägst Du in Schritt 3 interpoliert in die docker-compose.yml ein und startest den Container einmal neu. Interpoliert bedeutet, dass die im hash enthaltenen $-Zeichen durch $$ ersetzt werden müssen. Andernfalls kommt es zu Warnmeldungen an der Kommandozeile, aber nicht zum ordnungsgemäßen Start des Containers. Das sähe dann in etwa so aus:\nWARN[0000] The \u0026#34;argon2id\u0026#34; variable is not set. Defaulting to a blank string. WARN[0000] The \u0026#34;v\u0026#34; variable is not set. Defaulting to a blank string. WARN[0000] The \u0026#34;m\u0026#34; variable is not set. Defaulting to a blank string. WARN[0000] The \u0026#34;y***K\u0026#34; variable is not set. Defaulting to a blank string. WARN[0000] The \u0026#34;K1mSokR*******sKBOVgVMsQ8O**********\u0026#34; variable is not set. Defaulting to a blank string. Alternative Verfahren werden in der Dokumentation [1] beschrieben. Folgerichtig sieht der Wert in der docker-compose.yml wie folgt aus:\nenvironment: # uncomment to deactivate the admin panel / auskommentieren um Adminpanel zu laden # our password, to be hashed will be / das zu hashende Passwort wird # \u0026#34;ShuffleRandom1234%$!\u0026#34; ADMIN_TOKEN: \u0026#39;$$argon2id$$v=19$$m=65540,t=3,p=4$$EoFG1F5GnAxxNLYwXbYT28KKTO10z2DPopv8z+byAtA$$9cUR4WnOQBFT4zpCT4diyX45vtuJ+dRxPbOgrY5v7Os\u0026#39; SIGNUPS_ALLOWED: \u0026#39;false\u0026#39; INVITATIONS_ALLOWED: \u0026#39;true\u0026#39; Es ist nicht ganz ungeschickt, wenn Du Dir dieses Passwort merkst. Vergisst Du es, dann kannst Du aber auch ein Neues einrichten (Strapazen).\nMit der Definition SIGNUPS_ALLOWED bleiben wir unter uns, oder Du unter Dir. Diese Direktive verhindert, dass man sich eben mal so an dem Server anmeldet, sich ein Konto einrichtet und Deine Ressourcen nutzt.\nMit INVITATIONS_ALLOWED kannst Du es aber wieder soweit aufweichen, dass Du zumindest jemanden hinzufügen kannst. Eine gute Kombination, wenn Du zB Konten für Family \u0026amp; Friends einrichten willst.\nClients Für bitwarden gibt es natürlich auch Clients, nicht nur die Webseite. Die wahrscheinlich beliebtesten (die Mobile Clients) bekommt man aus dem AppStore für iOS und bei Google Play. Alle anderen Apps, Extensions und Clients findest Du im Downloadbereich von bitwarden.\niOS Worum ging es bei der Einrichtung? Ich denke mal darum, dass man schnell einen Passwort-Manager an der Hand hat und überall nutzen kann? Dann zeige ich Dir am Beispiel iOS, wie Du auf Deinen Server zugreifen kann. Da mir tatsächlich nur iOS zur Verfügung steht habe ich keine Android-Anleitung. Wird sich aber wohl nicht grundlegend unterscheiden.\nZunächst musst Du Dir die App laden und dann öffnen.\niOS App\nIm Anschluss klickst Du auf das Zahnrad rechts oben und trägst unter Server URL Deinen Server ein. Das korreliert mit dem Eintrag Host(…) in der docker-compose.yml\ntraefik.http.routers.bitwarden.rule=Host(`vault.tolledomain.tld`) iOS App: Server eintragen\nBestätige das mit Speichern (rechts oben). Dann kannst Du Dich an die Anmeldung machen. Diese entspricht den Anmeldedaten von weiter oben. Die Anfrage wird somit an Deinen Server und nicht mehr an bitwarden.com geleitet.\nMehrere Konten nutzen Wenn Du, so wie ich mehrere Server administrierst oder nutzt, ist bitwarden sehr einfach mit diesem zu verknüpfen. In der App kann einfach ein neues Konto hinzugefügt werden. Wichtig zu wissen ist, dass hier wieder erste über das Zahnrad die URL des Servers eingetragen werden muss!\niOS App: Mehrere Server\nZusammenfassung Wir haben hier sehr schnell einen eigenen Passwort Manager etabliert und sparen uns damit monatliche Abokosten. Vom Spaß des Einrichtens von Docker + Bitwarden mal ganz abgesehen.\nEs bleibt die (Un-)Sicherheit der eigenen Person. Kein Backup, kein Mitleid.\n— UPDATE\nUpdate Auch bitwarden / valutwarden braucht von Zeit zu Zeit ein Update. Der Update-Prozess sieht dabei wie folgt aus:\nNeuestes Version laden Alten Bitwarden-Container stoppen Alten Bitwarden-Container löschen Neuen Bitwarden-Container starten Die Schritte im Einzelnen docker pull vaultwarden/server:latest Damit wird völlig unverfänglich das neueste Image (Container) herunter geladen. In dieser Anleitung habe ich die docker-compose.yml so ausgelegt, dass die Daten persistent und außerhalb des Containers aufbewahrt werden. Dies ist wichtig, denn sonst kann der übernächste Schritt zum Totalausfall mutieren.\ndocker stop \u0026lt;containername\u0026gt; Den \u0026lt;containername\u0026gt; bekommst Du mit docker ps --format \u0026quot;{{.Names}}\u0026quot; am schnellsten. In meinem Fall lautet der Name bitwarden-bitwarden-1 was zu folgendem Löschbefehl führt:\ndocker rm bitwarden-bitwarden-1 Mit dem nächsten Befehl fährt der aktualisierte Container dann wieder hoch:\ndocker compose -f /opt/containers/bitwarden/docker-compose.yml up -d Quellen https://github.com/dani-garcia/vaultwarden/wiki/Enabling-admin-page#secure-the-admin_token https://github.com/dani-garcia/vaultwarden/wiki/Updating-the-vaultwarden-image ","date":"January 1, 2024","permalink":"/anleitungen/docker/bitwarden/","summary":"Bitwarden = Vaultwarden\nVorbereitungen Den Server vorbereiten heißt, am Server anmelden und in die bekannte Struktur einen neuen Ordner erstellen. In diesen schreibe ich die Konfiguration für docker compose.\n","title":"Bitwarden","type":"anleitungen"},{"content":"Ubiquiti UniFi Komponenten wie Access Points, Switches oder Dream Machine lassen sich über den UniFi Controller komfortabel aktualisieren. Es gibt aber auch den Ansatz, das UniFi Device Update per SSH durchzuführen. Die Gründe dafür sind vielfältig. Für diese Anleitung lege ich einen kompletten Factory Reset zugrunde.\nFactory Reset Bei den meisten UniFi Devices, die ich bislang in den Händen gehalten habe, gibt es einen Button für den Reset. Mit einer Büroklammer wird dieser rund 10 Sekunden gedrückt. Der Beginn des Zurücksetzen beginnt mit dem Aufleuchten der LED in Weiß. Das Device wird nach dem Reset in aller Regel eine neue IP bekommen. Von daher ist es vorteilhaft, wenn man die MAC-Adresse und einen IP-Scanner zur Hand hat.\nFür Windows empfehle ich den IP Advanced Scanner (Link zur Seite des Herstellers) . Dieser muss nicht installiert werden, sondern kann auch nur ausgeführt werden. In Unternehmen muss der Einsatz mit den IT-Verantwortlichen abgestimmt werden. Es kann sein, dass selbst das Ausführen von Dateien unterbunden und vielleicht auch protokolliert wird.\nAm Mac verwende ich seit einiger Zeit Debookee (Link zur Seite des Herstellers) . Dieser ist zunächst kostenlos, kann dann entsprechend aufgebohrt werden (kostenpflichtig). Im App Store gibt es auch noch LanScan.\nDer Einsatz der erwähnten Software von oben erfolgt auf jeden Fall auf eigene Gefahr.\nAnmelden am Terminal Nach dem Herausfinden der IP-Adresse über die MAC kann die Anmeldung am Terminal stattfinden. Die Anmeldeinformation für den Zugriff über SSH findet nach folgendem Muster statt:\nssh ubnt@111.222.333.444 Der Benutzername und das Kennwort sind in diesem Zustand immer ubnt/ubnt. Wenn man dann auf der Console des Devices ist, dann kann es mit dem Update/Upgrade losgehen\nAnmeldebildschirm\nFirmware suchen und finden Auf den UniFi Downloadseiten findet man alle verfügbaren Firmware-Versionen. Die Seite hat seit dem letzten Relaunch an Komfort und Übersicht verloren. Ergo sollte man wissen wonach man sucht. Im Falle des PoE-Switch 24-250W habe ich den Suchbegriff 24 PoE (Gen1) eingegeben und als Ergebnis die entsprechende Seite, wie abgebildet erhalten.\nStand 02/26 UniFi Downloadseiten\nWas Du für die Aktualisierung benötigst, ist der Link zur *.bin-Datei, die UniFi verwendet. Je nach Browser wird der Link mit dem Kontextmenü in den Zwischenspeicher kopiert.\nUniFi Device Update per SSH Das Update (oder Upgrade) wird nach der Anmeldung mit vorangestelltem Befehl upgrade und nachgelagertem Pfad zur Datei ausgeführt. Den Rest macht das System, inkl. Reboot.\nupgrade https://dl.ubnt.com/unifi/firmware/USMULTUS8/6.5.59.14777/US.MULT.US8_6.5.59+14777.230615.0259.bin Upgrade\n","date":"September 20, 2023","permalink":"/anleitungen/unifi/unifi-update-ssh/","summary":"Ubiquiti UniFi Komponenten wie Access Points, Switches oder Dream Machine lassen sich über den UniFi Controller komfortabel aktualisieren. Es gibt aber auch den Ansatz, das UniFi Device Update per SSH durchzuführen. Die Gründe dafür sind vielfältig. Für diese Anleitung lege ich einen kompletten Factory Reset zugrunde.\nFactory Reset Bei den meisten UniFi Devices, die ich bislang in den Händen gehalten habe, gibt es einen Button für den Reset. Mit einer Büroklammer wird dieser rund 10 Sekunden gedrückt. Der Beginn des Zurücksetzen beginnt mit dem Aufleuchten der LED in Weiß. Das Device wird nach dem Reset in aller Regel eine neue IP bekommen. Von daher ist es vorteilhaft, wenn man die MAC-Adresse und einen IP-Scanner zur Hand hat.\n","title":"UniFi Device Update per SSH","type":"anleitungen"},{"content":"\rCortana abstellen\nNicht in allen Umgebungen macht Cortana Sinn, oder anders formuliert – ist sie ein administrativ gern gesehener Gast. Vor allem in Umgebungen, in denen es auf den Datenschutz ankommt, Stichwort Firmennetzwerk.\nDer Funktionsausbau von Cortana ist natürlich und verständlicherweise ein Anliegen Microsofts. Zulasten des Datenschutzes, zumal sich hier unkontrollierbare Datenströme auftun.\nLokale administrative Tätigkeiten Wenn Du Deinen Rechner zum Schweigen bringen willst, dann musst Du einfach in der Registry ein paar Einträge machen, oder Dir aus dem nachfolgenden Code eine .reg-Datei machen. Diese lässt sich per Doppelklick ausführen.\nWindowsRegistryEditorVersion5.00 [HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Search] \u0026#34;ConnectedSearchUseWeb\u0026#34;=dword:00000000 \u0026#34;AllowCortana\u0026#34;=dword:00000000 \u0026#34;AllowCortanaAboveLock\u0026#34;=dword:00000000 \u0026#34;AllowSearchToUseLocation\u0026#34;=dword:00000000 \u0026#34;DisableWebSearch\u0026#34;=dword:00000001 Dabei wird Cortana deaktiviert, die Suchfunktion im Netz unterdrückt und die Standortbestimmung bei Suchergebnissen gesperrt.\nIn der Domäne Möchtest Du stattdessen in der Domäne für Ruhe sorgen, musst (solltest) Du Gruppenrichtlinien bemühen und zwar in der OU für die die Computer-Eigenschaften manipuliert werden:\nADMX aktualisieren Für die Einstellungen mit Gruppenrichtlinien und ohne den Einsatz des Registry-Elementes installierst Du die neusten ADMX Dateien. Nach der Installation der *.msi in den vorgeschlagenen Speicherort, verschiebst Du diese nach %SystemRoot%\\PolicyDefinitions oder wenn Du einen Central Store hast nach \\FQDN\\SYSVOL\\FQDN\\policies\\PolicyDefinitions\nMicrosoft beschreibt in einem Knowledge-Base Artikel, wie man einen Central Store für Gruppenrichtlinien erstellt . Auf dieser verlinkten Seite findest Du auch die aktuellen ADMX-Dateien verlinkt, passend ab Windows 8.1\nGruppenrichtlinien für Cortana Die Einstellungen für Cortana sind unter Computerkonfiguration \u0026gt; Administrative Vorlagen \u0026gt; Windows-Komponenten \u0026gt; Suche\nDabei modifizierst Du folgende Gruppenrichtlinien entsprechend:\nAktivierte GPO\nWebsuche nicht zulassen Nicht im Web suchen und keine Webergebnisse in der Suche anzeigen Deaktivierte GPO\nCortana zulassen Cortana auf Sperrbildschirm zulassen Der Suche und Cortana die Nutzung von Positionsdaten erlauben Damit bekommt ihr die Domäne frei von Cortana. Was im Hintergrund noch so alles getrieben wird mal außen vor.\n","date":"January 1, 2018","permalink":"/anleitungen/windows/cortana/","summary":"\rCortana abstellen\nNicht in allen Umgebungen macht Cortana Sinn, oder anders formuliert – ist sie ein administrativ gern gesehener Gast. Vor allem in Umgebungen, in denen es auf den Datenschutz ankommt, Stichwort Firmennetzwerk.\nDer Funktionsausbau von Cortana ist natürlich und verständlicherweise ein Anliegen Microsofts. Zulasten des Datenschutzes, zumal sich hier unkontrollierbare Datenströme auftun.\nLokale administrative Tätigkeiten Wenn Du Deinen Rechner zum Schweigen bringen willst, dann musst Du einfach in der Registry ein paar Einträge machen, oder Dir aus dem nachfolgenden Code eine .reg-Datei machen. Diese lässt sich per Doppelklick ausführen.\n","title":"Cortana deaktivieren","type":"anleitungen"},{"content":"Kennt noch jemand mutt? Das kleine Kommandozeilen E-Mailprogramm mit dem wir, gegen Ende der französischen Revolution, unsere Mails am Uni-Server gelesen haben? Jetzt ist es nicht gerade so, dass ich hier eine Empfehlung aussprechen möchte, die gängigen Mailclients von Bord zu schmeißen und voll auf mutt zu setzen. Aber ich bin gerade wieder auf einem der Server und möchte mit mutt Mails löschen (um mehr geht es hier auch tatsächlich nicht).\nAlso lmgtfy oder hier nachlesen.\nEntsprechend ziehe ich das Starterkabel und mache mich daran mit mutt, Tim Benzkos 148713 Mails zu checken. Das System schickt mir diese bei allen möglichen Gelegenheiten und es ist an der Zeit, das Postfach einer gewissen Hygiene zu unterziehen. An der shellder Wahl:\nserver:/\u0026gt;mutt\nViel zu viele ungelesene Mails in mutt\u0026hellip;\nWie man der obigen Abbildung entnehmen kann, sind da viele Mails, die ich gerne löschen möchte. Aber der Ansatz, dass ich mich durch jede Mail mit d durchklicke und diese als „zu löschend“ markiere, ist Keiner.\nStattdessen drücke ich D und gebe ein Suchmuster ein, auf dessen Basis ich Mails löschen möchte.\nViel zu viele ungelesene Mails in mutt\u0026hellip;\nIn diesem Fall Undelivered Mail. Mit Enter kommt es zum Showdow und ein Großteil der Mails verschwindet im Nirvana.\nDie restliche Bedienung von mutt ist kein Teil dieses Artikels, da ich das Programm wirklich für kaum was anderes verwende.\n","date":"January 1, 1970","permalink":"/anleitungen/linux/mutt/","summary":"Kennt noch jemand mutt? Das kleine Kommandozeilen E-Mailprogramm mit dem wir, gegen Ende der französischen Revolution, unsere Mails am Uni-Server gelesen haben? Jetzt ist es nicht gerade so, dass ich hier eine Empfehlung aussprechen möchte, die gängigen Mailclients von Bord zu schmeißen und voll auf mutt zu setzen. Aber ich bin gerade wieder auf einem der Server und möchte mit mutt Mails löschen (um mehr geht es hier auch tatsächlich nicht).\nAlso lmgtfy oder hier nachlesen.\n","title":"Mails löschen in mutt","type":"anleitungen"}]