Personal Blog of Thomas Hampel - Creative Mythbusting in Development and Collaboration

Who am I?

Feeds

Query results for : Docker

How to run HCL Domino on a QNAP NAS- 21 March 2023 - (0) Comments

Thomas Hampel
 21 March 2023

Image:How to run HCL Domino on a QNAP NAS

Some time ago I've done a demo running Domino on a QNAP network attached storage device.
Thanks to Docker and the Domino Container project which Daniel and I are maintaining, running a fully a featured Domino environment incl. Verse, Nomad, Rest API, Traveler and Leap is not a problem even on entry level hardware.

Datails and step-by-step instructions have been published here in the Domino container project documentation.
Enjoy reading!

Domino Portable Edition - Building the smallest Domino server - Hot Pants for Geeks- 3 August 2019 - (0) Comments

Thomas Hampel
 3 August 2019

Two weeks ago at the the HCL Factory Tour #3 we've shown the (possibly) smallest Domino server ever built.
With just 47,88 ccm (6,3 x 9,5 x 0,8 cm) it is just a little bigger than a credit card and small enough to fit your pocket. Also, for those of you who remember, it's much smaller than the
Lotus Foundations box which Mike Rhodin introduced at Lotusphere 2008.
Thanks to
Panagenda we also were able to show that you can run Domino off the grid.

What kind of hardware is this based on?

It is
Zotac Pi 225 pico, a mini PC fully equiped with CPU, memory and storage, all combined in a case that is passively cooled.
The case itself looks like a thin 2,5" HDD - but thinner (for US folks : 3.76 x 2.48 x 0.31 inches )

Image:Domino Portable Edition - Building the smallest Domino server - Hot Pants for Geeks

Compared to the well known
Raspberry Pi, this Zotac device is actually smaller (thinner) because it does not expose an ethernet port.
Image:Domino Portable Edition - Building the smallest Domino server - Hot Pants for GeeksImage:Domino Portable Edition - Building the smallest Domino server - Hot Pants for Geeks

It weights less than 500g and is hardware specs looked promissing: Intel N3350 dual-core CPU (x86 compatible!), 4GB RAM, 32GB internal storage (expandable via microSD card), Intel HD Graphics 500,
Furthermore it provides two USB 3.0 Type-C Ports for connecting keyboard, HDMI an ethernet adapter. It also provides an internal 802.11ac Wi-Fi antenna, which I want use for creating a WiFi Hotspot later on.

You can find it
here on Amazon for approx. €150

Stage 1 - Installing Linux

Zotac comes preinstalled with Windows 10 - an operating system which beside being clunky is not supported for running Domino.

Of course my idea was to install Domino on Linux. As you know IBM/HCL is supporting to run
Domino on SuSE or Redhat Linux and also fully supporting CentOS since last year.
After spending a few hours with CentOS I
had to learn by hard that it can not simply be installed on this Zotac device because it is missing support for this specific Intel Atom CPU.
The installation caused errors and booting it took several hours before it finally failed.

Plan B:

Switch to
Ubuntu 18.04.2 LTS (alternative installer!) which installs without problems from a USB stick.

Stage 2 - Linux tuning

Although the installation itself completed in a few minutes there still are some errors when booting up.

Most annoying this one:
systemd-gpt-auto-generator: Failed to dissect: Input/output error. which is caused by the device using an internal MMC card as disk storage.

To fix this error we have to modify the kernel boot parameters as follows:

sudo nano /etc/default/grub

add a parameter to the line "GRUB_CMDLINE_LINUX_DEFAULT"
GRUB_CMDLINE_LINUX_DEFAULT="systemd.gpt_auto=0"

After saving changes we need to tell grub to update the bootloader using
sudo update-grub


Stage 3 - Install Docker

We could have installed Domino natively on Linux but why wasting time if we can also run Domino on Docker.

Installation of Docker on Ubuntu Linux is staight forward
sudo apt-get install docker-ce


To avoid having to type 'sudo' every time you run the docker command, just add your username to the docker group.

sudo usermod -aG docker ${USER}

For changes to take effect, log off and log on again.

Image:Domino Portable Edition - Building the smallest Domino server - Hot Pants for Geeks

Stage 4 - Create Domino Image for Docker

In order to run Domino in Docker I'm using my (more powerful) MacBook and
this Github repo to build a docker image.
All that needs to be done is...
- clone the repository (or
download and extract the zip file) to a directory of your choice.
- Add the Domino Linux installation package + FP2 package into the subfolder "software"

- run "./build domino"

A few minutes later you'll have a perfect Domino image to work with...

Image:Domino Portable Edition - Building the smallest Domino server - Hot Pants for Geeks

Now we need to export this image by turning it into a tar file using this command:

docker image save -o domino1001fp2.tar ibmcom/domino:10.0.1FP2

Copy the resulting file "domino1001fp2.tar" to a USB stick


Stage 5 - Import Docker Image

Attach the USB stick to the Zotac device and copy the file  "domino1001fp2.tar" to a directory of your choice, e.g. /tmp

Then import the image using the command:

docker image load -i domino1001fp2.tar

