# SIAX Cloud Data Stack - Complete BigQuery Replacement # All OPEN SOURCE, self-hosted on SIAX Cloud Server 2 # # Stack: # ClickHouse - Columnar DB (BigQuery replacement) # Trino - Distributed SQL query engine # FlareSolverr - Cloudflare bypass # Tor - Anonymous proxy rotation # Apache Superset - BI dashboards # MinIO - S3 object storage (already exists) # version: "3.8" services: # ═══════════════════════════════════════════════ # CLICKHOUSE - BigQuery ersättning # ═══════════════════════════════════════════════ clickhouse: image: clickhouse/clickhouse-server:24.12-alpine container_name: clickhouse restart: unless-stopped ports: - "8123:8123" # HTTP API (REST) - "9000:9000" # Native TCP - "9090:9090" # Prometheus metrics volumes: - clickhouse-data:/var/lib/clickhouse - clickhouse-logs:/var/log/clickhouse-server - ./clickhouse/config.xml:/etc/clickhouse-server/config.xml:ro - ./clickhouse/users.xml:/etc/clickhouse-server/users.xml:ro environment: - CLICKHOUSE_DB=opt_scraped - CLICKHOUSE_USER=default - CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD:-changeme} ulimits: nofile: soft: 262144 hard: 262144 deploy: resources: limits: memory: 8G reservations: memory: 4G # ═══════════════════════════════════════════════ # TRINO - Distributed SQL (optional, for complex queries) # ═══════════════════════════════════════════════ trino: image: trinodb/trino:470 container_name: trino restart: unless-stopped ports: - "8080:8080" volumes: - ./trino/etc:/etc/trino:ro - trino-data:/data/trino deploy: resources: limits: memory: 4G # ═══════════════════════════════════════════════ # FLARESOLVERR - Cloudflare bypass # ═══════════════════════════════════════════════ flaresolverr: image: ghcr.io/flaresolverr/flaresolverr:latest container_name: flaresolverr restart: unless-stopped ports: - "8191:8191" environment: - LOG_LEVEL=${LOG_LEVEL:-info} - TZ=Europe/Stockholm - CAPTCHA_SOLVER=none deploy: resources: limits: memory: 1G # ═══════════════════════════════════════════════ # TOR - Anonymous proxy rotation # ═══════════════════════════════════════════════ tor-proxy: image: dperson/torproxy:latest container_name: tor-proxy restart: unless-stopped ports: - "9050:9050" # SOCKS5 - "9051:9051" # Control port deploy: resources: limits: memory: 256M # ═══════════════════════════════════════════════ # APACHE SUPERSET - BI Dashboard # ═══════════════════════════════════════════════ superset: image: apache/superset:latest container_name: superset restart: unless-stopped ports: - "8088:8088" environment: - SUPERSET_SECRET_KEY=${SUPERSET_SECRET_KEY:-changeme} - SUPERSET_DATABASE_URI=postgresql://superset:${POSTGRES_PASSWORD:-changeme}@postgres:5432/superset volumes: - superset-data:/app/superset_home deploy: resources: limits: memory: 2G depends_on: - clickhouse - postgres # ═══════════════════════════════════════════════ # POSTGRES for Superset metadata # ═══════════════════════════════════════════════ postgres: image: postgres:16-alpine container_name: postgres-superset restart: unless-stopped environment: - POSTGRES_DB=superset - POSTGRES_USER=superset - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-changeme} volumes: - postgres-data:/var/lib/postgresql/data volumes: clickhouse-data: clickhouse-logs: trino-data: superset-data: postgres-data: