Toolkit is a Docker container with a set of apps for
UniversalPlantViewer such as Tickets/Punchlist, Clashes, Lockout/Tagout,
and Redlining. You can pull the Toolkit using Docker: or (for the latest stable release) The application requires a running SQL Server for its database.
Migration scripts are provided that are used to populate the database
schema. Admin can specify an environment variables that will change how the
application saves blobs. Those variables are: When configuring a reverse proxy like Nginx or Apache, you must
increase the size of headers that can be passed to accommodate larger
requests. Below is an example configuration snippet for Nginx to achieve
this: To integrate with Keycloak, you need to configure a custom client and
associated scopes. Below are the step-by-step instructions for setting
up the client and its scopes. Create a client scope named groups with the following settings: Create a custom client in Keycloak with the following settings to
suit your application’s needs. Client Authentication: Authorization: Authentication Flow: The application uses cron as an auxiliary tool to poll for new emails
every minute. It checks the mailbox specified by the SUPPORT_EMAIL
environment variable. The relevant environment variables are these:
AZURE_AD_TENANT_ID, SUPPORT_EMAIL, SUPPORT_CLIENT_ID and
SUPPORT_CLIENT_SECRET. For detailed support in this, please contact us
directly. If the toolkit should also be able to send (i.e. not only
receive) notifications, the a Keycloak client is required
(i.e. SERVICE_CLIENT_ID and SERVICE_CLIENT_SECRET as described in the
following section). To synchronize roles from Keycloak with Toolkit (and also to send
notifcations by email), a service client is required. This service
client is triggered with the Keycloak group sync cron job. The schedule
of this cron job is defined in KC_GROUP_SYNC_CRON. Navigate to tab ‘Clients’ Create a new client: General Settings: Capability config: Navigate to tab ‘Clients’ Choose your newly created client Here named “serviceclient”: Navigate to tab ‘Client Scopes’ Add client scope Find in scopes the following: Add groups scope as ‘default’ Navigate to the newly created client id. Navigate to ‘Service accounts roles’ tab. Assign the service account roles as specified in the picture
below: SERVICE_CLIENT_ID is your service client name, SERVICE_CLIENT_SECRET
can taken from the “Credential” tab, labelled Client secret. NEXTAUTH_SECRET = “any_string_that_represents_secret” // required by
nextauth to secure authentication via application DATABASE_URL =
DEVICE_ID = KEYCLOAK_BASE_URL = KEYCLOAK_ID = KEYCLOAK_ISSUER = KEYCLOAK_REALM = KEYCLOAK_REDIRECT_URL = LOGIN_HEADER = NEXTAUTH_URL = POWERBI_LOGO = SIGNATURE_REPORT_THRESHOLD = STORAGE_PATH= STORAGE_TYPE= AZURE_STORAGE_CONNECTION_STRING = AZURE_STORAGE_CONNECTION_DOMAIN = NEXT_PUBLIC_TICKET_PREFIX=“PI-” REDIRECT_WEBSERVICES_URL=“ AZURE_AD_TENANT_ID=““000000-0000-0000-0000-000000000” SUPPORT_EMAIL=“ SUPPORT_CLIENT_ID=“000000-00-0000-0000-000000000” SUPPORT_CLIENT_SECRET=“your_secret” SERVICE_CLIENT_ID=“ SERVICE_CLIENT_SECRET=“ ENABLE_CRON= KC_GROUP_SYNC_CRON=0 3 * * * // this variable is used to run the user
admin roles sync every day at 3 am. PORT=3000 HOST=0.0.0.0 POWERBI_TENANT_ID= POWERBI_CLIENT_ID= POWERBI_SECRET= By default, when the Toolkit runs inside the UPV application, it uses
UPV’s authentication context for single sign-on. However, this can be
incompatible with reverse proxies like Azure EasyAuth that handle
authentication at the HTTP level. To enable browser-based authentication even when running inside UPV,
set: This flag is particularly useful for: For Azure App Service with EasyAuth:
Deployment
Prequisites
Docker/Podman
docker pull quay.io/caxperts/toolkit:latestdocker pull quay.io/caxperts/toolkit:stableDatabase
Local or Azure blob storage
Reverse Proxy Setup
server {
...
proxy_buffers 16 16k; # Sets 16 buffers of 16KB each
proxy_buffer_size 32k; # Increases the initial buffer size to 32KB
proxy_busy_buffers_size 64k; # Sets the busy buffer size to 64KB
...
}Keycloak Clients and Scopes
Setup
Scope Settings
Mappers
Scope Details
Client Configuration
General Settings
Capability Configuration
Login Settings
Cron Setup for Email Polling
Setup for
Keycloak role sync for with Service Client
Creating the service
client in Keycloak
Adding Groups scope to
service client

Assigning
account roles to ‘hidden’ user created by service client
Keycloak
service client in environment variables
Comprehensive
Environment Variables List
Browser Authentication in
UPV Mode
Environment Variable
Behavior
Use Cases
Configuration Example
# Enable browser auth in UPV
USE_BROWSER_AUTH_IN_UPV=true
# Standard Keycloak configuration (same as browser deployment)
KEYCLOAK_ID=your-client-id
KEYCLOAK_SECRET=your-client-secret
KEYCLOAK_ISSUER=https://your-keycloak-server/realms/your-realmTesting
USE_BROWSER_AUTH_IN_UPV=trueBreaking Change