# ============================================================================= # Work / Dev stack # PostgreSQL + RabbitMQ + Keycloak + MinIO + OpenWebUI + Botpress + Seq + SearXNG # ============================================================================= networks: lab: name: lab driver: bridge services: postgres: image: postgres:17 container_name: postgres environment: POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} POSTGRES_DB: ${POSTGRES_DB:-postgres} ports: - "5432:5432" volumes: - postgresql-data:/var/lib/postgresql/data networks: - lab restart: always rabbitmq: image: rabbitmq:3-management container_name: rabbitmq environment: RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER:-rmqadmin} RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASSWORD:-password} ports: - "5672:5672" - "15672:15672" volumes: - rabbitmq-data:/var/lib/rabbitmq networks: - lab restart: always keycloak: image: quay.io/keycloak/keycloak:latest container_name: keycloak depends_on: - postgres environment: KC_DB: postgres KC_DB_URL: jdbc:postgresql://postgres:5432/${KEYCLOAK_DB:-keycloak} KC_DB_USERNAME: ${POSTGRES_USER:-postgres} KC_DB_PASSWORD: ${POSTGRES_PASSWORD:-postgres} KC_HOSTNAME: ${KEYCLOAK_HOSTNAME:-keycloak.home.g33k.cc} KC_PROXY_HEADERS: xforwarded KC_LOG_LEVEL: info KC_METRICS_ENABLED: "true" KC_HEALTH_ENABLED: "true" KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN:-admin} KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD:-admin} command: start-dev ports: - "8088:8080" volumes: - keycloak-data:/opt/keycloak/data networks: - lab restart: always minio: image: quay.io/minio/minio:latest container_name: minio environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin} MINIO_IDENTITY_OPENID_CONFIG_URL: ${MINIO_OIDC_CONFIG_URL} MINIO_IDENTITY_OPENID_CLIENT_ID: ${MINIO_OIDC_CLIENT_ID} MINIO_IDENTITY_OPENID_CLIENT_SECRET: ${MINIO_OIDC_CLIENT_SECRET} MINIO_IDENTITY_OPENID_ROLE_POLICY: consoleAdmin MINIO_IDENTITY_OPENID_CLAIM_NAME: policy command: server /data --console-address :9001 ports: - "9000:9000" - "9001:9001" volumes: - minio-data:/data networks: - lab restart: always openwebui: image: ghcr.io/open-webui/open-webui:main container_name: openwebui ports: - "3003:8080" volumes: - openwebui-data:/app/backend/data extra_hosts: - "host.docker.internal:host-gateway" networks: - lab restart: always botpress-lang: image: botpress/server:latest container_name: botpress-lang command: bash -c "./duckling -p 8000 & ./bp lang --langDir /botpress/lang --port 3100" volumes: - botpress_lang:/botpress/lang networks: - lab restart: always botpress-server: image: botpress/server:latest container_name: botpress-server depends_on: - postgres - botpress-lang environment: DATABASE_URL: postgres://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@postgres:5432/${BOTPRESS_DB:-botpress} BP_MODULE_NLU_DUCKLINGURL: http://botpress-lang:8000 BP_MODULE_NLU_LANGUAGESOURCES: '[{"endpoint":"http://botpress-lang:3100"}]' EXTERNAL_URL: ${BOTPRESS_URL:-http://localhost:3000} ports: - "3333:3000" volumes: - botpress-data:/botpress/data networks: - lab restart: always seq: image: datalust/seq:latest container_name: seq environment: ACCEPT_EULA: "Y" SEQ_FIRSTRUN_ADMINPASSWORD: ${SEQ_PASSWORD:-password} ports: - "5341:80" volumes: - seq-data:/data networks: - lab restart: always searxng: image: docker.io/searxng/searxng:latest container_name: searxng ports: - "9999:8080" volumes: - searxng-data:/var/cache/searxng/ - searxng-config:/etc/searxng/ networks: - lab restart: always volumes: postgresql-data: rabbitmq-data: keycloak-data: minio-data: openwebui-data: botpress_lang: botpress-data: seq-data: searxng-data: searxng-config: