Guten Abend zusammen,
zum Hintergrund: Wenn wir im Sanitätsdienst eine große Veranstaltung mit weitläufigem Gelände vor uns haben (Festival, Landkreislauf, Stadtfest, etc.) nutzen wir Traccar, um unsere Sanitätstrupps zu tracken, um bei Nachalarmierung weiterer Kräfte (Pol, RD) ohne weitere Rückfragen zuverlässig und fast metergenau zu koordinieren.
Traccar ist (bis jetzt) zum aufsetzten eigentlich immer ein sehr einfacher "nobrainer" gewesen. Da wir den Traccar-Server nur ca. 5-mal im Jahr für 3 bis 7 Tage brauchen, habe ich den einfach immer wieder laut meiner persönlichen Dokumentation auf einem meiner freien Server neu aufgesetzt. Nun habe ich das die letzten Tage erneut versucht, da wir Mittwoch einen Server brauchen. Allerdings funktioniert es nicht mehr wie dokumentiert.
In den logs finde ich folgende Fehlermeldung:
2025-02-23 20:14:07 INFO: Operating system name: Linux version: 6.8.0-53-generic architecture: amd64
2025-02-23 20:14:08 INFO: Java runtime name: OpenJDK 64-Bit Server VM vendor: Eclipse Adoptium version: 21.0.4+7-LTS
2025-02-23 20:14:08 INFO: Memory limit heap: 1974mb non-heap: 0mb
2025-02-23 20:14:08 INFO: Character encoding: UTF-8
2025-02-23 20:14:08 INFO: Version: 6.6
2025-02-23 20:14:08 INFO: Starting server...
2025-02-23 20:14:08 INFO: HikariPool-1 - Starting...
2025-02-23 20:14:08 WARN: Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.
2025-02-23 20:14:13 ERROR: Main method error - Access denied for user 'bud'@'localhost' (using password: YES) - CJException (... < DatabaseModule:80 < <gener:-1 < *:-1 < ... < MainModule:138 < <gener:-1 < ...)
Allerdings verstehe ich nicht warum. Die Datenbank erstelle ich während der Installation wie folgt, und somit sollten alle Rechte ausreichen?
mysql -u root -p -e "
CREATE DATABASE netcup;
CREATE USER 'bud'@'localhost' IDENTIFIED BY 'bud-bekommt-es-alleine-nicht-hin';
GRANT ALL PRIVILEGES ON netcup.* TO 'bud'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
"
Da ich gerade recht verzweifelt bin und nun leider Zeitdruck habe, nachfolgend meine komplette Dokumentation (ohne Kommentare, unrelevantes wie fail2ban etc. weggelassen) nach Installation des Images Ubuntu 24.04 LTS. Vielleicht hat jemand Zeit, das auf einem seiner freien Server kurz nachzustellen.
ufw allow 8082/tcp
ufw enable
apt install unzip
apt install mariadb-server -y
mariadb-secure-installation
mysql -u root -p -e "
CREATE DATABASE netcup;
CREATE USER 'bud'@'localhost' IDENTIFIED BY 'bud-bekommt-es-alleine-nicht-hin';
GRANT ALL PRIVILEGES ON netcup.* TO 'bud'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
"
wget https://www.traccar.org/download/traccar-linux-64-latest.zip
unzip traccar-linux-*.zip && ./traccar.run
nano /opt/traccar/conf/traccar.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE properties SYSTEM 'http://java.sun.com/dtd/properties.dtd'>
<properties>
<entry key="config.default">./conf/default.xml</entry>
<entry key='database.driver'>com.mysql.jdbc.Driver</entry>
<entry key='database.url'>jdbc:mysql://localhost/netcup?zeroDateTimeBehavior=round&serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false&allowMultiQueries=true&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&sessionVariables=sql_mode=''</entry>
<entry key='database.user'>bud</entry>
<entry key='database.password'>bud-bekommt-es-alleine-nicht-hin</entry>
</properties>
service traccar start
Alles anzeigen
Dann sollte Traccar eigentlich über IP:8082 erreichbar sein. Nachfolgend nur noch die Apache-Konfiguration, also für das eigentliche Laufen des Traccar-Servers uninteressant.
apt install ssl-cert apache2 certbot python3-certbot-apache -y
a2enmod ssl proxy_http proxy_wstunnel rewrite
systemctl restart apache2
nano /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
ServerName example.com
Redirect / https://example.com/
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName example.com
ServerAlias www.example.com
ServerAdmin admin@example.com
DocumentRoot /var/www/html
ProxyPass /api/socket ws://localhost:8082/api/socket
ProxyPassReverse /api/socket ws://localhost:8082/api/socket
ProxyPass / http://localhost:8082/
ProxyPassReverse / http://localhost:8082/
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
</IfModule>
a2dissite 000-default.conf
a2ensite example.com.conf
systemctl reload apache2
certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email ssl@example.com -d example.com -d www.example.com
systemctl reload apache2
Alles anzeigen
Ich bin wie immer - über jede Hilfe dankbar.
merce