Author: <span class="vcard">kenio.carvalho</span>

I setup Node-red to use HTTPS and everything works fine. All HTTPS requests go to default port of Node-red.  Today i need to setup a communication with a client that not support HTTPS, just HTTP.

The solution i found was to setup Nginx as reverse proxy.  Nginx receives the HTTP requests and then forward them to Node-red.

On my Nginx server i just add the following lines

server {
listen 80;
location /reddata {
proxy_pass https://<ipaddress>:port/reddata;
}
}

 

 

IoT Linux

“ImportError: No module named tensorflow” but you know you installed it? Sometimes you can import packages from the console, but not from the Jupyter notebook? !pip install tensorflow sometimes just does not work?

Googling about similar issues made me realise people are suggesting the thing that won’t work most of the time.

If you are installing packages by running

!conda install tensorflow
# or if you want to use pip
!pip install tensorflow

you are using very fragile commands (if run in notebook) and that’s the reason packages you installed can’t be imported. It is not fine this time

Instead, use these commands:

import sys
!conda install --yes --prefix {sys.prefix} tensorflow
# or if you want to use pip
!{sys.executable} -m pip install tensorflow

and you will not have problems with damn ImportError again.

Found this information on this link https://modelpredict.com/importing-packages-in-jupyter-notebook/

IoT

Sharpening a knife is a skill that everyone who enjoys cooking needs to have. I have several stones for sharpening my knives. In addition to having the correct stones one of the most difficult things is to maintain the angle between the knife and the stone during the sharpening process. There are many videos and even YouTube channels on the subject. A video that caught my attention is below. It shows how to create and use an electronic device to maintain the sharpness angle.

 

IoT

Node-red 1.1 released with several new features

 

Uncategorized

Today i upgrade one server to Domino 11.0.1 from Domino 11.0 on linux.  When the server starts the HTTP  the console show the error bellow:

 

[103028:000002-00007F2CD562E740] 06/18/2020 10:40:45 AM JVM: Java Virtual Machine initialized.
[103028:000002-00007F2CD562E740] 06/18/2020 10:40:45 AM HTTP Server: Java Virtual Machine loaded
[103028:000002-00007F2CD562E740] 06/18/2020 10:40:50 AM HTTP JVM: java.lang.reflect.InvocationTargetException
[103028:000002-00007F2CD562E740] 06/18/2020 10:40:50 AM HTTP JVM: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[103028:000002-00007F2CD562E740] 06/18/2020 10:40:50 AM HTTP JVM: at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[103028:000002-00007F2CD562E740] 06/18/2020 10:40:50 AM HTTP JVM: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[103028:000002-00007F2CD562E740] 06/18/2020 10:40:50 AM HTTP JVM: at java.lang.reflect.Method.invoke(Method.java:498)
[103028:000002-00007F2CD562E740] 06/18/2020 10:40:50 AM HTTP JVM: at com.ibm.domino.http.bootstrap.BootstrapOSGIClassLoader.loadClassFromBundle(BootstrapOSGIClassLoader.java:136)
[103028:000002-00007F2CD562E740] 06/18/2020 10:40:50 AM HTTP JVM: at com.ibm.domino.http.bootstrap.BootstrapOSGIClassLoader.launchOSGIFramework(BootstrapOSGIClassLoader.java:88)
[103028:000002-00007F2CD562E740] 06/18/2020 10:40:50 AM HTTP JVM: at com.ibm.domino.http.bootstrap.BootstrapOSGIClassLoader.loadClass(BootstrapOSGIClassLoader.java:63)
[103028:000002-00007F2CD562E740] 06/18/2020 10:40:50 AM HTTP JVM: at java.lang.ClassLoader.loadClass(ClassLoader.java:881)
[103028:000002-00007F2CD562E740] 06/18/2020 10:40:50 AM HTTP JVM: at com.ibm.domino.http.bootstrap.BootstrapClassLoader.findClass(BootstrapClassLoader.java:79)
[103028:000002-00007F2CD562E740] 06/18/2020 10:40:50 AM HTTP JVM: Caused by:
[103028:000002-00007F2CD562E740] 06/18/2020 10:40:50 AM HTTP JVM: java.lang.ClassNotFoundException: No class loader available for the bundle: com.ibm.xsp.domino_11.0.0.20191120-0552 [226]
[103028:000002-00007F2CD562E740] 06/18/2020 10:40:50 AM HTTP JVM: at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:579)

 

The solution was to delete all content of the folder /opt/lotus/notes/latest/linux/osgi/shared/eclipse/plugins and run the installer again.

Domino Linux

You need A Fully Qualified Domain Name (FQDN) pointing to a dedicated IP address of the webserver.
This needs to be configured by your DNS administrator or provider.

1 – Install Certbot in Centos 8

sudo curl -O https://dl.eff.org/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

2 – Configure Nginx server_name on nginx.conf

Edit nginx.conf an change the variable server_name to the same FQDN
of your server for example: server_name www.mysphere.com.br;

3 – Run the certbot command:

Execute sudo /usr/local/bin/certbot-auto –nginx and follow the instructions

Test if your Nginx server using https://<server_name>

IoT Linux web

