gnaudio/jabra-xpress-api
Jabra Xpress is a software solution designed for IT professionals to remotely manage Jabra products with a set of smart tools. For more info visit https://jabra.com/xpress. Jabra Xpress can be used either as a cloud service, visit and register at the Jabra hosted instance on https://xpress.jabra.com, or as a self-hosted service using docker. The full Jabra Xpress solution is available as docker images, and can be set up in any environment, where docker can run.
A complete Jabra Xpress setup contains these images:
Additionally the setup requires two databases
A complete Jabra Xpress setup works best when using images of the same version. If different versioned images are used together, the solution might not work as expected. Exception to this, is the fds.api and jabra-xpress-assets, which has their own versioning.
Some features require extra images to be set up. Omitting to setup this image will leave the feature disabled.
Docker Image | Recommend Tag | Optional Tag |
---|---|---|
https://hub.docker.com/r/gnaudio/fds.api | 5.1.1035 * | latest ** |
https://hub.docker.com/r/gnaudio/jabra-xpress-assets | v6.1.13901 * | latest ** |
(*) Always check the image page for the latest available tag. The versions mentioned here is confirmed to work with the setup, however newer versions can be used if specific resources are needed.
(**) When using the latest tag, always check your deployment and make sure that the images has updated correctly. In some setups, the latest tag has been observed not to work, resulting in the docker containers not automatically updating.
September 26 2023
For information about the release, see https://www.jabra.com/Support/release-notes/release-note-jabra-xpress
The following settings are required by the service to run
Setting Name | Value Description | Note |
---|---|---|
ConnectionStrings:XpressDatabaseSqlServer | SQL Connection String | |
ConnectionStrings:MongoDb | MongoDb Connection String | |
DefaultAnalyticsEndpoint | URL of the xpress-analytics service eg. http://localhost:88/api/v1/analytics | |
JDODownload | URL of the assets service eg. http://localhost:89/ or http://assets/ | Used to download the Jabra Direct client through the xpress-frontend |
NetworkEndpoint | URL of this service eg. http://localhost:85 | It is required to set the url of the xpress-api in this setting, so this can be sent to any managed Jabra Direct clients, deployed by this xpress instance. |
SDK:fwURL_base | URL of the firmware endpoint eg. http://localhost:82 | If running a normal setup, then point this to the FDS/sdkbackend service |
SDK:fsURL_base | URL of the manifest endpoint eg. http://localhost:82 | If running a normal setup, then point this to the FDS/sdkbackend service |
Security:PackageTokens:IssuerKey | Key used to create Package-Tokens eg. 9716702363504e4aaf47fa5bb2ec5c42 | !Important: Must be the same value set in the xpress-analytics service. If not set, this will fallback to a default value. It is recommended to set this setting with a custom value. |
Security:ClientTokens:IssuerKey | Key used to create Client-Tokens eg. ea99bbe6471848848b138ecb99e52d1f | !Important: Must be the same value set in the xpress-analytics service. If not set, this will fallback to a default value. It is recommended to set this setting with a custom value. |
Security:TokenProtection:Key | Key used to encrypt Tokens eg. qt59#1dlZgsw3Tjv8eWyoQm$ib4u*O7N_ | !Important: Must be the same value set in the xpress-analytics service. If not set, this will fallback to a default value. It is recommended to set this setting with a custom value. |
XpressAutoMigration (Optional) | true | false (default) Auto Migrates the databse at startup | This can be set instead of using the database console tool. If set to true, the service will make a database check in the startup procedure and if database changes are needed, run the migration towards it, before continuing. Be alert, that this setting requires that the ConnectionStrings:XpressDatabaseSqlServer contains a db user with full write access, as this require access to modify the database tables. If you do not wish to have a db user with this kind of access, used in the jabra-xpress-api service, then use the standalone database console tool, https://hub.docker.com/r/gnaudio/jabra-xpress-databaseconsoletool. |
If your Jabra Xpress has been setup with docker-compose, you can add this service to the docker-compose file, with the relevant values replaced.
backend:
image: gnaudio/jabra-xpress-api:v5.3.09401
environment:
- "ConnectionStrings:XpressDatabaseSqlServer=SQL_CONNECTION-STRING_HERE"
- "ConnectionStrings:MongoDb=MONGODB_CONNECTIONSTRING_HERE"
- "DefaultAnalyticsEndpoint=http://localhost:88/api/v1/analytics"
- "JDODownload=http://localhost:89/"
- "NetworkEndpoint=http://localhost:85"
- "SDK:fwURL_base=http://localhost:82"
- "SDK:fsURL_base=http://localhost:82"
- "Security:PackageTokens:IssuerKey=9716702363504e4aaf47fa5bb2ec5c42"
- "Security:ClientTokens:IssuerKey=ea99bbe6471848848b138ecb99e52d1f"
- "Security:TokenProtection:Key=qt59#1dlZgsw3Tjv8eWyoQm$ib4u*O7N_"
ports:
- "85:80"
If your Jabra Xpress instead is set up using docker run, it can be run like this.
docker run -p 85:80 -d --env ConnectionStrings:XpressDatabaseSqlServer="SQL_CONNECTION-STRING_HERE" --env ConnectionStrings:MongoDb="MONGODB_CONNECTIONSTRING_HERE" --env DefaultAnalyticsEndpoint="http://localhost:88/api/v1/analytics" --env JDODownload="http://localhost:89/" --env NetworkEndpoint="http://localhost:85" --env SDK:fwURL_base="http://localhost:82" --env SDK:fsURL_base="http://localhost:82" --env Security:PackageTokens:IssuerKey="9716702363504e4aaf47fa5bb2ec5c42" --env Security:ClientTokens:IssuerKey="ea99bbe6471848848b138ecb99e52d1f" --env Security:TokenProtection:Key="qt59#1dlZgsw3Tjv8eWyoQm$ib4u*O7N_" gnaudio/jabra-xpress-api:v5.3.09401
A full Jabra Xpress setup needs a SQL database to store Xpress user accounts and configurations. This setup is not included in the docker example provided further down, but should be setup separately using a preferred option.
Prerequisite:
An empty Microsoft SQL Server database ready using SQL Server Authentication. Microsoft SQL Server 2017 or newer (any SKUs) or Azure SQL Database. A typically database size will be less than 20GB.
Linux Docker hosting environment. For test purpose you can setup a system on a desktop box running Windows/Linux/macOS running Docker CE - https://docs.docker.com/install. Memory requirement: 16GB RAM.
In addition to the below steps, go to https://hub.docker.com/r/gnaudio/jabra-xpress-databaseconsoletool for more information.
Add the SQL connection string to the user, on the machine where the docker image is being set up
Example:
"Server=tcp:sqlserver,1433;Initial Catalog=xpress;User ID=USERID;Password=USER-PASSWROD;Connection Timeout=30;"
Go to https://hub.docker.com/r/gnaudio/jabra-xpress-databaseconsoletool and run the image. Use the connection string to the empty SQL database when running the image.
Follow the steps about migrating. If the operation is done and if no errors are printed, then you can continue.
Setting up Jabra Xpress on a single machine can be achieved with the following docker-compose setup. This docker-compose uses a complete setup, where every service needed is provided as a docker container.
Example of a Docker Compose file of a full Jabra Xpress setup.
Replace ¤CONNSTRING¤ with the SQL connection string
Replace ¤HOST-NAME¤ with the server host-name
docker-compose.yml
version: '3.8'
services:
mongodb:
image: mongo:latest
assets:
image: gnaudio/jabra-xpress-assets:v5.12.06601
frontend:
image: gnaudio/jabra-xpress-frontend:v5.3.09401
environment:
- "ENDPOINT=http://¤HOST-NAME¤:85"
ports:
- "80:80"
backend:
image: gnaudio/jabra-xpress-api:v5.3.09401
environment:
- "ConnectionStrings:XpressDatabaseSqlServer=¤CONNSTRING¤"
- "ConnectionStrings:MongoDb=mongodb://mongodb/raw"
- "DefaultAnalyticsEndpoint=http://¤HOST-NAME¤:88/api/v1/Analytics"
- "JDODownload=http://assets/"
- "NetworkEndpoint=http://¤HOST-NAME¤:85"
- "SDK:fwURL_base=http://¤HOST-NAME¤:82"
- "SDK:fsURL_base=http://¤HOST-NAME¤:82"
- "Security:PackageTokens:IssuerKey=¤SET_CUSTOM_VALUE¤"
- "Security:ClientTokens:IssuerKey=¤SET_CUSTOM_VALUE¤"
- "Security:TokenProtection:Key=¤SET_CUSTOM_VALUE¤"
ports:
- "85:80"
depends_on:
- mongodb
- assets
- sdkbackend
sdkbackend:
image: gnaudio/fds.api:5.1.964
environment:
- "Storage:SDKCopyUrl=http://¤HOST-NAME¤:82"
ports:
- "82:80"
analytics:
image: gnaudio/jabra-xpress-analytics:v5.3.09401
environment:
- "ConnectionStrings:MongodbServer=mongodb://mongodb/raw"
- "Security:PackageTokens:IssuerKey=¤SET_CUSTOM_VALUE¤"
- "Security:ClientTokens:IssuerKey=¤SET_CUSTOM_VALUE¤"
- "Security:TokenProtection:Key=¤SET_CUSTOM_VALUE¤"
ports:
- "88:80"
depends_on:
- mongodb
analytics-cron:
image: gnaudio/jabra-xpress-analytics-cron:v5.3.09401
environment:
- "MONGODBCONNECTIONSTRING=mongodb://mongodb/raw"
depends_on:
- mongodb
Run command to spin up the Xpress setup $ docker-compose up
Now you can access Jabra Xpress using http://¤HOST-NAME¤/
Other images required in a Full Xpress Setup
Docker Image | Recommended Tag |
---|---|
https://hub.docker.com/r/gnaudio/fds.api | 5.1.1035 |
https://hub.docker.com/r/gnaudio/jabra-xpress-assets | v5.3.09401 |
Other images required in a Full Xpress Setup
Docker Image | Recommended Tag |
---|---|
https://hub.docker.com/r/gnaudio/fds.api | 5.1.1035 |
https://hub.docker.com/r/gnaudio/jabra-xpress-assets | v5.3.09401 |
Other images required in a Full Xpress Setup
Docker Image | Recommended Tag |
---|---|
https://hub.docker.com/r/gnaudio/fds.api | 5.1.1035 |
https://hub.docker.com/r/gnaudio/jabra-xpress-assets | v6.1.13901 |
Other images required in a Full Xpress Setup
Docker Image | Recommended Tag |
---|---|
https://hub.docker.com/r/gnaudio/fds.api | 5.1.964 |
https://hub.docker.com/r/gnaudio/jabra-xpress-assets | v5.12.06601 |
Breaking Changes
Changes to the service settings. You must update your docker-compose or container to include these settings before deploying:
Setting | Changed | |
---|---|---|
NetworkEndpoint | Value format | /api/Xpress/Network/ has been removed from this endpoint. If you are upgrading from a previous setup, this part must be removed from your configuration. |
Security:PackageTokens:IssuerKey | New Setting | |
Security:ClientTokens:IssuerKey | New Setting | |
Security:TokenProtection:Key | New Setting |
See the service settings section for more information
Other images required in a Full Xpress Setup
Docker Image | Recommended Tag |
---|---|
https://hub.docker.com/r/gnaudio/fds.api | 5.1.880 |
https://hub.docker.com/r/gnaudio/jabra-xpress-assets | v5.12.06601 |
Other images required in a Full Xpress Setup
Docker Image | Recommended Tag |
---|---|
https://hub.docker.com/r/gnaudio/fds.api | 5.1.639 |
https://hub.docker.com/r/gnaudio/jabra-xpress-assets | v5.9.56147 |
docker pull gnaudio/jabra-xpress-api