
Ostatnia aktualizacja: 14.12.2023 r.
Traccar to otwarcoźródłowe oprogramowanie będące nowoczesnym systemem śledzenia GPS, które jest nieprzerwanie rozwijane od 2009 roku. Oprogramowanie można zainstalować na systemie Windows oraz Linux. Wspiera bardzo dużą liczbę urządzeń GPS, choć osobiście korzystałem do tej pory wyłącznie ze sprzętu firmy Teltonika.
Pierwotnie system konfigurowałem na Ubuntu Server 17.10, a później podnosiłem go do aktualnych wersji LTS i tak aż do 22.04 LTS, i nie powodowało to żadnych problemów z działaniem Traccar`a. 🙃 Całość działa nieprzerwanie od ponad 6 lat na systemie Proxmox.
Domyślnie po instalacji system Traccar zapisuje dane w bazie H2. Nie jest to zalecana konfiguracja, jednak mój produkcyjny system działał tak 5 lat. 😆 Polecam od razu ustawić system na bazę MySQL, aby później oszczędzić sobie czasu z ewentualną migracją danych.
Poniższa instrukcja dotyczy instalacji Traccar`a na czystym systemie Ubuntu Server 22.04 LTS. Przed przystąpieniem do konfiguracji w pierwszej kolejności aktualizuję system i pakiety do najnowszych dostępnych wersji.
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y && sudo apt-get autoremove -y
sudo apt-get install unzip -y
sudo apt-get install mysql-server -y
sudo mysql_secure_installation
sudo mysql -u root -p
CREATE DATABASE traccar;
CREATE USER 'traccar_dba'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Sk0mp1ikow4N3_Ha$LO';
GRANT ALL ON traccar.* TO 'traccar_dba'@'localhost';
FLUSH PRIVILEGES;
exit
sudo mysql -u traccar_dba -p
SHOW DATABASES;
exit
sudo wget https://github.com/traccar/traccar/releases/download/v5.9/traccar-linux-64-5.9.zip
sudo unzip traccar-linux-64-5.9.zip && sudo ./traccar.run
sudo 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>
<!--
This is the main configuration file. All your configuration parameters should be placed in this file.
Default configuration parameters are located in the "default.xml" file. You should not modify it to avoid issues
with upgrading to a new version. Parameters in the main config file override values in the default file. Do not
remove "config.default" parameter from this file unless you know what you are doing.
For list of available parameters see following page: https://www.traccar.org/configuration-file/
-->
<entry key='database.driver'>org.h2.Driver</entry>
<entry key='database.url'>jdbc:h2:./data/database</entry>
<entry key='database.user'>sa</entry>
<entry key='database.password'></entry>
</properties>
zamieniam na:
<?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>
<!--
This is the main configuration file. All your configuration parameters should be placed in this file.
Default configuration parameters are located in the "default.xml" file. You should not modify it to avoid issues
with upgrading to a new version. Parameters in the main config file override values in the default file. Do not
remove "config.default" parameter from this file unless you know what you are doing.
For list of available parameters see following page: https://www.traccar.org/configuration-file/
-->
<entry key='database.driver'>com.mysql.cj.jdbc.Driver</entry>
<entry key='database.url'>jdbc:mysql://localhost/traccar?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'>traccar_dba</entry>
<entry key='database.password'>Sk0mp1ikow4N3_Ha$LO</entry>
</properties>
sudo /opt/traccar/bin/startDaemon.sh
).
sudo systemctl start traccar.service
sudo ufw allow 8082/tcp
admin | admin
➔ Ustawienia
➔ Konto
➔ pole Hasło
Ustawienia
➔ Serwer
➔ Zezwolenia
➔ Rejestracja [ ]
sudo apt install python-certbot-apache -y
W wersji Certbot 0.21.0 używamy polecenia certbot --apache -d www.domena.pl -d domena.pl
.
certbot --authenticator standalone --installer apache -d *.domena.pl --pre-hook "service apache2 stop" --post-hook "service apache2 start"
sudo a2enmod ssl proxy_http proxy_wstunnel && sudo service apache2 restart
/etc/apache2/sites-available/000-default-le-ssl.conf
.
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName www.domena.pl
ServerAdmin admin@domena.pl
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/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/www.domena.pl/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.domena.pl/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
</IfModule>
/etc/apache2/sites-available/domain-le-ssl.conf
.
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName domena.pl
ServerAdmin admin@domena.pl
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/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/domena.pl/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domena.pl/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
sudo /opt/traccar/bin/stopDaemon.sh
).
sudo systemctl stop traccar.service
sudo mv -v /opt/traccar/data /home/traccar/data && sudo mv -v /opt/traccar/media /home/traccar/media && sudo mv -v /opt/traccar/conf/traccar.xml /home/traccar/conf/
Odinstalowanie programu oraz usunięcie jego folderu było wymagane przy wersjach <3.3. W nowszych wersjach nie trzeba tego robić.
sudo /opt/traccar/bin/uninstallDaemon.sh && sudo rm -R /opt/traccar
wget https://github.com/traccar/traccar/releases/download/v5.9/traccar-linux-64-5.9.zip
unzip traccar-linux-64-5.9.zip && sudo ./traccar.run
sudo mv -v /home/data/* /opt/traccar/data && sudo mv -v /home/traccar.xml /opt/traccar/conf/traccar.xml
sudo /opt/traccar/bin/startDaemon.sh
).
sudo systemctl start traccar.service
Poniższe czynności wykonywałem podczas aktualizowania produkcyjnego systemu Traccar 4.12 do wersji 5.9. Na potrzeby migracji przygotowałem testową VM z Ubuntu Server 22.04 LTS (na tej wersji działała mi produkcja), na której zainstalowałem system Traccar 4.12 oraz serwer MySQL, które odpowiednio skonfigurowałem. Dodatkowo wykorzystałem programy WinSCP oraz DBeaver do przerzutu danych. Mój sposób migracji wymaga sporo klikania i zajmuje kilka(naście) godzin pracy w zależności od ilości danych, które przeba przenieść między bazami danych.
sudo systemctl stop traccar.service && sleep 60 && sudo systemctl start traccar.service
To działanie spowoduje utworzenie pustych tabel w bazie MySQL. Przechodzę na drugi system i za pomocą programu WinSCP kopiuję z produkcji bazę danych H2 (/opt/traccar/data/database.mv.db
) lokalnie na swój komputer lub inną maszynę wirtualną.
Connect to a database
wybieram MySQL, a następnie klikam przycisk Next >
.
W zakładce Main
wprowadzam dane dostępowe do utworzonej wcześniej bazy danych.
Przechodzę na zakładkę SSH
i ustawiam połączenie SSH, a opcjach zaawansowanych lokalny oraz zdalny port ustawiam na domyslny port MySQL czyli 3306.
Na koniec klikam przycisk Test Connection ...
w celu sprawdzenia poprawności wprowadzonych danych dostępowych i nawiązania próbnego połączenia. Jeśli wszystko jest dobrze, zamykam komunikat przyciskiem OK
i zapisuję dane klikając w przycisk Finish
.
Connect to a database
wybieram H2 Embedded, a następnie klikam przycisk Next >
.
Wskazuję ścieżkę do wcześniej pobranego pliku bazy danych oraz wpisuję dane dostępowe - w moim przypadku były to dane domyślne. 😅
Na koniec klikam przycisk Test Connection ...
w celu sprawdzenia poprawności wprowadzonych danych dostępowych i nawiązania próbnego połączenia. Jeśli wszystko jest dobrze, zamykam komunikat przyciskiem OK
i zapisuję dane klikając w przycisk Finish
.
Na liście podłączonych baz danych pojawią się dwie pozycje - lokalna baza H2 oraz zdalna MySQL.
W obydwu bazach danych tabele nazywają się tak samo - różnią się tylko wielkością liter. Nie da się również kopiować tabel po kolei jedna po drugiej, gdyż niektóre tabele są zależne od siebie (jak np. tc_user_group musi być zaimportowane po tc_group) i wtedy podczas takiej operacji program wyświetli błąd.
W celu rozpoczęcia importu danych przechodzę na serwer MySQL, zaznaczam tabelę, klikam PPM i z menu wybieram Import Data
.
W oknie Data Transfer
w pierwszym kroku wybieram typ źródła danych czyli tabele i klikam przycisk Next >
.
W drugim kroku klikam w pole <none>
w celu wskazania źródłowej tabeli.
Rozwijam pozycję z bazą H2 i wybieram odpowiednią tabelę. Następnie klikam przycisk OK
.
Klikam przycisk Next >
, aby przejść dalej.
W trzecim kroku klikam w Choose ...
.
Wskazuję bazę MySQL w celu wykonania mapowania zawartości tabel.
Po kliknięciu przycisku OK
program zapisze ustawienia mapowania.
Profilaktycznie klikam w przycisk Preview data
w celu sprawdzenia czy mapowanie zostało wykonane poprawnie.
Jeśli nie ma problemów to trzykrotnie klikam przycisk Next >
aby przejść do podsumowania.
Klikam przycisk Proceed
aby rozpocząć import danych. Program przełączy się na szczegóły tabeli po zakończeniu procesu importu.
Przechodząc na kartę Data
weryfikuję zawartość tabeli.
Tools
- Dump database
.
W oknie MySQL Dump
klikam przycisk Next >
.
Wskazuję katalog, do którego ma zostać zapisana kopia bazy danych i na koniec klikam przycisk Start
.
Czekam na wykonanie kopii.
Tools
- Restore database
.
Start
.
Yes
, że chcę rozpocząć odtwarzanie bazy danych.
sudo systemctl start traccar.service
mam problem po zmianie pliku konfiguracyjnego sudo systemctl status traccar.service ● traccar.service - traccar Loaded: loaded (/etc/systemd/system/traccar.service; enabled; vendor preset: enabled) Active: activating (auto-restart) (Result: exit-code) since Thu 2023-11-30 19:49:33 UTC; 2s ago Process: 5479 ExecStart=/opt/traccar/jre/bin/java -jar tracker-server.jar conf/traccar.xml (code=exited, status=1/FAILURE) Main PID: 5479 (code=exited, status=1/FAILURE) CPU: 2.248s lis 30 19:49:33 traccar2 systemd[1]: traccar.service: Failed with result 'exit-code'. lis 30 19:49:33 traccar2 systemd[1]: traccar.service: Consumed 2.248s CPU time. jak zmieniam plik konfiguracyjny na pierwotny wszystko działa (ale nie do mysql) co może być przyczyną ?
CMS zamienia mi "&" na "&" i to było przyczyną błędu. Poprawiłem składnie na poprawną.