Domino on Linux/Unix, Troubleshooting, Best Practices, Tips and more ...

 
alt

Daniel Nashed

 

Did you know Windows includes the tar program?

Daniel Nashed  1 December 2023 07:12:57

The Domino Language packs are coming in tar format. And I was looking for a way to automatically extract the InstallAnywhere installer for Windows.


It turns out that Microsoft added tar along with other tools like curl.
I did know about curl, but I missed tar. Which can be quite helpful if you don't have 7Zip installed.


The implementation they are shipping is bsdtar (
https://libarchive.org/).

It supports to read and write compressed archives with the "z" option.


In the help you see where tar is coming from. It's a pretty old tool coming from the tape area ..

But it is still the standard tool on Linux to pack files.


And it is by the way also supported by Borg Backup
https://borgbackup.readthedocs.io/en/stable/usage/tar.html.
You will hear more about this soon, because I am working on a native Domino Backup Borg integration leveraging this new Borg Backup option.


-- Daniel







DNUG 4 hours Notes / Domino V14 Deep Dive

Daniel Nashed  28 November 2023 22:35:35

After the official Domino V14 launch on December 7, the DNUG Domino focus group organizes another Deep Dive Domino event.
We will cover all new features and answer your questions about Notes/Domino V14 and latest version of Domino companion products.

Time and date are not a coincident ;-) .. and there is a lot to discover.

The DNUG Lab is already updated to Domino 14.0 EA3 and I will update it to the GA version as soon it is available. You will get first hands experience.

Sorry that this is even is in German. But there will be other events hopefully soon to cover the new features.

My favorite features:

- Passkey authentication
- Domino AutoUpdate
- Admin Central

Event page --> https://dnug.de/event/dnug-deep-dive-domino/
The registration link is on the page.

Looking forward to may of you attending.

-- Daniel


