{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "IT science: заметки с тегом traccar",
    "_rss_description": "IT science — статьи и инструкции из мира IT",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/itscience.pro\/tags\/traccar\/",
    "feed_url": "https:\/\/itscience.pro\/tags\/traccar\/json\/",
    "icon": "https:\/\/itscience.pro\/pictures\/userpic\/userpic@2x.jpg?1658757154",
    "authors": [
        {
            "name": "IT science",
            "url": "https:\/\/itscience.pro\/",
            "avatar": "https:\/\/itscience.pro\/pictures\/userpic\/userpic@2x.jpg?1658757154"
        }
    ],
    "items": [
        {
            "id": "22",
            "url": "https:\/\/itscience.pro\/all\/svoy-server-traccar-i-nastraivaem-gps-treker\/",
            "title": "поднимаем свой сервер traccar и настраиваем GPS трекер для работы с ним",
            "content_html": "<p>Был куплен у китайцев такой трекер:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/itscience.pro\/pictures\/GSM-gps-ST-901-(1).jpg\" width=\"500\" height=\"500\" alt=\"\" \/>\n<\/div>\n<p>Не хотелось хранить информацию на чужом сервере, возникла идея создать свой, благо модель трекера позволяла настроить его на работу с любым сервером.<\/p>\n<p>Сразу оговорюсь, содержать свой сервер для одного устройства получится дороже (в моем случае $5 и безграничное количество устройств), чем платить за чужой (от 80 руб. за устройство).<\/p>\n<p>Поискав готовые решения, я наткнулся на проект <a href=\"https:\/\/www.traccar.org,\">https:\/\/www.traccar.org,<\/a> проект открытый, есть исходники на github <a href=\"https:\/\/github.com\/traccar\/traccar\">https:\/\/github.com\/traccar\/traccar<\/a><\/p>\n<p>для начала я проверил работоспособность прибора, для этого написал короткий скрипт на php, по сути, это сокет сервер, который слушает порт 999 и выводит в консоль всю информацию, которая приходит<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">&lt;?php\nset_time_limit (0);\n$address = &#039;127.0.0.1&#039;;\n$port = 999;\n$sock = socket_create(AF_INET, SOCK_STREAM, 0);\nsocket_bind($sock, 0, $port) or die(&#039;Could not bind to address&#039;);\nsocket_listen($sock);\nwhile (true) {\n    $client =  socket_accept($sock);\n    $input =  socket_read($client, 1024000);\n    echo &quot;$input\\n&quot;;\n    socket_close($client);\n}\nsocket_close($sock);\n?&gt;<\/code><\/pre><p>через NAT на роутере открыл порт наружу<\/p>\n<p>дальше приступаем к настройкам трекера (брал с этого сайта <a href=\"http:\/\/miradmin.ru\/gps-tracker-sinotrack-st-901\/),\">http:\/\/miradmin.ru\/gps-tracker-sinotrack-st-901\/),<\/a> далее транслирую то что использовал сам (команды отправляются смс сообщениями)<\/p>\n<ol start=\"1\">\n<li>Регистрируем номер телефона, с которого будем управлять устройством<br \/>\n<b>899977777770000 1<\/b><br \/>\n89997777777 — номер телефона<br \/>\n0000 — пароль (по умолчанию четыре ноля)<br \/>\n1 — номер ячейки (можно зарегистрировать до 3 телефонов)<\/li>\n<li>Меняем пароль, конечно же<br \/>\n<b>77712340000<\/b><br \/>\n777 — команда<br \/>\n1234 — новый пароль<br \/>\n0000 — старый пароль<\/li>\n<li>Меняем часовой пояс<br \/>\n<b>8960000E03<\/b>  <br \/>\n896 — команда  <br \/>\n0000  — пароль  <br \/>\nE03 — часовой пояс Москвы<\/li>\n<li>Выбираем режим передачи данных (SMS или GPRS)  <br \/>\n<b>7100000<\/b>  <br \/>\n710 — команда для GPRS  <br \/>\n0000  — пароль<\/li>\n<li>Настройка точки доступа для GPRS<br \/>\nМегафон: <b>8030000 internet gdata gdata<\/b><br \/>\nМТС: <b>8030000 internet.mts.ru mts mts<\/b><br \/>\nБилайн: <b>8030000 internet.beeline.ru beeline beeline<\/b><br \/>\nТЕЛЕ2: <b>8030000 internet.tele2.ru<\/b>  <br \/>\n0000  — пароль<\/li>\n<li>Задаем интервалы отправки сообщений на сервер при включенном зажигании и в режиме оффлайн<br \/>\n<b>800000 5<\/b><br \/>\nкаждые пять секунд при включенном зажигании<br \/>\n<b>8090000 300<\/b><br \/>\nкаждые пять минут при выключенном<br \/>\n0000  — пароль<\/li>\n<li>Настройка спящего режима<br \/>\n<b>SLEEP0000 5<\/b><br \/>\nпосле выключения зажигания через пять минут устройство «заснет», перестанет присылать сообщения на сервер, но будет реагировать на смс и звонки<br \/>\n0000  — пароль<\/li>\n<li>Настройка сервера данных<br \/>\n<b>8040000 123.123.123.123 999<\/b><br \/>\n123.123.123.123 — ip адрес сервера<br \/>\n999 — порт сервера<br \/>\n0000  — пароль<\/li>\n<\/ol>\n<p>после указанных настроек я стал получать сообщения с трекера:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">*HQ,9170631826,V1,105509,A,5576.7575,N,03761.0545,E,000.13,000,210919,FBFF9FFF,250,99,27914,55187#\n*HQ,9170631826,V1,105509,A,5576.7578,N,03761.0548,E,000.13,000,210919,FBFF9FFF,250,99,27914,55187#\n*HQ,9170631826,V1,105554,A,5576.7577,N,03761.0548,E,000.23,000,210919,FBFFBBFF,250,99,27914,55187#\n*HQ,9170631826,V1,105624,A,5576.7575,N,03761.0549,E,001.05,000,210919,FBF7BBFF,250,99,27914,31740#<\/code><\/pre><p>отлично! осталось создать сервер и транслировать данные туда<\/p>\n<p>для начала я выбрал площадку для размещения виртуального сервера, делал на DigitalOcean<br \/>\nесли хотите помочь нам и получить $25 на счет, воспользуйтесь реферальной ссылкой <a href=\"https:\/\/m.do.co\/c\/74f25c68fa79\">https:\/\/m.do.co\/c\/74f25c68fa79<\/a><\/p>\n<p>используйте самый дешевый Droplet за $5 в месяц с ubuntu на борту<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/itscience.pro\/pictures\/---2019-09-25-13-23-50.png\" width=\"198\" height=\"189\" alt=\"\" \/>\n<\/div>\n<p>дальше в сжатой форме будут только команды для установки недостающих компонент и настройки конфигураций<\/p>\n<blockquote>\n<p>$ apt-get update<br \/>\n$ apt-get upgrade<br \/>\n$ apt-get install mc<\/p>\n<\/blockquote>\n<p>ставим java<\/p>\n<blockquote>\n<p>$ apt-get install default-jdk<\/p>\n<\/blockquote>\n<p>ставим mysql<\/p>\n<blockquote>\n<p>$ apt-get install mysql-server mysql-client<\/p>\n<\/blockquote>\n<p>далее запускаем mysql, настраиваем пароль пользователя root и создаем базу с пользователем для работы traccar<\/p>\n<p>не забудьте указать свои<br \/>\nroot_password — пароль root<br \/>\nuser_password — пароль пользователя traccar_user<\/p>\n<blockquote>\n<p>$ mysql -u root -p<\/p>\n<\/blockquote>\n<blockquote>\n<p>USE mysql;<br \/>\nUPDATE USER SET authentication_string=PASSWORD(«root_password») WHERE USER=’root’;<br \/>\nFLUSH PRIVILEGES;<\/p>\n<\/blockquote>\n<blockquote>\n<p>CREATE DATABASE traccar DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;<br \/>\nCREATE USER ’traccar_user’@’localhost’ IDENTIFIED BY ’user_password’;<br \/>\nGRANT ALL ON traccar.* TO ’traccar_user’@’localhost’;<br \/>\nFLUSH PRIVILEGES;<br \/>\nEXIT;<\/p>\n<\/blockquote>\n<p>качаем и устанавливаем сервер<\/p>\n<blockquote>\n<p>$ cd \/tmp<\/p>\n<\/blockquote>\n<p>на момент написания статьи была актуальная версия <b>4.6<\/b>, посмотреть версию можно тут <a href=\"https:\/\/github.com\/traccar\/traccar\/releases\/\">https:\/\/github.com\/traccar\/traccar\/releases\/<\/a><\/p>\n<blockquote>\n<p>$ wget <a href=\"https:\/\/github.com\/traccar\/traccar\/releases\/download\/v4.6\/traccar-linux-64-4.6.zip\">https:\/\/github.com\/traccar\/traccar\/releases\/download\/v4.6\/traccar-linux-64-4.6.zip<\/a><br \/>\n$ unzip traccar-linux-64-4.6.zip<\/p>\n<\/blockquote>\n<blockquote>\n<p>$ .\/traccar.run<br \/>\n$ cd \/opt\/traccar\/conf<\/p>\n<\/blockquote>\n<p>настраиваем конфиг, приводим к виду ниже, не забудьте заменить <b>user_password<\/b> на тот, который указывали выше<\/p>\n<blockquote>\n<p>$ mcedit traccar.xml<\/p>\n<\/blockquote>\n<pre class=\"e2-text-code\"><code class=\"\">&lt;?xml version=&#039;1.0&#039; encoding=&#039;UTF-8&#039;?&gt;\n&lt;!DOCTYPE properties SYSTEM &#039;http:\/\/java.sun.com\/dtd\/properties.dtd&#039;&gt;\n&lt;properties&gt;\n    &lt;entry key=&#039;config.default&#039;&gt;.\/conf\/default.xml&lt;\/entry&gt;\n    &lt;entry key=&#039;database.driver&#039;&gt;com.mysql.jdbc.Driver&lt;\/entry&gt;\n    &lt;entry key=&#039;database.url&#039;&gt;jdbc:mysql:\/\/localhost:3306\/traccar?useSSL=false&amp;amp;allowMultiQueries=true&amp;amp;autoReconnect=true&amp;amp;useUnicode=yes&amp;amp;characterEncoding=UTF-8&amp;amp;sessionVariables=sql_mode=&#039;&#039;&lt;\/entry&gt;\n    &lt;entry key=&#039;database.user&#039;&gt;traccar_user&lt;\/entry&gt;\n    &lt;entry key=&#039;database.password&#039;&gt;user_password&lt;\/entry&gt;\n&lt;\/properties&gt;<\/code><\/pre><p>запускаем службу<\/p>\n<blockquote>\n<p>$ service traccar start<\/p>\n<\/blockquote>\n<p>смотрим запустился ли сервис<\/p>\n<blockquote>\n<p>$ service traccar status<\/p>\n<\/blockquote>\n<p>если все хорошо, получаем следующий вывод<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">● traccar.service - traccar\n   Loaded: loaded (\/etc\/systemd\/system\/traccar.service; enabled; vendor preset: enabled)\n   Active: active (running) since Tue 2019-09-24 07:44:48 UTC; 1 day 3h ago\n Main PID: 8519 (java)\n    Tasks: 30 (limit: 1152)\n   CGroup: \/system.slice\/traccar.service\n           └─8519 \/opt\/traccar\/jre\/bin\/java -jar tracker-server.jar conf\/traccar.xml<\/code><\/pre><p>теперь можно подключиться непосредственно к web интерфейсу<br \/>\n<a href=\"http:\/\/ip_адрес_droplet:8082\">http:\/\/ip_адрес_droplet:8082<\/a><\/p>\n<p>по-умолчанию вводим:<br \/>\nEmail: admin<br \/>\nПароль: admin<\/p>\n<p>не забудьте настроить наше устройство для передачи данных на сервер, для этого отправьте СМС<br \/>\n<b>8040000 123.123.123.123 5013<\/b><br \/>\n123.123.123.123 — ip адрес нашего Droplet<br \/>\n5013 — порт сервера<br \/>\n0000  — пароль трекера<\/p>\n<p>Важно! Трекер Sinotrack ST-901 использует протокол H02? соответственно указываем порт 5013!!!<\/p>\n<p>В web интерфейсе добавляем устройство (левый верхний угол)<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/itscience.pro\/pictures\/---2019-09-25-14-06-25.png\" width=\"331\" height=\"316\" alt=\"\" \/>\n<\/div>\n<p>Имя: имя нашей машинки<br \/>\nИдентификатор: номер трекера (ID под штрих кодом)<\/p>\n<p>через некоторое время машина появится на карте<\/p>\n<p>Все! Для работы этого более чем достаточно!<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/itscience.pro\/pictures\/---2019-09-25-14-44-23.png\" width=\"539\" height=\"519\" alt=\"\" \/>\n<\/div>\n<h2>Дальше пойдет дополнительная информация (необязательные опции)<\/h2>\n<ol start=\"1\">\n<li>Для начала создал нового пользователя, чтобы не подключаться все время как admin<\/li>\n<li>Изменил единицы измерения скорости (в узлах скорость не очень)<br \/>\nзашел Аккаунт — Атрибуты — добавить<\/li>\n<\/ol>\n<ul>\n<li>Имя: Единица скорости<\/li>\n<li>Значение: км\/ч<\/li>\n<\/ul>\n<ol>\n<li>Сервер — Слой карты указал «Яндекс Карты», работают быстрее и стабильнее<\/li>\n<\/ol>\n<p>Важная для меня опция — это ssl подключение к web интерфейсу, не хочется чтобы мой трафик мог видеть или менять оператор связи. Для этого вам понадобится доменное имя, и доступ к настройкам DNS, подтверждённый ssl сертификат не получится выпустить на ip адрес.<\/p>\n<p>Для начала, создаем в DNS запись A, где для нашего домена (например, car.domain.ru) ассоциируем ip адрес нашего Droplet.<\/p>\n<p>настраиваем nginx в режиме reverse proxy и подключаем Let’s Encrypt<\/p>\n<blockquote>\n<p>$ apt-get install nginx<br \/>\n$ cd \/etc\/nginx<br \/>\n$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout \/etc\/nginx\/cert.key -out \/etc\/nginx\/cert.crt<\/p>\n<\/blockquote>\n<p>приводим конфиг к следующему виду, не забудьте заменить в четырех местах <b>car.domain.ru<\/b> на ваш домен<\/p>\n<blockquote>\n<p>$ mcedit \/etc\/nginx\/sites-enabled\/default<\/p>\n<\/blockquote>\n<pre class=\"e2-text-code\"><code class=\"\">server {\n    listen 80;\n    server_name car.domain.ru;\n    return 301 https:\/\/$host$request_uri;\n}\n\nserver {\n    listen 443;\n    server_name car.domain.ru;\n    ssl_certificate           \/etc\/nginx\/cert.crt;\n    ssl_certificate_key       \/etc\/nginx\/cert.key;\n    ssl on;\n    ssl_session_cache  builtin:1000  shared:SSL:10m;\n    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;\n    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;\n    ssl_prefer_server_ciphers on;\n    access_log            \/var\/log\/nginx\/car.domain.ru.access.log;\n    client_max_body_size 10M;\n    client_body_buffer_size 128k;\n\n    location \/ {\n      proxy_set_header        Host $host;\n      proxy_set_header X-Forwarded-Host $host;\n      proxy_set_header X-Forwarded-Server $host;\n      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n      proxy_http_version 1.1;\n      proxy_set_header Upgrade $http_upgrade;\n      proxy_set_header Connection &quot;upgrade&quot;;\n\n      proxy_pass          http:\/\/localhost:8082;\n      proxy_read_timeout  90;\n\n      proxy_redirect      http:\/\/localhost:8082 https:\/\/car.domain.ru;\n      proxy_redirect ws:\/\/localhost:8082\/api\/socket \/api\/socket;\n      proxy_send_timeout 86400s;\n    }\n}<\/code><\/pre><p>Важно сделать именно так, в web интерфейсе используется WebSocket, который тоже надо правильно транслировать через прокси.<\/p>\n<blockquote>\n<p>$ service nginx restart<\/p>\n<\/blockquote>\n<p>Теперь вы можете открывать в браузере вашу карту по имени <a href=\"https:\/\/car.domain.ru\">https:\/\/car.domain.ru<\/a> и весь трафик к серверу и обратно будет шифроваться.<\/p>\n<p>И самая малость, сделаем красиво, добавим подтвержденный сертификат. Нам поможет certbot (<a href=\"https:\/\/certbot.eff.org).\">https:\/\/certbot.eff.org).<\/a><\/p>\n<blockquote>\n<p>$ apt-get install software-properties-common<br \/>\n$ add-apt-repository universe<br \/>\n$ add-apt-repository ppa:certbot\/certbot<br \/>\n$ apt-get update<\/p>\n<\/blockquote>\n<blockquote>\n<p>$ apt-get install certbot python-certbot-nginx<br \/>\n$ certbot —nginx<\/p>\n<\/blockquote>\n<p>далее будет предложено указать e-mail, выбрать найденные домены из конфигурации и сделать редирект http на https автоматически.<\/p>\n<p>проверим автоматический выпуск сертификата:<\/p>\n<blockquote>\n<p>$ certbot renew —dry-run<\/p>\n<\/blockquote>\n<p>не забудьте добавить задание в crontab для автоматического перевыпуска сертификатов.<\/p>\n<blockquote>\n<p>$ crontab -e<\/p>\n<\/blockquote>\n<p>Например, каждого первого числа месяца, в 3 часа 12 минут будет попытка перевыпустить сертификат.<br \/>\nДобавьте строчку в конце (не забудьте, что в crontab нужно оставлять последнюю пустую строку).<\/p>\n<blockquote>\n<p>12\t3\t1\t*\t*\t\/usr\/bin\/certbot renew<\/p>\n<\/blockquote>\n",
            "date_published": "2019-09-25T14:47:11+03:00",
            "date_modified": "2019-09-25T14:50:04+03:00",
            "tags": [
                "GPS",
                "Sinotrack",
                "ST-901",
                "traccar"
            ],
            "image": "https:\/\/itscience.pro\/pictures\/GSM-gps-ST-901-(1).jpg",
            "_date_published_rfc2822": "Wed, 25 Sep 2019 14:47:11 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "22",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/itscience.pro\/pictures\/GSM-gps-ST-901-(1).jpg",
                    "https:\/\/itscience.pro\/pictures\/---2019-09-25-13-23-50.png",
                    "https:\/\/itscience.pro\/pictures\/---2019-09-25-14-06-25.png",
                    "https:\/\/itscience.pro\/pictures\/---2019-09-25-14-44-23.png"
                ]
            }
        }
    ],
    "_e2_version": 4171,
    "_e2_ua_string": "Aegea 11.4 (v4171)"
}