I am creating a server (Centos 8) to develop a system that will use an application using REACT as a front end to show data from different sensors. I will use NGINX as a webserver and Node-red as a back end. In this first post I describe how to install NGINX.

Install nginx package using the yum command on CentOS 8:

sudo yum update
sudo yum install nginx

Update firewall settings and open TCP port 80 and 443. Run:

sudo firewall-cmd –permanent –zone=public –add-service=https –add-service=http
sudo firewall-cmd –reload

Enable nginx service by running systemctl command so that it starts at server boot time:

sudo systemctl enable nginx

start the service, run:

sudo systemctl start nginx

Commands to start/stop/restart nginx server

Run command as per your needs.

sudo systemctl start nginx  <– start the server ##
sudo systemctl stop nginx  <– stop the server ##
sudo systemctl restart nginx  <– restart the server ##
sudo systemctl reload nginx  <– reload the server ##
sudo systemctl status nginx  <– get status of the server ##

You must open and enable port 80 and 443 using the firewall-cmd command:

sudo firewall-cmd –permanent –zone=public –add-service=http –add-service=https
sudo firewall-cmd –reload
sudo firewall-cmd –list-services –zone=public

Now nginx is installed. Bellow are some important directories (defaults) i

Config directory – /etc/nginx/
Maibn global config file – /etc/nginx/nginx.conf
TCP ports opened by Nginx – 80 (HTTP), 443 (HTTPS)
Default web document root directory – /usr/share/nginx/html
Access log file – /var/log/nginx/access.log
Error log file – /var/log/nginx/error.log

IoT Linux web

When i execute brew install mongodb the error message above appears :

Error: No available formula with the name "mongodb"
==> Searching for a previously deleted formula (in the last
month)...
Warning: homebrew/core is shallow clone. To get complete history
run:git -C "$(brew --repo homebrew/core)" fetch --unshallow
Error: No previously deleted formula found.
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.

How i solve this problem:

The formula mongodb has been removed from homebrew-core.  So i need to use a custom tap made by mongodb team

I used the following commands

brew update
brew tap mongodb/brew
brew install mongodb-community
sudo mkdir /data/db
chmod -Rv <myusername> /data/db

Now i can run mongod to start the server or if you want you can use brew services start mongodb-community

Uncategorized

Just setup this on a customer today. Befor this setup you need to install a certificate on your server.

SMTP sessions conducted over a standard TCP/IP channel are vulnerable to eavesdropping because the unencoded transmission can be easily intercepted. To protect SMTP communications, servers can use transport-layer security (TLS), more commonly known as SSL encryption, to provide privacy and authentication.

Some servers support SSL for SMTP communications by sending and receiving SMTP traffic through the SSL port (port 465 by default) only. However, because this requires that both the sending and receiving servers support SMTP over SSL, this solution isn’t always practical.

To provide SSL security for SMTP transfers over TCP/IP, Domino® supports the use of negotiated SSL. In a negotiated SSL scheme, the sending and receiving hosts each use the SMTP STARTTLS extension, defined in RFC 2487, to signal their readiness to negotiate an SSL connection. The receiving server displays the STARTTLS keyword in response to the sending server’s EHLO command. The sending server issues the STARTTLS command to request the creation of a secure connection. After the initial TLS handshake completes successfully, the two parties proceed to set up an SSL channel between them. Both the sending and receiving server must possess SSL certificates.

Supporting STARTTLS for outbound SMTP sessions

A Domino server configured to use negotiated SSL for outbound mail connects to the receiving server’s SMTP TCP/IP port (port 25 by default). If the initial SMTP response from the receiving server indicates that it supports the STARTTLS extension, Domino issues the STARTTLS command to request the use of SSL to encrypt the rest of the session.

If the receiving server did not advertise support for STARTTLS in response to the Domino server’s EHLO command, the sending Domino server continues with an unencrypted SMTP TCP/IP session.

To enable outbound STARTTLS support, set the SMTP outbound TCP/IP port status to: Negotiated SSL.

Domino

I have this problem today after i change my account on my macbook.

The solution that worked for me was to delete the OneDrive Cached Credential key from the Keychain. The procedure was the following:

  1. Launch Spotlight Search (shortcut: command + space), type keychain, and press return. This should launch the Keychain Access app.
  2. Type OneDrive into the Keychain Access search box. This should show a short list of keys related to OneDrive.
  3. Click on the key called “OneDrive Standalone Cached Credential” or some variant thereof.
  4. Press the delete key (or use the menu item Edit > Delete) to delete the cached credential key.
  5. Restart  OneDrive.
  6. Enter your user and password again.

I found the solution above on Apple forum.

Uncategorized

I found today this link https://ibmcloud-watson-day.mybluemix.net/.

There are several tutorials about IBM Watson API’s

watson

IBM Champions demonstrate both expertise in and extraordinary support and advocacy for IBM technology, communities, and solutions.

I am an IBM Champion since the first class  (2011) an this year i wish to be  an IBM Champion for the year 2020.

New Champion Nominations are open now through 22 November 2019. Current IBM Champions may submit a renewal through 9 November 2019.

To nominate an IBM Champion use this link

 

Uncategorized