Traccar kommt nicht zu MariaDB

gegges11

Benutzer
Mitglied seit
29. Dez 2013
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen,
nutze
NAS218+ DSM 7.0-41890
Docker Traccar 4.14
MariaDB als Paket von Synology (kein Docker) -10.3.29
phpMyAdmin (kein Docker) 4.9.7
HeidiSQL auf dem ArbeitsPC1 zum testen

Es funktioniert: Starte ich Traccar Docker mit interner h2 Datenbank - dann läuft die Instanz und Traccar funktionier (login o.k., GPS-Tracker senden den Standort, ….)

Problem: Starte ich Traccar mit der Konfiguration mySQL kommt der TraccarServer nicht aus dem Docker auf die MariaDB (des eigenen NAS) und bricht den Startvorgang ab.

Habe den Eindruck, dass Traccar nicht aus dem Docker "rauskommt".
Habe die Firewall auf dem NAS 1. deaktiviert oder 2. aktiviert mit "alle dürfen alles" --> keine Änderung


Gegenprobe war Traccar mit h2 DB gestartet – dann läuft die Dockerinstanz fehlerfrei
Ping aus der Dockerinstanz heraus
1. das eigene NAS geht NICHT: aaa.bbb.ccc.018
2. funktioniert auf
Loopback: 127.0.0.1
Router: aaa.bbb.ccc.001
DNS: Pi-hole: aaa.bbb.ccc.002
WEB.de: DNS wird aufgelöst 82.165.229.138

Im Docker-Protokoll:
Exception in thread "main" java.lang.RuntimeException: com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

Habe screenshot anbei wie ich den Docker gebaut habe und weitere

Hat jemand eine Idee dazu –freue mich über Feedback.
 

Anhänge

  • Docker traccar installieren 211011.pdf
    373,1 KB · Aufrufe: 11
  • mariadb rights2.jpg
    mariadb rights2.jpg
    60,5 KB · Aufrufe: 18
  • mariadb rights1.jpg
    mariadb rights1.jpg
    139,1 KB · Aufrufe: 17
  • traccar overview.jpg
    traccar overview.jpg
    32,5 KB · Aufrufe: 17
  • traccar port.jpg
    traccar port.jpg
    50,1 KB · Aufrufe: 13
  • traccar Umgebung.jpg
    traccar Umgebung.jpg
    46,5 KB · Aufrufe: 14
  • traccar volmune.jpg
    traccar volmune.jpg
    61,5 KB · Aufrufe: 13

DrDeath

Benutzer
Mitglied seit
31. Aug 2018
Beiträge
189
Punkte für Reaktionen
71
Punkte
34
Du solltest bei der Container Einrichtung des Traccar darauf achten, das du "Dasselbe Netzwerk wie Docker Host verwenden" aktivierst.

Ansonsten sind Deine Docker Container streng von deinem vorhandenen NAS Netzwerk abgekoppelt und können "natürlich nicht" die MySQl DB auf dem Docker Host (also Deinem NAS) erreichen.
 

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.257
Punkte für Reaktionen
920
Punkte
174
Idealerweise installiert man einen zusätzlichen Container mit MariaDB und verknüpft diesen innerhalb der gleichen Bridge.
 

gegges11

Benutzer
Mitglied seit
29. Dez 2013
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Du solltest bei der Container Einrichtung des Traccar darauf achten, das du "Dasselbe Netzwerk wie Docker Host verwenden" aktivierst.

Ansonsten sind Deine Docker Container streng von deinem vorhandenen NAS Netzwerk abgekoppelt und können "natürlich nicht" die MySQl DB auf dem Docker Host (also Deinem NAS) erreichen.
In der Hilfe von Synolgy steht
####
Standardmäßig gibt es nach Installation des Docker-Pakets ein Host-Netzwerk und ein Bridge-Netzwerk. Es wird empfohlen, benutzerdefinierte Bridge-Netzwerke zu verwenden, um zu kontrollieren, welche Container miteinander kommunizieren können, und um die automatische DNS-Auflösung von Container-Namen zu IP-Adressen zu ermöglichen.

Anmerkung:​

  • Wenn Sie beim Erstellen eines Containers Dasselbe Netzwerk wie Docker Host verwenden auswählen, können Sie später keine weiteren Bridge-Netzwerke zum Container hinzufügen.
####
Besonders die Anmerkung hat mich davon abgehalten ein HOST-Netzwerk einzurichten. Blockiere ich damit nicht alle weitere Dockerinstanzen, die ich evtl. noch installieren möchte?

Gibt es eine Möglichkeit auf das Synology-Paket MariaDB zuzugreifen?
 

gegges11

Benutzer
Mitglied seit
29. Dez 2013
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Idealerweise installiert man einen zusätzlichen Container mit MariaDB und verknüpft diesen innerhalb der gleichen Bridge.
Hatte ich auch überlegt. Aus Performancegründen habe ich (bisher) darauf verzichtet.
Wie schätzt du die Performance Anforderungen von "MariaDB im Docker" ein?
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Besonders die Anmerkung hat mich davon abgehalten ein HOST-Netzwerk einzurichten. Blockiere ich damit nicht alle weitere Dockerinstanzen, die ich evtl. noch installieren möchte?
Das gilt nur für diesen Container - nicht für Docker generell oder andere Container.

