Plausible Analytics는 Google Analytics의 프라이버시 친화적 대안입니다. 쿠키를 사용하지 않아 GDPR/CCPA 준수가 간편하고, 추적 스크립트가 1KB 미만으로 사이트 속도에 영향을 주지 않습니다. 깔끔한 단일 페이지 대시보드로 핵심 지표만 보여주며, 복잡한 설정 없이 바로 사용할 수 있습니다. GitHub Stars 21K+로 빠르게 성장 중인 프로젝트입니다.
Plausible 주요 특징
Plausible은 심플함과 프라이버시를 최우선으로 합니다.
프라이버시 우선
- 쿠키 없음: GDPR 배너 불필요
- 개인정보 수집 안함: IP 익명화, 핑거프린팅 없음
- GDPR/CCPA/PECR 준수: 유럽/미국 규정 충족
- 데이터 소유권: 100% 셀프호스팅 가능
핵심 지표
- 방문자 수, 페이지뷰, 체류 시간
- 유입 경로 (검색, SNS, 직접)
- 국가/기기/브라우저 통계
- 인기 페이지 순위
- 목표 전환 추적
기술적 장점
- 추적 스크립트 < 1KB (GA 45KB 대비)
- 사이트 속도 영향 없음
- 실시간 대시보드
- 이메일/Slack 리포트
- API 지원
사전 요구 사항
- Docker 및 Docker Compose 설치
- 최소 2GB RAM (ClickHouse 사용)
- 도메인 (외부 접근 시 필수)
- CPU: SSE 4.2 또는 NEON 명령어 지원
Docker Compose로 Plausible 설치
방법 1: 공식 Community Edition (권장)
# 저장소 클론 (특정 버전)
git clone -b v2.1.4 --single-branch https://github.com/plausible/community-edition plausible-ce
cd plausible-ce
# 환경 변수 설정
touch .env
echo "BASE_URL=https://plausible.yourdomain.com" >> .env
echo "SECRET_KEY_BASE=$(openssl rand -base64 48)" >> .env
# 포트 설정 (Let's Encrypt 자동 인증서)
echo "HTTP_PORT=80" >> .env
echo "HTTPS_PORT=443" >> .env
# compose.override.yml 생성
cat > compose.override.yml << EOF
services:
plausible:
ports:
- 80:80
- 443:443
EOF
# 실행
docker compose up -d
방법 2: 커스텀 Docker Compose
# docker-compose.yml
services:
plausible:
image: ghcr.io/plausible/community-edition:v2.1.4
container_name: plausible
restart: unless-stopped
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
ports:
- "8000:8000"
environment:
- BASE_URL=${BASE_URL}
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
- DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@plausible-db:5432/plausible
- CLICKHOUSE_DATABASE_URL=http://plausible-events:8123/plausible
- DISABLE_REGISTRATION=invite_only
depends_on:
- plausible-db
- plausible-events
plausible-db:
image: postgres:16-alpine
container_name: plausible-db
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- plausible-db:/var/lib/postgresql/data
plausible-events:
image: clickhouse/clickhouse-server:24.3-alpine
container_name: plausible-events
restart: unless-stopped
volumes:
- plausible-events:/var/lib/clickhouse
ulimits:
nofile:
soft: 262144
hard: 262144
volumes:
plausible-db:
plausible-events:
환경 변수 파일
# .env
BASE_URL=https://plausible.yourdomain.com
SECRET_KEY_BASE=your_64_character_secret_key_here
POSTGRES_PASSWORD=your_secure_password
시크릿 키 생성:
openssl rand -base64 48
설치 및 실행
# 디렉토리 생성
mkdir plausible && cd plausible
# docker-compose.yml 및 .env 생성
# 컨테이너 실행
docker compose up -d
# 로그 확인 (마이그레이션 완료까지 대기)
docker compose logs -f plausible
# 브라우저에서 접속
# http://localhost:8000
# 첫 계정 생성
초기 설정
1. 관리자 계정 생성
http://localhost:8000접속- “Create account” 클릭
- 이메일, 비밀번호 입력
- 계정 생성 완료
2. 웹사이트 추가
- “Add website” 클릭
- 도메인 입력 (예: example.com)
- 타임존 선택
- “Add snippet to your website” → 추적 코드 복사
3. 추적 코드 설치
웹사이트 <head> 태그에 추가:
<script defer data-domain="yourdomain.com"
src="https://plausible.yourdomain.com/js/script.js"></script>
확장 기능 (선택)
<!-- 아웃바운드 링크 + 파일 다운로드 + 404 추적 -->
<script defer data-domain="yourdomain.com"
src="https://plausible.yourdomain.com/js/script.outbound-links.file-downloads.404.js"></script>
고급 설정
Traefik 연동
# docker-compose.yml
services:
plausible:
labels:
- "traefik.enable=true"
- "traefik.http.routers.plausible.rule=Host(`plausible.yourdomain.com`)"
- "traefik.http.routers.plausible.entrypoints=websecure"
- "traefik.http.routers.plausible.tls.certresolver=letsencrypt"
- "traefik.http.services.plausible.loadbalancer.server.port=8000"
networks:
- traefik-public
networks:
traefik-public:
external: true
Nginx 리버스 프록시
server {
listen 443 ssl http2;
server_name plausible.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/plausible.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/plausible.yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:8000;
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;
}
}
이메일 설정 (선택)
environment:
- MAILER_EMAIL=plausible@yourdomain.com
- SMTP_HOST_ADDR=smtp.yourdomain.com
- SMTP_HOST_PORT=587
- SMTP_USER_NAME=your_smtp_user
- SMTP_USER_PWD=your_smtp_password
- SMTP_HOST_SSL_ENABLED=true
주요 환경 변수
| 변수 | 설명 | 필수 |
|---|---|---|
| BASE_URL | 외부 접근 URL | ✅ |
| SECRET_KEY_BASE | 세션 암호화 키 (64자) | ✅ |
| DATABASE_URL | PostgreSQL 연결 | ✅ |
| CLICKHOUSE_DATABASE_URL | ClickHouse 연결 | ✅ |
| DISABLE_REGISTRATION | 가입 제한 (true/invite_only) | ❌ |
| TOTP_VAULT_KEY | 2FA 암호화 키 | ❌ |
관리 명령어
# 로그 확인
docker compose logs -f plausible
# 사용자 목록
docker compose exec plausible /entrypoint.sh sh -c "cd /app && ./bin/plausible rpc 'Plausible.Auth.list_users()'"
# 데이터베이스 백업
docker compose exec plausible-db pg_dump -U postgres plausible > backup_$(date +%Y%m%d).sql
# ClickHouse 백업 (이벤트 데이터)
docker compose exec plausible-events clickhouse-client --query "BACKUP DATABASE plausible TO Disk('backups', 'backup.zip')"
# 업데이트
docker compose pull
docker compose up -d
문제 해결
ClickHouse 시작 실패
CPU가 SSE 4.2를 지원하는지 확인:
grep -q sse4_2 /proc/cpuinfo && echo "Supported" || echo "Not supported"
추적 스크립트 차단됨
애드블로커가 analytics 경로를 차단할 수 있습니다. 스크립트 이름 변경:
environment:
- TRACKER_SCRIPT_NAME=stats.js
메모리 부족
ClickHouse는 메모리를 많이 사용합니다. 최소 2GB RAM 확보.
Google Analytics 대비 장점
| 항목 | Plausible | Google Analytics |
|---|---|---|
| 스크립트 크기 | < 1KB | ~45KB |
| 쿠키 사용 | ❌ | ✅ |
| GDPR 배너 필요 | ❌ | ✅ |
| 데이터 소유권 | 100% | |
| 무료 사용 | 셀프호스팅 | 클라우드 |
마무리
Plausible은 프라이버시를 중시하면서도 필요한 분석 기능을 제공하는 GA 대안입니다. 1KB 미만의 가벼운 스크립트, 쿠키 없는 추적, 깔끔한 대시보드로 사이트 방문자 분석을 쉽게 할 수 있습니다. Docker로 셀프호스팅하면 데이터를 완전히 소유하고 월 구독료도 절약할 수 있습니다.
참고 링크
- 공식 사이트: https://plausible.io
- GitHub: https://github.com/plausible/analytics
- Community Edition: https://github.com/plausible/community-edition
- 문서: https://plausible.io/docs