Проект: Dawarich — селфхостед замена Google Location History  Публичный пост
20 мая 2024  1856
Как же я ору ОХУЕННО ⨯3
Dawarich — селфхостед замена Google Location History

Для начала, картинки для привлечения внимания.

Главная, она же карта
Главная, она же карта

Главная страничка статов
Главная страничка статов

Страничка со статами конкретного года
Страничка со статами конкретного года

Страничка с импортами
Страничка с импортами

Расскажите о сути проекта?

Dawarich (читать как "даварихь") — self-hosted альтернатива Google Location History. На картах Гугл есть функция Timeline, которая, если у вас включено сохранение данных о ваших перемещениях, позволяет посмотреть на карте, где и когда вы побывали. Это выглядит примерно так:

Google Maps Timeline
Google Maps Timeline

Теперь вместо Гугла я трекаю и анализирую свои перемещения на свой сервер. Да, Гугл по-прежнему очень много чего обо мне знает, но по крайней мере галочку "Сохранять историю моих перемещений" в их интерфейсе я снял. Вы теперь тоже можете.

Как появилась идея? Что вдохновило?

С тех пор, как я проникся идеей селфхостинга (то есть, около года назад), у меня было желание как-то забрать свои геоданные у Гугла и хостить их у себя, чтобы визуализировать как мне нравится, анализировать как мне нравится, и вообще делать с ними всё, что заблагорассудится. Сполгода я пользовался OwnTracks, у которого есть и мобильное приложение для непосредственно сбора данных о перемещениях, и серверное приложение, которое хранит и позволяет просматривать данные. К сожалению, это очень простой комплект софта, и визуализация данных с сервера выглядит примерно вот так:

Интерфейс OwnTracks
Интерфейс OwnTracks

Визуализация есть, это хорошо. Никакой аналитики нет, это плохо. Однако, мобильное приложение OwnTracks позволяет отправлять данные на произвольно указанный адрес, и у них есть неплохая документация, позволяющая скрафтить эндпоинт, который будет спокойно принимать данные от их приложения. Так что в марте 2024 я взял свой давно приготовленный для таких случаев темплейт приложения на Rails, и для начала сделал как раз эндпоинт, чтобы просто принимать на него данные о геопозиции с моего телефона.

Что вошло в прототип и сколько времени на него было потрачено?

От базово юзабельной версии приложения, которую можно было бы считать MVP, мне требовалось три вещи:

  • Получение новых данных от мобильного OwnTracks
  • Импорт существующих исторических данных из Google Takeout и серверного OwnTracks
  • Визуализация точек на карте.

Где-то за месяц нерегулярных вечерних сессий я набросал всё, что мне было нужно и переехал с OwnTracks на Dawarich. Примерно с этого момента можно было заявлять о своей поделке миру, что я и сделал на Реддите, но об этом чуть ниже.

Что умеет проект?

Самые важные функции:

  • Приём в апи эндпоинт и отрисовка новых данных с мобильного приложения OwnTracks на карте
  • Импорт существующих данных из архива Google Takeout и экспорта серверного OwnTracks

Не обязательное, но очень мною любимое — статистика.

Dawarich умеет в (отключаемый) reverse-geocoding, а значит способен показать вам, в каких городах и странах вы побывали и когда вы там побывали. Может показать, сколько километров вы проделали за конкретный день, месяц и год, сколько вы проделали километров за весь период наблюдения.

Какой технологический стек вы использовали? Почему?

  • Ruby on Rails для бэкенда — потому что я работаю с ним много лет
  • TailwindCSS для фронтенда — потому что я не люблю фронтенд
  • LeafletJS для карт — потому что он, кажется, умеет всё, что мне нужно
  • Docker — потому что Portainer суть самый удобный способ вертеть приложения на своём сервере
  • Redis и PostgreSQL — потому что с ними я тоже работаю много лет

Как вы запускались и искали первых пользователей?

Так вот, про Реддит. Я достаточно давно подписан на r/selfhosted, так что логичным шагом было бы опубликовать свой проект именно в этом сабе. Что я и сделал с месяц назад: https://www.reddit.com/r/selfhosted/comments/1bvoe8a/dawarich_google_location_historygoogle_maps/. К моему приятному удивлению, он сразу собрал приличное количество апвотов и комментариев, в том числе с описанием багов, которые я достаточно оперативно починил.

