Simple wrapper around NodeRed, RabbitMQ and MongoDB to support a more scalable NodeRed implementation. Also the "backend" for OpenRPA
Join rocket chat #openrpa or check out the community forum
Build to run on docker, how to setup docker is not supported on GitHub/slack
For now only Linux (tested on ubuntu 18LTS) and windows is supported Install NodeJS version 12 (google how to do that, if in doubt, hint, use nvm if you got the wrong version installed) Also you need to have an installation of mongoDB and RabbitMQ Importantent! You need to enable management console in RabbitMQ
On window, run from a command prompt with admin rights
On windows this will require build tools to be present, install using
npm install --global windows-build-tools
On linux this will require build tools to be present. On ubuntu you can install using
sudo apt-get install gcc g++ make
Then to install and run OpenFlow, install the @openiap/openflow package
npm i @openiap/openflow -g
On Linux run with sudo
sudo npm i @openiap/openflow -g
then create a template configuration file using
openflow-cli --init
open and edit openflow.env, if needed, then install the service using
on windows
openflow-cli --install openflow
and on Linux remember to use sudo
sudo openflow-cli --install openflow
then open a browser and visit localhost.openiap.io
For now only Linux (tested on ubuntu 18LTS) and windows is supported Install NodeJS version 12 (google how to do that, if in doubt, hint, use nvm if you got the wrong version installed) This require you to have openflow installed somewhere, or you can use our public openflow at app.openiap.io (noderedremote.env)
On window, run from a command prompt with admin rights
On windows this will require build tools to be present, install using
npm install --global windows-build-tools
On linux this will require build tools to be present. On ubuntu you can install using
sudo apt-get install gcc g++ make
Then to install and run OpenFlow Nodered, install the @openiap/nodered package
npm i @openiap/nodered -g
On Linux run with sudo
sudo npm i @openiap/nodered -g
then create a template configuration file using
openflow-nodered-cli --init
this will create 2 environment files with an example of how to connect to a locally installed openflow or how to connect to app.openiap.io So lets assume you want to run a remote openflow connected to app.openiap.io
on windows
openflow-nodered-cli --install noderedremote
and on Linux remember to use sudo
sudo openflow-nodered-cli --install noderedremote
this will prompt for a pre-created username and password, and then install a local service with the name noderedremote and start it
then open a browser and visit localhost.openiap.io:1880
To quickly get started with your own installation you can use one of these docker-compose files. download the file you want rename to docker-compose.yaml open a shell and cd to that folder you downloaded the file to, and type docker-compose up or docker-compose up -d
docker-compose-traefik.yml is for people running docker ce/docker desktop or docker swarm
docker-compose-toolbox.yml is for people running docker toolbox
docker-compose.yml is for developers who don't want to install mongoDB/RabbitMQ or an easy way to run one instance while debugging the other.
Then you can access the API/web on http://localhost.openiap.io ( or http://toolbox.openiap.io ) You can access nodered on http://nodered1.localhost.openiap.io ( or http://nodered1.toolbox.openiap.io ) and RabbitMQ on http://mq.localhost.openiap.io ( or http://mq.toolbox.openiap.io )
The first username and password you try to login as, will be created and made admin
For help with running on kubernetes or self hosting contact OpenIAP for a support agreement
To quickly get started with your own installation on kubernetes, first install traefik
Each OpenFlow will have it's own namespace, and you create a value file for each instance/namespace Create a file and call it demo1.yaml with this content
# this will be the root domain name hence your openflow url will now be http://demo.mydomain.com
domainsuffix: mydomain.com # this will be added to all domain names
domain: demo
# if traefic is for https using websecure, the you can uncomment the below 2 lines
# you need to tell the name of the secret containing the certificate, I can recomend using kubed for replicating this
# protocol: https
# tlsSecret: wild.mydomain.com
openflow:
# external_mongodb_url: mongodb+srv://user:[email protected]?retryWrites=true&w=majority
rabbitmq:
default_user: admin
default_pass: supersecret
# if you are using mpongodb atlas, or has mongodb running somewhere else
# uncomment below line, and external_mongodb_url in openflow above
# mongodb:
# enabled: false
First add the helm repo and create a new namespace called demo1
helm repo add openiap https://raw.githubusercontent.com/open-rpa/helm-repo/master/
helm repo update
kubectl create namespace demo1
The create the install using
helm install openflow openiap/openflow -n demo1 --values ./demo1.yaml
If you late update your values file you can update your install using
helm upgrade openflow openiap/openflow -n demo1 --values ./demo1.yaml
Read more about this at the githu repo
Install VSCode, NodeJS 12, mongoDB and RabbitMQ You need to enable management console in RabbitMQ
Clone this repo into a folder, in a shell type
git clone https://github.com/open-rpa/openflow.git
go to the folder with openflow
cd openflow
Install gulp and typescript globally
npm i gulp typescript browserify tsify -g
install packages for openflow api/web
npm i
install packages for NodeRED by
cd OpenFlowNodeRED
npm i
cd ..
Now open in VS code
code OpenFlow.code-workspace
at the top level create a folder called config and inside create a file called .env ( notice it starting with a dot)
and add this content to the file
nodered_id=nodered1
nodered_sa=nodered1
port=80
nodered_port=1880
nodered_domain_schema=$nodered_id$.localhost.openiap.io
tls_crt=
tls_key=
tls_ca=
signing_crt=LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURqRENDQW5TZ0F3SUJBZ0lKQUp5N0tIMTE1dkQ4TUEwR0NTcUdTSWIzRFFFQkN3VUFNRnN4Q3pBSkJnTlYKQkFZVEFrUkxNUk13RVFZRFZRUUlEQXBUYjIxbExWTjBZWFJsTVNFd0h3WURWUVFLREJoSmJuUmxjbTVsZENCWAphV1JuYVhSeklGQjBlU0JNZEdReEZEQVNCZ05WQkFNTUMzTnBaMjVwYm1kalpYSjBNQjRYRFRFNU1EUXdOekUwCk5ETXpORm9YRFRJNU1EUXdOREUwTkRNek5Gb3dXekVMTUFrR0ExVUVCaE1DUkVzeEV6QVJCZ05WQkFnTUNsTnYKYldVdFUzUmhkR1V4SVRBZkJnTlZCQW9NR0VsdWRHVnlibVYwSUZkcFpHZHBkSE1nVUhSNUlFeDBaREVVTUJJRwpBMVVFQXd3TGMybG5ibWx1WjJObGNuUXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCCkFRQy9JSkdEaGxLTU9SWkoycXQwSWpjSDZOWUFtZDVxQzQ4dkNJRE54QWZCbmQxQnN4WlVjWkl5dkFlT28yNDcKM3I0eTYwNDgxRHVUS2JaMTBTNjRqRU05aW1XTXB1TFlJRnVyQ3BWNzVEWWhxMS85Q0FJVHJqNjlmVDluSkptcwpjM2lxTnJ1Tlg1bDlISXdadWtQM1ZNRkJRNWZVd3N1ZnE0YW1NbnVnZmtyUEVzSngxK3VJb0NYU3pyblZvcnZpClZ0ZFh4a3M4N0l1S0ZnMDJIZ1RQSzdwc0FXYTBRY3g2ck04bkV5TUhwNUdlR1Rvb1NNbkcyZ1RGNWZOSVFNdTMKVEVoc2p3SWRTYmRwck1Gb1VZV05Bc2FueTJOQk0wREhZRUdjQlZhZ0xWNUhFUW5ySUM3NEhtNjYxdG9HaU5VSAoveW04U3VndTgwWVFiVGxPcTFWNnNkaVRBZ01CQUFHalV6QlJNQjBHQTFVZERnUVdCQlMrYWc1NGtITllKZ29pCm9yRnlia293THR5R3ZqQWZCZ05WSFNNRUdEQVdnQlMrYWc1NGtITllKZ29pb3JGeWJrb3dMdHlHdmpBUEJnTlYKSFJNQkFmOEVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQTZpZHBYdzdSR2pzcUpNanI2c1YvaQpXeXFsL2xkSy9sa1NCdnNBSENieDdQYi9rVUd2NHJNbndYMnBHdTR0YkFnSDc4eStmS3dzazllYkxDeTA4Y1k0Ckt5czhzbUpLenhWN0R6U3RVR1NvZmZMaFliVVVMK3UyNU5vVXc0TG1WQU5FU0NaMTZ3aTdPQUdJMkJnNFR6TXoKdnlIUHRaaE9wTXBNV2lzM2ZnRXFzV3QxS2VLcXo0Z2M5RnJtZDZPNlQzVVAxWTRBR3VEWnNScnpiU2RQS2JxbApxekprT2tQcGtHOGo3ZjFWNkk1ZlkzblZaSWk2YW1TcTM1RTJkQzVMY0dIQXRtT1lWL0c4TEQ3OUFnTVpFUU5vCkF2R2RnV1gvbXBFVkFjMmRFQkJlcUN6WjF1aVhWUjdERld2ZDFKTEpsdVRyTm9jMUROc0xNKzNEZFFiQ2JnYVcKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
singing_key=LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQy9JSkdEaGxLTU9SWkoKMnF0MElqY0g2TllBbWQ1cUM0OHZDSUROeEFmQm5kMUJzeFpVY1pJeXZBZU9vMjQ3M3I0eTYwNDgxRHVUS2JaMQowUzY0akVNOWltV01wdUxZSUZ1ckNwVjc1RFlocTEvOUNBSVRyajY5ZlQ5bkpKbXNjM2lxTnJ1Tlg1bDlISXdaCnVrUDNWTUZCUTVmVXdzdWZxNGFtTW51Z2ZrclBFc0p4MSt1SW9DWFN6cm5Wb3J2aVZ0ZFh4a3M4N0l1S0ZnMDIKSGdUUEs3cHNBV2EwUWN4NnJNOG5FeU1IcDVHZUdUb29TTW5HMmdURjVmTklRTXUzVEVoc2p3SWRTYmRwck1GbwpVWVdOQXNhbnkyTkJNMERIWUVHY0JWYWdMVjVIRVFucklDNzRIbTY2MXRvR2lOVUgveW04U3VndTgwWVFiVGxPCnExVjZzZGlUQWdNQkFBRUNnZ0VBVXBjZ1NsV2hGamNWQ3BVVHdmdUhERVB4TmhGSHEwdVRkQitZaVZKTWg3NVAKL2pRRlVqaEJsT3JyMlJlR2F4aTEyQXNXby9LU1MrV2Frdzd4d1kzYkFKenRoUG9Zekl3dkVKcGlQa2MvblEwUgpUYVpJUDNqc1k3WGIwQlpnMGNTVVAvbW0wbENkWXhNUzk0c21FNXJzWitkdGxPTVlXc2NrU0cxSVB2SlVJV2FZCnl3NC9kaHJ3TWRsREVZS2tSbks1aDR1dXR1dzA1Q1VzNkZWN2F5cEJRRStGM3RxVlF3QWxGbWNueXdvZTB5WjQKZW1tWkRvT1dzNUk4cGNGbjZCSW1wZjN3UEg5UWhlQXJVaXRqV3YrZmI2cWRVaHJFVDBxMzh4dTZ5M1lJNFNLYQpXME9kUng4L3FTYllXdkpzbmxscDR0aUpDWE5IdnV6MVBKSGhxOUprQVFLQmdRRCt2dHlWcVJoaEJZTmd6WWorClFCaDNLcktrNEVqTXZaSGhEelhES0pMZ2JEVmJzNExrQkYySWZGOTF0S1k3d09CNVpXcU82Z3FqVVJBVE5hc1YKOExCOGE2TEpXYVJuTklLMnJkd1FwalFYcy92OVBSYnJwc2tTbDRJdUsyZWNBMjBSQkhicW5yNHZ5ZkQ4U3BzaApSdHlTUk5CRGVsaU01Z1JDM0JKKzBZbjBVUUtCZ1FEQUVZSUp3Y2xnQloyWmNNTlh1dW1lLzUxdHBHeGppRTJpCjZ3SDNsOHNTVDN1U1A4MHdndGdHaVFsUTRsR3BmSThqWkl4N0pwcGw0Qko1ZEtuVnpIS1dqMzA3YXYxcjdpU3QKLzJOVDNobzdaYkNlYzlhMHlJU2E3dTNGZGxzZ0VPcE45dURmbG5GQVQ3ZmIrM2d4Sk9DUWp1TkFCZXZaK2pScwpZY0ZhQWhGNW93S0JnUUNGUG9HVVNsRDFGblFrWXYwL3QzalVnK0hTK1hrNmxnRkNqYmthTGhPOURQeFB6Ykl0CjM5YW9lQjFhTExZeVZPMVVzZVl0Z0Y4MkUwVnNOc3NZKzc3a0pVeU5NclVhUWs0SWpTR3BGN1h4bS9PMi9vZ0oKbEVCaDJCdUFXTFdsMWVqcldNRjJjTGVidVcyeUdMZlJqUVg3LzhCTE95Z3I4bmZTSE5nVHV6Z0VNUUtCZ0JrZgpNUjhObGNWVmRyT25LQ1hGY09FM0ZlUk5hVS9yZUJ3akdQTEZpKzR0TDBDRno5VFVpR1R5YjZHQXVLV3VnUnBrCkFHdnJOSzYyakRRT3FsZ29rYVJYeUUySlJQUmxCYThzaEZWbjY0NXhVcFNuR2lJelNBVHIwM1hNY1ViVWI1RWIKQlhhNU9yN3FybVc3a3BENi9kUnFuQmEzcjQyblNFd1V6VEYwcTh4NUFvR0FIcXdRSyt1R0NTdlNsNENJUGhyRQpDREIvcytDK2NJNXVCeFJCMHVlNjc3L2lpdGZPSU9lOUNiTHE3R0tib0w4RVg3eXhKNVRLWjlYQmh5LzNCWmVNCllydEx3M2JicTNTN2hpUGFYSmE1dXZma3BWR1RnNEdzTnBJQ3VNTEJUaXJ6M0ZRV25UNFNZbzkrREVoalhEeVQKWlVOMERtUkJVNjNjWjRLSUlXd2xWUTA9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K
NODE_ENV=development
saml_federation_metadata=http://localhost.openiap.io/issue/FederationMetadata/2007-06/FederationMetadata.xml
saml_issuer=uri:localhost.openiap.io
# saml_entrypoint=http://localhost.openiap.io/issue
# saml_baseurl=http://localhost.openiap.io:1880/
allow_personal_nodered=false
allow_user_registration=true
# mongodb_url=mongodb://localhost:27017
# mongodb_db=openflow
# api_bypass_perm_check=true
update_acl_based_on_groups=true
multi_tenant=false
websocket_max_package_count=1048576
api_ws_url=ws://localhost.openiap.io
domain=localhost.openiap.io
protocol=http
amqp_url=amqp://localhost
aes_secret=7TXsxf7cn9EkUqm5h4MEWGjzkxkNCk2K
auto_create_users=true
auto_create_domains=
skip_history_collections=audit,jslog
Lastly you need to allow powershell scripts to run, i don't know what is the recommended setting, i normally just go with bypass
Set-ExecutionPolicy Bypass -Force
Now you can run this by going to run ( Ctrl+Shit+D) and selecting OpenFlow in the dropdown box and press play button, select OpenFlowNodeRed in the dropdown and press play again
Lastly we need to start a background job that copies asserts to the dist folder, go to Terminal tab and add a new shelll, then type
gulp
You can now access openflow web on http://localhost.openiap.io and nodered on http://localhost.openiap.io:1880
For further help or education contact OpenIAP for a support agreement