Article How do I get started with installation?

Get up and running quickly with a local Community deployment using Docker Compose.

Prerequisites

Stack definition

Save the following sample Docker Compose files:

compose.yml:

name: community

x-common-variables: &common-variables
  # Note: The following credentials are for development and testing purposes only.
  # Use strong passwords in production and consider using secrets management for sensitive information
  MSSQL_HOST: database
  MSSQL_SA_USER: SA
  MSSQL_SA_PASSWORD: T3ll1g3nt
  MSSQL_APP_USER: community_user
  MSSQL_APP_PASSWORD: T3ll1g3nt
  APP_DB_NAME: ${APP_DB_NAME:-community_app}
  REPORTING_DB_NAME: ${REPORTING_DB_NAME:-community_reporting}
  DB_FORCE_UPGRADE: ${DB_FORCE_UPGRADE:-false}
  ADMIN_USERNAME: admin
  ADMIN_PASSWORD: p
  ADMIN_EMAIL: admin@example.com

x-app-variables: &app-variables
  EVOLUTION_CONFIGURATION_SOURCES: file=~/communitySettings.json;file=/community/config/compose.settings.json;env;command

networks:
  community:
    name: community-net

volumes:
  sql:
    name: community-sql
    driver: local
  cfs:
    name: community-cfs
    driver: local
  solr:
    name: community-solr
    driver: local

services:
  web:
    image: af1.verintconnect.com/dfe-community/community/web:14.0.0.644
    restart: unless-stopped
    networks:
      - community
    ports:
      - 8080:8080
    read_only: true
    tmpfs:
      - /tmp
    volumes:
      - cfs:/app/cfs
      - ./settings.json:/community/config/compose.settings.json:ro
    environment:
      <<: *app-variables
    healthcheck:
      test: ["CMD", "/app/tools/healthcheck"]
      start_period: 20s
      interval: 60s
      timeout: 10s
      retries: 5
    depends_on:
      database:
        condition: service_healthy
      search:
        condition: service_healthy
      installer:
        condition: service_completed_successfully
      cfs-init:
        condition: service_completed_successfully

  job:
    image: af1.verintconnect.com/dfe-community/community/job:14.0.0.644
    restart: unless-stopped
    networks:
      - community
    read_only: true
    tmpfs:
      - /tmp
    volumes:
      - cfs:/app/cfs
      - ./settings.json:/community/config/compose.settings.json:ro
    environment:
      <<: *app-variables
    healthcheck:
      test: ["CMD", "/app/tools/healthcheck"]
      start_period: 20s
      interval: 60s
      timeout: 10s
      retries: 5
    depends_on:
      database:
        condition: service_healthy
      search:
        condition: service_healthy
      installer:
        condition: service_completed_successfully
      cfs-init:
        condition: service_completed_successfully

  database:
    image: mcr.microsoft.com/mssql/server:2022-CU20-ubuntu-22.04
    restart: unless-stopped
    networks:
      - community
    ports:
      - 5433:1433
    volumes:
      - sql:/var/opt/mssql
    environment:
      <<: *common-variables
      ACCEPT_EULA: Y
    healthcheck:
      test: >-
        /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U SA -P "$$MSSQL_SA_PASSWORD" -Q "SELECT 1" || exit 1
      interval: 10s
      timeout: 3s
      retries: 10
      start_period: 10s

  search:
    image: af1.verintconnect.com/dfe-community/community/search:14.0.0.619
    restart: unless-stopped
    networks:
      - community
    ports:
      - 5983:8983
    volumes:
      - solr:/var/solr
    environment:
      CORE_CONTENT: telligent-content
      CORE_CONVERSATIONS: telligent-conversations
    healthcheck:
      test: >-
        curl -s -A 'healthcheck' http://localhost:8983/solr/$$CORE_CONTENT/admin/ping?wt=json | grep -q '"status":"OK"'
      start_period: 15s
      interval: 10s
      timeout: 5s
      retries: 3

  infra:
    image: af1.verintconnect.com/dfe-community/community/infra:14.0.0.644
    restart: unless-stopped
    networks:
      - community
    ports:
      - 5700:8080
    read_only: true
    tmpfs:
      - /tmp
    environment:
      INFRA_Cache_MemoryLimitMegabytes: 500
      INFRA_MessageBus_MaxLengthBytes: 102400
      INFRA_MessageBus_IdleSeconds: 60
      INFRA_Metrics_EnableOtlp: true
      INFRA_Metrics_EnableConsole: false
      INFRA_Metrics_OtlpEndpointProtocol: grpc
      INFRA_Metrics_OtlpEndpoint: http://telemetry:18889/
      INFRA_Logging_EnableOtlp: true
      INFRA_Logging_EnableConsole: false
      INFRA_Logging_OtlpEndpointProtocol: grpc
      INFRA_Logging_OtlpEndpoint: http://telemetry:18889/
      INFRA_Logging_MinimumLevel: Information,Microsoft.AspNetCore:Warning
    healthcheck:
      test: ["CMD", "/app/tools/healthcheck"]
      start_period: 20s
      interval: 60s
      timeout: 10s
      retries: 5

  telemetry:
    image: mcr.microsoft.com/dotnet/aspire-dashboard:9.3.0
    restart: unless-stopped
    networks:
      - community
    ports:
      - 5888:5888
      - 5317:18889
    environment:
      ASPNETCORE_URLS: http://+:5888

  smtp:
    image: axllent/mailpit:v1.27
    restart: unless-stopped
    networks:
      - community
    ports:
      - 5825:8025
      - 5025:1025

  installer:
    image: af1.verintconnect.com/dfe-community/community/installer:14.0.0.644
    networks:
      - community
    environment:
      <<: *common-variables
    depends_on:
      database:
        condition: service_healthy
        restart: true

  # Ensure file storage volume is owned by
  # app user (1654) of the web and job services
  cfs-init:
    image: alpine:3.22.1
    volumes:
      - cfs:/app/cfs
    networks:
      - community
    entrypoint: chown -R 1654:1654 /app/cfs