Это позволило по-быстрому сгладить основные неровности и починить косяки, которые я просмотрел или не предусмотрел. Пользователей в формате селфхостед-приложения, разумеется, не получается, но зато можно порадоваться звёздочкам на гитхабе: на текущий момент их около 140. Первый пост принёс чуть больше сотни, но чуть больше недели назад Dawarich упомянули ещё в одном треде, что снова дало буст и увеличило визибилити моей поделки. В целом комментарии можно свести к чему-то вроде "наконец-то есть хоть какая-то альтернатива гугл таймлайну, я ждал такое джва года" :)

С какими самыми неожиданными трудностями пришлось столкнуться?

Ну, во-первых, я не фронтендер. Этот нюансик я принял в себе уже давным-давно, и стараюсь сгладить его доступными средствами. Такими, чтобы непосредственно во фронтенд погружаться приходилось ну прям по минимуму. Из-за этого я сколько-то времени пострадал при написании визуализации геоточек (а затем и линий между ними) на карте Leaflet, но в конечном итоге всё получилось.

Во-вторых, буквально вчера я вдруг понял один важный нюанс по поводу данных, которые можно получить, запросив архив с Google Takeout.

Long story short, когда пользователь запрашивает экспорт своих данных с Гугла, ему на почту приходит ссылка на один или несколько архивов с этими самыми данными. Нас интерсуют конкретно геоданные, так что после распаковки архива я с марта шёл по маршруту: папка Takeout -> История местоположений -> Semantic Location History, а внутри Semantic Location History уже лежит пачка папок именованных по годам, а в каждой из них в формате 2013_APRIL.json, 2013_DECEMBER.json и так далее лежат джейсоны с геоданными. Именно под эти файлы я писал функциональность импорта геоданных от Гугла. И лишь вчера я понял, что в Github Issues репозитория, в тикете с названием "импорт не импортируется" меня спрашивают о совсем другом файлике. Он называется Records.json и лежит в директории Takeout -> История местоположений. И в моём частном случае весит около 180 мегабайт, а на гитхабе говорят о файле размеро аж в 4гб. Естественно, структура файла Records.json отличается от структуры файлов типа 2013_APRIL.json, так что под него пришлось быстренько набросать отдельный парсер. Несложно, но ошибка немного дурацкая.

А самое любопытное, что все джейсоны за все годы из Semantic History Location после импорта создали чуть больше 16 тысяч точек на карте, а импорт файла Records.json создал около 620 тысяч новых точек. История перемещений стала выглядеть на карте намного детальнее, браузер стал иногда ощутимо кряхтеть при загрузке страниц (над этим предстоит поработать), а мне стало вдруг как-то страшновато от того, насколько много о моих перемещениях знает Гугл. И не только Гугл. И ничего особо с этим не сделать, такой мир, такое время.

Сколько потратили и заработали? Есть идеи как это можно монетизировать?

Кроме времени я не потратил ничего, и не очень представляю, как можно монетизировать Dawarich. Это опенсорсный бесплатный инструмент для запуска на собственном железе, что как бы достаточно чётко отрезает возможности заработка на нём. Не то, чтобы меня это расстраивало.

Какие планы на будущее?

Есть некоторое количество идей и задач в бэклоге, но они в целом формируются на основе того, как я сам пользуюсь проектом. Новые идеи можно закинуть в Github Issues проекта или мне в личку (да даже в комменты к этому посту), если будет что-то интересное, попробую запланировать.

Ближайшие планы выглядят примерно так:

  • Поработать над калькуляцией статистики и более удобным/логичным её отображением
  • Обзавестись фавиконом
  • Подеплоить куда-нибудь демку приложения
  • Написать несколько инструкций по использованию и FAQ
  • Довести до ума получение данных через Overland (он, кажется, недавно порелизил OwnTracks-совместимый режим отправки данных)
  • Реализовать ежемесячный и ежегодный дайджест с информацией о перемещениях, расстоянии, посещённых городах и весях за отчётный период. Как у Гугл Таймлайна, в общем, только с блекджеком и моё.

