138 lines
4.9 KiB
YAML
138 lines
4.9 KiB
YAML
# 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:
|