나의 궁극적인 셀프 호스팅(Self-Hosted) 지도 및 위치 기록 설정 (Synology NAS, Fedora, Traccar
요약
Google Maps의 저장된 장소와 위치 기록을 개인정보 보호를 위해 셀프 호스팅 시스템으로 이전하는 방법을 설명합니다. Google Takeout을 통해 데이터를 추출하고, JSON 또는 CSV 형식을 KML/GPX로 변환하여 Synology NAS 및 Fedora 환경에서 관리하는 워크플로우를 제안합니다.
핵심 포인트
- Google Takeout을 활용한 지도 데이터 추출 방법
- JSON 및 CSV 데이터를 KML/GPX 등 지도 호환 형식으로 변환하는 도구 활용
- 비-미국식 로케일 환경에서 CSV 구분자 오류를 방지하기 위한 Bash 명령어 사용법
- Traccar를 활용한 위치 기록 관리 및 데이터 변환의 필요성
수정: 저의 현재 설정은 여기에 있습니다: https://www.reddit.com/r/selfhosted/comments/1tfv16j/comment/omxuj97/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button
Traccar가 매우 가볍긴 하지만, 일반적인 파일로 출력하기가 더 어렵기 때문에(변환하기는 쉽지만, 그래도) 추천하지는 않습니다.
안녕하세요 여러분! 드디어 Google Maps에서 완전히 벗어나 모든 지도 북마크, 저장된 장소, 그리고 위치 기록을 셀프 호스팅(Self-host)할 수 있는 완전한 시스템을 찾아냈습니다. 많은 시행착오를 거쳤기에, 관리하기 힘든 지도나 개인정보 보호 문제로 고민하는 분들을 위해 저의 정확한 설정 문서를 공유합니다.
전체 워크플로우(Workflow)에 대한 완전하고 가감 없는 분석은 다음과 같습니다.
1. Google Maps 저장된 장소 내보내기 및 변환
Google에서 데이터를 이전하려는 경우, 첫 번째 단계는 데이터를 추출하는 것입니다.
데이터 다운로드
- 다음 가이드를 따라 Google Takeout을 통해 저장된 장소를 다운로드할 수 있습니다: https://www.nickgracilla.com/posts/export-google-maps-saved-places/
JSON을 KML로 변환
- 몇 개의 표준 JSON 파일의 경우, 다음을 사용하여 무료로 변환할 수 있습니다: https://nearby.org.uk/convert-saved-places.php
링크가 포함된 CSV 목록 변환
- u/Yeshey222 님께 감사드립니다.
- 링크가 포함된 CSV 목록을 위해 Google Map URL 목록을 GPS 데이터로 내보내려면 이 도구를 사용하세요: https://github.com/Yeshey/Export-Google-Maps-Saved-Places
- 비(非)-미국식 구분자 버그 수정: 미국 이외의 시스템에서는 CSV 구분자(Separator)가 링크를 깨뜨릴 수 있습니다. 다음 명령어를 사용하여 실행 중에 미국 로케일(Locale)을 강제할 수 있습니다:
Bash env LC_ALL=C nix run github:Yeshey/Export-Google-Maps-Saved-Places -- "/home/folder" - 그 후, CSV 파일 내부의 헤더(Header)가 다음 항목과 정확히 일치하도록 조정해야 합니다: Title,Note,URL,Tags,Comment
기타 변환 옵션
- 테스트되지 않음 / 부정적인 피드백: https://mygeodata.cloud/converter/geojson-to-gpx
- 유료 대안 (€8): Takeout을 다루는 번거로움 없이 매끄러운 "모든 형식 간(all-to-all)" 애드온을 원한다면 다음을 사용할 수 있습니다: https://exportmymap.com/
2. 12-리스트 매트릭스 조직 시스템 (The 12-List Matrix Organization System)
수집가들을 위한 팁: 지도를 깔끔하고 실행 가능하게 유지하려면 이 시스템을 채택할 수 있습니다:
https://www.reddit.com/r/GoogleMaps/comments/1ijai4y/how_to_organize_lists_in_google_maps/
삭제될 경우를 대비해 복사/붙여넣기용:
이 시스템은 이모지 모양으로 표현되는 3가지 주요 장소 카테고리와 우선순위/상태를 반영하는 4가지 색상을 사용하여 시각적인 히트맵(Heatmap)을 생성합니다.
카테고리 (모양)
- 💛💚💙❤️ 활동 (Activities) (할 일: 랜드마크, 박물관, 관광지, 공원 등)
- 🟡🟢🔵🔴 음식 (Food) (먹을 곳: 레스토랑, 커피숍, 식료품점)
- 🟨🟩🟦🟥 쇼핑 (Shopping) (살 것: 의류, 기념품, 로컬 브랜드, 쇼핑몰)
우선순위 (색상)
- 🟨 필수 / 계획됨 (Must / Planned)
- 🟩 언젠가 / 아마도 (Maybe / Someday)
- 🟦 방문함 (Visited)
- 🟥 즐겨찾기 (Favorite)
기존 기본 리스트 재활용
- 💗 즐겨찾기 (Favorites): 중요한 일상/정기적 장소 (직장, 호텔, 체육관, 교통 허브 등)
- ⭐️ 별표 (Starred): 심부름 및 "오늘 꼭 해야 할" 항목 (예: 특정 공원 입구, 수하물 보관소, 우체국, 또는 당일 목표로 한 식당)
- ⛳️ 가고 싶은 곳 (Want to Go): 당신의 절대적인 수신함 (Inbox). 아무 생각 없이 이곳에 장소를 빠르게 저장하고, 간단한 메모를 추가한 뒤, 나중에 12가지 리스트 매트릭스로 분류하세요.
- 🧳 여행 계획 (Travel Plans): 향후 방문하고 싶은 국가 및 도시에 대한 거시적인 아이디어.
3. 데스크톱 인프라 (Fedora) 및 NAS 통합
데스크톱에서 지점(points)을 편집하려면 Google My Maps (https://www.google.com/maps/d/) 또는 Google Earth를 사용할 수 있습니다.
Fedora를 사용 중이며 .kml 파일을 Synology NAS에 저장하고 있다면, 이를 연결하는 방법은 다음과 같습니다:
- Flatpak 샌드박스 권한 (Flatpak Sandbox Permission): Flatpak을 통해 Google Earth를 실행하는 경우, Flatseal을 열어 홈 폴더에 대한 접근 권한을 승인하세요.
- NAS 공유 폴더 마운트 (Mount the NAS Share): 로컬 디렉토리를 생성하고 CIFS를 사용하여 Synology Drive 폴더를 로컬에 마운트합니다:
mkdir -p ~/Link_nas_mapssudo mount -t cifs -o username=**user**,domain=**domain.local** uid=**user**,gid=**user**
[//domain.local/home/Drive/Sync/Maps/](//domain.local/home/Drive/Sync/Maps/) ~/Link_nas_maps
4. 모바일 앱 및 동기화 (Synchronization)
마스터 .KML 파일을 NAS에 저장하고, Syncthing 또는 Synology Drive를 사용하여 휴대폰과 동기화 상태를 유지하세요. OsmAnd, Organic Maps, 또는 HERE WeGo와 같은 앱을 사용하여 파일을 읽고 쓸 수 있습니다.
Nextcloud 통합 (대안)
- Nextcloud 생태계를 선호한다면 Nextcloud Maps 앱을 살펴볼 수 있지만, 저는 시도해보지 않았습니다: https://apps.nextcloud.com/apps/maps
- 안드로이드 컴패니언 앱과 함께 사용할 수 있습니다: https://play.google.com/store/apps/details?id=it.danieleverducci.nextcloudmaps&hl=fr
Organic Maps 설정
- 북마크 (즐겨찾기) (Bookmarks (Favorites)) 탭을 엽니다 ➔ 북마크 가져오기 (Import bookmarks).
- 휴대폰의 동기화된 폴더로 이동하여 .kml 파일을 선택합니다.
- 동기화에 관한 참고 사항: 일부 가이드에서는 NAS로의 변경 사항을 자동화하기 위해 Organic Maps의 기본 저장 경로(설정 (Settings) ➔ 데이터 로컬라이제이션 (Data localization))를 동기화된 폴더로 직접 변경할 것을 권장합니다. 휴대폰의 라우팅 없이 이것이 작동할지는 확실하지 않습니다. 저는 Synology Drive를 사용한 동기화 폴더를 사용합니다. 저는 Organic Maps에서 목록을 수동으로 가져오기, 내보내기 및 삭제해야 합니다. 저는 몇 달에 한 번씩 이 작업을 수행하며 Google Earth로 편집합니다.
5. 위치 기록 (Location History), 실시간 추적 (Live Tracking) 및 히트맵 (Heatmaps)
Google 타임라인 (Timeline/Timeline History)을 프라이빗한 옵션으로 대체하려면, 히트맵 (heatmaps)을 생성하거나 지속적인 추적 서버 (continuous tracking server)를 사용할 수 있습니다.
과거 데이터 (Google 타임라인 가져오기 (Historical Data (Google Timeline Import)))
- Android 위치 서비스 (Location Services) 설정으로 이동 ➔ 내 타임라인 (Your Timeline) ➔ **내보내기 (Export)**를 통해 원시 기록 (raw history)을 가져옵니다.
- 다음을 사용하여 타임라인 내보내기 파일을 변환합니다: https://dawarich.app/tools/google-timeline-converter/
- 파일을 https://kepler.gl/demo에 드래그하여 시각화합니다.
- Kepler에서 히트맵 (Heatmap) 활성화하기: 왼쪽의 검은색 패널에서 레이어 (Layers) 탭으로 이동합니다.
- 업로드된 레이어 옆의 작은 화살표를 클릭하여 옵션을 엽니다.
- 유형 (Type) 행에서
- Container Manager를 열고, Registry (레지스트리) 탭으로 이동하여
traccar/traccar:latest를 다운로드합니다. - Image (이미지) 탭으로 이동하여 Traccar를 선택하고 **Launch (실행)**를 클릭합니다.
- Port Settings (포트 설정): 웹 인터페이스 (Web Interface)를 위해 로컬 포트 8082를 컨테이너 포트 8082 (TCP)로 매핑합니다. 모바일 데이터를 수신하기 위해 로컬 포트 5055를 컨테이너 포트 5055 (TCP)로 매핑합니다. (저의 경우 휴대폰에서는 작동하지 않았습니다.)
- Volume Settings (볼륨 설정): 로컬 폴더를 컨테이너 경로에 바인드(Bind)합니다:
docker/traccar/data➔/opt/traccar/datadocker/traccar/logs➔/opt/traccar/logs
- 마법사를 완료하고 컨테이너를 시작합니다.
단계 3: 서버 초기화 (Server Initialization)
- 웹 브라우저에서
http://192.168.1.__:8082/(사용자의 NAS IP)로 접속합니다. - 시스템에서 즉시 개인화된 관리자 (Admin) 계정을 생성하도록 강제합니다.
- 설정으로 이동하여 **Add Device (장치 추가)**를 클릭합니다. 이름을 지정하고 (예: My Smartphone), 휴대폰에서 생성된 **Unique Identifier (고유 식별자)**를 기록해 둡니다.
- 웹 인터페이스 설정을 사용하여 고도(Altitude)와 같이 수집하고 싶은 추가 속성을 추가합니다...
단계 4: 모바일 클라이언트 설정 (Mobile Client Setup)
- Google Play 스토어에서 Traccar Client를 다운로드합니다.
- 다음과 같이 구성합니다:
- Device Identifier (장치 식별자): 단계 3에서 사용한 고유 코드.
- Server URL (서버 URL):
http://[사용자의_NAS_IP]:8082를 사용합니다. - Frequency (빈도): 이 앱은 스마트하게 작동하는 것 같습니다. 정지 상태일 때는 보고를 보내지 않아 배터리를 절약하므로, 고급 설정을 변경할 필요가 없습니다.
- **Service Status (서비스 상태)**를 활성화(Active)로 전환합니다.
집 외부 Wi-Fi 환경에서
집을 떠나면 휴대폰이 로컬 192.168.x.x IP로 데이터를 전송하는 데 실패하게 됩니다. 이를 처리하는 세 가지 방법이 있습니다:
- Tailscale: Synology NAS와 Android 휴대폰 모두에 Tailscale을 설치합니다. 이는 보안 VPN 메시(Mesh)를 생성합니다. 모바일 Traccar Client 앱의 로컬 NAS IP를 보안 Tailscale IP(100.x.x.x로 시작함)로 교체합니다.
- 대안: 리버스 프록시 (Reverse Proxy)를 설정합니다.
- 가장 편한 방법: 아무것도 하지 않습니다. 앱이 지점(Points)들을 캐시(Cache)해 두었다가, 집 Wi-Fi에 다시 연결될 때 자동으로 모든 데이터를 업로드합니다. (제가 선택한 방법입니다.)
Traccar를 이용한 히트맵 (Heatmaps) 생성
Traccar 웹 인터페이스에 로그인한 후, Reports (보고서) ➔ **Route (경로)**로 이동하여 대상 연도를 선택하고 **Exporter (내보내기)**를 클릭합니다. 내보낸 파일을 Kepler.gl에 직접 드래그 앤 드롭하면 히트맵 (Heatmap)을 생성할 수 있습니다.
6. 기존 데이터 (Legacy Data)를 Traccar로 가져오기
Dawarich 또는 Google 변환을 통해 생성된 오래된 CSV 위치 기록이 있고, 이를 Traccar 데이터베이스에 강제로 주입하고 싶다면, Osmand API를 사용할 수 있는 것으로 보입니다:
https://www.traccar.org/forums/topic/using-the-api-to-import-data/
하지만 저는 성공하지 못했습니다. 만약 해결 방법을 알고 계신다면 알려주세요. 관심이 있습니다.
이 내용이 사람들에게 도움이 되기를 바랍니다 😄
AI 자동 생성 콘텐츠
본 콘텐츠는 r/SelfHosted (AI filter)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기