Ещё лениво думаю над введением достижений, чтобы пользоваться Даварихом было чуть интереснее, но это по настроению.

Нужны ли какие-то советы или помощь Клуба?

В целом, любой фидбек будет полезен и интересен. И от людей, которые пришли посмотреть, и от тех, кто готов развернуть проект и попользоваться им на своём сервере. Можно даже чего-то попробовать поконтрибьютить на Гитхабе, но опыт показывает, что до этого доходит нечасто :)

Если вы знаете о софте, аналогичном OwnTracks или Overland, бросайте на него ссылку, я посмотрю, можно ли и имеет ли смысл вкрутить его поддержку.

Если вы умеете в мобильную разработку и заинтересованы в написании отдельного клента — дайте мне знать, возможно у нас тут стартап вот-вот нарисуется :)

Какой совет вы бы сами могли дать идущим по вашим стопам?

В какой-то момент у меня был готов какой-то MVP, но я по-прежнему трекал геоданные в OwnTracks. Было какое-то противоречивое состояние: вроде как хочется делать свою тулзу, а вроде я по-прежнему данные собираю в другую. В тот момент я понял, что если не начну загружать данные в Dawarich, то он так и останется MVP и я постепенно на него забью. Так что я перенастроил мобильное приложение OwnTracks, чтобы оно слало данные в Dawarich, быстренько написал импортировалку данных из OwnTracks, чтобы не грустить с пустой картой, и дело завертелось.

Вывод: догфуддинг работает, а недогфуддинг не работает.

Ещё разик линк, чтобы вверх не скроллить: https://github.com/Freika/dawarich

Пост готовился под пластинку Hamilton Mixtape. Оригинал лучше.

Связанные посты
57 комментариев 👇

Короче, за пару недель, прошедших с публикации оригинального поста, я наделал несколько изменений и выводов.

Первое и важное — для меня, пожалуй, Overland на iOS заменил OwnTracks. По батарейке, в принципе, всё высаживается так же, как в Овнтрекс, но зато не нужно дёргать режимы Move/Significant руками. С нормальными настройками (приложу скриншотик) всё работает без моего участия и напоминания, знай выгружай точки вечером на сервер.

Второе — по совету друга, который делает бизнес на похожей идее, только в РФ и B2B, решил попробовать разрывать маршруты, чтобы перемещения на карте перестали походить на адскую паутину. Внизу — сравнение было/стало.

Было
Было

Стало
Стало

Роуты рвутся, если между точками прошло более 500 метров расстояния или 60 минут времени. Чуть позднее вынесу это в пользовательскую настройку, чтобы кастомизация и всё такое. Карта стала выглядеть намного опрятнее.

Третье — при наведении на роут теперь видно, когда и где он начался и закончился, и сколько времени было проведено в пути. Расстояние наверное тоже можно добавить. Нраица!

Роуты стали интерактивнее
Роуты стали интерактивнее

Четвёртое — я пощупал формат .gpx и планирую реализовать его поддержку. А потом, видимо, и другие форматы пойдут, типа geojson и что там ещё распространено. В целом, есть ощущение, что это шаг уже в несколько иную сторону, чем простое логирование перемещений, потому что тот же .gpx, например, может не иметь таймстемпов у каждой точки на карте, а это потенциальная проблема. Но я буду над этим думать. Просто помните, что у этого приложения нет цели стать бэкендом для фитнес-трекеров.

Пятое — реализовать режим открытия "тумана войны" в целом несложно, и я его сделаю. Потому что это прикольно!

И last but not least — люди. @hakim, @djhrum и ещё пара человек написали мне в телеге и мы разобрали с ними изрядную пачку интересных нюансов и багов, спасибо вам за поддержку и тестирование :)

Мои настройки для Overland (iOS) выглядят так:


@Frey, выглядить стало прямо шикарно.

  Развернуть 1 комментарий

@Frey, жду не дождусь двух вещей:

  • когда смогу ходить 😀
  • и, как следствие, когда смогу писать побольше разных треков в даварище!

"Туман войны" идея топ, кстати. Даешь больше релизов и фич! :)

