Matomo Docker 설치 가이드: 완전한 GA 대안 웹 분석




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_HOSTDB 호스트
MATOMO_DATABASE_ADAPTERmysql 또는 pdo_mysql
MATOMO_DATABASE_USERNAMEDB 사용자
MATOMO_DATABASE_PASSWORDDB 비밀번호
MATOMO_DATABASE_DBNAMEDB 이름
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 데이터를 가져올 수 있습니다:

  1. Administration → System → Import
  2. “Google Analytics” 선택
  3. GA API 인증
  4. 가져올 데이터 선택
  5. 가져오기 시작

문제 해결

“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



댓글 남기기