Aplicații

Cum instalezi Data Warehouse Stack pe un Cloud VPS

Actualizat 7/18/2026

Stack complet de date: PostgreSQL (warehouse, port 5432), MinIO (data lake, 9001), Apache Airflow (orchestrare, 8080) și Apache Superset (BI, 8088), preconectate. Recomandat: minim 4 vCPU / 8 GB RAM.

Analytics self-hosted înseamnă date deținute de tine, conformitate GDPR simplă și fără plafoane de evenimente sau vizitatori.

Instalare cu un click pe cloudlinux.ro

Cea mai rapidă variantă: Data Warehouse Stack se instalează automat la prima pornire a unui server nou.

  1. Creează un Cloud VPS din panoul de control.
  2. La pasul de configurare, alege Data Warehouse Stack din catalogul de aplicații.
  3. Pornește serverul. Instalarea rulează automat în fundal câteva minute, iar starea apare pe pagina serverului.
  4. Datele de acces și parolele generate se salvează pe server în /root/app-credentials.txt. Aplicația va fi disponibilă pe portul 5432.

Instalare manuală pe orice server Ubuntu

Dacă preferi să instalezi singur, mai jos este exact scriptul folosit de instalarea automată. Rulează-l ca root pe un server Ubuntu proaspăt (recomandat 24.04). Se oprește la prima eroare, iar la final găsești datele de acces în /root/app-credentials.txt.

export DEBIAN_FRONTEND=noninteractive
curl -fsSL https://get.docker.com | sh
DB_PASS=$(openssl rand -base64 24 | tr -dc 'A-Za-z0-9' | cut -c1-20)
ADMIN_PASS=$(openssl rand -base64 24 | tr -dc 'A-Za-z0-9' | cut -c1-16)
SECRET_KEY=$(openssl rand -base64 42)
IP=$(hostname -I | awk '{print $1}')
mkdir -p /opt/dwh/dags /opt/dwh/logs /opt/dwh/plugins
cd /opt/dwh
cat > init-db.sh <<EOF
#!/bin/bash
set -e
psql -v ON_ERROR_STOP=1 --username warehouse <<SQL
CREATE DATABASE superset_meta;
CREATE DATABASE airflow_meta;
SQL
EOF
chmod +x init-db.sh
cat > superset_config.py <<EOF
SECRET_KEY = "${SECRET_KEY}"
SQLALCHEMY_DATABASE_URI = "postgresql+psycopg2://warehouse:${DB_PASS}@warehouse-db:5432/superset_meta"
EOF
cat > docker-compose.yml <<EOF
services:
  warehouse-db:
    image: postgres:16
    restart: always
    environment:
      POSTGRES_DB: warehouse
      POSTGRES_USER: warehouse
      POSTGRES_PASSWORD: ${DB_PASS}
    ports:
      - '5432:5432'
    volumes:
      - dwh_pg:/var/lib/postgresql/data
      - ./init-db.sh:/docker-entrypoint-initdb.d/init-db.sh:ro
  minio:
    image: quay.io/minio/minio:latest
    restart: always
    command: server /data --console-address ':9001'
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: ${ADMIN_PASS}
    ports:
      - '9000:9000'
      - '9001:9001'
    volumes:
      - dwh_minio:/data
  airflow-init:
    image: apache/airflow:2.11.0
    depends_on: [warehouse-db]
    environment:
      AIRFLOW__CORE__EXECUTOR: LocalExecutor
      AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://warehouse:${DB_PASS}@warehouse-db:5432/airflow_meta
    entrypoint: /bin/bash
    command: -c 'airflow db migrate && airflow users create --username admin --password ${ADMIN_PASS} --firstname Admin --lastname User --role Admin --email [email protected]'
  airflow-webserver:
    image: apache/airflow:2.11.0
    restart: always
    depends_on: [warehouse-db]
    environment:
      AIRFLOW__CORE__EXECUTOR: LocalExecutor
      AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://warehouse:${DB_PASS}@warehouse-db:5432/airflow_meta
    command: webserver
    ports:
      - '8080:8080'
    volumes:
      - ./dags:/opt/airflow/dags
      - ./logs:/opt/airflow/logs
      - ./plugins:/opt/airflow/plugins
  airflow-scheduler:
    image: apache/airflow:2.11.0
    restart: always
    depends_on: [warehouse-db]
    environment:
      AIRFLOW__CORE__EXECUTOR: LocalExecutor
      AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://warehouse:${DB_PASS}@warehouse-db:5432/airflow_meta
    command: scheduler
    volumes:
      - ./dags:/opt/airflow/dags
      - ./logs:/opt/airflow/logs
      - ./plugins:/opt/airflow/plugins
  superset:
    image: apache/superset:latest
    restart: always
    depends_on: [warehouse-db]
    ports:
      - '8088:8088'
    volumes:
      - ./superset_config.py:/app/pythonpath/superset_config.py:ro
      - dwh_superset:/app/superset_home
volumes:
  dwh_pg:
  dwh_minio:
  dwh_superset:
EOF
docker compose up -d warehouse-db minio
sleep 20
docker compose run --rm airflow-init
docker compose up -d airflow-webserver airflow-scheduler superset
sleep 20
docker compose exec superset superset db upgrade
docker compose exec superset superset fab create-admin --username admin --firstname Admin --lastname User \
  --email [email protected] --password "$ADMIN_PASS"
docker compose exec superset superset init
printf 'Data Warehouse Stack\nPostgreSQL (warehouse): %s:5432, utilizator warehouse, parola %s\nMinIO consola: http://%s:9001, admin / %s\nAirflow: http://%s:8080, admin / %s (DAG-uri in /opt/dwh/dags)\nSuperset: http://%s:8088, admin / %s\nConecteaza Superset la warehouse cu: postgresql+psycopg2://warehouse:%s@warehouse-db:5432/warehouse\n' \
  "$IP" "$DB_PASS" "$IP" "$ADMIN_PASS" "$IP" "$ADMIN_PASS" "$IP" "$ADMIN_PASS" "$DB_PASS" > /root/app-credentials.txt

Poți salva scriptul și ca rețetă în contul tău, ca să-l refolosești la orice server nou.

Pune ghidul în practică pe un VPS propriu

Servere cloud în UE, facturate la oră, gata în câteva minute, cu instalare cu un click pentru zeci de aplicații.

Vezi prețurile

Tutoriale similare