Спасибо за проект, давненько не попадалось ничего настолько интересного в бетах (альфах?)

  Развернуть 1 комментарий

Хотел поставить плюс, увидел внизу "ссылку, чтобы не скролить вверх" и поставил плюс еще быстрее

  Развернуть 1 комментарий

А на Show HN не хочешь выложить?

По монетизации могу предложить донаты, реализация фич за денежку и saas (но например с упором на прайваси)

  Развернуть 1 комментарий

@zrzst, как хотя бы фавиконка будет, выложу)

Я пока вкрутил там к репозиторию линк на ko-fi, но донаты... Однажды у меня был проект, которым ежедневно пользовались люди, и которому за год задонатили 200 рублей :)

  Развернуть 1 комментарий

С одной стороны здорово, а с другой стороны самую важную для меня проблему оно всё равно не решает - проблему сбора этих самых треков.

Гугл карты как-то супер коварно собирают локейшн, условно если у тебя другой апп врубил ГПС - они будут собирать точный и часто, если не врубил - редко и по сотовым вышкам + вайфаю + блютусу, плюс с датчиков гироскопа они делают примерные предположения "а не ехал ли ты на машине случайно" и притягивают к дорогам (насчёт автоматизма этого не уверен, но в полу-ручном режиме дотянуть точно можно).

Выливается это в то, что гуглкарты не жрут батарейку и имеют ебейшую точность, и все FOSS аналоги чтобы её достичь вынуждены висеть в форграунде и врубать ГПС переодически сами, что само по себе фиаско.

  Развернуть 1 комментарий

@TiraelSedai, Думаю на самом деле там на уровне оси сбор, а гуглокарты просто имеют какой-то хитрый доступ к этим данным

  Развернуть 1 комментарий

@Cooch, на андроиде может быть, а что насчёт iOS? как они там это делают?

  Развернуть 1 комментарий

@TiraelSedai, хотел бы я знать

  Развернуть 1 комментарий

@TiraelSedai, к сожалению, всё так. Бонус от бытия гигантом, надо полагать, вряд ли какой-то сторонний софт сможет так же много, детально и без вреда для батареи собирать данные

  Развернуть 1 комментарий

@TiraelSedai @Frey, Получается, что можно продолжать давать гуглу следить, но раз месяц (например) автоматически экпортировать данные себе на селфхост и дропать их у гугл (если придерживаться наивности, что гугл их все таки удаляет)

  Развернуть 1 комментарий

@nikbrain, теоретически это может сработать, но на практике есть нюанс: в архиве Takeout от гугла было два разных формата файлов, под которые я сделал импорты. Сейчас гугл убивает хранение истории перемещений на своих серверах и предлагает хранить их на устройстве пользователя вместо этого. Экспорт с устройства, насколько я знаю (живого файла у меня нет), выглядит отлично от предыдущих двух форматов, и, поскольку у меня на руках нет примера файла, я пока ещё не реализовал возможность импортировать файл, экспортированный с устройства пользователя.

Всё через жопу.

  Развернуть 1 комментарий
Oleg Zakharchenko Работаю в кафе 20 мая в 03:03

Прикольный проект.
Не понял смысл названия правда. Я прочитал его как "Даварищ". Постсовецкое сказалось наверно...

И ссылку на гит может вставить в начале и в конце?
И правильно я понял, что это сэлф-хостед визуализация статистики? А сами данные собираются через OwnTracks? Может так и монитизировать через своё приложение?

  Развернуть 1 комментарий

@zed, с немецкого "da war ich" переводится как "там я был" :)

Добавил ссылку вверх и вниз, спасибо.

Да, визуализация, но в комплекте с OwnTracks/Overland ещё и сбор новых данных тоже. Про собственное приложение... Во-первых, я не мобильщик и без понятия с какой стороны подступиться, во-вторых, не уверен, что хочу и есть в этом реальная необходимость: для телефона уже есть клиенты, которые собирают нужные геоданные и шлют их куда мне нужно, и вряд ли я со своим нулевым опытом в доменной области и мобильной разработке сделаю лучше. Но кто его знает, как оно в будущем будет, загадывать не стану

  Развернуть 1 комментарий

