프로젝트 소개
Glance는 단일 Go 바이너리와 SQLite 파일, 또는 단일 Docker 컨테이너로 제공되는 셀프 호스팅 웹 분석 서비스입니다. 이 서비스는 전체 제품 분석 플랫폼이 되기보다 방문자, 페이지 뷰, 인기 페이지, 추천인, 국가 및 지역, 기기, 브라우저, 운영 체제 및 단순 커스텀 이벤트와 같은 소수의 핵심 지표에 집중하도록 의도적으로 설계되었습니다. 세션, 퍼널, 코호트, 히트맵 또는 세션 리플레이 기능은 제공하지 않습니다.
추적: 사이트는 /glance.js에서 제공하는 약 1KB 크기의 쿠키리스 스니펫을 삽입합니다. 이 스니펫은 sendBeacon을 통해 페이지 뷰당 하나의 작은 JSON 본문을 전송하며, 싱글 페이지 앱(SPA)의 경우 pushState 및 popstate 시 다시 전송합니다. 페이지에서 커스텀 이벤트를 발생시킬 수 있으며, 속성 값은 수용되지만 현재는 무시됩니다. 서버는 페이지 호스트를 사이트 도메인과 대조하여 검증하고, 알려진 봇, webdriver 플래그가 지정된 브라우저 및 과도하게 큰 본문은 폐기하며 항상 202 응답을 보냅니다. 배포 전 테스트를 위해 localhost 및 프라이빗 LAN 주소도 허용됩니다. 파생 차원에는 브라우저, OS, 기기, 국가, 지역 및 캠페인 태그가 포함됩니다.
개인정보 보호: 쿠키를 사용하지 않으며 IP를 저장하지 않습니다. 방문자는 일일 솔트(salt)와 사이트, IP, 사용자 에이전트를 결합한 SHA-256 해시의 절단된 값으로 식별됩니다. 솔트는 UTC 기준 매일 교체되어 저장되므로 방문자를 다음 날까지 추적할 수 없습니다. 하루 방문자 수는 정확하게 집계되며, 다일 합계는 일일 고유 방문자 수의 합산입니다. 국가 및 지역은 프록시 국가 헤더가 있는 경우 이를 사용하고, 그렇지 않으면 IANA 기반 테이블을 통해 매핑된 브라우저 시간대를 사용합니다. 지역은 해당 시간대의 도시 부분이며, 도시 수준의 보고서는 제공되지 않습니다. 추천인은 호스트만 남기고 일반적인 호스트는 별칭으로 처리됩니다.
아키텍처: 이벤트는 인메모리 큐로 들어가며 요청 경로에서 데이터베이스에 직접 닿지 않습니다. writer 고루틴이 매초 또는 200개 이벤트마다 하나의 트랜잭션으로 큐를 커밋합니다. 시간별 및 일별 롤업(rollup)은 매분 및 대시보드 오픈 시 원본 이벤트로부터 다시 구축되며, 대시보드는 롤업 데이터만 읽습니다. 원본 이벤트는 보존 기간(기본 7일, 최소 2일, 환경 변수로 고정하지 않는 한 최대 90일까지 조정 가능) 후에 삭제되며, 롤업은 무기한 보관됩니다. 파비콘은 루프백, 프라이빗, 링크 로컬 및 캐리어 등급 NAT 주소를 거부하는 SSRF 가드를 통해 Glance가 직접 가져옵니다. 지도는 MapLibre로 렌더링된 내장 Natural Earth 외곽선을 사용하므로 런타임에 외부 서비스가 필요하지 않습니다.
대시보드 및 API: 내장된 Svelte UI는 파비콘, 14일 스파크라인, 지난주 대비 이번 주 방문자 수를 포함한 모든 사이트 목록을 표시하며 드래그로 순서를 변경할 수 있습니다. 사이트별로 24시간에서 180일까지 이전 동일 기간 대비 변경 사항이 포함된 합계, 차트, 최근 30분간 활동 중인 사용자, 탭별 상세 카드(페이지, 소스, 위치, 기기, 이벤트), 확장 가능한 필터링 목록, 최근 5분간의 라이브 3D 글로브 및 범위 지도를 보여줍니다. 또한 이름, 도메인, 기본 범위, 강조 색상 및 홈 국가에 대한 사이트별 설정을 제공합니다. 엔드포인트는 /api/v1 아래에 위치하며 collect, sites, stats, breakdown, live, favicons, rollup, status, settings, export 및 토큰 관리를 담당합니다. 관리자 인증은 세션 쿠키 또는 HTTP Basic을 사용하며, API 토큰은 해시 형태로 저장되고 읽기 전용으로 작동합니다.
추가 기능: /mcp(Streamable HTTP)에 있는 읽기 전용 Model Context Protocol 엔드포인트는 AI 에이전트를 위한 list_sites, overview, site_stats, breakdown, search_terms 및 revenue 도구를 노출합니다. Glance 내부에 LLM은 포함되어 있지 않습니다. 선택적 통합 기능을 통해 OAuth를 통한 Google Search Console 검색어(webmasters.readonly 범위, 연결 시 약 16개월 분량을 가져오고 매일 갱신)와 방문자의 브라우저 localStorage에 기억되어 결제 메타데이터로 전달되는 first-touch 어트리뷰션 기반의 Polar 수익 데이터를 추가할 수 있습니다. 배포 가이드는 Docker Compose와 linux/amd64 및 linux/arm64용 사전 빌드된 ghcr.io 이미지, Dokploy 스타일 호스트를 위한 별도의 compose 파일, 그리고 Go 1.27, Node 24 및 순수 Go SQLite 드라이버를 이용한 소스 빌드 방법을 다룹니다. 게시된 이미지는 약 37MB이며 유휴 상태에서 메모리 사용량은 10MB 미만입니다. 라이선스는 MIT입니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.