Verify results using the command
docker image ls - you should now have one image listed.

in case any TAGs are missing, add them using

docker image tag ibmcom/domino:10.0.1FP2
docker image tag ibmcom/domino:latest


Stage 6 - Run Domino and Enjoy

Finally running Domino in this configuration is a piece of cake:

At first create a persistent volume - this is required because we would like to preserve our data directory in case the container is being restarted or recreated.

docker volume create dominodata

then spin up a (new) Domino server with a name of your choice.

docker run -it -d -e "ServerName=Zotac" -e "AdminPassword=passw0rd" -p 1352:1352 -p 80:80 -p 443:443 -v dominodata:/local/notesdata --cap-add=SYS_PTRACE --name domino ibmcom/domino:10.0.1FP2


Without supplying a
config file, this image will not start the HTTP task by default, so we need to open a shell into the container
docker exec -it domino /bin/bash

and from within the container then run "domino monitor" to access the server console to launch the http task using "load http"


Browsing to http:// will now show up this well known homepage.

Image:Domino Portable Edition - Building the smallest Domino server - Hot Pants for Geeks
For more information on how to work with Domino in Docker please refer to
this documentation ( Thanks Roberto ! )

Finall word of warning:

Certainly this Zotac device produces some heat, so running a Domino server in your trousers will for sure turn them into
hot pants for geeks - so please be careful !

Further ideas & todo:

- I have not done any stress testing, so please dont ask me how many users this device is going to support in production

- Enabling the embedded WiFi antenna and turning it into a WiFi hotspot would make a cool demo
- Zotac Pi 225 is not the smallest device that can run Domino -- I have some more ideas but getting hold of the hardware is more complicated, stay tuned for more :)


References:

-
Zotac Pi 225 nano on Amazon
-
Domino on Docker
- Domino on Docker
Management Script
- Mike Rhodin
announcing Lotus Foundations

Domino on Docker Project Updates- 23 July 2019 - (0) Comments

Thomas Hampel
 23 July 2019

Domino on Docker Project Updates
Daniel and me are working on the Domino on Docker project which has been around for a while. We are constantly updating it with more functionality.
Beside the main functionality of providing an automated installation we have a management script that can help to build custom Domino docker images for (e.g.) including applications.
We are working on making the resulting image more flexible. The first version allowed only to automatically setup a first server in a new Domain, but customers already have an environment and either want to setup an additional server in an existing domain or at least have a cross certified environment.

Whats new:
1. Additional server setup
You can now specify an existing server.id and existing server to get the system databases from. You still need to register the second server.id manually in your Domino Directory, however the ID file does not need to be copied anymore.
Just specify the environment variable
ServerIDfile to point to a location (local or http/https) from where the server.id file can be downloaded and the container startup routine will take care of automatically setting up your second server.

2. Add your own data into a container at initial startup
The big challenge is how to bring in data into a new container automatically. Distributing server.id files, templates, or even full applications.
We looked at different approaches which included "Docker secrets", shared volumes and other options.
For improving flexibility we decided to use configurable http/https download links which can be used to download a server.id or an additional data-directory.zip which is automatically expanded at first server start.
This would be for example a way for business partners to deploy their software on top of the image. Or for a customer to deploy their applications or specific adoptions.
All you have to do is to specify an environment variable CustomNotesdataZip (attention, case sensitive!) pointing to a zip file that will be downloaded and extracted into the container at runtime.

3. Scriptable configuration
Now that you have provided your own templates - how do you turn them into an application, how do you change ACLs, or server settings at runtime?
We have added a method to automatically configure a server based on a config JSON file. This can be used to create databases, change groups, change server settings etc.
The configuration is applied before starting up the (new) Domino server for the first time and also allows to sign applications, change the ACL of databases.
...there is even more configuration options to come.


4. More flexible deployment options
In previews versions there was image specific data in the /local directory.
So we moved that data to a separate directory to optionally allow /local to be mapped to a volume instead of having multiple volumes for /local/notesdata, /local/translog and /local/daos.
Mounting /local to a single volume will work fine, but if you want to build a high performance Domino server we are recommending to have separate volumes for those different parts. We even added directories for nif and ft to allow separate volumes for those parts as well.
The Docker volume mapping is comparable to creating mount points. It's about providing most flexibility with best practices in mind.

5. Preparation for new binary location
The project now now includes a new start script version 3.3.0 which is already prepared for changing the program directory default location ( /opt/ibm/domino ) with Domino 11.
The start script and all docker image script files have been prepared to support a different binary location in future. All places in the scripts use standard variables. And we will keep the LOTUS variable to point to the binary location.

Feedback & Future planning
One of the next features will be to allow cross certification with existing IDs. The certifier.id is currently staying on the first installed machine. So the idea is to cross certify a provided safe.id.
This is specially helpful to create test environments. A small servertask will take care of creating cross certifying a safe.id and adding it to the LocalDomainAdmin group.
Another idea is to integrate this functionality into the toolchain which sets up the server, we have not decided yet.
We are looking for your feedback so leave a comment with your suggestions for improvement or create an issue in our domino-docker project
Thomas Hampel, All rights reserved.