@Frey, Хаха, я искренне прочитал как „Товарищ“, но на букву Д.

Вообще если ты в Германии, то у вас должно быть типа «Да Вар Иш» ;)

А кстати, не пробовал выводить карты через модуль Folium и Geojson. У меня они довольно шустро летали, даже при большом количестве точек (меньше чем у тебя конечно)

  Развернуть 1 комментарий

@zed, произношения разнятся, "ищь" я слышу в основном от турков и Раммштайна

Не пробовал, у меня бэк на руби, а Folium на питоне, насколько я вижу, разве там будет какая-то совместимость?

  Развернуть 1 комментарий
Александр Руденко Виндоадмин. Живу приколами 21 мая в 11:16

@Frey, спасибо за хорошее описание!
Я заметил где-то посреди комментов, ты писал, что катался с OwnTracks/Overland на велике. Подскажи, пажалста, а Strava (например) ты не пользуешься?

У меня просто давно висит идея объединения треков из нескольких источников - тренировки + поездки на авто + походы пешком (которые я не трекаю через Strava), но я не то что не фронтендер, а совсем не разработчик

Есть любительский проект для Strava - statshunters.com - он собирает все тренировки оттуда и кладёт их на одну карту (и делает это лучше, чем Strava Heatmaps по платной подписке) - вот люблю ей пользоваться, потому что тоже интересно смотреть, где был, а где нет. Но и тренировочные данные вроде ЧСС мне тоже интересны, поэтому я бы не стал запускать сразу два приложения, чтобы отслеживать геопозицию

  Развернуть 1 комментарий

@Rdnask, пользуюсь стравой тоже, но не озадачивался вопросом получения из неё треков пока. Надо порисёрчить их апи (и есть ли оно вообще в каком-то виде. В Статсхантерс я публичного апи вообще не нашёл :\

  Развернуть 1 комментарий

@Frey, в Statshunters, я думаю, и не будет - они просто по API гребут данные и обсчитывают на своей стороне, там графички и таблички (и способ отображения)

  Развернуть 1 комментарий

@Rdnask, ага, у Стравы есть возможность выгрузить архив с данными, посмотрю на досуге, что с ними можно сделать

  Развернуть 1 комментарий

о бля это то что я искал, я очень тщательно лелею историю своих перемещений и хотел бы хотя бы иметь это как бэкап

уже заказал takeout

  Развернуть 1 комментарий

пошел прогрев

  Развернуть 1 комментарий

@Kirk, импорт будет быстрым, а вот реверс геокодинг может занять часы :)

  Развернуть 1 комментарий

@Frey, ну чет импорт вроде закончился, но его нет в списке импортов, получается жду?

  Развернуть 1 комментарий

@Kirk, Покажи логи контейнеров app и sidekiq?

  Развернуть 1 комментарий

@Frey, полагаю что проблема в этом
2024-05-22 18:11:57.314 UTC [267] ERROR: total size of jsonb array elements exceeds the maximum of 268435455 bytes

больше ошибок не наблюдаю, ну редис еще по таймауту отваливается

  Развернуть 1 комментарий

@Kirk, ага, полагаю, ты импортируешь Records.json. Какого размера файл? Можешь написать в личку, будет проще)

  Развернуть 1 комментарий
Hakim Troyanov Тревел-евангелист 22 мая в 10:48

Хочу добавить, что я тут сомневался насчет батарейки.
Но в итоге любопытство взяло свое (а, как известно, надо стараться делать не то, что нравится, а в первую очередь то, что любопытно) и я развернул проект и поставил себе на андрюшу Owntracks.
И если кто-то сомневается, как я — попробуйте: у меня пока что Owntracks в режиме Significant в фоне ест батарейки меньше, чем FOSS-клиент Телеги. Меньше в 15 раз, Карл, то есть вообще ничтожно. И в 10 раз меньше, чем Яндекс.Навигатор.
Да, сравнивать foreground и background прилы некорректно, но все же я ожидал гораздо худшего.

А сам Dawarich прикольный, отдельный плюс — автор быстро фиксит то, что у меня не работало. Евгений, спасибо за проект и за отзывчивость в личке.

