Noch eine Info zu dem Stack. Ich habe bei meiner DS720+ nur bedingt RAM. Habe zwar einen 32GB Riegel nachgerüstet, aber die Synology erkennt nur 18GB. Das wusste ich vorher schon. Aber somit habe ich viel mehr RAM, als vorher.
Ollama bringt oft mein NAS bzw. den Container Manager zum abstürzen, weil der RAM voll läuft (OoM = Out of Memory). Deshalb habe ich dem Ollama Container noch ein RAM-Limit verpasst, dass notfalls nur Ollama beendet wird.
Code
deploy:
resources:
limits:
memory: 4G
Somit gebe ich dem Container maximal 4GB RAM zur Verfügung. Das muss man individuell anpassen. Ist vom System abhängig, was man eben nutzt.
So würde der Ollama-Teil im Stack dann aussehen (aktuell bei mir selbst):
Wenn man ein System nutzt, was genügend RAM hat, dann braucht man das aber normalerweise nicht. Ich muss auch dazu sagen, dass ich auf meiner Synology über 40 Container laufen habe. Zudem kommen tägliche Backups von Windows11 und CachyOS auf das NAS und das wiederum backuppt in mein Google-Drive. Dann läuft da noch telerising und easyepg... Emby... alles automatisch aktualisierende Container über Nacht. Daher habe ich das RAM-Problem. Nur mal so zur Info an alle.
Toewe Genau das ist ja das Geile an diesem Ollama-Setup: Das läuft zu 100 % lokal bei dir. Du brauchst das Internet nur ein einziges Mal ganz am Anfang, um dir das Sprachmodell herunterzuladen (mit dem ollama pull Befehl). Danach kannst du theoretisch den Stecker vom Router ziehen und die KI analysiert deine Dokumente in Paperless-AI trotzdem problemlos weiter. Da geht absolut nichts in irgendeine Cloud. Du kannst das System also komplett vom Internet abschotten, wenn du willst.
Was die Geschwindigkeit angeht: Ich habe Ollama als Container direkt auf meiner DS720+ laufen. Da die DiskStation keine fette Grafikkarte hat, läuft das alles über die CPU. Das ist natürlich kein Geschwindigkeitswunder und das Analysieren dauert pro Dokument ein bisschen. Mich stört das aber nicht, weil Paperless-AI das ja eh unsichtbar im Hintergrund macht.
Ich habe in meinem PC noch eine RTX 5090. Wenn ich Open-WebUI nutze, greife ich darauf zu, das rennt natürlich wie verrückt. Damit Paperless-AI diese Power nutzen könnte, müsste ich Ollama auf dem PC laufen lassen. Dann müsste der Rechner aber logischerweise auch immer laufen, wenn der Scanner ein Dokument an Paperless schickt. Darauf hatte ich keine Lust, deshalb bleibt bei mir alles gemütlich, aber autark auf dem NAS. Kurzum: Mach dir keine Sorgen wegen dem Internet, das bleibt alles bei dir im Heimnetz!
===============================
Ich habe mein Setup in den letzten Tagen nochmal komplett überarbeitet. Die fehleranfällige manuelle Konfiguration über eine .env Datei fällt nun komplett weg! Das geht jetzt alles bequem über ein Webinterface.
Ich habe hier einen All-in-One Stack für euch. Darin ist alles enthalten: Paperless-ngx, Paperless-AI, Ollama (für die lokale KI), Open-WebUI und sogar ein Auto-Scanner-Container für Brother-Drucker. (Brother DCP 2530dw - in meinem Fall)
Hier ist der Code. Überall, wo # <--- ANPASSEN steht, müsst ihr eure eigenen Daten eintragen:
Damit ihr den Stack besser versteht, hier ein kurzes Beispiel, warum manche Werte so eingetragen sind, wie sie sind:
Interne Adressen: Container im selben Stack können sich über ihren container_name erreichen. Deshalb steht beim Webserver PAPERLESS_REDIS: redis://broker:6379. Er sucht einfach im internen Docker-Netz nach dem Namen broker. Gleiches gilt für Ollama: OLLAMA_BASE_URL=http://ollama:11434.
Der Consume-Ordner: Der brother-scanner Container speichert gescannte Dokumente im Ordner /scans ab. Wir haben dieses Verzeichnis auf der Festplatte exakt auf denselben Ordner gemappt, den auch der webserver (Paperless) als /consume Ordner nutzt. So tauchen Scans automatisch (mit einer kleinen Verzögerung) in Paperless-NGX auf.
Paperless Login: Die Werte PAPERLESS_ADMIN_USER und PAPERLESS_ADMIN_PASSWORD erstellen beim allerersten Start automatisch euren Admin-Account. Mit genau diesen Daten loggt ihr euch später im Webinterface ein!
So richtet ihr es ein:
1. Stack starten & KI Modell laden:
Wenn der Stack läuft, hat Ollama (die KI-Engine) noch kein "Gehirn". Ihr müsst das Sprachmodell herunterladen. Geht dafür in die Konsole des ollama Containers und tippt ein: ollama pull llama3.2(Das dauert einen Moment, das Modell ist ca. 2 GB groß).
Mit ollama list könnt ihr danach prüfen, ob es erfolgreich geladen wurde. So würde es dann aussehen:
Code
root@c07813831f6f:/# ollama pull llama3.2
pulling manifest
pulling dde5aa3fc5ff: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 2.0 GB
pulling 966de95ca8a6: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 1.4 KB
pulling fcc5a6bec9da: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 7.7 KB
pulling a70ff7e570d9: 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 6.0 KB
pulling 56bb8bd477a5: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 96 B
pulling 34bb5ab01051: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 561 B
verifying sha256 digest
writing manifest
success
root@c07813831f6f:/# ollama list
NAME ID SIZE MODIFIED
llama3.2:latest a80c4f17acd5 2.0 GB 5 seconds ago
llama3.1:latest 46e0c10c039e 4.9 GB 7 weeks ago
qwen2.5:3b 357c53fb659c 1.9 GB 7 weeks ago
deepseek-r1:latest 6995872bfe4c 5.2 GB 7 months ago
root@c07813831f6f:/#
Display More
2. Paperless-AI über den Einrichtungs-Assistenten konfigurieren:
Das Beste an der neuen Version: Ihr braucht keine.env Dateien mehr manuell anlegen oder nach eurer User-ID suchen! Das macht der Setup-Wizard nun alles automatisch für euch.
Ruft im Browser die Oberfläche von Paperless-AI auf: http://EURE-IP:3747
Bild 1.png (User Setup): Ihr werdet vom neuen Assistenten begrüßt. Denkt euch hier einen Benutzernamen und ein Passwort aus. Das ist euer Login für diese Paperless-AI Oberfläche.
Bild 2.png (Connection Settings): Bei "Paperless-ngx API URL" gebt ihr intern http://webserver:8000 an. Darunter tragt ihr euren "Paperless-ngx Username" ein (wie im Bild blau markiert). Den API Token bekommt ihr, indem ihr in euer normales PaperlessNGX (Port 8811 in meinem Beispiel) geht, rechts oben auf euren Namen -> Einstellungen -> API-Token klickt und einen neuen erstellt.
Bild 3.png (AI Configuration): Wählt als Provider "Ollama (Local LLM)". Bei der URL tragt ihr http://ollama:11434 ein und als Modell llama3.2 (oder das Modell, welches ihr in Schritt 1 heruntergeladen habt).
(Advanced Settings): Hier könnt ihr das Scan-Intervall festlegen. Das Feld nutzt das sogenannte "Cron Format", was für Anfänger etwas kryptisch wirken kann. Wenn ihr einfach alle 30 Minuten scannen wollt, reicht oft die Eingabe 30 (oder */30 * * * *). Wenn ihr aber spezielle Zeiten festlegen möchtet (z.B. "jeden Tag um 18:00 Uhr" oder "nur Montags"), könnt ihr euch den passenden Code auf der Webseite crontab.guru ganz einfach zusammenklicken und dann hier einfügen!
Bild 5.jpg (AI Functions & Prompt): Setzt die Haken bei den Funktionen, die die KI für euch übernehmen soll (z.B. Titel generieren, Absender erkennen). Unten könnt ihr einen deutschen "System Prompt" einfügen, damit die KI weiß, was sie tun soll (siehe Beispiel im Bild).
Bild 6.jpg (Attention Popup): Wenn ihr keine speziellen Tags ausgewählt habt, warnt euch das System, dass nun alle neuen Dokumente von der KI verarbeitet werden. Das ist meistens genau das, was wir wollen. Klickt einfach auf "Yes, continue".
Zum Schluss klickt ihr unten auf Save Configuration.
Fertig! Paperless-AI speichert alle Einstellungen selbst in seinen App-Daten ab. Ihr landet auf dem Dashboard und könnt rechts oben über "Scan" direkt loslegen.
Wichtiger Hinweis zu den Ports (Falls ein Port schon belegt ist)
Falls sich euer Stack nicht starten lässt, weil es eine Fehlermeldung gibt, dass ein Port (z. B. 3000 oder 8811) bereits "in use" (belegt) ist, könnt ihr das ganz einfach anpassen.
Bei Docker werden Ports immer nach dem Schema - "LinkerPort:RechterPort" angegeben.
Linker Port (Host): Das ist der Port eures NAS/Servers. Den gebt ihr im Browser ein.
Rechter Port (Container): Das ist der interne Port des Containers.
Die goldene Regel: Ihr dürft immer nur die linke Seite ändern, niemals die rechte!
Beispiel beim Paperless Webserver (Paperless-NGX):
Code
ports:
- 8811:8000 # <--- Nur die 8811 (links) darf geändert werden!
Wenn die 8811 bei euch schon belegt ist, macht ihr daraus einfach - 8812:8000. Ihr erreicht Paperless dann im Browser über http://EURE-IP:8812.
Wichtig für die interne Kommunikation: Die Container sprechen intern immer über ihre internen Namen und rechten Ports miteinander. Wenn ihr also in den Settings von Paperless-AI nach der "Paperless API URL" gefragt werdet, tragt ihr weiterhin http://webserver:8000 ein – völlig egal, was ihr links im Stack für einen Port vergeben habt! Dasselbe gilt für Ollama (http://ollama:11434). Da ändert sich für euch also absolut nichts beim Setup.
Wie finde ich meine USERMAP_UID und USERMAP_GID heraus?
Diese beiden Werte sind super wichtig, damit der Container die richtigen Lese- und Schreibrechte auf euren Ordnern auf der Festplatte hat. Ihr müsst hier die IDs des Benutzers eintragen, dem die Docker-Ordner gehören (meistens euer Haupt-Benutzer).
So findet ihr die IDs heraus:
Variante A: Für Standard-Linux (Ubuntu, Debian, Raspberry Pi etc.)
Öffnet euer Terminal.
Tippt einfach den Befehl id ein und drückt Enter.
Als Ausgabe bekommt ihr etwas wie: uid=1000(deinuser) gid=1000(deinuser).
Die 1000 bei uid ist eure USERMAP_UID, die 1000 bei gid eure USERMAP_GID.
Variante B: Für Synology NAS (Ohne SSH / Terminal) Wenn ihr SSH auf der Synology nicht aktiviert habt, könnt ihr einen ganz einfachen Trick über den Aufgabenplaner nutzen:
Öffnet auf der Synology die Systemsteuerung -> Aufgabenplaner.
Klickt auf Erstellen -> Geplante Aufgabe -> Benutzerdefiniertes Skript.
Gebt der Aufgabe bei Vorgang einen Namen (z. B. "ID rausfinden").
WICHTIG: Wählt bei Benutzer euren normalen Account aus (nicht root!), mit dem ihr auch die Docker-Ordner verwalten wollt.
Geht auf den Reiter Aufgabeneinstellungen. Tragt unten in das große Feld "Benutzerdefiniertes Skript" folgendes ein: id > /volume1/public/meine_id.txt(Falls euer Public-Ordner auf Volume 2 liegt, ändert die 1 in eine 2).
Speichert die Aufgabe mit OK ab.
Wählt die Aufgabe in der Liste aus und klickt oben auf Ausführen.
Geht in eure File Station. Im Ordner public liegt nun eine Textdatei namens meine_id.txt. Wenn ihr sie öffnet, stehen dort eure exakte uid (meistens 1026) und eure gid (meistens 100).
09.03.2026 09:35Uhr - Den Stack und die .env nicht nutzen. Es sind noch Fehler drin. Ich werde das hier bis morgen überarbeiten und dann hier oben per weiteren edit bescheid geben, wenn ich fertig bin!!!!!!!!!
//edit: ich schaff es heute doch nicht. muss kurzfristig zu einem termin. morgen, also am 11.03.2026 mach ich das.
//edit: 11.03.2026 09:10Uhr : Bitte diesen Post hier nicht beachten und einen weiter unten lesen. dieser hier geht nicht richtig, der unten schon. ich will das hier aber stehen lassen, damit man sieht, was geändert wurde. (wenn es für den mod ok ist) ich kann es hier nicht reineditieren, weil der post dann zu viele zeichen hat. uuund ich habe hier die bilder im anhang gelöscht und die nötigen im unteren post angehängt, damit sie nicht doppelt sind und auch keine verwirrung stiften kann.
=====================WICHTIG=====================
Toewe Naja, die KI braucht ja Internet. Sonst geht das ja nicht. Oder hast du das komplett lokal bei dir laufen? Dann benötigt es kein Internet. (Schätze ich) - Ich habe bei mir z.B. Ollama auch auf meiner DS720+ lokal laufen. Dann übernimmt die CPU die ganze Sache, was aber sehr lahm ist. Evtl. kann man noch die GPU im Stack mit durchreichen. Dann wirds wohl schneller gehen. Aber CPU und GPU sind ja nun nicht die High-End-Komponenten, also wirds trotzdem ein wenig dauern. Ich habe zusätzlich noch meine GPU mit eingebunden (RTX5090) - Aber das greift nur, wenn ich z.B. auf meinen Container OpenWebUI gehe und das entsprechende Modell wähle. Also das hat auch nichts mit PaperlessNGX zu tun. Das funktioniert nur, wenn ich meine "eigene" KI dann Dinge frage. Direkt über das OpenWebUI. Abhilfe schafft das bei PaperlessAI nicht. Sonst müsste ja auch immer der PC an sein, damit auf die RTX5090 zugegriffen werden kann. Kurzum: Ich würde mir an deiner Stelle da keine Sorgen machen.
Ich habe inzwischen aber einen einzigen Stack für die ganze Geschichte. Darin ist alles für PaperlessNGX enthalten. Auch PaperlessAI und auch OpenWebUI inkl. Ollama. Falls interesse besteht:
Überall wo man manuell was anpassen muss, habe ich hinten dran mit # <--- ANPASSEN versehen.
Anpassungs-Guide für deinen Freund
Eintrag im Stack
Was ist das?
Woher bekommt man es?
Volumes / Pfade
Die Ordner auf der Synology.
In der File Station auf den Ordner rechtsklicken -> Eigenschaften. Dort steht der "Ort" (z.B. /volume1/docker/...).
PAPERLESS_API_TOKEN
Der Sicherheitsschlüssel für die KI.
In Paperless oben rechts auf den User -> Einstellungen -> API-Token. Dort einen neuen Token erstellen.
USERMAP_UID / GID
Die "ID" des Synology-Nutzers.
Per SSH mit id abfragen oder im Aufgabenplaner ein Skript mit id ausführen lassen. Meistens 1026 oder 1027.
PAPERLESS_URL
Die Adresse von außen.
Das ist die Adresse, die er im Reverse Proxy der Synology festlegt (z.B. bei Strato oder Cloudflare) [cite: 2026-01-13].
WEBUI_SECRET_KEY
Ein interner Sicherheitsschlüssel.
Einfach einmal mit der Faust auf die Tastatur hauen – Hauptsache ein langer, zufälliger Text.
Hier auch noch Infos, welche aber auf meine Synology DS720+ zugeschnitten sind. Aber da kann man ja ableiten. Je nach dem was für ein System man nutzt.
Wichtig: Wenn alles läuft, dann muss man nochmal am besten in den Container von Ollama gehen und dort in der Konsole das Model runterladen, was so geht:
Modell laden: Man muss in die Konsole des Ollama-Containers gehen und ollama pull llama3.2 eingeben, damit die KI überhaupt weiß, was sie tun soll. --> Also ohne Modell funktioniert nichts. Deshalb der Download.
Zur Info, so würde das aussehen:
Code
root@c07813831f6f:/# ollama pull llama3.2
pulling manifest
pulling dde5aa3fc5ff: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 2.0 GB
pulling 966de95ca8a6: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 1.4 KB
pulling fcc5a6bec9da: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 7.7 KB
pulling a70ff7e570d9: 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 6.0 KB
pulling 56bb8bd477a5: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 96 B
pulling 34bb5ab01051: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 561 B
verifying sha256 digest
writing manifest
success
root@c07813831f6f:/# ollama list
NAME ID SIZE MODIFIED
llama3.2:latest a80c4f17acd5 2.0 GB 5 seconds ago
llama3.1:latest 46e0c10c039e 4.9 GB 7 weeks ago
qwen2.5:3b 357c53fb659c 1.9 GB 7 weeks ago
deepseek-r1:latest 6995872bfe4c 5.2 GB 7 months ago
root@c07813831f6f:/#
Display More
ollama list = zeigt die installierten Modelle an
ollama pull llama3.2 = lädt das Modell llama3.2 herunter
Falls es zu Schwierigkeiten oder Fehlern kommt, gerne melden. Somit wäre PaperlessNGX und PaperlessAI komplett offline nutzbar.
Somit kann ich ein Dokument am Drucker Scannen und direkt PaperlessNGX wählen. Der Scan geht direkt in den "consume"-Ordner und wird dann in PaperlessNGX eingepflegt und die KI bearbeitet es dann noch zum Schluss.
Lg
//edit: Ups, was vergessen... wenn das alles gemacht ist und der Stack komplett startet, dann ist fast alles fertig. Danach muss man noch in seinen Ordner von PaperlessAI gehen, was bei mir wäre. Dort sollte nun eine .env Datei sein. Diese öffnen und alles raus löschen. Dann diesen Inhalt rein:
Code
# --- PAPERLESS VERBINDUNG ---
PAPERLESS_URL=http://webserver:8000
PAPERLESS_API_URL=http://webserver:8000
PAPERLESS_API_TOKEN=XXX # Anpassen - WebUI von PaperlessNGX rechts oben steht der User, aufs Profil gehen und Token kopieren
PAPERLESS_USERNAME=XXX # Anpassen - WebUI von PaperlessNGX rechts oben steht der User
# --- IDENTITÄTS-FIX (Löst den ID-Fehler) ---
USER_ID=1 # WICHTIG - Nachgucken, welche ID der PaperlessNGX User hat. Siehe edit im Post ganz unten
# --- LOKALE KI (OLLAMA) ---
AI_PROVIDER=ollama
OLLAMA_API_URL=http://ollama:11434
OLLAMA_BASE_URL=http://ollama:11434
OLLAMA_MODEL=llama3.2
AI_MODEL=llama3.2
# --- SCAN EINSTELLUNGEN ---
SCAN_INTERVAL=30
LANGUAGE=de
ADD_AI_PROCESSED_TAG=yes
AI_PROCESSED_TAG_NAME=ai-processed
ACTIVATE_TAGGING=yes
ACTIVATE_CORRESPONDENTS=yes
ACTIVATE_DOCUMENT_TYPE=yes
ACTIVATE_TITLE=yes
ACTIVATE_CUSTOM_FIELDS=no
# --- SYSTEM PROMPT ---
SYSTEM_PROMPT=Du bist ein professioneller Assistent für Paperless-ngx. Analysiere das Dokument und gib mir einen Titel, den Absender, den Dokumententyp und passende Schlagworte auf Deutsch an. Antworte kurz und präzise.
# --- KI PARAMETER ---
TOKEN_LIMIT=128000
RESPONSE_TOKENS=1000
PROCESS_PREDEFINED_DOCUMENTS=no
USE_PROMPT_TAGS=no
USE_EXISTING_DATA=no
DISABLE_AUTOMATIC_PROCESSING=no
RESTRICT_TO_EXISTING_TAGS=no
RESTRICT_TO_EXISTING_CORRESPONDENTS=no
RESTRICT_TO_EXISTING_DOCUMENT_TYPES=no
Display More
Dann speichern und den PaperlessAI Container restarten. Fertig!
Wenn man nun auf das WebIF von PaperlessAI geht, wird man vom Wizard begrüßt. Dort kann man auf Skip klicken und es sollte soweit alles richtig ausgefüllt sein.
Auf der ersten Seite gibt man seinen Username und 2x das Passwort an. Das ist für das WebIF von PaperlessAI an sich. ansonsten kann man mit Next immer weiter.
Auf der zweiten Seite überprüft man nochmals, ob da der Username eingetragen ist, der auch bei PaperlessNGX benutzt wird/erstellt wurde.
Auf der dritten Seite muss man nichts tun.
Auf der vierten Seite muss man überprüfen, ob die Haken gesetzt sind. Siehe Bild im Anhang hier im Post. Der Haken bei "Custom Fields" muss nicht unbedingt drin sein.
Danach klickt man auf "Save Configuration" und nun sollte man einfach auf dem Dashboard von PaperlessAI landen. Rechts oben ist der Scan Button. Damit kann man direkt den ersten Scan erzwingen und PaperlessAI arbeitet nun vor sich hin. Das dauert nun, hängt aber natürlich davon ab, wie schnell euer Gerät ist und wieviele Dateien ihr in PaperlessNGX drin habt.
Nun sollte es voll automatisch laufen.
//edit2: Ich habe noch das Bild "userid_paperless.png" angehängt. Hier kann man sehen, wie man seine UserID herausbekommt. Diese ID muss man dann auch in der .env Datei hinterlegen.
Das kannst du laut sagen. Habe tagelang da rumgemacht. Irgendwann hats dann mitm NUC geklappt, der aber zu schwach war und dann musste ich das ganze nochmal von vorne machen und habe nun alles auf nem Lenovo Thinkcentre. Genaues Modell müsste ich gucken, bzw. es steht irgendwo im inxi-Bericht drin. Oder man sucht mit dem inxi Bericht bei http://www.gemini.google.com und der sagt dir dann welches Modell das ist. Ich weis es nicht mehr genau.
Aber ich hab so ziemlich alles mit Gemini gemacht. Es hat im prinzip wunderbar funktioniert.
Habe mir sogar noch Gotify installiert. Wenn nun eine Cam ne Bewegung erkennt, kommt eine Pushmitteilung an das Handy vom Vater mit Bild. Nebenbei habe ich noch gleich Pihole mit installiert. Bat sich ja an. Nginx Proxy Manager auch noch, damit ich ein paar Container auch von mir zu Hause aus dann verwalten kann. Habe dann duckdns.org benutzt und den Proxy Manager als Reverse Proxy. Das klappte auch alles wunderbar.
Nvidia baut seine Bemühungen unter Linux weiter aus und wird zur CES 2026 einem Bericht zufolge seinen Cloud-Gaming-Dienst Geforce Now nativ auf das freie…
www.pcgameshardware.de
Hatte das mal vor nem Jahr oder so mit Windows getestet und es lief bei mir damals echt super!
Sorry für die späte Rückmeldung...meine Oma hatte vor 2 Tagen einen Schlaganfall und ja...geht grad n bisschen drunter und drüber.
Ich hab mich heute mal hingesetzt und habe nochmal Shinobi neu aufgesetzt.
Dort habe ich die Hof Cam eingebunden. Die läuft nun. Bild ruckelt und zuckelt als mal. Wenn man oben bei der Zeit schaut, sieht man auch, wie es als "hängen" bleibt und dann wieder "aufholt" und so. Keine Ahnung was das nun ist.
In den Settings habe ich nun tatsächlich mal das eingegeben, was ResidentAlex sagte. Mit der Streamingurl geht es. Zudem habe ich noch über diese "Probe"-Funktion Infos über den Camstream bekommen:
Diese Infos kamen, wenn ich rtsp://192.168.178.24:554/onvif1 benutzt habe. Mit rtsp://192.168.178.24:554/stream=0 habe ich es nicht versucht.
Ansonsten habe ich dann noch 25fps, Width 1280, Height 960 angegeben. Was Video und Audio betrifft, habe ich auf "Auto" gestellt.
Die Cam im Garten bekomme ich so einfach nicht eingebunden. Die Funktioniert auch nur über den Pi, immer noch kein Handy, kein VLC, keine App oder sonst was.
In der Fritzbox werden aber beide Cams angezeigt und haben auch die passende und feste IP. Ist mir ein Rätsel, wieso das nicht klappt.
Beide Cams sind außerdem fest mit einem "fertigen" LAN-Kabel direkt mit der Fritzbox verbunden. Also kein selbstgebautes Kabel oder sowas...
Ich habe mal ein paar Videos und Bilder noch angehängt, worauf man das soweit alles sieht. Auch Logs sind mit dabei, falls man da was rauslesen kann.
Log vom Portainer ansich:
Code
"host": "localhost",
"user": "majesticflame",
"password": "",
"database": "ccio",
"port": 3306
},
"mail": {
"service": "gmail",
"auth": {
"user": "your_email@gmail.com",
"pass": "your_password_or_app_specific_password"
}
},
"cron": {},
"pluginKeys": {},
"cpuUsageMarker": "CPU",
"subscriptionId": "sub_XXXXXXXXXXXX",
"databaseType": "mysql",
"ssl": {}
}
=============
Default Superuser : admin@shinobi.video
Default Password : admin
Log in at http://HOST_IP:SHINOBI_PORT/super
Starting Shinobi ...
2026-01-04T14:02:22: PM2 log: Launching in no daemon mode
2026-01-04T14:02:22: PM2 log: App [camera:0] starting in -fork mode-
2026-01-04T14:02:22: PM2 log: App [camera:0] online
Available Hardware Acceleration Methods : vdpau, vaapi, qsv, drm, opencl
FFmpeg version : 4.3.9-0+deb11u1
Node.js version : v20.19.6
Shinobi : Web Server Listening on 8080
Creating Table "Logs"
Creating Table "Users"
Creating Table "API"
Creating Table "LoginTokens"
Creating Table "Files"
Creating Table "Videos"
Creating Table "Cloud Videos"
Creating Table "Events"
Creating Table "Events Counts"
Creating Table "Timelapse Frames"
Creating Table "Cloud Timelapse Frames"
Creating Table "Monitors"
Creating Table "Presets"
Creating Table "Schedules"
Creating Table "Permission Sets"
Creating Table "Alarms"
Creating Table "Custom Settings"
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
This Install of Shinobi is NOT Activated
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2026-01-04T14:02:32+01:00 This Install of Shinobi is NOT Activated
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
https://licenses.shinobi.video/subscribe
2026-01-04T14:02:32+01:00 Shinobi is ready.
2026-01-04T14:02:32+01:00 Current Version 5ea3a5e7cb025fe1eb78be86f2bcdd70a7557192
CRON.js LOG Sun Jan 04 2026 14:02:34 GMT+0100 (Central European Standard Time) Worker Processing!
TypeError: Cannot read properties of undefined (reading 'whcs')
at cloudDiskUseStartup (/home/Shinobi/libs/uploaders/s3based.js:35:27)
at /home/Shinobi/libs/user.js:446:29
at Array.forEach (<anonymous>)
at /home/Shinobi/libs/user.js:445:51
at Object.callback (/home/Shinobi/libs/database/utils.js:162:33)
at /home/Shinobi/node_modules/async/dist/async.js:1558:26
at /home/Shinobi/node_modules/async/dist/async.js:328:20
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
Uncaught Exception occured! Sun Jan 04 2026 14:07:32 GMT+0100 (Central European Standard Time)
TypeError: Cannot read properties of undefined (reading 'whcs')
at cloudDiskUseStartup (/home/Shinobi/libs/uploaders/s3based.js:35:27)
at /home/Shinobi/libs/user.js:446:29
at Array.forEach (<anonymous>)
at /home/Shinobi/libs/user.js:445:51
at Object.callback (/home/Shinobi/libs/database/utils.js:162:33)
at /home/Shinobi/node_modules/async/dist/async.js:1558:26
at /home/Shinobi/node_modules/async/dist/async.js:328:20
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
TypeError: Cannot read properties of undefined (reading 'whcs')
at cloudDiskUseStartup (/home/Shinobi/libs/uploaders/s3based.js:35:27)
at /home/Shinobi/libs/user.js:446:29
at Array.forEach (<anonymous>)
at /home/Shinobi/libs/user.js:445:51
at Object.callback (/home/Shinobi/libs/database/utils.js:162:33)
at /home/Shinobi/node_modules/async/dist/async.js:1558:26
at /home/Shinobi/node_modules/async/dist/async.js:328:20
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
Uncaught Exception occured! Sun Jan 04 2026 14:07:40 GMT+0100 (Central European Standard Time)
TypeError: Cannot read properties of undefined (reading 'whcs')
at cloudDiskUseStartup (/home/Shinobi/libs/uploaders/s3based.js:35:27)
at /home/Shinobi/libs/user.js:446:29
at Array.forEach (<anonymous>)
at /home/Shinobi/libs/user.js:445:51
at Object.callback (/home/Shinobi/libs/database/utils.js:162:33)
at /home/Shinobi/node_modules/async/dist/async.js:1558:26
at /home/Shinobi/node_modules/async/dist/async.js:328:20
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
Clear Super Session mjVgaSw35fnW4tFGqkDiG08gwL1byy
2026-01-04T14:37:18+01:00 find: '/home/Shinobi/videos/nZlRf5ovI3/mebHMcQP7X': No such file or directory
Display More
Habe auch mal geschaut, weil da was von NOT ACTIVATED steht, aber das macht wohl nichts. Laut deren Website steht dazu folgendes:
Which parts of Shinobi are locked if I don't Activate?
Camera Count unrestricted based on the license chosen : https://licenses.shinobi.video/
Private Backup of your Monitor Configurations to ShinobiHub : https://docs.shinobi.video/backup/private-monitor-configurations-to-shinobihub
Encrypted Remote Access without a VPN or Port-Forwarding : https://docs.shinobi.video/configure/p2p
Extended Features for Timeline, View Recordings in a human way : https://www.youtube.com/watch?v=JA8y1myMecE
Central Management, Access multiple Shinobi machines in one interface : https://docs.shinobi.video/system/central-management
Ich habe mal schnell bei mir zu Hause den Container aufgesetzt. Hier mal einige Screenshots von den Einstellungen, wenn man eine Cam hinzufügen möchte.
Achja und das wäre die verwendete Docker Compose für Portainer
Ich bin erst morgen bei den Eltern. Dann kann ich das versuchen. Ich mache dann auch mal Bilder von den ganzen Einstellungsmöglichkeiten. Vllt. ist auch einfach nur was falsch eingestellt.
Falls noch mehr Ideen vorhanden sind, einfach mal schreiben. Das kann ich ja dann testen.
zur Zeit habe ich bei meinen Eltern einen Raspberry Pi 4 im Einsatz. Dort läuft das normale RaspbianOS drauf. Ansonsten wurde nur ein Script verwendet, welches mir die Streams von den Cams abgreift und am angeschlossenen Monitor per HDMI ausgibt bzw. einfach die Livestreams anzeigt.
Das wäre mal das Script, welches ich nutze und auch seit Jahren ohne Probleme läuft (Sorry, habe grad bei mir zu Hause einen Screenshot parat):
Da nun vor ein paar Wochen in der Nähe öfters mal eingebrochen wurde, wollten meine Eltern nun auch das Aufzeichnen der Cams haben.
Dazu habe ich nun einen älteren Intel NUC benutzt. Hier habe ich das aktuelle Debian 13 installiert, alles geupdatet und dann Docker installiert. In Docker habe ich nun den Container "Shinobi" am laufen. (https://gitlab.com/Shinobi-System…e/master/Docker)
Leider bekomme ich es nicht hin die Kameras einzubinden. Es sind zwei Stück von der Firma HiKam. Model weis ich gerade nicht aus dem Kopf heraus.
Ich verstehe aber nicht, was ich falsch mache. Dieses Onvif Discover findet nur die Kamera vom Hof und die vom Garten nicht. In der Hikam App am Handy wird Hof gezeigt, Garten soll offline sein.
Habe aber nebenher noch immer den Pi laufen, mit dem ich über ein Script Das Livebild auf den Monitor im Wohnzimmer anzeigen lasse. Beide Cams werden gezeigt.
Ich kapier net, warum im VLC Player kein Stream geht, warum die App nur den Hof anzeigt und den Garten nicht, aber beim Pi gehen beide einfach.
Bei Shinobi wird die Hof Cam gefunden und wenn ich sie hinzufüge gehts net. Garten taucht gar nicht auf.
Ändere ich aber dann die von Shinobi hinzugefügte Hof Cam beim Stream Type auf JPEG ab, dann bekomme ich ein Bild. Bzw. einzelne Bilder hintereinander und eben keinen Livestream. Was ja aber logisch ist.
Jetzt weis ich nicht, wie ich was wo nachschauen soll. Das kann doch net so schwer sein. In der Hikam App habe ich auch "RTSP Auth" aus, damit ich im prinzip ja nur rtsp://192.168.178.24:554/onvif1 eingeben muss und schon sollte der Stream da sein...
Settings kann man den Bilder entnehmen. Habe GE-Proton (latest) benutzt. Damit mein Controller funktioniert, musste ich "Hidraw" deaktivieren anschalten.
Ok, Spiel funktioniert super. Leider funktioniert mein USB-Gamepad nicht. Muss man da irgendwie noch was einstellen? Wenn ich Steam-Spiele zocke, dann funktioniert der Controller.
Müsste natürlich durchprobieren, da das ja eigentlich Steam Launchoptions sind. Oder gibt es eine Art von Liste, welche man auch bei dem Rockstar Launcher nutzen kann?
ich wollte unbedingt mal wieder GTA 5 am PC zocken und naja... die erste Hürde bekam ich nicht wirklich gelöst. Ich besitze ziemlich alle Rockstar Spiele in Steam. Leider komme ich nicht mehr an meinen Account ran, da der dort verknüpfte Rockstar Account uralt ist und ich die Zugangsdaten nicht mehr weis. Der ist noch mit einer alten web.de Mailadresse verbunden und da habe ich keinen Zugriff mehr. Der Widerherstellungscode wird natürlich nur dort hin geschickt. Ich habe sogar den web.de Support befragt. Meine Mailadresse ist so alt gewesen, dass sie inaktiv war und irgendwann gelöscht wurde und mittlerweile ist sie wieder an jemand anderen vergeben worden. Das alles habe ich Rockstar mitgeteilt. (Ticket)
Da Rockstar aber nicht mal meine Verknüpfung zum Steamaccount "löschen" will, damit ich meinen aktuellen Account verbinden kann, blieb mir nix anderes übrig, als GTA5 nochmal direkt für den Rockstar Launcher zu kaufen. (Der Rockstar Support ist so grotten schlecht, das ist unglaublich. Man muss bald Zahnabdrücke und eine Niere schicken, damit die glauben, dass die Accounts mir sind)
Ok... also zu meiner Frage... wie bekomme ich den Rockstar Launcher samt GTA5 Enhanced mit Linux zum laufen? Ich habe ein wenig getestet und Lutris benutzt. Das wollte aber nicht so klappen. Ich benutzte auch z.B. dieses Script: https://lutris.net/games/grand-theft-auto-v/ (Rockstar Games Launcher Version)
Es war so viel, was ich getestet habe, dass ich gar nicht mehr weis, was es alles war. Ich kam zu dem Punkt, dass der Launcher installiert wurde. Einloggen ging nicht, da ich immer beim Anmeldebildschirm ein komplett weißes, oder schwarzes Bild zu sehen bekam. Somit konnte ich mich nicht einloggen und auch das Spiel nicht downloaden.
Falls das klappen sollte, dann kommt noch Battleeye ins Spiel. (Anticheat, Kernelebene basierend). Das müsste man irgendwie deaktivieren oder sowas, damit ich den Singleplayer spielen kann.
Wenn man die Steamversion von GTA nutzt, dann geht das wohl ganz easy mit dem -nobattleye flag als Startoption. Das las ich hier: https://www.protondb.com/app/3240220
Hat jemand das Spiel schon zum laufen bekommen, oder ne Idee, wie ich das tun kann?
Hier noch mein PC:
Code
inxi -Fzxi
System:
Kernel: 6.18.1-2-cachyos arch: x86_64 bits: 64 compiler: clang v: 21.1.6
Desktop: KDE Plasma v: 6.5.4 Distro: CachyOS base: Arch Linux
Machine:
Type: Desktop Mobo: ASRock model: X870 Riptide WiFi
serial: <superuser required> Firmware: UEFI vendor: American Megatrends LLC.
v: 3.40 date: 08/27/2025
CPU:
Info: 8-core model: AMD Ryzen 7 9800X3D bits: 64 type: MCP arch: Zen 5
rev: 0 cache: L1: 640 KiB L2: 8 MiB L3: 96 MiB
Speed (MHz): avg: 5234 min/max: 603/5272 boost: enabled cores: 1: 5234
2: 5234 3: 5234 4: 5234 5: 5234 6: 5234 7: 5234 8: 5234 bogomips: 75054
Flags-basic: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a
ssse3 svm
Graphics:
Device-1: NVIDIA GB202 [GeForce RTX 5090] vendor: Micro-Star MSI
driver: nvidia v: 580.119.02 arch: Lovelace bus-ID: 01:00.0
Device-2: Advanced Micro Devices [AMD/ATI] Granite Ridge [Radeon Graphics]
vendor: ASRock driver: amdgpu v: kernel arch: RDNA-2 bus-ID: 71:00.0
temp: 51.0 C
Device-3: Razer USA Kiyo Pro driver: snd-usb-audio,uvcvideo type: USB
bus-ID: 8-1.1.2:5
Display: wayland server: X.org v: 1.21.1.21 with: Xwayland v: 24.1.9
compositor: kwin_wayland driver: gpu: nv_platform,nvidia,nvidia-nvswitch
resolution: 3840x2160~240Hz
API: EGL v: 1.5 drivers: nvidia,radeonsi,swrast platforms:
active: gbm,wayland,x11,surfaceless,device inactive: device-2
API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: nvidia mesa v: 580.119.02
glx-v: 1.4 direct-render: yes renderer: NVIDIA GeForce RTX 5090/PCIe/SSE2
API: Vulkan v: 1.4.335 drivers: nvidia,radv,llvmpipe surfaces: N/A
devices: 3
Info: Tools: api: clinfo, eglinfo, glxinfo, vulkaninfo
de: kscreen-console,kscreen-doctor gpu: amdgpu_top, lact, nvidia-settings,
nvidia-smi wl: wayland-info x11: xdpyinfo, xprop, xrandr
Audio:
Device-1: NVIDIA GB202 High Definition Audio driver: snd_hda_intel v: kernel
bus-ID: 01:00.1
Device-2: Advanced Micro Devices [AMD/ATI] Radeon High Definition Audio
driver: snd_hda_intel v: kernel bus-ID: 71:00.1
Device-3: Advanced Micro Devices [AMD] Ryzen HD Audio
driver: snd_hda_intel v: kernel bus-ID: 71:00.6
Device-4: Generic USB Audio driver: hid-generic,snd-usb-audio,usbhid
type: USB bus-ID: 1-10:10
Device-5: Razer USA Nommo Pro driver: razeraccessory,snd-usb-audio,usbhid
type: USB bus-ID: 1-3:3
Device-6: Razer USA BlackShark V2 Pro
driver: hid-generic,snd-usb-audio,usbhid type: USB bus-ID: 1-9:9
Device-7: Razer USA Seiren V3 Chroma
driver: hid-generic,snd-usb-audio,usbhid type: USB bus-ID: 7-1.1.4:8
Device-8: Razer USA Kiyo Pro driver: snd-usb-audio,uvcvideo type: USB
bus-ID: 8-1.1.2:5
API: ALSA v: k6.18.1-2-cachyos status: kernel-api
Server-1: sndiod v: N/A status: off
Server-2: JACK v: 1.9.22 status: off
Server-3: PipeWire v: 1.4.9 status: active
Network:
Device-1: MEDIATEK MT7925 Wi-Fi 7 160MHz driver: mt7925e v: kernel
bus-ID: 08:00.0
IF: wlan0 state: up mac: <filter>
IP v4: <filter> type: dynamic noprefixroute scope: global
IP v6: <filter> type: dynamic noprefixroute scope: global
IP v6: <filter> type: dynamic noprefixroute scope: global
IP v6: <filter> type: noprefixroute scope: link
Device-2: Realtek Killer E3000 2.5GbE vendor: ASRock driver: r8169
v: kernel port: b000 bus-ID: 09:00.0
IF: enp9s0 state: up speed: 2500 Mbps duplex: full mac: <filter>
IP v4: <filter> type: dynamic noprefixroute scope: global
IP v6: <filter> type: dynamic noprefixroute scope: global
IP v6: <filter> type: dynamic noprefixroute scope: global
IP v6: <filter> type: noprefixroute scope: link
IF-ID-1: br-0c74fa0086d4 state: up speed: 10000 Mbps duplex: unknown
mac: <filter>
IP v4: <filter> scope: global
IP v6: <filter> virtual: proto kernel_ll scope: link
IF-ID-2: docker0 state: down mac: <filter>
IP v4: <filter> scope: global
IF-ID-3: vethd031d91 state: up speed: 10000 Mbps duplex: full
mac: <filter>
WAN IP: <filter>
Bluetooth:
Device-1: MediaTek Wireless_Device driver: btusb v: 0.8 type: USB
bus-ID: 1-12:12
Report: btmgmt ID: hci1 rfk-id: 1 state: up address: <filter> bt-v: 5.4
lmp-v: 13
Device-2: ASUSTek ASUS USB-BT500 driver: btusb v: 0.8 type: USB
bus-ID: 1-7:7
Report: ID: hci0 rfk-id: 0 state: up address: <filter> bt-v: 5.1 lmp-v: 10
Drives:
Local Storage: total: 6.37 TiB used: 4.22 TiB (66.3%)
ID-1: /dev/nvme0n1 vendor: Samsung model: SSD 980 PRO 1TB size: 931.51 GiB
temp: 41.9 C
ID-2: /dev/nvme1n1 vendor: Samsung model: SSD 990 PRO 4TB size: 3.64 TiB
temp: 40.9 C
ID-3: /dev/nvme2n1 vendor: Samsung model: SSD 980 PRO 2TB size: 1.82 TiB
temp: 42.9 C
Partition:
ID-1: / size: 1.82 TiB used: 1.35 TiB (74.1%) fs: btrfs dev: /dev/nvme2n1p2
ID-2: /home size: 1.82 TiB used: 1.35 TiB (74.1%) fs: btrfs
dev: /dev/nvme2n1p2
ID-3: /var/log size: 1.82 TiB used: 1.35 TiB (74.1%) fs: btrfs
dev: /dev/nvme2n1p2
ID-4: /var/tmp size: 1.82 TiB used: 1.35 TiB (74.1%) fs: btrfs
dev: /dev/nvme2n1p2
Swap:
ID-1: swap-1 type: zram size: 60.41 GiB used: 1.3 MiB (0.0%) dev: /dev/zram0
Sensors:
System Temperatures: cpu: 58.8 C mobo: 47.5 C gpu: amdgpu temp: 52.0 C
Fan Speeds (rpm): N/A
Info:
Memory: total: 60 GiB note: est. available: 60.41 GiB used: 39.1 GiB (64.7%)
Processes: 424 Uptime: 17m Init: systemd
Packages: 1688 Compilers: clang: 21.1.6 gcc: 15.2.1 Shell: fish v: 4.2.1
inxi: 3.3.40