r/selfhosted 여러분, Daniel입니다.
Reitti를 아직 접해보지 못한 분들을 위해 설명드리자면, Reitti는 Google Timeline의 개인 정보 보호 중심의 자체 호스팅 대안입니다. 이 도구는 사용자의 기기가 기록한 원시 GPS 지점을 가져와 방문(visits), 이동 경로(trips) 그리고 당신 삶의 타임라인으로 변환합니다. 모든 것이 서버에 유지됩니다. 데이터베이스는 사용자 소유이며, 기록 또한 사용자 소유입니다.
저는 이 프로젝트를 2025년 6월에 개인적인 도구로 시작했습니다. 회사에 위치 기록을 넘기지 않으면서 과거 방문 장소나 여행의 추억을 되살리는 데 도움을 주는 소프트웨어였습니다. 그 이후로는 기대했던 것보다 훨씬 크게 성장했으며, 주로 이 커뮤니티 덕분입니다. 지난 한 달 동안 바빴기 때문에, 각 릴리스를 따로 게시하는 대신 제가 가장 기대하는 변경 사항들을 모아 소개합니다. 각 기능에 대한 스크린샷은 갤러리에 있습니다.
요약 (TL;DR)
- 거리 레벨 사진: Panoramax 통합. 오픈 Street View가 타임라인에 내장되었습니다.
- 자주 비판받던 날짜 선택기(date picker)를 재구축했습니다.
- 배터리 절약형 트래커를 위한 더 스마트한 방문 감지 기능 (significant-move 모드)
- 방문하지 않은 구역 설정 (No-Visit Zones), 부드러운 경로 렌더링, 맞춤 시작일
- Immich: 앨범 필터 및 사용자별 사진 공유
- 보안 수정 사항: 릴리스를 건너뛰었다면 업데이트하세요.
거리 레벨 사진. Reitti가 커뮤니티에서 만든 오픈 Street View인 Panoramax와 통합되었습니다. 때로는 장소를 방문하고 사진을 찍는 것을 잊어버리기도 합니다. 만약 그곳에 Panoramax의 커버리지가 존재한다면, 이제 타임라인에서 바로 이미지를 열 수 있습니다. 경로를 따라 사진 시퀀스를 클릭하여 지상 레벨(ground level)에서 주변을 둘러볼 수 있습니다 (첫 번째 스크린샷).
재구축된 날짜 선택기. 날짜 선택기는 몇 달 동안 공정한 비판을 받았고, 그 비판은 옳았습니다. 이제 일반 입력 필드를 가진 전통적인 선택기로 전환하거나, 아예 선택기를 건너뛰고
OwnTracks로 significant-move 모드에서 추적하면, 휴대폰이 무언가 발생했을 때 보고한 후 조용해집니다. 이러한 희소 데이터(sparse data)만으로는 Reitti의 체류 감지 기능이 가끔 정지 구간을 놓치고 방문 기록 대신 이동 경로를 기록하는 경우가 있었습니다. 새로운 알고리즘은 희소 데이터를 올바르게 처리하여, 지속 시간까지 포함한 방문을 정확하게 감지합니다. 휴대폰에서 변경할 필요는 없습니다.
타임라인 제어. No-Visit Zones 기능은 버스 정류장이 '방문'으로 기록되는 것을 방지합니다 (세 번째 스크린샷). 삭제된 방문 기록은 계속 삭제됩니다. 새로운 Smoothed view는 렌더링 시점에만 Kalman 필터를 사용하여 GPS 지터(jitter)를 필터링하므로, 원본 데이터는 손대지 않습니다. 그리고 맞춤 설정 가능한 '하루 시작' 기능으로 인해 새벽 2시에 집으로 돌아간 산책도 저녁 시간의 일부로 간주됩니다.
Immich. 앨범 필터를 사용하면 전체 라이브러리 대신 특정 앨범의 사진만 표시할 수 있습니다. 사용자별(Per-user) 사진 공유 기능을 통해, 위치 데이터를 공유할 때 어떤 사진을 포함할지 사용자별로 결정할 수 있습니다. 추적 경로는 보이게 하고 사진은 비공개로 하거나, 그 반대로 설정할 수 있습니다.
보안 공지. 책임 있는 공개(responsible disclosure)를 통해 이미 구성된 인스턴스에서 관리자 권한을 부여할 수 있는 설정 흐름 취약점(setup-flow vulnerability)이 발견되었습니다. 이는 테스트 추가를 통해 수정되었으며, 만약 귀하의 인스턴스가 외부에 노출되어 있고 업데이트를 건너뛰었다면 지금 바로 최신 상태로 업데이트하세요.
무료 스티커. 제가 실제 Reitti 스티커를 제작했고, 46세트가 완전히 무료로 제공됩니다. 조건 없이 받을 수 있습니다. [email protected]으로 'REITTI STICKERS'라는 제목과 배송 주소를 담아 이메일을 보내주세요. 저는 독일에서 일반 우편으로 전 세계에 발송하며, 귀하의 주소는 배송 목적으로만 사용되고 이후 삭제됩니다 (마지막 스크린샷).
개발 투명성
저는 코딩 프로세스의 특정 측면을 가속화하기 위해 AI를 개발 도구로 사용하지만, 모든 코드는 신중하게 검토, 테스트되었으며 의도적으로 설계되었습니다. AI는 보일러플레이트(boilerplate) 생성 및 문제 해결에 도움을 주지만, 아키텍처, 논리, 품질 표준은 전적으로 인간이 주도합니다.
피드백과 지원에 감사드립니다!
연결 방법은 다음과 같습니다:
버그를 발견하셨나요? GitHub Issues에 이슈를 등록해 주세요.
Lemmy에서 토론하기: Lemmy로 메시지를 보내주세요.
Reddit에서 연결하기: 이미 여기에 계시네요. 저는 u/daniel_graf입니다.
제 작업 지원하기: 이것이 유용하다고 생각되시면, Ko-fi에서 커피 한 잔을 사주시거나 Patreon에서 Reitti를 지원해 주실 수 있습니다.
문서화: https://www.dedicatedcode.com/projects/reitti/
GitHub: https://github.com/dedicatedcode/reitti
즐거운 추적 되시길,
— Daniel
제출자 /u/daniel_graf
[링크] [댓글]