Es wird empfohlen, benutzerdefinierte Bridge-Netzwerke zu verwenden, um zu kontrollieren, welche Container miteinander kommunizieren können, und um die automatische DNS-Auflösung von Container-Namen zu IP-Adressen zu ermöglichen.
Synology hat mit seiner Empfehlung recht! Alles andere sollte man nicht einfach aus Bequemlichkeit machen, sondern nur wenn es Gründe gibt, die gegen ein benutzerdefiniertes Bridge-Netzwerk sprechen.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Was ist den eigentlich jetzt das Zielszenario?

  • Anwendung im Container, DB auf Host?
    • Anwendung im Bridged-Netzwerk (egal ob Default oder benutzerdefiniert):
      • In der MariaDB muss der Benutzer einen entsprechenden Grant bekommen, damit er sich überhaupt aus dem Container Netzwerk anmelden darf (sieht laut einem der Screenshots mit traccar@% gut aus)
      • Die Firewall muss traffic aus dem jeweiligen Bridged-Netzwerk erlauben
      • Der Container muss die Host-IP oder Hostnamen des NAS für den Zugriff auf die Datenbank verwenden
    • Anwendung im "network=host" Modus
      • Anwendung kann über localhost auf die Datenbank zugreifen
      • Con: Portkonflikte möglich, wenn die Anwendung auf einem Port läuft, der schon belegt ist - Port umlegen geht nur, wenn der Container das selbst bspw. über ENV-Variablen unterstützt
  • Anwendung und DB als Container im selben benutzerdefinierten Bridge-Netzwerk
    • Namen des DB Containers für die Verbindung in der App eintragen
    • Pro: keine Änderungen an der Firewall notwendig
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Ulfhednir

gegges11

Benutzer
Mitglied seit
29. Dez 2013
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Hallo haydibe, danke für die Rückmeldung.
Wunschkonfiguration:
Ich bevorzuge "Anwendung [traccar] im Container, DB [MariaDB] auf Host im Bridged-Netzwerk.
Habe die Firewall auf dem NAS 1. deaktiviert oder 2. aktiviert mit "alle dürfen alles" --> keine Änderung.
Als Schnittstelle sehe ich bridged nicht - dort gibt es LAN, PPPoE, VLAN.
Trage ich in der Konfiguration von traccar die IP des NAS ein (aaa.bbb.ccc.018 ODER localhost) kommt traccar nicht auf MariaDB.
Hast du hierzu eine Idee?

Alternativ:
Bin gerade dabei MariaDB im Docker ans laufen zu bekommen - muss mich aber zuerst in die Startparameter einarbeiten.
 
Zuletzt bearbeitet von einem Moderator:

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
DB [MariaDB] auf Host im Bridged-Netzwerk.
Ich bin mir nicht ganz sicher was dieser Satz bedeuten soll...

Du willst also das hier:
Anwendung im Bridged-Netzwerk (egal ob Default oder benutzerdefiniert):
  • In der MariaDB muss der Benutzer einen entsprechenden Grant bekommen, damit er sich überhaupt aus dem Container Netzwerk anmelden darf (sieht laut einem der Screenshots mit traccar@% gut aus)
  • Die Firewall muss traffic aus dem jeweiligen Bridged-Netzwerk erlauben
  • Der Container muss die Host-IP oder Hostnamen des NAS für den Zugriff auf die Datenbank verwenden
Ein Container in einem Bridged-Netzwerk sollte immer mit dem Host kommunizieren können, außer die Firewall funkt dazwischen.
Könnte man bspw. testen. in dem man sich ein Terminal im Container öffnet und versucht mit curl oder wget http://nas-ip:5000 zu öffnen.

Wenn Deine Traccar.xml nach wie vor so aussieht:
Code:
<entry key='database.driver'>
  com.mysql.cj.jdbc.Driver
</entry>
<entry key='database.url'>
  jdbc:mysql://localhost:3306/traccar?serverTimezone=UTC&amp;useSSL=false&a
mp;allowMultiQueries=true&amp;autoReconnect=true&amp;useUnicode=yes&amp;characterEncodi
ng=UTF-8&amp;sessionVariables=sql_mode=''
</entry>

So kann es mit der Fonfiguration nur funktionieren, wenn der Container mit --network=host betrieben wird.

Ich hatte verstanden, dass du dort statt jdbc:mysql://localhost:3306/... den jdbc-connection string als jdbc:mysql://{NAS-IP}:{Mariadb-Nas-Port}/.... schon versucht hast? Den mit Letzterem sollte es von einem Container in einem Bridged-Network funktioniern (im Host Netzwerk würde das natürlich auch funktionieren).

Bist Du dir sicher, dass dein jbdc-connection string korrekt ist? Das &amp; stimmt so wirklich? Das sieht nach encoding aus und sollte das nicht einfach nur ein & sein in der xml-datei? Update: kurze Google suche zeigt alle Beispiele mit &amp; statt &. merkwürdig.
 
Zuletzt bearbeitet:

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
260
Punkte für Reaktionen
7
Punkte
18
Hallo, gibt es eigentlich eine Deutsche Anleitung für den Traccar?
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat