{"id":33371,"date":"2026-08-03T11:39:00","date_gmt":"2026-08-03T09:39:00","guid":{"rendered":"https:\/\/contabo.com\/blog\/?p=33371"},"modified":"2026-08-17T11:22:23","modified_gmt":"2026-08-17T09:22:23","slug":"notediscovery-vps-docker-selbst-hosten","status":"publish","type":"post","link":"https:\/\/contabo.com\/blog\/de\/notediscovery-vps-docker-selbst-hosten\/","title":{"rendered":"NoteDiscovery auf einem VPS mit Docker selbst hosten"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Kurz gesagt.<\/strong> NoteDiscovery ist eine quelloffene, selbstgehostete Notiz-App, die Notizen als reine Markdown-Dateien speichert. Diese Anleitung bringt sie auf einem Contabo VPS mit Docker Compose zum Laufen, hinter einem Caddy Reverse Proxy mit automatischem HTTPS. Du richtest einen Cloud VPS 4 ein (4 vCPU-Kerne, 8 GB RAM), holst das offizielle Image ghcr.io\/gamosoft\/notediscovery, aktivierst den Passwortschutz, verbindest einen KI-Assistenten \u00fcber MCP und legst Backups an. Dauer: rund 20 Minuten.<\/p>\n\n\n\n<h2 id=\"h-voraussetzungen\" class=\"wp-block-heading\">Voraussetzungen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">NoteDiscovery ist eine schlanke, selbstgehostete Wissensdatenbank und l\u00e4uft deshalb problemlos auf einem kleinen VPS. Leg dir vorher das Folgende bereit:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Einen Contabo Cloud VPS 4 (4 vCPU-Kerne, 8 GB RAM) oder gr\u00f6\u00dfer mit Ubuntu 24.04 oder neuer<\/li>\n\n\n\n<li>Docker und das Docker-Compose-Plugin auf dem Server installiert<\/li>\n\n\n\n<li>Eine Domain mit einem A-Record, der auf die IP-Adresse deines VPS zeigt<\/li>\n\n\n\n<li>Caddy f\u00fcr automatisches SSL, oder einen bestehenden Reverse Proxy, falls du schon einen betreibst<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn du von einem synchronisierten Vault in einer App wie Obsidian wegwillst: selbstgehostete Setups haben denselben Aufbau wie diese Anleitung, also ein Docker-Container, ein Daten-Volume und ein Reverse Proxy davor. Der Unterschied ist, dass NoteDiscovery seine eigene Weboberfl\u00e4che mitbringt. Ein separates Sync-Plugin musst du also nicht konfigurieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die genannten 20 Minuten gelten, wenn der VPS schon bereitsteht und DNS bereits auf ihn zeigt. Die DNS-Propagierung kann je nach Registrar zus\u00e4tzlich Wartezeit kosten, also fang mit diesem Schritt an, wenn du live mitarbeitest. Root-Rechte brauchst du nur f\u00fcr die erste Einrichtung des Servers. Sobald Docker installiert ist, l\u00e4uft jeder weitere Schritt als Container-Operation oder als Bearbeitung einer eingebundenen Konfigurationsdatei.<\/p>\n\n\n\n<h2 id=\"h-schritt-1-vps-bereitstellen-und-docker-installieren\" class=\"wp-block-heading\">Schritt 1: VPS bereitstellen und Docker installieren<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Bereitstellung dauert etwa f\u00fcnf Minuten und ist der einzige Teil dieser Anleitung, der au\u00dferhalb von Docker passiert. Starte einen Cloud VPS 4 im Contabo Customer Control Panel, w\u00e4hle Ubuntu 24.04 oder neuer und hinterlege deinen SSH-Schl\u00fcssel direkt bei der Einrichtung, damit Passwort-Logins komplett wegfallen. Hast du noch kein Schl\u00fcsselpaar, erzeuge lokal eines mit ssh-keygen -t ed25519, bevor du das Bestellformular \u00f6ffnest. Im Customer Control Panel f\u00fcgst du den \u00f6ffentlichen Schl\u00fcssel direkt im Bereitstellungsdialog ein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sobald der Server gebootet ist, verbinde dich und sichere ihn ab, bevor du irgendetwas installierst. Die Firewall-Regeln unten \u00f6ffnen nur das, was diese Anleitung wirklich braucht: SSH f\u00fcr die Verwaltung und die Ports 80 und 443, damit Caddy HTTP und HTTPS ausliefern kann. Alles andere auf dem Server bleibt von au\u00dfen unerreichbar. Das z\u00e4hlt hier mehr als bei einer typischen Web-App, weil deine Notizen auf derselben Maschine liegen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh root@your-server-ip\nufw allow OpenSSH\nufw allow 80\/tcp\nufw allow 443\/tcp\nufw enable<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ist die Firewall aktiv, installiere Docker und das Compose-Plugin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/get.docker.com | sh\napt install docker-compose-plugin -y\ndocker --version\ndocker compose version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist dieselbe Grundlage, auf der jede containerisierte Wissensdatenbank l\u00e4uft, und genau das, was NoteDiscovery braucht, bevor der eigene Container startet: eine abgesicherte Firewall, eine aktuelle Docker Engine und das Compose-Plugin, damit Multi-Container-Stacks nur einen Befehl entfernt sind. Pr\u00fcfe, dass beide Versionsbefehle eine Ausgabe liefern, bevor du weitermachst.<\/p>\n\n\n\n<h2 id=\"h-schritt-2-notediscovery-mit-docker-compose-ausrollen\" class=\"wp-block-heading\">Schritt 2: NoteDiscovery mit Docker Compose ausrollen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">NoteDiscovery l\u00e4uft in einem einzigen Container, der ganze Stack passt also in eine Datei. Lege zuerst ein Projektverzeichnis und einen Datenordner an, denn der Datenordner muss existieren, bevor der Container startet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p notediscovery\/data &amp;&amp; cd notediscovery<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dann erstelle docker-compose.yml:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n&nbsp; notediscovery:\n&nbsp;&nbsp;&nbsp; image: ghcr.io\/gamosoft\/notediscovery:latest\n&nbsp;&nbsp;&nbsp; container_name: notediscovery\n&nbsp;&nbsp;&nbsp; restart: unless-stopped\n&nbsp;&nbsp;&nbsp; ports:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - \"8000:8000\"\n&nbsp;&nbsp;&nbsp; volumes:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - .\/data:\/app\/data<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jede Zeile hat eine Aufgabe: <code>image <\/code>holt den offiziellen Build direkt aus der GitHub Container Registry, <code>restart: unless-stopped<\/code> bringt NoteDiscovery nach einem Neustart oder Absturz zur\u00fcck, ports bildet Port 8000 des Containers auf denselben Port des Hosts ab, und die einzelne Volume-Zeile ist der Grund, warum deine Notizen bleiben, statt mit dem Container zu verschwinden. Einen Datenbankdienst brauchst du nicht, weil NoteDiscovery keine Datenbank hat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Starte den Stack:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d\ndocker compose logs -f notediscovery<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">NoteDiscovery lauscht jetzt auf Port 8000, und deine Notizen liegen als reine Markdown-Dateien in <code>.\/data<\/code>, nicht in einer Datenbank. Ruf <code>http:\/\/your-server-ip:8000<\/code> auf und pr\u00fcfe, dass die Oberfl\u00e4che l\u00e4dt, bevor du den Reverse Proxy davorsetzt. Beendet sich der Container sofort wieder, kontrolliere, ob der Ordner <code>data <\/code>existiert und beschreibbar ist. Ein leeres oder fehlendes Volume ist die h\u00e4ufigste Ursache f\u00fcr einen fehlgeschlagenen ersten Start.<\/p>\n\n\n\n<h2 id=\"h-schritt-3-caddy-als-reverse-proxy-mit-https-einrichten\" class=\"wp-block-heading\">Schritt 3: Caddy als Reverse Proxy mit HTTPS einrichten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Caddy sitzt vor NoteDiscovery und \u00fcbernimmt HTTPS automatisch, f\u00fcr diesen Schritt brauchst du also nur ein Caddyfile. Pr\u00fcfe vor der Installation, dass der A-Record deiner Domain auf die IP-Adresse des VPS zeigt. Die automatische Zertifikatsanfrage von Caddy scheitert stillschweigend, wenn die Domain noch nicht auf den Server aufl\u00f6st. Ein <code>dig notes.example.com<\/code>, das die IP deines Servers zur\u00fcckgibt, lohnt sich vorher. Installiere Caddy auf dem Host:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install -y debian-keyring debian-archive-keyring apt-transport-https curl\ncurl -1sLf 'https:\/\/dl.cloudsmith.io\/public\/caddy\/stable\/gpg.key' | gpg --dearmor -o \/usr\/share\/keyrings\/caddy-stable-archive-keyring.gpg\ncurl -1sLf 'https:\/\/dl.cloudsmith.io\/public\/caddy\/stable\/debian.deb.txt' | tee \/etc\/apt\/sources.list.d\/caddy-stable.list\napt update &amp;&amp; apt install caddy -y<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dann richte das Caddyfile auf deine Domain und den Container-Port aus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>notes.example.com {\n&nbsp;&nbsp;&nbsp; reverse_proxy localhost:8000\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lade Caddy neu, es fordert das Zertifikat von Let\u2019s Encrypt von selbst an:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl reload caddy<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wenige Sekunden sp\u00e4ter liefert deine Domain NoteDiscovery \u00fcber HTTPS aus, ohne dass du ein Zertifikat anfassen musst. Dasselbe Muster nutzt du f\u00fcr den Obsidian-Zugriff \u00fcber den Browser und f\u00fcr einen selbstgehosteten Obsidian-Vault auf einer \u00f6ffentlichen Domain: Caddy terminiert TLS, und der App-Container muss von der Verschl\u00fcsselung gar nichts wissen.<\/p>\n\n\n\n<h2 id=\"h-schritt-4-passwortschutz-aktivieren\" class=\"wp-block-heading\">Schritt 4: Passwortschutz aktivieren<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der Passwortschutz ist im Standard deaktiviert, und das mitgelieferte Standardpasswort lautet <code>admin<\/code>. Ihn einzuschalten, einen echten Secret Key zu erzeugen und dieses Passwort zu \u00e4ndern ist deshalb das Erste, was nach dem HTTPS-Setup dran ist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Erzeuge zuerst einen Secret Key, der die Session-Cookies verschl\u00fcsselt, aus dem laufenden Container heraus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it notediscovery python -c \"import secrets; print(secrets.token_hex(32))\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sichere diesen Wert, dann lade die Standard-Konfigurationsdatei von NoteDiscovery herunter, damit du eine eigene, bearbeitbare Kopie hast:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -o config.yaml https:\/\/raw.githubusercontent.com\/gamosoft\/notediscovery\/main\/config.yaml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bearbeite die neue <code>config.yaml<\/code> und setze:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>authentication:\n&nbsp; enabled: true\n&nbsp; password: \"your-strong-password-here\"\n&nbsp; secret_key: \"the-value-from-the-command-above\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Binde die Datei in den Container ein, damit deine \u00c4nderungen Neustarts und Image-Updates \u00fcberleben. Erg\u00e4nze sie in <code>docker-compose.yml<\/code> neben dem bestehenden Daten-Volume:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp;&nbsp;&nbsp; volumes:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - .\/data:\/app\/data\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - .\/config.yaml:\/app\/config.yaml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Erzeuge den Container neu, damit er das neue Volume \u00fcbernimmt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lade die Seite neu, und NoteDiscovery fragt jetzt nach dem Passwort, bevor es irgendeine Notiz zeigt. Diesen Schritt zu \u00fcberspringen ist keine gute Idee: Die App lauscht standardm\u00e4\u00dfig auf allen Netzwerkschnittstellen, eine ungesch\u00fctzte Instanz hinter einer \u00f6ffentlichen Domain ist also f\u00fcr jeden erreichbar, der die URL findet. Nimm ein Passwort mit echter Entropie, kein kurzes Wort mit angeh\u00e4ngter Zahl, und verwende den Secret Key nie in anderen Anwendungen. Zusammen sind beide das Einzige, was zwischen dem Internet und deinem gesamten Vault steht.<\/p>\n\n\n\n<h2 id=\"h-schritt-5-ki-assistenten-uber-mcp-verbinden\" class=\"wp-block-heading\">Schritt 5: KI-Assistenten \u00fcber MCP verbinden<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">NoteDiscovery bringt einen eigenen MCP-Server mit, das Anbinden eines KI-Assistenten ist deshalb ein Konfigurations-Snippet und keine separate Installation. Erg\u00e4nze das Folgende in der MCP-Server-Konfiguration deines Assistenten, egal ob das Claude Desktop, Cursor oder ein anderer MCP-f\u00e4higer Client ist:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n&nbsp; \"mcpServers\": {\n&nbsp;&nbsp;&nbsp; \"notediscovery\": {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \"command\": \"docker\",\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \"args\": &#91;\"run\", \"--rm\", \"-i\", \"-e\",\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \"NOTEDISCOVERY_URL=https:\/\/notes.example.com\",\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \"ghcr.io\/gamosoft\/notediscovery:latest\", \"python\", \"-m\",\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \"mcp_server\"]\n&nbsp;&nbsp;&nbsp; }\n&nbsp; }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ersetze den Wert von <code>NOTEDISCOVERY_URL<\/code> durch deine eigene Domain aus Schritt 3. Sobald der Assistent seine MCP-Server neu l\u00e4dt, kann er deine Notizen durchsuchen, neue aus einem Prompt anlegen, Tags und Backlinks durch deinen Vault verfolgen und an eine bestehende Notiz anh\u00e4ngen, etwa an ein Tagesjournal, alles ohne das Chatfenster zu verlassen. Ein Prompt wie \u201efinde alle meine Notizen zu Docker-Deployment\u201c oder \u201ef\u00fcge diese Idee dem heutigen Journaleintrag hinzu\u201c l\u00e4uft \u00fcber dieselben MCP-Tools, die ein Mensch sonst in der Weboberfl\u00e4che anklicken w\u00fcrde.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist die Funktion, die NoteDiscovery am st\u00e4rksten von einer Wissensdatenbank unterscheidet, die nur f\u00fcr Menschen gebaut ist: Dieselben Notizen sind f\u00fcr einen KI-Assistenten \u00fcber ein dokumentiertes Protokoll lesbar, nicht \u00fcber eine Browser-Erweiterung ausgelesen. Authentifiziert sich der Client deines Assistenten \u00fcber HTTPS statt \u00fcber einen lokalen Docker-Befehl, richte ihn auf die \u00f6ffentliche Domain aus Schritt 3 aus statt auf die Container-URL oben.<\/p>\n\n\n\n<h2 id=\"h-schritt-6-notizen-sichern\" class=\"wp-block-heading\">Schritt 6: Notizen sichern<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Notizen liegen als reine Markdown-Dateien in <code>.\/data<\/code>, das Backup ist also ein Datei-Sync und kein Datenbank-Export. Am einfachsten geht das mit einem geplanten Sync zu deinem Speicherziel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install rclone -y\nrclone config\n# create a remote named \"storage\" pointing at your storage location\nrclone sync \/root\/notediscovery\/data storage:notediscovery-backup<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Leg einen t\u00e4glichen Cron-Eintrag an, damit der Sync unbeaufsichtigt l\u00e4uft:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>crontab -e\n# 0 3 * * * rclone sync \/root\/notediscovery\/data storage:notediscovery-backup<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Weil der ganze Vault aus Markdown-Dateien auf der Platte besteht, l\u00e4sst sich eine solche Wissensdatenbank leicht wiederherstellen: Kopiere den gesicherten Datenordner auf einen frischen VPS, richte dieselbe Docker-Compose-Datei darauf aus und starte den Container. Spiel diese Wiederherstellung einmal wirklich durch, auf einem freien VPS oder in einer lokalen Docker-Installation, denn ein Backup, dessen Wiederherstellung du nie getestet hast, ist nur eine Vermutung. Behalte in deinem Storage-Bucket mindestens ein paar Tage Historie, statt einen einzelnen Snapshot zu \u00fcberschreiben, damit ein fehlerhafter Sync oder ein versehentliches L\u00f6schen nicht die einzige Kopie vernichtet.<\/p>\n\n\n\n<h2 id=\"h-fehlerbehebung\" class=\"wp-block-heading\">Fehlerbehebung<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Fast alles, was in diesem Setup schiefgehen kann, geht auf eine von drei Ursachen zur\u00fcck: ein fehlendes Volume, eine Zertifikatsanfrage vor fertigem DNS, oder eine Konfigurations\u00e4nderung, die nur im Container gelandet ist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Der Container beendet sich direkt nach <code>docker compose up -d<\/code>.<\/strong> Die h\u00e4ufigste Ursache ist ein fehlender oder nicht beschreibbarer Datenordner, denn NoteDiscovery erwartet ihn als bereits vorhanden. F\u00fchre <code>mkdir -p notediscovery\/data<\/code> aus Schritt 2 erneut aus, pr\u00fcfe, dass der Ordner deinem Benutzer oder root geh\u00f6rt, und starte den Stack noch einmal mit <code>docker compose up -d<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Caddy bekommt kein Zertifikat, und die Seite bleibt auf HTTP.<\/strong> Das hei\u00dft fast immer, dass der A-Record der Domain bei der ersten Anfrage von Caddy noch nicht auf die VPS-IP zeigte. Pr\u00fcfe die Aufl\u00f6sung mit dig notes.example.com und lade Caddy dann mit<code> systemctl reload caddy neu<\/code>, sobald der Record propagiert ist. Am Caddyfile musst du nichts \u00e4ndern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Die \u00c4nderung an Passwort oder Secret Key aus Schritt 4 greift nicht.<\/strong> Ein einfaches <code>docker compose restart<\/code> verwendet den bestehenden Container weiter und \u00fcbernimmt deshalb kein <code>config.yaml<\/code>-Volume, das gerade erst in <code>docker-compose.yml<\/code> erg\u00e4nzt wurde. Nutze stattdessen <code>docker compose up -d<\/code>, das den Container mit dem neuen Volume neu erzeugt.<\/p>\n\n\n\n<h2 id=\"h-faq-notediscovery-einrichten\" class=\"wp-block-heading\">FAQ: NoteDiscovery einrichten<\/h2>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1786699855342\"><strong class=\"schema-faq-question\">Wie migriere ich von Obsidian zu NoteDiscovery?<\/strong> <p class=\"schema-faq-answer\">Kopiere den Ordner deines Obsidian-Vaults direkt in das Datenverzeichnis von NoteDiscovery, denn beide speichern Notizen als reine Markdown-Dateien mit derselben Ordnerstruktur. Ein selbstgehosteter Obsidian-Vault braucht keine Formatkonvertierung: Starte den Container nach dem Kopieren neu, und deine Notizen, Ordner und internen Links erscheinen sofort im Dateibrowser von NoteDiscovery, bereit zum Bearbeiten oder Durchsuchen.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1786699863618\"><strong class=\"schema-faq-question\">L\u00e4uft NoteDiscovery auf einem VPS mit 2 GB?<\/strong> <p class=\"schema-faq-answer\">Ja, NoteDiscovery ist schlank genug f\u00fcr einen VPS mit 2 GB, wenn du allein damit arbeitest und eine \u00fcberschaubare Notizsammlung hast, denn es hat keine Datenbank und einen kleinen Runtime-Footprint. Gr\u00f6\u00dfere Vaults, mehrere gleichzeitige Nutzer oder intensive Plugin-Nutzung profitieren von mehr RAM, deshalb setzt diese Anleitung auf einen Cloud VPS 4 mit 8 GB als bequeme Arbeitsbasis.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1786699871031\"><strong class=\"schema-faq-question\">Wie f\u00fcge ich eigene Plugins zu NoteDiscovery hinzu?<\/strong> <p class=\"schema-faq-answer\">Binde einen Plugin-Ordner als Docker-Volume ein und lege deine Plugin-Dateien darin ab, passend zur Struktur aus dem Plugin-Guide des Projekts. NoteDiscovery l\u00e4dt Plugins beim Containerstart aus diesem eingebundenen Verzeichnis, ein Neustart nach dem Hinzuf\u00fcgen oder Aktualisieren eines Plugins gen\u00fcgt also, um die \u00c4nderung zu \u00fcbernehmen, ohne das Image neu zu bauen.<\/p> <\/div> <\/div>\n","protected":false},"excerpt":{"rendered":"<p>NoteDiscovery speichert deine Notizen als reine Markdown-Dateien auf deinem eigenen Server. Diese Anleitung bringt die App mit Docker Compose auf einen Contabo VPS, sichert sie mit Caddy und Passwortschutz ab, verbindet einen KI-Assistenten \u00fcber MCP und richtet automatische Backups per rclone ein.<\/p>\n","protected":false},"author":63,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":"","_members_access_role":[],"_members_access_error":""},"categories":[1399],"tags":[2832,2352],"ppma_author":[1492],"class_list":["post-33371","post","type-post","status-publish","format-standard","hentry","category-tutorials","tag-authentifizierung","tag-bereitstellung-von-anwendungen"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Christopher Carter","author_link":"https:\/\/contabo.com\/blog\/de\/author\/christophercarter\/"},"uagb_comment_info":0,"uagb_excerpt":"NoteDiscovery speichert deine Notizen als reine Markdown-Dateien auf deinem eigenen Server. Diese Anleitung bringt die App mit Docker Compose auf einen Contabo VPS, sichert sie mit Caddy und Passwortschutz ab, verbindet einen KI-Assistenten \u00fcber MCP und richtet automatische Backups per rclone ein.","authors":[{"term_id":1492,"user_id":63,"is_guest":0,"slug":"christophercarter","display_name":"Christopher Carter","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/63db81672a5ce4c1e8ee39753d00251d561b5b3a9967febf1c4f662024cef00f?s=96&d=mm&r=g","author_category":"","user_url":"","last_name":"Carter","first_name":"Christopher","job_title":"","description":""}],"_links":{"self":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/33371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/comments?post=33371"}],"version-history":[{"count":2,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/33371\/revisions"}],"predecessor-version":[{"id":33396,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/posts\/33371\/revisions\/33396"}],"wp:attachment":[{"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/media?parent=33371"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/categories?post=33371"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/tags?post=33371"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/contabo.com\/blog\/de\/wp-json\/wp\/v2\/ppma_author?post=33371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}