PostHog: Hướng dẫn cài đặt self-hosted với Docker trên Ubuntu
PostHog là nền tảng phân tích sản phẩm mã nguồn mở toàn diện, được thiết kế đặc biệt cho các kỹ sư sản phẩm và nhóm phát triển. Nền tảng này tích hợp nhiều công cụ quan trọng trong một hệ sinh thái duy nhất, giúp đơn giản hóa quy trình phát triển sản phẩm và đưa ra quyết định dựa trên dữ liệu.

Tính năng chính của PostHog
- Product Analytics: Theo dõi và phân tích hành vi người dùng với các biểu đồ trực quan, funnel analysis và cohort tracking.
- Session Replay: Ghi lại và phát lại toàn bộ phiên làm việc của người dùng để hiểu rõ cách họ tương tác với sản phẩm.
- Feature Flags: Quản lý việc triển khai tính năng mới một cách an toàn và linh hoạt.1
- A/B Testing/Experiments: Thử nghiệm các phiên bản khác nhau của sản phẩm để tối ưu hóa chuyển đổi.
- Error Tracking: Theo dõi và quản lý lỗi trong ứng dụng.
- Surveys: Thu thập phản hồi từ người dùng thông qua các khảo sát tùy chỉnh.
- Data Warehouse & Pipelines: Tích hợp với hơn 120 nguồn dữ liệu khác nhau.
Use Cases Thực tế
1. Theo dõi Performance Marketing Campaigns
PostHog có thể theo dõi hiệu quả của các chiến dịch marketing thông qua UTM parameters và phân tích toàn bộ customer journey từ ads đến conversion. Công ty Pry đã sử dụng PostHog để so sánh giá trị của khách hàng từ quảng cáo trả phí với khách hàng organic, từ đó tối ưu hóa chiến lược quảng cáo.
2. Phân tích Retrospective Data
Không giống như các công cụ analytics truyền thống, PostHog cho phép phân tích dữ liệu ngược lại nhờ tính năng autocapture. MentionMe đã sử dụng tính năng này để định nghĩa events mới và xem dữ liệu lịch sử ngay lập tức thay vì phải chờ hàng tháng.
3. A/B Testing cho Optimization
Các công ty như Y Combinator và ResearchGate sử dụng PostHog để chạy experiments nhằm cải thiện conversion rates và user experience. Với feature flags tích hợp, họ có thể test các variant khác nhau một cách an toàn.
4. Session Replay cho User Experience
Phantom sử dụng session replay để theo dõi failure rates trong payment process, giúp ưu tiên cập nhật infrastructure. Việc kết hợp session replay với funnel analysis giúp hiểu rõ lý do người dùng drop-off.
5. Feature Development và Rollout
PostHog sử dụng chính nền tảng của mình để phát triển tính năng mới. Họ áp dụng quy trình 4 bước: MVP testing với feature flags → Beta testing → Wider launch → Usage monitoring, đảm bảo mỗi tính năng đều được validate kỹ lưỡng trước khi release.
Yêu cầu Hệ thống
Trước khi cài đặt PostHog self-hosted, bạn cần đảm bảo đáp ứng các yêu cầu sau:
Phần cứng tối thiểu
- CPU: 4 vCPU
- RAM: 16GB (tối thiểu 4GB nhưng khuyến nghị 16GB)
- Storage: Tối thiểu 30GB (khuyến nghị 100GB cho dữ liệu observability)
- Network: Kết nối internet ổn định
Phần mềm
- OS: Ubuntu 20.04 LTS hoặc 22.04 LTS
- Domain: Một domain name với A record trỏ về IP của server
- SSL: PostHog sẽ tự động tạo SSL certificate thông qua LetsEncrypt
Hướng dẫn cài đặt chi tiết
Phương pháp 1: Sử dụng Script Tự động (Khuyến nghị)
Bước 1: Chuẩn bị Server
Kết nối vào Ubuntu server của bạn thông qua SSH:
ssh username@your-server-ip
Bước 2: Chạy Script Cài đặt Tự động
PostHog cung cấp một script tự động hóa toàn bộ quá trình cài đặt:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/posthog/posthog/HEAD/bin/deploy-hobby)"
Script sẽ hỏi các thông tin sau:
- Version tag: Nhấn Enter để sử dụng ‘latest’ hoặc nhập version cụ thể
- Domain: Nhập domain name (ví dụ: analytics.yourdomain.com)
- Sudo password: Nhập password sudo để script có quyền cài đặt
Bước 3: Theo dõi Quá trình Cài đặt
Script sẽ tự động thực hiện:
- Cài đặt Docker và Docker Compose
- Clone PostHog repository
- Tạo các file cấu hình cần thiết
- Download GeoIP database
- Khởi động tất cả containers
- Tạo SSL certificates
Quá trình này mất khoảng 5-10 phút. Khi hoàn tất, bạn sẽ thấy thông báo:
🎉🎉🎉 Done! 🎉🎉🎉
PostHog will be up at the location you provided!
https://your-domain.com
Phương pháp 2: Cài đặt Manual với Docker Compose
Bước 1: Cài đặt Docker
# Update package index
sudo apt update
# Install dependencies
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
# Add Docker GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Add Docker repository
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# Install Docker
sudo apt update
sudo apt install -y docker-ce
# Add user to docker group
sudo usermod -aG docker $USER
newgrp docker
Bước 2: Cài đặt Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Bước 3: Clone PostHog Repository
git clone https://github.com/PostHog/posthog.git
cd posthog
Bước 4: Tạo File Cấu hình
Tạo file .env
:
cat > .env <<EOF
POSTHOG_SECRET=$(head -c 28 /dev/urandom | sha224sum -b | head -c 56)
ENCRYPTION_SALT_KEYS=$(openssl rand -hex 16)
DOMAIN=your-domain.com
POSTHOG_APP_TAG=latest
SESSION_RECORDING_V2_METADATA_SWITCHOVER=$(date -Iseconds)
EOF
Bước 5: Download GeoIP Database
mkdir -p ./share
curl -L 'https://mmdbcdn.posthog.net/' --http1.1 | brotli --decompress --output=./share/GeoLite2-City.mmdb
echo '{"date": "'$(date +%Y-%m-%d)'"}' > ./share/GeoLite2-City.json
chmod 644 ./share/GeoLite2-City.*
Bước 6: Khởi động PostHog
# Copy docker compose files
cp docker-compose.base.yml docker-compose.base.yml
cp docker-compose.hobby.yml docker-compose.yml
# Start the stack
docker-compose up -d
Cấu hình và tùy chỉnh
Cấu hình Environment Variables
PostHog hỗ trợ nhiều biến môi trường để tùy chỉnh. Một số quan trọng:
# Security
POSTHOG_SECRET=your-secret-key
ENCRYPTION_SALT_KEYS=your-encryption-keys
# Database
DATABASE_URL=postgres://posthog:posthog@db:5432/posthog
# Redis
REDIS_URL=redis://redis:6379/
# Email (tùy chọn)
EMAIL_HOST=smtp.yourdomain.com
EMAIL_PORT=587
[email protected]
EMAIL_HOST_PASSWORD=your-password
# Storage (tùy chọn)
OBJECT_STORAGE_ENABLED=true
OBJECT_STORAGE_ENDPOINT=https://s3.amazonaws.com
OBJECT_STORAGE_ACCESS_KEY_ID=your-access-key
OBJECT_STORAGE_SECRET_ACCESS_KEY=your-secret-key
Cấu hình Reverse Proxy (Tùy chọn)
Nếu chạy PostHog sau reverse proxy, cần cấu hình:
# Trong file .env
IS_BEHIND_PROXY=True
TRUSTED_PROXIES=192.168.1.1,10.0.0.1
ALLOWED_HOSTS=your-domain.com,proxy-domain.com
Kiểm tra và Troubleshooting
Kiểm tra Trạng thái Containers
docker ps
Bạn sẽ thấy các containers sau đang chạy:
- posthog-web
- posthog-worker
- posthog-plugins
- posthog-db (PostgreSQL)
- posthog-redis
- posthog-clickhouse
- posthog-kafka
- posthog-zookeeper
Xem Logs
# Xem logs tất cả containers
docker-compose logs
# Xem logs container cụ thể
docker-compose logs web
docker-compose logs worker
Kiểm tra Health
Truy cập https://your-domain.com/_health
để kiểm tra trạng thái hệ thống.
Backup và Bảo trì
Backup Dữ liệu
# Backup PostgreSQL
docker-compose exec db pg_dump -U posthog posthog > posthog_backup.sql
# Backup ClickHouse
docker-compose exec clickhouse clickhouse-client --query "BACKUP DATABASE posthog TO Disk('backups', 'posthog_backup')"
Cập nhật PostHog
# Sử dụng script update
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/posthog/posthog/HEAD/bin/upgrade-hobby)"
Monitoring Resources
# Kiểm tra usage
docker stats
# Kiểm tra disk space
df -h
# Kiểm tra memory
free -h
Bảo mật
SSL/TLS
PostHog tự động tạo và gia hạn SSL certificates thông qua LetsEncrypt.
Firewall
Chỉ mở các port cần thiết:
- 443: HTTPS
- 22: SSH (tùy chọn)
- 80: HTTP (redirect to HTTPS)
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
Database Security
- Thay đổi default passwords
- Sử dụng strong POSTHOG_SECRET và ENCRYPTION_SALT_KEYS
- Backup thường xuyên
PostHog self-hosted trên Docker cung cấp một giải pháp analytics mạnh mẽ và linh hoạt cho các team muốn kiểm soát hoàn toàn dữ liệu của mình. Với hướng dẫn chi tiết trên, bạn có thể triển khai thành công PostHog và bắt đầu thu thập insights có giá trị về hành vi người dùng.
Việc self-host PostHog đặc biệt phù hợp với các tổ chức có yêu cầu về data privacy, cần tùy chỉnh sâu hoặc muốn tiết kiệm chi phí khi scale lớn. Tuy nhiên, cần cân nhắc về effort vận hành và bảo trì so với việc sử dụng PostHog Cloud.