settings.json:

{
  "Core": {
    "EnableDeveloperMode": false,
    "DisableEmail": false,
    "SiteUrl": "http://localhost:8080",
    "ApplicationPort": 8080
  },
  "ConnectionStrings": {
    "SiteSqlServer": "server=database;uid=community_user;pwd=T3ll1g3nt;Trusted_Connection=no;TrustServerCertificate=True;database=community_app",
    "Reporting": "server=database;uid=community_user;pwd=T3ll1g3nt;Trusted_Connection=no;TrustServerCertificate=True;database=community_reporting"
  },
  "CentralizedFileStorage": {
    "RootPath": "/app/cfs"
  },
  "Search": {
    "SolrContentUrl": "http://search:8983/solr/telligent-content/",
    "SolrConversationsUrl": "http://search:8983/solr/telligent-conversations/"
  },
  "PluginEnablement": {
    "Telligent.Evolution.Infra.Connector.InfraPlugin, Telligent.Evolution.Infra.Connector": true,
    "Telligent.Evolution.Platform.Core.Email.SMTPEmailProvider, Telligent.Evolution.Platform": true
  },
  "PluginConfiguration": {
    "Telligent.Evolution.Infra.Connector.InfraPlugin, Telligent.Evolution.Infra.Connector:host": "http://infra:8080",
    "Telligent.Evolution.Platform.Core.Email.SMTPEmailProvider, Telligent.Evolution.Platform:server": "smtp",
    "Telligent.Evolution.Platform.Core.Email.SMTPEmailProvider, Telligent.Evolution.Platform:port": 1025
  },
  "Tracing": {
    "EnableOtlp": true,
    "OtlpEndpointProtocol": "grpc",
    "OtlpEndpoint": "http://telemetry:18889/"
  },
  "Metrics": {
    "EnableOtlp": true,
    "OtlpEndpointProtocol": "grpc",
    "OtlpEndpoint": "http://telemetry:18889/"
  },
  "Logging": {
    "EnableOtlp": true,
    "OtlpEndpointProtocol": "grpc",
    "OtlpEndpoint": "http://telemetry:18889/"
  }
}

They provide:

  • One Web container
  • One Job container
  • Containerized SQL Server
  •  Search, Infra, Installer, MailPit for email testing, and Aspire Dashboard for telemetry
  • Named Docker volumes for SQL, CFS, and Solr data
  • Direct HTTP access to web on port 8080

Prepare a Working Directory

Create a directory for the stack with the sample files:

community/
  compose.yml
  settings.json

Credentials

While not necessary, you may adjust any user names or passwords for database and application accounts at the top of compose.yml as you see fit. These accounts will be created if they don't exist. If you change any Database-related credentials, make sure to also update them in settings.json's ConnectionStrings nodes.

The named server, database, in connection strings matches the name of the service (database) defined in compose.yml.

Start the Stack

From the directory containing the copied files, run:

docker compose up -d --remove-orphans

The SQL Server service sets ACCEPT_EULA=Y. Make sure you have accepted the Microsoft SQL Server EULA for your use of this local stack. SQL Server runs in the free Developer edition MSSQL_PID=Developer by default. For more information, refer to Microsoft's documentation.

On first startup, expect a longer wait while:

  • Images are pulled
  • SQL Server initializes
  • Solr creates cores
  • The installer creates or upgrades databases

Log in

After the stack is healthy, log in to Community at http://localhost:8080 with the admin user name and password configured at the top of your compose.yml.

Endpoints

All endpoints made available:

Stop or Remove the Stack

Stop and remove containers while keeping data:

docker compose down --remove-orphans

Remove containers and volumes:

docker compose down --remove-orphans --volumes

Use volume removal only when you want to remove all SQL, CFS, and Solr data.

What to Customize First

The sample settings.json is the main runtime config layer mounted into web and job.

Common early changes:

  • Port or non-default host name by customizing Core:SiteUrl and Core:ApplicationPort in settings.json and the forwarded port for the web service in compose.yml. Restart the stack after these changes.
  • Email behavior under PluginConfiguration

Next Steps