Configuring HCL Traveler on Docker examples
Example 1: Standalone Domino with Traveler and iNotes configuration
The following example contains the commands to start a standalone Domino mail server with iNotes for web mail access and Traveler for mobile mail access. In this example, the server configuration is performed using one-touch Domino setup passing system environment variables.
iNotes requires HTTP, so the HTTP task is added to the ServerTasks list, in addition to Traveler. Furthermore, HTTP must remain active even if Traveler is brought down, so NTS_AUTOSTART_HTTP is set to false. In this example, the external URL is set by passing the NTS_EXTERNAL_URL into the notes.ini file.
The following list contains the system environment variables to be passed in to the
docker run
command:
SERVERSETUP_SERVER_TYPE=first
SERVERSETUP_ADMIN_FIRSTNAME=Joe
SERVERSETUP_ADMIN_LASTNAME=administrator
SERVERSETUP_ADMIN_PASSWORD=password
SERVERSETUP_ADMIN_IDFILEPATH=admin.id
SERVERSETUP_ORG_ORGNAME=Example
SERVERSETUP_ORG_CERTIFIERPASSWORD=password
SERVERSETUP_NETWORK_HOSTNAME=dommail.example.com
SERVERSETUP_SERVER_DOMAINNAME=Example
SERVERSETUP_SERVER_NAME=DomMail
SERVERSETUP_SERVER_ADDITIONALSERVERTASKS=TRAVELER
HTTPNTS_EXTERNAL_URL=https://docker.example.com/traveler
NTS_AUTOSTART_HTTP=false
docker run
command creates an interactive
container that deletes itself upon
termination:docker container run --rm --name dockerExample -it -v dockerSample:/local/notesdata --env-file
environment.txt --hostname docker.example.com -p 1352:1352 -p 443:443 -p 80:80 -p 8080:8080
traveler-docker:V12000_20210316164 --autoconf
Preparing for server setup...
Done.
Traveler setup checking for required values in /local/notesdata/notes.ini
Setting NTS_TEMPLATE_INSTALL=1
Setting NTS_CLIENT_UPDATE=FULL
Setting NTS_AUTO_CONFIG=true
Setting NTS_SERVLET_ALLOW_CLIENT_INSTALL=true
Setting NTS_64_BIT=true
Setting NTS_NEW_INSTALL=true
Setting NTS_INSTALLATION_TYPE=ON_PREMISE
Setting NTS_SERVER_LANG=en
Setting NTS_BUILD=12.0.0.0_202103161641
Setting NTS_INSTALL_INSTANCE=1
Setting NTS_DBCONNECTIONURL=jdbc:derby:ntsdb;create=true
Setting NTS_AUTOSTART_HTTP=false
Setting NTS_EXTERNAL_URL=https://travdevcen02.test.cwp.pnp-hcl.com/traveler
Installing Traveler data files into /local/notesdata
Traveler setup done.
[000137:000002-00007F388F564740] Loading AutoConfiguration parameters from the environment
[001446:000002-00007F5D1F39C740] 03/19/2021 19:56:03 Traveler: Creating database schema at version 20190922
[001450:000002-00007FEF9671D740] 03/19/2021 19:56:04 XSP Command Manager initialized
[001450:000002-00007FEF9671D740] 03/19/2021 19:56:04 HTTP Server: Started
[000239:000014-00007F3178145700] 03/19/2021 19:56:08 Event: Creating the Domino Domain Monitor (11) database.
[000239:000014-00007F3178145700] 03/19/2021 19:56:08 Created Domain Monitoring Database from template, verify ACL as changes may have been lost
[001446:000002-00007F5D1F39C740] 03/19/2021 19:56:11 Traveler: Server started.
Example 2: Non-HA Traveler server extending existing Domino domain using JSON
In the following example, a Traveler server is added to an existing Domino domain to add mobile mail services. It is the only Traveler server, so it uses the default Derby database.
{
"serverSetup": {
"server": {
"type": "additional",
"name": "domTrav",
"domainName": "existingDomain",
"IDFilePath": "/local/notesdata/server.id",
"additionalServerTasks": "TRAVELER"
},
"network": {
"hostName": " domtrav.example.com"
},
"org": {
"orgName": "existingDomain"
},
"admin": {
"CN": "admin"
},
"existingServer": {
"CN": "existingServer"
}
},
"appConfiguration": {
"databases": [{
"filePath": "names.nsf",
"action": "update",
"documents": [{
"action": "update",
"findDocument": {
"Type": "Server",
"ServerName": "CN=domTrav/O=existingDomain"
},
"items": {
"tsExternalURL": "http://domtrav.example.com/traveler"
}
}]
}]
}
}
The server.id file of the new Traveler server, and the JSON file containing the configuration values, must be copied onto the Domino /local/notesdata volume before starting the server, so the container is initially run with /bin/bash as an entry point to allow the copies to be done.
docker run
command creates an interactive
container that deletes itself upon
termination:docker container run --rm --name sampleContainer -it -v sampleVolume:/local/notesdata --
entrypoint /bin/bash --env SetupAutoConfigure=1 --env SetupAutoConfigureParams=sample.json --
hostname domtrav.example.com -p 1352:1352 -p 443:443 -p 80:80 -p 8080:8080
traveler-docker:V12000_20210316164
Example 3: HA Traveler Server extending existing domain using environment variables and JSON
{
"serverSetup": {
"server": {
"type": "additional",
"name": "domTrav",
"domainName": "existingDomain",
"IDFilePath": "/local/notesdata/server.id",
"additionalServerTasks": "Traveler"
},
"network": {
"hostName": "domtrav.example.com"
},
"org": {
"orgName": "existingDomain"
},
"admin": {
"CN": "admin"
},
"existingServer": {
"CN": "domMail"
},
"notesINI": {
"NTS_DBUSER": "sqladmin",
"NTS_DBPASSWORD": "password",
"NTS_DBCONNECTIONURL": "jdbc:mysql://MySQLServer.sample.com:3306/dockerdb?serverTimezone=EST5EDT",
"NTS_DBPATH": "/local/notesdata/mysql-connector-java-8.0.27.jar"
}
},
"appConfiguration": {
"databases": [
{
"filePath": "names.nsf",
"action": "update",
"documents": [
{
"action": "update",
"findDocument": {
"Type": "Server",
"ServerName": "CN=domTrav/O=existingDomain"
},
"items": {
"tsExternalURL": "https://domtrav.example.com/traveler"
}
}
]
}
]
}
}
However, the parameters required for connecting to the MySQL database server cannot
be specified using JSON. The recommended method for configuring the database
parameters is to run the
travelerUtil
program while the Domino server is not
running. The bring-up sequence for one-touch setup with JSON provides a
good opportunity to accomplish that, because in that sequence, the docker
run
command starts a bash shell. You can run the
travelerUtil
program in that bash shell before starting the
Domino bringup sequence.
As in the previous example, run the docker cp
command to copy the
server.id file and the JSON file into the image before starting Domino. Traveler
needs to connect to the enterprise database, so you must to copy the appropriate
JDBC driver for the enterprise database into the volume before starting Domino.
NTS_DBUSER=LNTUSER
NTS_DBPASSWORD=password
NTS_DBCONNECTIONURL=jdbc:mysql://MySQLServer.sample.com:3306/TRAVELER
NTS_DBPATH=https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.23.tar.gz
docker run
command creates an interactive
container that deletes itself upon
termination:docker container run --rm --name sampleContainer -it -v sampleVolume:/local/notesdata --env-file
environment.txt --env SetupAutoConfigure=1 --env SetupAutoConfigureParams=sample.json –hostname
domtrav02.example.com -p 50125:50125 -p 50126:50126 -p 1352:1352 -p 443:443 -p 80:80 -p 8080:8080 --entrypoint /bin/bash
traveler-docker:V12000_20210316164
bash
or performing the server configuration. The following
sample docker run
command restarts Domino using a volume that has
already been
configured:docker container run --rm --name sampleContainer -it -v sampleVolume:/local/notesdata –hostname
domtrav02.example.com -p 1352:1352 -p 443:443 -p 80:80 -p 8080:8080 -p 50125:50125 -p 50126:50126 traveler-docker:V12000_20210316164
Example 4: Sample JSON for Traveler Server with Session Authentication enabled
{
"serverSetup": {
"server": {
"type": "first",
"name": "domTrav",
"domainName": "dominoDomain",
"additionalServerTasks": "TRAVELER"
},
"network": {
"hostName": "domtrav.example.com"
},
"org": {
"orgName": "dominoDomain",
"certifierPassword": "password"
},
"admin": {
"lastName": "administrator",
"password": "password",
"IDFilePath": "/local/notesdata/admin.id"
}
},
"appConfiguration": {
"databases": [{
"filePath": "names.nsf",
"action": "update",
"documents": [{
"action": "update",
"findDocument": {
"Type": "Server",
"ServerName": "CN=domTrav/O=dominoDomain"
},
"items": {
"tsExternalURL": "http://domtrav.example.com",
"LdISite": "1",
"FullAdmin": [
"administrator/dominoDomain",
"LocalDomainAdmins"]
}
},
{
"action": "create",
"computeWithForm": true,
"items": {
"Form": "WebSite",
"FullName": "CN=WebSite/O=dominoDomain",
"Type": "WebSite",
"HTTP_EnableSessionAuth" : "1",
"ISiteAdrs": "domtrav.example.com",
"ISiteName": "Web site for traveler",
"ISiteOrg": "dominoDomain",
"WSHomeURL": "/traveler",
"WSHostingSrvrs": "*",
"Owner": "administrator/dominoDomain",
"LocalAdmin": "administrator/dominoDomain"
}
}]
}]
}
}