Запилите кто-нить нативные мобильные аппки для проекта и будет монетизация и клубная синергия :)

  Развернуть 1 комментарий

Как ты вовремя с этой тулой:)

А случаем нет в планах добавить возможность импорта .gpx файлов вачдогом?

Юзкейс: визуализировать треки покатушек. Сделать автосинк файлов в какую-то папку, а тулой их подтягивать в общую кучу по мере добавления в папку.

  Развернуть 1 комментарий

@djhrum, пока нет, но теоретически сделать несложно :)

  Развернуть 1 комментарий

@Frey, былобы мега круто.:)

  Развернуть 1 комментарий

@djhrum, плюсану, из OsmAnd было бы здорово иметь возможность грузить .gpx

  Развернуть 1 комментарий

Выглядит круто!

А нет ощущения или даже ишьюс уже, что OwnTracks хуже трекает местоположения, чем родной гугловый софт, который возможно получает картбланш по работе в фоне? А сторонние приложения уж как повезет и зависит от вендора
https://dontkillmyapp.com/

  Развернуть 1 комментарий

@free0u, конкретно после импорта гугловского файла Records.json и взгляда на получившиеся маршруты на карте да, очевидно, что гугл собирает ОЧЕНЬ много геоданных. Но в OwnTracks можно достаточно гибко настроить режим трекинга и включать "детальный" режим (там он называется "Move"), чтобы ценой батарейки собирать более детальную картинку. В целом меня устраивает такой баланс детальности к прайваси

  Развернуть 1 комментарий

@Frey, проект классный, видел его тут в других топиках. Даже хотел заселфхостить, но пока отпугивает, что OwnTracks может стать убийцей батарейки. В этом разрезе не уверен, что мне так уж нужна история перемещений такой ценой.
Какие наблюдения в части батарейки есть у вас?

  Развернуть 1 комментарий

@hakim, в целом в режиме Move овнтрекс в моём айфоне из 2021 года нормально так отъедает батарейку. Но можно настроить частоту считывания геопозиции в секундах и дальность перемещения, при котором происходит считывание (что раньше произошло, тогда и записали точку). Вчера катался на велике с включенным Overland, он по-умолчанию писал точки каждую секунду, это тоже нормально отняло заряда. Переставил на каждые 30 секунд — стало получше. В общем, нужен баланс :)

  Развернуть 1 комментарий

@Frey, cпасибо.

Не удержался, решил потестить.
Вроде все настроил, сервис развернул, аппку поставил, но на карте не вижу меток, и в статистике пусто.

Вероятно, неправильно передаю адрес сервера в настройках HTTP Owntrack, смущает, что в его логах что-то про NOKEY

2024-05-20 19:49:27.283 D MessageProcessor: message:Response 200, (1 msgs received), 
2024-05-20 19:49:27.284 I MessageProcessor: Received incoming message: MessageUnknown on NOKEY

Если в дебаге, то примерно так

2024-05-20 19:49:25.246 D LocationLiveData: LocationLiveData location update request completed: Success=true Cancelled=false
2024-05-20 19:49:26.971 D MessageProcessor: Queueing messageId:1716223766967-25237f, queueLength:0, ThreadID: Thread[main,5,main]
2024-05-20 19:49:26.977 D CachingGeocoder: Geocode cache: hits=26, misses=2
2024-05-20 19:49:26.979 D MessageProcessorEndpointHttp: url:http://my_ip:3000/api/v1/points, messageId:1716223766967-25237f
2024-05-20 19:49:27.282 I MessageProcessorEndpointHttp: Message id=1716223766967-25237f sent in 303ms
2024-05-20 19:49:27.283 D MessageProcessor: message:Response 200, (1 msgs received), 
2024-05-20 19:49:27.284 I MessageProcessor: Received incoming message: MessageUnknown on NOKEY
2024-05-20 19:49:27.286 D MessageProcessor: onMessageDelivered in MessageProcessor Noop. ThreadID: Thread[networkHandlerThread,5,main]
2024-05-20 19:49:27.978 D MessageProcessor: Queueing messageId:1716223767975-6221a, queueLength:0, ThreadID: Thread[main,5,main]
2024-05-20 19:49:27.984 D MessageProcessorEndpointHttp: url:http://my_ip:3000/api/v1/points, messageId:1716223767975-6221a
2024-05-20 19:49:28.317 I MessageProcessorEndpointHttp: Message id=1716223767975-6221a sent in 332ms
2024-05-20 19:49:28.317 D MessageProcessor: message:Response 200, (1 msgs received), 
2024-05-20 19:49:28.318 I MessageProcessor: Received incoming message: MessageUnknown on NOKEY
2024-05-20 19:49:28.318 D MessageProcessor: onMessageDelivered in MessageProcessor Noop. ThreadID: Thread[networkHandlerThread,5,main]
2024-05-20 19:49:28.961 D MapViewModel: setting view mode: VIEW_FREE