Image:DNUG 4 hours Notes / Domino V14 Deep Dive




    Domino Download Bash Script leveraging My HCL Software Portal

    Daniel Nashed  26 November 2023 10:55:36

    Introduction

    The My HCL Software Portal is still an early access offering in parallel to Domino 14 early access.
    It is planned to replace the Flexnet download soon and way easier and much faster to navigate.

    The website just works and has awesome performance.

    Domino 14 AutoUpdate leverages a new software download API to automatically download software into autoupdate.nsf.
    The download just needs a download token, which can be requested if you are log into https://my.hcltechsw.com/.

    I have been looking for a way to automatically download software for a couple of years.

    Domino Download

    Now with the new portal and this new API it is possible to write a Bash script for full command-line operations including a simple to use menu.

    There are two different modes. By default the script uses My HCL Software navigation.
    But alternatively it can also leverage Domino 14 Auto Update software.jwt, which has more granular information and allows a more structured download package browsing experience.

    The script is a single file, which can install itself and all required packages -- Usually only JQ is missing.
    More detailed information about the script is part of the start script project --> https://nashcom.github.io/domino-startscript/domdownload/

    The script has many useful options and validates the downloaded software using the SHA256 provided in the portal or software.jwt.


    Implementation details

    The script uses JQ to parse JSON data and uses Curl to download software. Meta data is cached to reduce the round trip time when navigating the software data.
    Also the access token is cached to avoid rotating the download refresh token on every request.
    The first version of the script even comes with it's own performance tracing tool, which helped me to track down some Ubuntu local DNS resolver issues.


    Have a look and provide feedback

    If you are running Linux or MacOS in your environment, you should have a look! I am using it every day in many different scenarios.
    For Windows I added GitBash support. But the better way would be to install WSL and run the script on Linux leveraging /mnt integration for Windows file systems.

    This is the first version of the script. The script was on preview in the HCL Ambassador community and the Domino 14 EAP feedback forum.

    I also added domdownload support into the HCL Community Container project. build.sh automatically detects it and if present, the software downloads are fully automated.

    Example: ./domdownload -autoupdate

    After selecting the software in a menu, information for the software package found is displayed and a curl based download is started.


    --------------------------------------------------------------------------------
    Selected software
    --------------------------------------------------------------------------------


    [1] HCL Domino Server 14.0 for Linux English - Early Access October 2023

    --------------------------------------------------------------------------------
    WebKit   :  HCL Domino Server 14.0 for Linux English - Early Access October 2023
    Product  :  domino
    Type     :  server
    Platform :  Linux/64
    Version  :  14.0
    Name     :  Domino_14.0_Linux_English_EA3.tar
    Size     :  1125591040
    SHA256   :  8174c1a927571ba61b4c084c5863de6d7f48ed0d5ab9e293f7476fd41b9835c0
    ID       :  LVZSBZ3rMMjQY4RF36hhb
    --------------------------------------------------------------------------------

    Downloading /mnt/storagebox/software/Domino_14.0_Linux_English_EA3.tar ...

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100 1073M  100 1073M    0     0   147M      0  0:00:07  0:00:07 --:--:--  112M

    Download completed

    [OK] Hash verified

    /mnt/storagebox/software/Domino_14.0_Linux_English_EA3.tar


    Why is argv[0] in C/C++ not a good idea to use

    Daniel Nashed  31 October 2023 09:18:50

    argv[0] on Linux and Windows


    Looking into the APIs for creating new processes shows that and application can specify any string as arg[0] when calling your process.
    This leads to the conclusion that using argv[0] as a trustworthy information isn't a good idea.
    I would even recommend not using it at all even for display purposes and would just skip argv[0] completely.


    What would be a good way to determine the binary name?


    On Linux the proc file system contains information about processes. It's by the way a very easy to use standardized way accessing process information.
    There is even a special link "/proc/self" which represents the running process binary.

    Using readlink ("/proc/self/exe"...) is a simple way to get the current binary name.

    On Windows using GetModuleFileName (NULL, ...) is a good way to get the current binary name.

    -- Daniel



    Refrences


    Linux:

    https://man7.org/linux/man-pages/man3/exec.3.html

    Example:

    execl (szProgram, szProgram, szArg1, szArg2, NULL);


    Windows:

    https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessa

    Example:

        bSuccess = CreateProcessAsUser(
            NULL, // Application name
            pszCommandLine,
            NULL,
            NULL,
            FALSE,
            NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP,
            NULL,
            pszWorkDir,
            &StartupInfo,
            &ProcessInfo);


    Get your Linux environment ready for Domino V14

    Daniel Nashed  19 October 2023 08:35:53


    Domino V14 is planned to ship end of this year. For Windows the system requirements don't really change, because of the universal run-time.

    But for Linux a newer compiler brings new OS dependencies. Specially the glibc version, which brings the base run-time support for C and also the C++ standard libs are important.


    An application build with a newer compiler on a newer Linux version does not run on older versions with lower glibc versions.

    glibc is the The GNU C Library -
    https://www.gnu.org/software/libc/
    The new version required was released in August 2021 and is part of most current long term release Linux distributions.


    HCL Domino 14.0 System Requirements (Early Access Program Drop 3)


    https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0105128

    The system requirements state the following versions:


    RHEL 9.0 Linux-equivalent OS


    Equivalent OS with the following kernel/packages:


    kernel-5.14 x86_64 or higher 5.14 kernel

    glibc-2.34-28 x86_64 or higher

    libstdc++-11.2.1 x86_64 or higher



    What does that mean for your environment


    You will have to bring servers to at least those versions to run.
    glibc dependencies are not negotiable and glibc can't be updated. It's an essential part of each Linux OS.


    This would mean an update to the following type of long term release versions:
    • Redhat/CentOS Stream 9.x based distributions (CentOS Stream 9, AlmaLinux 9, RockyLinux 9, Oracle Linux 9, Amazon Linux 2023, ...)
    • Ubuntu 22.04 LTS
    • VMware Photon OS 5

    SUSE Linux Support


    Currently the latest SUSE Leap and Enterprise versions ship with glibc 2.31 -- which is too old to run Domino.

    You could run a SUSE 15.5 host, with a supported container image. The glibc is part of the image. The kernel is the the kernel of the base Linux running the container (e.g. Docker, Podman, K8s).


    SUSE is expected to ship a compatible glibc mid of 2024.



    Conclusion


    The current Linux distributions all have their major versions updated for a while.  For example Redhat/CentOS is at version 9.2.
    It is important to keep the base operating system updated.


    This is really a required and important change. You should move ahead and plan accordingly.

    I have updated most of my servers already to CentOS 9.2 and Ubuntu 22.04 LTS.

     
     

    A close look into HCL Software download performance

    Daniel Nashed  14 October 2023 08:12:06

    When looking into Domino V14 EA3 autoupdate.nsf downloads I have been testing some proxy connections with different locally installed proxies (Squid HTTP proxy and Dante Socks proxy).
    On first look the performance seemed to be dramatically different.

    But on second look the difference was the way I tested the download. The second download via proxy was almost as fast as the performance I had without a proxy.
    When testing performance, caching can dramatically influence the results. Usually it is disk cache performance where you have to drop file caches on your machine.


    My HCL Software download performance depends on server side cache

    In this case it turned out that the My HCL Software download caches the files in the Content Delivery Network (CDN).
    If nobody from my region downloaded the file for a while, the file needs to be read from the back-end.


    Testing with different network connections

    Of course download performance also depends on the internet connection. My AWS machine was surprisingly a lot of slower than my Hetzner server...
    Looks like they only have giga bit connections for their normal servers. But then 114 MB/sec is as good as it can be!

    For a first download without the cache I got like 15 MB/sec on a AWS machine and 115 MB/sec for a cached file.

    On my Hetzner server I got more than double the performance. Once the file was cached I hit a download rate of 365 MB/sec!

    Another interesting surprise was that my ARM machine was 20 MB/sec faster than the Intel machine (Intel Xeon Processor, Skylake, IBRS, 3300 CPU MHz).
    And 50 MB/sec faster than a machine with just 1 Intel CPU core.

    All in all the performance for downloads from the new My HCL Software Download site rocks!

    To be fair I did the same test with Flexnet. I got some mixed results. But they also cache the download in some way.
    The first read was half the speed I got for a none cached file on the new portal. But I got comparable download speed once test.


    Conclusion

    OK those are not the number you can expect in normal corporate downloads at all. But it shows which factors influence download performance.
    If you have a proxy which inspects downloaded data, the performance could also look completely difference.
    But my test was mainly a check if proxy connections works well and to see where different download performance came from.
    It's still a pretty impressive download performance.

    -- Daniel


    Test result with curl command line (no proxy) on a Hetzner machine with ARM CPU (Data center located in Germany)

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100 1052M  100 1052M    0     0   365M      0  0:00:02  0:00:02 --:--:--  365M


    Required Notes and Domino anti-virus file exclusions

    Daniel Nashed  8 October 2023 07:04:21

    This discussion came up in an OpenNTF Discord channel.
    The question was if this might be a good idea to keep OS level anti-virus enabled for Notes/Domino files.

    There is a clear statement from HCL about exclusions. But the technote doesn't explain why those exclusions are important.
    The exclusion might be different for each anti-virus production in detail. It also depends on customer IT policies how to exclude data.
    This can be either by path, extension or process.

    There are also recommendations from some anti-virus vendors stating the same exclusions for their specific product:

    Guidelines for excluding Notes and Domino directory and files when running an operating system Antivirus

    https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0093046


    Why are exclusions important

    Performance

    First of all on access or on write scanning can dramatically slow down performance of a server or client.
    On a client even loading all the small Eclipse program/binary files can slow down the client. But that's a different story.

    Stability of the server

    OS virus scanners run on very low OS level and can block files very low level.
    If a file gets blocked/removed while Domino is using the file, the process or at least the operation will fail.
    Depending on the file and the state, this could cause a partial or complete server failure (e.g. crash).

    Effectiveness of OS level scans

    Scanning on access often has a time lack as I found out in my tests. So the file might be written anyway and deleted afterwards when using it.

    Even for not encrypted data, The storage of file data inside a NSF or even DAOS NLO are not really consumable. Often data is also compressed on top of it.
    For no part of the server OS level anti-virus would add reliable security.


    How to scan Domino data for viruses and other threads

    To scan Domino data inside a NSF or insider NLOs. you would need a Domino aware solution.
    There are business partner solutions out there, which provide mail flow and on rest scanning.

    HCL implemented the ICAP standard for mail flow scanning in Domino 12.0.2 to leverage external anti-virus appliances supporting the ICAP standard.
    The interest in this new feature was quite low. And also ideas to improve the CScan solution was not really getting many votes.
    Even if you have existing gateway solutions to scan attachments, periodically scanning Notes databases would be a requirement high on my wish list.

    Surprisingly the interest seems to be very low. Also the idea to provide other protocols like ClamAV protocol support (free, open source based anti-virus) was not getting many votes.

    With CScan in place, adding more protocol and a command-line scan, would be incremental effort.
    But probably Domino product management would not take it into account with 7 votes.

    I would be very interested to understand why there isn't much demand in the field, because I had similar low feedback for my ClamAV integration project earlier (see below).

    -- Daniel


    AHA ideas to vote for

    AHA idea - ClamAV support for Domino CScan -> 9 votes
    https://domino-ideas.hcltechsw.com/ideas/DOMINO-I-2472

    AHA idea - Periodic CScan on rest scan of databases -> 7 votes
    https://domino-ideas.hcltechsw.com/ideas/DOMINO-I-2473



    ClamAV related blog posts

    https://blog.nashcom.de/nashcomblog.nsf/dx/domino-antivius-powered-by-calmav.htm
    https://blog.nashcom.de/nashcomblog.nsf/dx/revisiting-anti-virus-for-domino-do-you-have-feedback.htm


    Running Domino with SELinux on current REHL/CentOS Stream 9 & Co

    Daniel Nashed  8 October 2023 04:45:45


    Domino 12.0.2 added support for SELinux in enforced mode, which is enabled by default by newer installations.


    SELinux is a lower level security feature, which can even limit processes running with root permissions.

    But the application needs to have a SELinux profile.


    I ran into this week on my own on a RHEL 9.2 machine and I got the same problem from a partner yesterday.

    It turns out that systemd can't read from /tmp any more. But the Domino service from my Nash!Com start script writes the domino process id into the /tmp folder.


    With SELinux enabled you get the following error message when looking into your service status (domino statusd).

    The start and stop operations of your server will also hang, because systemctl will hang.


    systemd[1]: domino.service: Can't convert PID files /tmp/domino.pid O_PATH file descriptor to proper file descriptor: Permission denied


    Admins probably notice first that the service is handing on startup:

    Starting systemd domino.service


    Systemd seems to not handle this error gracefully and the specified timeout seems not to work.



    How to find out what SELinux does not allow


    Meanwhile SELinux comes with great tools to analyze issues.

    You can see that SELinux prevented systemd to read /tmp/domino.pid.


    audit2allow -w -a|grep systemd

    type=AVC msg=audit(1696738388.170:348): avc:  denied  { open } for  pid=1 comm="systemd" path="/tmp/domino.pid" dev="dm-0" ino=134293379 scontext=system_u:system_r:init_t:s0 tcontext=system_u:object_r:tmp_t:s0 tclass=file permissive=0



    How to address this issue


    The right location for process pid files would be  /run or /var/run (which is a symbolic link to /run) where pid files are usually stored.


    Systemd is allowed to read the directory and all sub directories.

    But Domino as an application without root permissions cannot write into this directory.


    This looks like a catch-22, but can be solved by creating a sub directory for Domino.

    A small complication is that the directory would be deleted on every boot and the start script running with the "notes" user can't create directories.


    Systemd offers a way to create those sub-directories per application by specifying a RuntimeDirectory directory created below /run.

    Once tested for a couple of days I will change the default configuration of the start script to use this new location and new logic.
    The install_script bash script would not overwrite existing configurations without specifying the "upd" option.
    But it would be in the right location by default for future installation.

    To change the configuration manually, change the two following files as listed below.


    I have not found any good documentation about this recent change. So this might also help other Linux admins for their own services.




    /etc/systemd/system/domino.service


    PIDFile=/run/notes/domino.pid

    RuntimeDirectory=notes
    RuntimeDirectoryPreserve=yes
    ExecStart=/opt/nashcom/startscript/rc_domino_script start



    /etc/sysconfig/rc_domino_config


    DOMINO_PID_FILE=/run/notes/domino.pid


    After you made those changes you have to update systemd

    systemctl daemon-reload



    Update 18. October 2023:

    It tuned out that systemd has a build-in functionality to create a sub-directory for an application.
    Systemd offers a way to create sub-directories in /run for applications. This is a cleaner approach instead of using ExecStartPre commands.

    I am leaving those older changes here for reference, because they could be helpful for other use cases.

    Systemd offers ExecStartPre operations, which are executed before the ExecStart statement starts the Domino service.
    Prefixing the command with a plus sign runs the operation with root permissions.


    ExecStartPre=+/bin/mkdir -p /run/notes
    ExecStartPre=+/bin/chown
    notes:notes /run/notes


    Update 9. October 2023:

    There was one more tweak needed. The command to create the directory needs to be mkdir -p  -- else the 2nd run of the server fails because the directory is already there.
    I pushed the changed start script to GitHub in the develop branch with a new version number 3.7.3.
    No new features and I will work on documenting details later. It's more important that this change needs to go out.


    You will need to update your configuration! If you did not change anything a "install_script upd" would update the configuration and the service. You will also need to reload the service!

    If you changed the configuration you need to change the service and the config manually as outlined above.


    Notes/Domino/Traveler 14.0.0 EA3 is available -- First Look

    Daniel Nashed  4 October 2023 09:08:02


    Start your downloads.. The final Version 14 early access versions is available.


    Most of you already know about the new My HCL software portal to download.

    The new portal is in Early Access in parallel to Domino V14 and you you should try this out instead of going to Flexnet ..


    Here is the direct link to the EAP download already available
    https://my.hcltechsw.com/downloads/domino/eap

    It also provides links to the most important resoures like what's new and also the EAP forum!



    HCL Community Domino project support for 14 EA3


    I have just updated the develop and main branch with EA3


    And there is something new for your to try out. Traveler is usually an add-on image.

    But we added support to add Traveler and Domino Leap as a build option directly to the Domino image.


    With the following command-line you can build an image with Domino and Traveler at the same time.


    ./build.sh domino 14.0.0EA3 +traveler=14.0.0EA3


    The Nomad server and also Verse is already included in Domino and automatically installed.



    Domino Leap support for EA3.


    Meanwhile also Domino Leap has been updated to a newer version. The latest version Domino Leap 1.1.2 now works on Domino V14.

    There have been pending changes to work with Domino V14 and the new Java 17 version.



    Features you have to try out in EA3



    AdminCentral


    AdminCentral has improved with more functionality and also a lot of UI enhancements specially on mobile devices.

    You should try it out on an iPad and also a phone!



    AutoUpdate


    AutoUpdate has been enhanced to work now hand in hand with the My HCL Software portal to download and distribute software automatically directly via autoupdate.nsf.

    Take look into the documentation and check out the EAP forum for details.



    Passkeys for web authentication


    Passkeys have been added in EA2. If you did not take a look, you should take a look with EA3, which introduces the UI components in the standard dialog and also additional information in the passkey.nsf.

    This includes device type where possible. Last login date and much other functionality.


    Passkeys is an awesome new technology which Domino adopted very early. It is more secure than user/password and provides much easier log-in experience for users on desktops and mobile devices.

    I will blog separately about passkeys and other features. And you should look into the EAP forum for discussions around it.



    DAOS Repair in a cluster!

    When repair was introduced in Domino 10, there was a small but important blind spot.
    Whole database have been repaired. But individual NLOs could not be repaired.
    So now in a cluster when NLOs are missing, they can be repaired from another cluster mate.

    The server which is missing NLOs can pull them from another cluster mate.


    Update for important security components


    Another impressive detail change.

    Domino again updates OpenSSL to a very recent version OpenSSL 3.1.2. Which is outstanding for an enterprise applications.

    And it makes Domino again more up to date then most Linux distributions!



    Important install changes on Windows


    Beginning with Domino 14.0.0 EA3 Domino on Windows does not support running with the System Account any more out of the box.

    During install you have to provide an existing user without admin permissions, which will be used to run the Domino service.


    All access permissions are set accordingly for the user during install.


    This will be quite a change for many administrators and there is an interesting discussion in the EAP forum about this change.

    For details you should join the EAP forum.


    This is just a quick first info about EAP3. You should look into the documentation and join the forum.


    -- Daniel

    HCL Domino Community Container Update - Build your container with all options including Traveler and Domino Leap

    Daniel Nashed  30 September 2023 11:20:11

    Domino V14 EA2 added the Nomad Server and Verse to the Domino installer package and installs both automatically with Domino.
    This is a great move to simplify Domino installations and updates!

    The container project has support for both for quite a while along with other community only options.
    There is an add-on image for HCL Traveler and Domino Leap.
    Both need an additional build step to create a HCL Traveler or Domino Leap container on top of the Domino image.


    HCL Traveler and Domino Leap option

    Because HCL also has a separate image and the community image is now the base for the HCL image since Domino 12.0.2 we never changed the layering.

    But why not add a new option to build Traveler and Domino Leap directly into your Domino image.

    Here is a sample "all you can build" command-line, which installs all the latest components directly during Domino 12.0.2 container build.

    ./build.sh domino +traveler +verse +restapi +capi +nomad +leap +domlp=de

    12.0.2              [OK] Domino_12.0.2_Linux_English.tar
    12.0.2FP2           [OK] Domino_1202FP2_Linux.tar
    3.1.0               [OK] HCL_Verse_3.1.0.zip
    de-12.0.2           [OK] Domino_12.0.2_SLP_German.tar
    1.0.7               [OK] Domino_REST_API_V1.0.7_Installer.tar.gz
    1.0.9-12.0.2        [OK] nomad-server-1.0.9-for-domino-12.0.2-linux.tgz
    12.0.2FP1           [OK] Traveler_12.0.2FP1_Linux_ML.tar.gz
    1.1.2               [OK] hcl.dleap-1.1.2.18.zip
    12.0.2              [OK] CAPIToolkit_1202_MP.zip



    Support for the latest versions including RESTAPI 1.0.7

    I have also updated the latest version support for all the components.
    This is specially interesting for the RESTAPI, which now supports Domino V14.


    The installer is now split into one for Domino V14 and one for earlier versions.
    Background is that Domino V14 introduced Java 17. The RESTAPI installer leverages the Domino JVM, which switches to Version 17 in Domino 14.

    The container build script is now version aware and uses the right installer package for each version.


    Domino V14 EA2 support

    The community container project supports Domino V14 EA2 and will introduce EA3 support as soon it is available.

    But I am pushing the changes just explained already today. I need to double check if all components still work.


    Domino German Language support

    I added the LP a while ago and never got any feedback. Installing the LP isn't that straightforward.
    There is an installer properties file and a LP ini file which defines what to add and replace.

    I cloned the settings for Domino V14 and need to review it again once EA3 is available. There is still work in progress.
    But it should work as it is today.

    I hope you like the additions to the Domino Container Community project.
    The official HCL image stays the same. All of those options are community only options.


    -- Daniel


    Links

      Archives


      • [HCL Domino]
      • [Domino on Linux]
      • [Nash!Com]
      • [Daniel Nashed]