Domino Portable Edition - Building the smallest Domino server - Hot Pants for Geeks
Thomas Hampel
3 August 2019Two 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 )
Compared to the well known Raspberry Pi, this Zotac device is actually smaller (thinner) because it does not expose an ethernet port.
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.
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...
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
docker image tag
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://
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