Вопрос:
— надо ли в параметрах подключения в аппке передавать адрес как http://my_ip:3000/api/v1/points или порт опускаем?
— надо ли в параметрах подключения в аппке передавать логин и пароль? (пробовал и да, и нет, без результата)

  Развернуть 1 комментарий

@hakim, если даварихь развёрнут за ревёрс прокси, то порт не нужен, если без него, то нужен. Логин-пароль указывать не нужно, позднее я планирую вкрутить апи-токен, который нужно будет прямо в урле указать, но пока ничего такого не нужно. Ну и лучше логи серверного аппа смотреть/присылать :)

  Развернуть 1 комментарий

@Frey, Реверс-прокси нет, значит, строка подключения правильная, с портом.
Авторизацию уберу, но все равно пока непонятно, почему не тречит в стате ничего.
Может из дома выйти и все-таки пройтись ))
Пока на диване потыкал режимы Move и Significant, полагая, что initial-треккинг-то должен бы нарисовать сразу как точку.

  Развернуть 1 комментарий

@hakim, в правом верхнем углу основного экрана овнтрекс есть кнопка "поделиться" и за ней спрятана другая, "Send location now", можно не вставать с дивана)

  Развернуть 1 комментарий

@Frey, Да, у меня андроид, там чуть иначе, но кнопка с пиктограммкой выгрузки есть, ее тыкал, пока не разобрался, что не так.
По логам поведение похоже на рабочее?

  Развернуть 1 комментарий

@hakim, ну я вижу что приложение отправляет запрос и получает ответ 200, вероятно, всё окей :) Какие процессы в докере запущены от давариха?

  Развернуть 1 комментарий

@Frey, эти

docker ps -a
CONTAINER ID   IMAGE                     COMMAND                  CREATED             STATUS          PORTS                                       NAMES

eee6486b500e   freikin/dawarich:latest   "dev-entrypoint.sh s…"   About an hour ago   Up 50 minutes   3000/tcp                                    dawarich_sidekiq

95bc55f4ef32   freikin/dawarich:latest   "dev-entrypoint.sh b…"   About an hour ago   Up 49 minutes   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp   dawarich_app

abfadd17865b   redis:7.0-alpine          "docker-entrypoint.s…"   About an hour ago   Up 50 minutes   6379/tcp                                    root_dawarich_redis_1

0b62e6614fe8   postgres:14.2-alpine      "docker-entrypoint.s…"   About an hour ago   Up 50 minutes   5432/tcp                                    dawarich_db
  Развернуть 1 комментарий

@hakim, вроде всё норм) напиши мне в личку, подебажим вместе

  Развернуть 1 комментарий

О, как раз сегодня пытался понять, что делать с Location History, когда меняю гугл аккаунт!

Мне не нравится, что OwnTracks не трекает позицию после перезагрузки устройства, и у разработчика какая-то странная позиция по этому поводу (типа "не хочу запрашивать background location access в плей сторе"): https://github.com/owntracks/android/discussions/1095. Не удобно, и, как я понимаю, их способ трекинга с активным приложением требует больше батарейки, чем гугловый трекинг.

  Развернуть 1 комментарий

@Boris, можно поэкспериментироватьс Overland, я как раз этим планирую заняться в ближайшие активные дни :)

  Развернуть 1 комментарий

@Frey, андроид-версия какая-то полумёртвая:
https://github.com/OpenHumans/Overland_android/issues/39

  Развернуть 1 комментарий

