Matomo(구 Piwik)는 Google Analytics와 가장 유사한 기능을 제공하는 오픈소스 웹 분석 플랫폼입니다. 15년 이상의 역사를 가진 성숙한 프로젝트로, e커머스 추적, 목표 전환, 히트맵, 세션 녹화, 태그 매니저까지 지원합니다. GA3에서 마이그레이션하기 가장 쉬운 대안이며, 플러그인 생태계도 풍부합니다. GitHub Stars 20K+입니다.
Matomo 주요 특징
Matomo는 GA의 모든 기능을 대체할 수 있는 완전한 분석 플랫폼입니다.
웹 분석
- 방문자, 페이지뷰, 세션, 이탈률
- 실시간 방문자 모니터링
- 유입 경로 분석 (검색, SNS, 캠페인)
- 지역/기기/브라우저 분석
- 사이트 검색 추적
고급 기능
- e커머스 추적: 제품, 주문, 매출 분석
- 목표 전환: 퍼널 분석
- 이벤트 추적: 커스텀 이벤트
- 콘텐츠 추적: 배너, 위젯 성과
- 히트맵 & 세션 녹화 (프리미엄)
- A/B 테스팅 (프리미엄)
엔터프라이즈 기능
- Matomo Tag Manager (GTM 대안)
- GA3 데이터 가져오기
- GDPR 도구 (동의 관리)
- 화이트 라벨
- API & SDK
사전 요구 사항
- Docker 및 Docker Compose 설치
- 최소 2GB RAM (4GB 권장)
- MariaDB 또는 MySQL
- 10GB 이상 저장 공간
Docker Compose로 Matomo 설치
기본 설치
# docker-compose.yml
services:
matomo:
image: matomo:5-apache
container_name: matomo
restart: unless-stopped
ports:
- "8080:80"
environment:
MATOMO_DATABASE_HOST: matomo-db
MATOMO_DATABASE_ADAPTER: mysql
MATOMO_DATABASE_TABLES_PREFIX: matomo_
MATOMO_DATABASE_USERNAME: matomo
MATOMO_DATABASE_PASSWORD: ${DB_PASSWORD}
MATOMO_DATABASE_DBNAME: matomo
volumes:
- matomo-data:/var/www/html
depends_on:
matomo-db:
condition: service_healthy
matomo-db:
image: mariadb:11
container_name: matomo-db
restart: unless-stopped
command: --max-allowed-packet=64MB
environment:
MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MARIADB_DATABASE: matomo
MARIADB_USER: matomo
MARIADB_PASSWORD: ${DB_PASSWORD}
volumes:
- matomo-db:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 5
volumes:
matomo-data:
matomo-db:
환경 변수 파일
# .env
DB_PASSWORD=your_secure_password
DB_ROOT_PASSWORD=your_root_password
설치 및 실행
# 디렉토리 생성
mkdir matomo && cd matomo
# docker-compose.yml 및 .env 생성
# 컨테이너 실행
docker compose up -d
# 로그 확인
docker compose logs -f matomo
# 브라우저에서 접속
# http://localhost:8080
# 설정 마법사 시작
초기 설정 (웹 마법사)
1. 환영 화면
http://localhost:8080 접속 후 “Next” 클릭
2. 시스템 체크
필수 확장 모듈 확인 (대부분 자동 통과)
3. 데이터베이스 설정
Docker Compose 사용 시:
Database Server: matomo-db
Login: matomo
Password: (your DB_PASSWORD)
Database Name: matomo
Table Prefix: matomo_
Adapter: MYSQL
4. 테이블 생성
“Next” 클릭 → 자동 생성
5. 슈퍼유저 생성
- Super User Login: admin
- Password: 강력한 비밀번호
- Email: your@email.com
6. 웹사이트 추가
- Website name: My Website
- Website URL: https://example.com
- Timezone: Asia/Seoul
7. 추적 코드 설치
생성된 JavaScript 코드를 웹사이트 </head> 앞에 추가:
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//matomo.yourdomain.com/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
고급 설정
프로덕션 환경 (Cron 아카이브)
대용량 트래픽 사이트는 리포트 사전 생성 필요:
# docker-compose.yml
services:
matomo:
# ... (기존 설정)
matomo-cron:
image: matomo:5-apache
container_name: matomo-cron
restart: unless-stopped
entrypoint: >
bash -c "while true; do
php /var/www/html/console core:archive --url=https://matomo.yourdomain.com;
sleep 3600;
done"
volumes:
- matomo-data:/var/www/html
depends_on:
- matomo
Traefik 연동
# docker-compose.yml
services:
matomo:
image: matomo:5-apache
container_name: matomo
restart: always
expose:
- "80"
environment:
MATOMO_DATABASE_HOST: matomo-db
MATOMO_DATABASE_ADAPTER: mysql
MATOMO_DATABASE_USERNAME: matomo
MATOMO_DATABASE_PASSWORD: ${DB_PASSWORD}
MATOMO_DATABASE_DBNAME: matomo
volumes:
- matomo-data:/var/www/html
labels:
- "traefik.enable=true"
- "traefik.http.routers.matomo.rule=Host(`matomo.yourdomain.com`)"
- "traefik.http.routers.matomo.entrypoints=websecure"
- "traefik.http.routers.matomo.tls.certresolver=letsencrypt"
networks:
- matomo-net
- traefik-public
networks:
matomo-net:
driver: bridge
traefik-public:
external: true
Nginx 리버스 프록시
server {
listen 443 ssl http2;
server_name matomo.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/matomo.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/matomo.yourdomain.com/privkey.pem;
client_max_body_size 50M;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
trusted_hosts 설정
리버스 프록시 사용 시 /var/www/html/config/config.ini.php에 추가:
[General]
trusted_hosts[] = "matomo.yourdomain.com"
또는 Docker에서:
docker compose exec matomo bash -c "echo '[General]
trusted_hosts[] = \"matomo.yourdomain.com\"' >> /var/www/html/config/config.ini.php"
주요 환경 변수
| 변수 | 설명 | 필수 |
|---|---|---|
| MATOMO_DATABASE_HOST | DB 호스트 | ✅ |
| MATOMO_DATABASE_ADAPTER | mysql 또는 pdo_mysql | ✅ |
| MATOMO_DATABASE_USERNAME | DB 사용자 | ✅ |
| MATOMO_DATABASE_PASSWORD | DB 비밀번호 | ✅ |
| MATOMO_DATABASE_DBNAME | DB 이름 | ✅ |
| MATOMO_DATABASE_TABLES_PREFIX | 테이블 접두사 | ❌ |
관리 명령어
# 로그 확인
docker compose logs -f matomo
# 콘솔 명령어 실행
docker compose exec matomo php console list
# 아카이브 수동 실행
docker compose exec matomo php console core:archive
# 데이터베이스 백업
docker compose exec matomo-db mysqldump -u matomo -p matomo > backup_$(date +%Y%m%d).sql
# 업데이트
docker compose pull
docker compose up -d
# 플러그인 설치
docker compose exec matomo php console plugin:activate PluginName
Google Analytics 데이터 가져오기
Matomo는 GA3 데이터를 가져올 수 있습니다:
- Administration → System → Import
- “Google Analytics” 선택
- GA API 인증
- 가져올 데이터 선택
- 가져오기 시작
문제 해결
“trusted_hosts” 오류
// config/config.ini.php
[General]
trusted_hosts[] = "localhost:8080"
trusted_hosts[] = "matomo.yourdomain.com"
대시보드 느림
Cron 아카이브 설정으로 리포트 사전 생성:
# crontab에 추가
5 * * * * /usr/bin/php /var/www/html/console core:archive --url=https://matomo.yourdomain.com > /dev/null
GeoIP 설정
MaxMind GeoIP 데이터베이스 다운로드:
docker compose exec matomo php console scheduled-tasks:run --force
마무리
Matomo는 GA의 모든 기능을 대체할 수 있는 가장 완전한 오픈소스 분석 플랫폼입니다. e커머스 추적, 목표 전환, 태그 매니저까지 지원하며 GA3에서 마이그레이션하기 가장 쉽습니다. 복잡한 분석이 필요한 비즈니스에 적합하며, Docker로 쉽게 셀프호스팅할 수 있습니다.
참고 링크
- 공식 사이트: https://matomo.org
- GitHub: https://github.com/matomo-org/matomo
- Docker: https://hub.docker.com/_/matomo
- 문서: https://matomo.org/docs