Skip to content

PeSIT Wizard Client Installation

Deployment Options

ModeDescriptionRecommended For
Docker ComposeAPI + UI + PostgreSQLTesting, simple production
KubernetesHelm chartProduction, high availability
JARDirect executionDevelopment

Create a docker-compose.yml file:

yaml
services:
  pesitwizard-client-api:
    image: ghcr.io/pesitwizard/pesitwizard/pesitwizard-client:latest
    ports:
      - "8080:8080"
    environment:
      SPRING_PROFILES_ACTIVE: nosecurity,postgres
      SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/pesitwizard
      SPRING_DATASOURCE_USERNAME: pesitwizard
      SPRING_DATASOURCE_PASSWORD: pesitwizard
    depends_on:
      postgres:
        condition: service_healthy
    volumes:
      - client-data:/data
    networks:
      - client-network

  pesitwizard-client-ui:
    image: ghcr.io/pesitwizard/pesitwizard/pesitwizard-client-ui:latest
    ports:
      - "3001:8080"
    environment:
      NGINX_PORT: 8080
      API_HOST: pesitwizard-client-api
      API_PORT: 8080
    depends_on:
      - pesitwizard-client-api
    networks:
      - client-network

  postgres:
    image: postgres:17
    environment:
      POSTGRES_DB: pesitwizard
      POSTGRES_USER: pesitwizard
      POSTGRES_PASSWORD: pesitwizard
    volumes:
      - postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U pesitwizard -d pesitwizard"]
      interval: 5s
      timeout: 5s
      retries: 5
    networks:
      - client-network

networks:
  client-network:
    driver: bridge

volumes:
  client-data:
  postgres-data:

Start with:

bash
docker compose up -d

The UI is available at http://localhost:3001 and the API at http://localhost:8080.

With HashiCorp Vault

For secure secrets management with HashiCorp Vault:

yaml
services:
  vault:
    image: hashicorp/vault:1.21
    cap_add:
      - IPC_LOCK
    ports:
      - "8200:8200"
    environment:
      VAULT_DEV_ROOT_TOKEN_ID: pesitwizard-dev-token
      VAULT_DEV_LISTEN_ADDRESS: 0.0.0.0:8200
      VAULT_ADDR: http://127.0.0.1:8200
    command: server -dev
    networks:
      - client-network
    healthcheck:
      test: ["CMD-SHELL", "wget --quiet --tries=1 --spider http://127.0.0.1:8200/v1/sys/health || exit 1"]
      interval: 5s
      timeout: 5s
      retries: 5

  vault-init:
    image: hashicorp/vault:1.21
    depends_on:
      vault:
        condition: service_healthy
    environment:
      VAULT_ADDR: http://vault:8200
      VAULT_TOKEN: pesitwizard-dev-token
    entrypoint: /bin/sh
    command:
      - -c
      - |
        vault secrets enable -path=secret kv-v2 2>/dev/null || true
        vault kv put secret/pesitwizard/client initialized=true
    networks:
      - client-network

  pesitwizard-client-api:
    image: ghcr.io/pesitwizard/pesitwizard/pesitwizard-client:latest
    ports:
      - "8080:8080"
    environment:
      SPRING_PROFILES_ACTIVE: nosecurity,postgres
      SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/pesitwizard
      SPRING_DATASOURCE_USERNAME: pesitwizard
      SPRING_DATASOURCE_PASSWORD: pesitwizard
      PESITWIZARD_SECURITY_ENCRYPTION_MODE: VAULT
      PESITWIZARD_SECURITY_VAULT_ADDRESS: http://vault:8200
      PESITWIZARD_SECURITY_VAULT_TOKEN: pesitwizard-dev-token
      PESITWIZARD_SECURITY_VAULT_SECRETS_PATH: secret/data/pesitwizard/client
    depends_on:
      postgres:
        condition: service_healthy
      vault-init:
        condition: service_completed_successfully
    volumes:
      - client-data:/data
    networks:
      - client-network

  pesitwizard-client-ui:
    image: ghcr.io/pesitwizard/pesitwizard/pesitwizard-client-ui:latest
    ports:
      - "3001:8080"
    environment:
      NGINX_PORT: 8080
      API_HOST: pesitwizard-client-api
      API_PORT: 8080
    depends_on:
      - pesitwizard-client-api
    networks:
      - client-network

  postgres:
    image: postgres:17
    environment:
      POSTGRES_DB: pesitwizard
      POSTGRES_USER: pesitwizard
      POSTGRES_PASSWORD: pesitwizard
    volumes:
      - postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U pesitwizard -d pesitwizard"]
      interval: 5s
      timeout: 5s
      retries: 5
    networks:
      - client-network

networks:
  client-network:
    driver: bridge

volumes:
  client-data:
  postgres-data:

Production: Replace the dev token with AppRole authentication using PESITWIZARD_SECURITY_VAULT_ROLE_ID and PESITWIZARD_SECURITY_VAULT_SECRET_ID.

Kubernetes (Helm)

Quick Install

bash
curl -fsSL https://raw.githubusercontent.com/pesitwizard/pesitwizard/main/scripts/install-client.sh | bash

Manual Install

Install from the OCI registry:

bash
helm install pesitwizard-client oci://ghcr.io/pesitwizard/charts/pesitwizard-client \
  --version 0.1.0 \
  --namespace pesitwizard \
  --create-namespace

To use an external PostgreSQL database:

bash
helm install pesitwizard-client oci://ghcr.io/pesitwizard/charts/pesitwizard-client \
  --version 0.1.0 \
  --namespace pesitwizard \
  --create-namespace \
  --set database.host=postgres \
  --set database.port=5432 \
  --set database.name=pesitwizard \
  --set database.username=pesitwizard \
  --set database.password=pesitwizard

JAR (development)

Prerequisites

  • Java 21+
  • Maven 3.9+
  • PostgreSQL (optional, H2 used by default)

Build

The client is a module within the main repository:

bash
git clone https://github.com/pesitwizard/pesitwizard.git
cd pesitwizard/pesitwizard-client
mvn package -DskipTests

Run

With H2 (default, no database required):

bash
java -jar target/pesitwizard-client-1.0.0-SNAPSHOT-exec.jar

With PostgreSQL:

bash
java -jar target/pesitwizard-client-1.0.0-SNAPSHOT-exec.jar \
  --spring.profiles.active=nosecurity,postgres \
  --spring.datasource.url=jdbc:postgresql://localhost:5432/pesitwizard \
  --spring.datasource.username=pesitwizard \
  --spring.datasource.password=pesitwizard

Verification

Once started, verify that the service is running:

bash
# Health check
curl http://localhost:8080/actuator/health

# Expected response
{"status":"UP"}

The web interface is available at:

Next Steps

PeSIT Wizard - Solution PeSIT moderne pour les entreprises