@Boris, возможно, я мне пока актуально именно айос :) Но автор отвечает в почте, возможно имеет смысл ему там позадавать вопросы. Плюс, вроде как есть аналогичный софт, который андроид-онли, сделать эндпоинд под что-то удобное в целом тоже несложно, если что — кидай в меня ссылкой :)

  Развернуть 1 комментарий

Кайфуши!
Много лет назад выключил треки гугла, но прям грустно от того, что не так просто понять где я был в 2018, и почекать реально ли я тут уже был или глючит

  Развернуть 1 комментарий
Andrey Oshev ios разнорабочий 22 мая в 23:20

Вообще нравилась эта фича в гугл, но после смены айфона почему-то гугл больше не разрешает мне ее включать: Location History is not available for this device, че только не пробовал, но anyway, попробую развернуть selfhosted :)

  Развернуть 1 комментарий
Святослав Игуана Старший аналитик-разработчик 25 мая в 15:09

Крутой проект. Собираюсь захостить и попробовать. Кстати, требования к машине не увидел. Это я плохо читал или они не описаны?

По поводу пуллреквестов -- можно написать подробный contributing.md со ссылкой из readme и пометить ишью тегами good first issue -- это сильно снизит порог входа желающим помочь.

  Развернуть 1 комментарий

@iggisv9t, Никаких особенных требований нет, но лучше иметь от 1гб рам :)

  Развернуть 1 комментарий

Спасибо за классный проект, так держать! Обязательно попробую, вот только допилю лабу!

Можно настроить возможность делиться местоположением. Как это делает плугин (Android only) для OSMand https://osmand.net/docs/user/plugins/osmand-tracker. Посмотри описание, там есть ещё интересных идей. Ценность решения ещё и в том, что самоотверженные параноики с дегугленными смартфонами (а я таких много знаю) не могут делиться местоположением: например, в Телеге оно использует Google maps без варианта поменять.

Имя проекта, как тут не раз отмечали, оставляет желать потыкать в АИ за идеями :)

Поддерживаются ли типы передвижений? Гуглокарты, видимо, берут среднюю скорость и прикидывают территорию (например рельсы - поезд, гора - лыжи). Таким образом можно: помечать разные типы передвижений разным цветом, считать разную статистику по этим типам, получать гиги за шаги.

  Развернуть 1 комментарий

В тему с типами передвижений можно было бы добавить фильтр по типу и например отдельный туман войны для этого типа. Не фитнес-трекинг, но бегуны, хайкеры и елосипедисты будут рады!

А кстати, на какую карту наклабывается слой с исторей? Osm или обратно Google? Интересно, можно ли вернуть функционал "ты был в таком-то заведении и наверное жрал опять".

  Развернуть 1 комментарий

@TriplEight, Про типы перемещения я буду думать в будущем, но пока неясно, получится ли детектить. Карта использует тайлы OSM, а про функционал посещения заведений уже есть фича реквест, в будущем может запилю, самому хочется

  Развернуть 1 комментарий

@Frey, Тогда можно будет трекать посещение мест и ругать за пьянство например!

  Развернуть 1 комментарий

@Frey, Типы перемещений может быть ещё советуются с другими датчиками типа акселерометра.

  Развернуть 1 комментарий

@TriplEight, Это будет не очень универсальная тема, потому что сейчас данные принимаются от двух мобильных приложений, у каждого свой формат и набор данных, и это будет только усугубляться с поддержкой новых форматов

  Развернуть 1 комментарий

Это надо чтоб смартфон круглосуточно писал трек в фоне или как-то более бережливо для батарейки работает? Google, я так понимаю, постоянно GPS не дергает.

  Развернуть 1 комментарий

@akr0n, в OwnTracks есть два (на самом деле больше) основных режима: Significant и Move. В первом геолокация считывается редко и за день может набежать ну 10-30 точек. Во втором — нон-стоп и за день можно сделать сотни точек, получив детальный трек на карте, но ценой батарейки. Почитать подробнее можно здесь: https://owntracks.org/booklet/features/location/#location-data

У меня по-умолчанию стоит Significant, мне норм. Если я хочу записать прогулку по городу, включаю Move.

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб