Skip to main content

Anki - intelligente Karteikarten, die wirklich hängen bleiben 🧠

Schritt 1: Komposition vorbereiten

AnkiWir istwollen, dass eine Domain eingerichtet wird, die mit https://... aufgerufen werden kann, weshalb ich mich für Caddy entschieden habe.

Erstelle einen Ordner hier: /opt/bookstack Und darin zwei Dateien: Caddyfile und docker-compose.yml
Füge dort den folgenden Inhalt ein freies und Open-Source-Programmpasse zumihn Lernenan:

mit digitalen Karteikarten. Sein großer Vorteil: Anki nutzt bewährte Methoden aus der Kognitionswissenschaft – vor allem Active Recall

BookStack-YML (aktivesdocker-compose.yml)

Abrufen)
services:
  undmariadb:
    Spacedimage: Repetitionlscr.io/linuxserver/mariadb:latest
    container_name: bookstack-mariadb
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
      - MYSQL_ROOT_PASSWORD=PW_OF_MYSQL_ROOT
      - MYSQL_DATABASE=bookstack
      - MYSQL_USER=bookstack
      - MYSQL_PASSWORD=PW_OF_MYSQL_DB
    volumes:
      - ./mariadb:/config
    restart: unless-stopped

  bookstack:
    image: lscr.io/linuxserver/bookstack:latest
    container_name: bookstack
    depends_on:
      - mariadb
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin

      - APP_URL=https://wiki.fabula.vision
      # Wo wird BookStack aufrufbar sein? (verteiltesDeine Wiederholen)URL)
      - APP_KEY=base64:...
      Dadurch# lernstZum duGenerieren nichtdas nurausführen: „mehr“,docker sondernrun vor-it allem--rm dauerhafter.--entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest Derappkey
      Name- „Anki“APP_THEME=custom
      stammt#'custom' ausermöglich demes Japanischen „暗記“ und bedeutet wörtlich „Auswendiglernen“ bzw. „Memorisation“.


Warum Anki so gut funktioniert
1. Active Recall: Wissen aktiv herausholen
Statt Inhalte nurHacks zu lesennutzen; odermehr dazu hier: https://www.bookstackapp.com/hacks/applying/

      - DB_HOST=mariadb
      - DB_PORT=3306
      - DB_DATABASE=bookstack
      - DB_USERNAME=bookstack
      - DB_PASSWORD=PW_OF_MYSQL_DB
      # (Wie oben!)

      - APP_DEFAULT_DARK_MODE=true
      # (Geschmackssache)

    volumes:
      - ./bookstack:/config
    restart: unless-stopped

  caddy:
    image: caddy:latest
    container_name: caddy
    depends_on:
      - bookstack
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy/data:/data
      - ./caddy/config:/config
    restart: unless-stopped

Caddyfile

wiki.fabula.vision {
	# Deine URL natürlich...
	encode zstd gzip

	# Reverse Proxy zu markieren,BookStack zwingt(Container dichheißt eine Karteikarte, die Antwort selbst zu produzieren. Dieses aktive Abrufen ist deutlich effektiver als passives Wiedererkennen.

2. Spaced Repetition: Wiederholen im richtigen Moment

Anki zeigt dir Karten nicht zufällig"bookstack", sonderninterner dann,Port 80) reverse_proxy bookstack:80 # sinnvolle Header (optional) header { # HSTS (nur setzen, wenn du siesicher vermutlich gerade zu vergessen drohst. So investierst du Zeit dort, wo sie den größten Effekt hat:

    Leichte Karten kommen seltener Schwierige Karten kommen häufiger und alles passt sich dynamisch an dein Antwortverhalten an

    Der „Motor“ dahinter: Algorithmen (SM‑2 & FSRS) ⚙️

    Historisch basiert Anki auf dem SM‑2-Ansatz (bekannt aus SuperMemo), wurde aber über die Jahre stark angepasst und deutlich konfigurierbarer gemacht.

    Seit Anki 23.10 gibt es zusätzlich FSRS (Free Spaced Repetition Scheduler) als optionalen, modernen Scheduler. FSRS versucht, Wiederholungen noch genauer zu timen, indem es Gedächtniszustände modelliert (u. a. Schwierigkeit, Stabilität und Abrufbarkeit). In der Praxis berichten viele,bist, dass damitHTTPS beidauerhaft gleicheraktiv Ziel-Behaltensquotesein wenigersoll) ReviewsStrict-Transport-Security nötig"max-age=31536000; sindincludeSubDomains; preload" geradeX-Content-Type-Options bei"nosniff" großenX-Frame-Options Lernprojekten.

    "SAMEORIGIN"
    Referrer-Policy "strict-origin-when-cross-origin" } }

    Wie Anki aufgebaut ist: Notes vs. Cards 📌

    Ein Schlüsselkonzept, das Anki von vielen simplen Karteikarten-Apps unterscheidet:

      Notiz (Note) = ein Datensatz mit Feldern (z. B. „Vokabel“, „Übersetzung“, „Audio“, „Beispielsatz“) Karten (Cards) = konkrete Abfragen, die aus derselben Notiz generiert werden

      Das ist praktisch, weil du aus einer Notiz mehrere Blickwinkel erzeugen kannst – und Korrekturen an einem Feld automatisch alle Karten aktualisieren.

      Beispiel (Sprachenlernen)

      Eine Notiz könnte so aussehen:

        Feld 1: Ausdruck – „gâteau“ FeldSchritt 2: Aussprache – Audio Feld 3: Bedeutung – „cake“

        Daraus lassen sich mehrere Karten bauen, z. B.:

        Starten
        1. FranzösischIns Verzeichnis Deutsch/Englischwechseln:
          cd /opt/bookstack/
        2. AudioUnser Zeugs Wortinstallieren:
          docker erkennencompose up -d
          Aktualisieren geht dann so:
          docker compose pull; docker compose up -d
        3. Deutsch/EnglischFertig, aber Französischnun produzierenschnell die URL aufrufen und die Standard-Zugangsdaten ändern!
          Standard-Login (User + Passwort): admin@admin.com + password

        Cloze Deletion: Lücken lernen wie in echten Texten ✍️

        Anki hat einen eingebauten Cloze-Notiztyp: Du markierst Teile eines Satzes als Lücke, z. B.:

          „Die Hauptstadt von Frankreich ist {{c1::Paris}}.“

          Jede Cloze-Markierung erzeugt automatisch eine eigene Karte. Das ist besonders beliebt für:

            Medizin

            Beschränkungen & Jura (Definitionen, Klassifikationen)

            Formeln & Faktenwissen Sprachen (Chunking, Redewendungen im Kontext)

            Inhalte: von Text bis LaTeX und Audio 🎧📷

            Anki ist inhaltlich agnostisch: Karten können u. a. enthalten:

              Text, Bilder, Audio, Video LaTeX (super für Mathe/Physik/Chemie) HTML/CSS (für Layout, Farben, Tabellen, etc.)

              Die lokalen Daten werden typischerweise in einem SQLite-Format gespeichert – gut für Stabilität und Portabilität.


              Sync & Plattformen: Desktop als Zentrale, Mobile als Begleiter 📱💻

              Typisch ist dieser Workflow:

                Am Desktop Karten erstellen und pflegen Unterwegs am Handy/Tablet wiederholen

                Dazu gibt es mehrere „Bausteine“:

                  Anki (Desktop): Windows, macOS, Linux (u. a.) AnkiWeb: Online-Sync und Review im Browser AnkiDroid (Android): kostenlos, Open Source AnkiMobile (iOS): kostenpflichtig (oft als Finanzierung für das Projekt gesehen)

                  Außerdem existieren Möglichkeiten zum Self-Hosting (z. B. Sync-Server), was für fortgeschrittene Nutzer interessant ist, die Unabhängigkeit oder interne Infrastruktur möchten.


                  Add-ons & Community: Anki ist ein Baukasten 🧩

                  Ein großer Pluspunkt ist das Ökosystem aus Add-ons (Erweiterungen). Damit kannst du Anki z. B. aufrüsten um:

                    bessere Statistiken und Lernanalysen Image Occlusion (z. B. Anatomie-Bilder abdecken) effizientere Editor-Workflows (Batch-Editing, Templates) TTS/Sprachsynthese-Integration UI-Verbesserungen und Automationen

                    Shared Decks: schnell starten – aber mit Bedacht 📚

                    Module/Hacks

                    Es gibt einedrei großeEinschränkungen, Sammlungdie anich geteiltenbisher Decks,festgestellt etwa für:habe:

                      1. Sprachen (häufig nach Wortfrequenz sortiert)
                    Naturwissenschaften Geografie und Allgemeinwissen besonders prominent:

                    medizinische DecksE-Mail-Versand (z. B. große„Passwort Community-Decksvergessen“) rundfunktioniert umnicht, USMLE)bzw. meine Experimente haben noch keine Lösung hervorgebracht und ich brauche das auch nicht zwingend. Aber wenn man z.B. Kommentare aktivieren will (User bekommen eine Benachrichtigung, wenn ihre Seiten kommentiert werden), dann kommt man da nicht drumherum. Mehr dazu hier.

                    TrotzdemMan gilt oftkann die Faustregel:
                    Funktionalität mit sogenannten Eigene„Hacks" Kartenerweitern sindund meistich wertvollerkann alszwei fremde, weil du beim ErstellenHacks schon lernstmal und die Inhalte besser zu deinem Kontext passen.empfehlen:


                    Wofür Anki besonders stark ist (und wofür weniger)

                    ✅ Ideal für …

                      Vokabeln, Formeln, Definitionen, Fakten, Diagnoseschemata Prüfungen mit hohem Recall-Anteil langfristiges Wissensmanagement („Second Brain“ für Fakten)

                      ⚠️ Weniger ideal für …

                        rein konzeptuelles Verstehen ohne „abfragbare Einheiten“ kreative Fähigkeiten, die viel Praxis statt Abruf brauchen
                        (Anki kann unterstützen – ersetzt aber nicht Übung und Anwendung.)

                        Mini-Leitfaden: So nutzt du Anki „smart“ 😌

                        1. Kartenhttps://www.bookstackapp.com/hacks/mathjax-tex/
                          Mathe-Formeln klein halten („atomic“)
                            darstellen;
                          • Lieberhttps://www.bookstackapp.com/hacks/mermaid-viewer/
                            (Mermaid-)Diagramme einedarstellen;
                          klare Frage

                          Allerdings profunktioniert Kartedas nicht mit der Export-Funktion, d.h. wenn ein Besucher Buch X als einPDF ganzesbeispielsweise Kapitel.exportiert, dann sieht er statt Formeln und Diagrammen nur Code-Blöcke.

                          Und das mit dem Exportieren funktioniert eh leider nicht bei mir, habe keine Ahnung warum und deshalb die Funktion einfach deaktiviert.

                          Ok, aber wie installiert man nun die Hacks? – Also den ersten Schritt haben wir getan, indem wir oben (in der YML-Datei) APP_THEME=custom definiert haben, was dafür sorgt, dass fortan Module geladen werden können, die sich hier befinden /opt/bookstack/bookstack/www/themes/custom/modules

                          Nun muss man per SSH das eingeben:

                            docker exec -it bookstack /bin/bash Damit kann man dann Befehle „von innen“ heraus ausführen; Dann: cd /app/www/; Und dort dann das Kommando ausführen, das hier angezeigt wird (am Beispiel Mermaid):
                            https://www.bookstackapp.com/hacks/mermaid-viewer/ (Dort dann im Abschnitt: „Install as Module“)

                            Kontext hinzufügen

                              Beispielsatz, Bild, Mini-ErklärungShift+EnteraberZeilenumbruch: ohneDa sich die KarteEntwickler zuauf überladen.den CommonMark-Standard festgelegt haben, bedeutet es, dass u.a. standardmäßig ein einfacher Zeilenumbruch nicht gerendert wird: Man muss zwei Spaces am Zeilenende schreiben und dann Enter, damit ein einfacher Linebreak stattfindet – das hat mich wahnsinnig gemacht, weil alle Markdown-Editoren, die ich kenne funktionieren da anders (einfach Shift+Enter). Das wollte ich unbedingt ändern und habe dafür ein paar Stunden Zeit investiert. Jedenfalls sieht der Fix folgendermaßen aus:

                                Hier (https://example.com/settings/customization) bei „Custom HTML Head Content“ diesen Code eintragen:

                                <script>
                                  window.addEventListener('editor-markdown::setup', event => {
                                    event.detail.markdownIt.set({breaks: true});
                                  });
                                </script>
                                
                                Nicht alles

                                Dann importierenhier

                                  eine Qualitätfunctions.php anlegen:
                                  /opt/bookstack/bookstack/www/themes/
                                  Mit dem folgenden Inhalt:
                                  <?php
                                  
                                  use BookStack\Theming\ThemeEvents;
                                  use BookStack\Facades\Theme;
                                  
                                  Theme::listen(ThemeEvents::COMMONMARK_ENVIRONMENT_CONFIGURE, function ($environment) {
                                    $environment->mergeConfig([
                                      'renderer' => Quantität.[
                                        Schlechte'soft_break' Karten=> erzeugen"<br>",
                                      Frust]
                                    und]);
                                  
                                    Review-Berge.
                                  return $environment; }); Konsequent bleiben
                                    Anki belohnt Regelmäßigkeit: lieber täglich 15–30 Minuten als seltene Marathon-Sessions.

                                    Fazit: Anki

                                    Weitere istQoL-Fixes kein(einzustellen hier: https://example.com/settings/customization)

                                    Einfach unterTrick“,Custom sondernHTML einHead SystemContent“ eintragen:

                                      AnkiBlockquotes isthaben keinen dicken Rand unten (liegt am CSS, weil u.a. alle <p>-Elemente margin-bottom haben):

                                      <style>
                                        /* 1) Letztes & erstes direktes Kindelement im KernBlockquote: einMargin Werkzeug*/
                                        .content-wrap blockquote > :last-child {
                                          margin-bottom: .3em;
                                        }
                                      
                                        .content-wrap blockquote > :first-child {
                                          margin-top: .3em;
                                        }
                                      
                                        /* 2) Blockquote: keine Scrollbalken */
                                        .content-wrap blockquote {
                                          overflow: visible;     /* Standard „ohne Scrollen“ */
                                          overflow-x: visible;
                                          overflow-y: visible;
                                        }
                                      </style>
                                      

                                      Codeblöcke haben Soft-Wraps (also man muss nicht horizontal scrollen, um die ganze Zeile zu sehen):

                                      <script>
                                      window.addEventListener('library-cm6::pre-init', dasevent wissenschaftlich=> gut{
                                          begründeteconst Lernprinzipiendetail in= einenevent.detail;
                                          alltagstauglichenconst Workflowconfig gießt.= Werdetail.editorViewConfig;
                                          esconst klugEditorView einsetzt,= bautdetail.libEditorView;
                                      
                                          sichif damit(detail.usage über=== Monate'content-code-block') und{
                                              Jahreconfig.extensions.push(EditorView.lineWrapping);
                                          ein}
                                      erstaunlich});
                                      stabiles</script>
                                      Wissensfundament

                                      Text im Dark-Mode heller machen:

                                      <style>
                                        /* Textfarben im Dark Mode auf 'white' egalsetzen ob*/
                                        fürhtml.dark-mode Sprachen,body Studium,{
                                          Berufcolor: oderwhite;              persönliche/* Projekte.Haupttext 🌿*/
                                        }
                                      </style>