diff --git a/bigbluebutton-html5/deploy_to_usr_share.sh b/bigbluebutton-html5/deploy_to_usr_share.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6f03a45fca63f51e5d508063346ba96e1fb637c6
--- /dev/null
+++ b/bigbluebutton-html5/deploy_to_usr_share.sh
@@ -0,0 +1,105 @@
+#!/bin/sh -e
+
+# Please check bigbluebutton/bigbluebutton-html5/dev_local_deployment/README.md
+
+echo " start "
+pwd
+UPPER_DESTINATION_DIR=/usr/share/meteor
+DESTINATION_DIR=$UPPER_DESTINATION_DIR/bundle
+
+SERVICE_FILES_DIR=/usr/lib/systemd/system
+LOCAL_PACKAGING_DIR=/home/bigbluebutton/dev/bigbluebutton/bigbluebutton-html5/dev_local_deployment
+
+sudo rm -rf "$UPPER_DESTINATION_DIR"
+sudo mkdir -p "$UPPER_DESTINATION_DIR"
+sudo chown -R meteor:meteor "$UPPER_DESTINATION_DIR"
+
+# the next 5 lines may be temporarily commented out if you are sure you are not tweaking the required node_modules after first use of the script. This will save a minute or two during the run of the script
+if [ -d "node_modules" ]; then
+   rm -r node_modules/
+fi
+meteor reset
+meteor npm install --production
+
+
+sudo chmod 777 /usr/share/meteor
+METEOR_DISABLE_OPTIMISTIC_CACHING=1 meteor build $UPPER_DESTINATION_DIR --architecture os.linux.x86_64 --allow-superuser
+
+sudo chown -R meteor:meteor "$UPPER_DESTINATION_DIR"/
+echo 'stage3'
+
+
+tar -xzf $UPPER_DESTINATION_DIR/bigbluebutton-html5.tar.gz -C $UPPER_DESTINATION_DIR
+
+
+cd "$DESTINATION_DIR"/programs/server/ || exit
+npm i --production
+echo "deployed to $DESTINATION_DIR/programs/server\n\n\n"
+
+echo "writing $DESTINATION_DIR/mongod_start_pre.sh"
+sudo cp $LOCAL_PACKAGING_DIR/mongod_start_pre.sh "$DESTINATION_DIR"/mongod_start_pre.sh
+
+echo "writing $DESTINATION_DIR/mongo-ramdisk.conf"
+sudo cp $LOCAL_PACKAGING_DIR/mongo-ramdisk.conf "$DESTINATION_DIR"/mongo-ramdisk.conf
+
+echo "writing $DESTINATION_DIR/bbb-html5-with-roles.conf"
+sudo tee "$DESTINATION_DIR/bbb-html5-with-roles.conf" >/dev/null <<HERE
+# Default = 1; Min = 1; Max = 4
+# On powerful systems with high number of meetings you can set values up to 4 to accelerate handling of events
+NUMBER_OF_BACKEND_NODEJS_PROCESSES=2
+# Default = 1; Min = 0; Max = 8
+# If 0 is set, bbb-html5 will handle both backend and frontend roles in one process (default until Feb 2021)
+# Set a number between 1 and 4 times the value of NUMBER_OF_BACKEND_NODEJS_PROCESSES where higher number helps with meetings
+# stretching the recommended number of users in BigBlueButton
+NUMBER_OF_FRONTEND_NODEJS_PROCESSES=2
+
+HERE
+
+echo "writing $DESTINATION_DIR/systemd_start.sh"
+sudo cp $LOCAL_PACKAGING_DIR/systemd_start.sh "$DESTINATION_DIR"/systemd_start.sh
+
+echo "writing $DESTINATION_DIR/systemd_start_frontend.sh"
+sudo cp $LOCAL_PACKAGING_DIR/systemd_start_frontend.sh "$DESTINATION_DIR"/systemd_start_frontend.sh
+
+echo "writing $DESTINATION_DIR/workers-start.sh"
+sudo cp $LOCAL_PACKAGING_DIR/workers-start.sh "$DESTINATION_DIR"/workers-start.sh
+
+sudo chown -R meteor:meteor "$UPPER_DESTINATION_DIR"/
+sudo chmod +x "$DESTINATION_DIR"/mongod_start_pre.sh
+sudo chmod +x "$DESTINATION_DIR"/systemd_start.sh
+sudo chmod +x "$DESTINATION_DIR"/systemd_start_frontend.sh
+sudo chmod +x "$DESTINATION_DIR"/workers-start.sh
+
+
+
+echo "writing $SERVICE_FILES_DIR/bbb-html5-frontend@.service"
+sudo cp $LOCAL_PACKAGING_DIR/bbb-html5-frontend@.service "$SERVICE_FILES_DIR"/bbb-html5-frontend@.service
+
+echo "writing $SERVICE_FILES_DIR/bbb-html5-backend@.service"
+sudo cp $LOCAL_PACKAGING_DIR/bbb-html5-backend@.service "$SERVICE_FILES_DIR"/bbb-html5-backend@.service
+
+sudo systemctl daemon-reload
+
+echo 'before stopping bbb-html5:'
+ps -ef | grep node-
+sudo netstat -netlp | grep -i node
+echo 'before stopping bbb-html5:'
+echo '_____________'
+
+sudo systemctl stop bbb-html5
+
+sleep 5s
+echo 'after stopping bbb-html5:'
+ps -ef | grep node-
+sudo netstat -netlp | grep -i node
+echo 'after stopping bbb-html5:'
+echo '_____________'
+
+echo 'starting bbb-html5'
+sudo systemctl start bbb-html5
+sleep 10s
+echo 'after:...'
+ps -ef | grep node-
+sudo netstat -netlp | grep -i node
+echo 'after:'
+echo '_____________'
diff --git a/bigbluebutton-html5/dev_local_deployment/README.md b/bigbluebutton-html5/dev_local_deployment/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..26059d922859eee2c95a28f191d897413182dfbc
--- /dev/null
+++ b/bigbluebutton-html5/dev_local_deployment/README.md
@@ -0,0 +1,9 @@
+Last change on Feb 16, 2021
+
+This directory contains files needed for the correct deployment of bigbluebutton-html5 **on a development environment**. 
+
+They are very similar, or even identical to the files used for `bbb-html5` packaging, however, the main difference is that this set of files may be unintentionally **out of date**.
+ 
+The script `deploy_to_usr_share.sh` was written to allow developers to be able to wipe out the `/usr/share/meteor` directory where `bbb-html5` package is installed, and at the same time build their local code and deploy it so it replaces the default `bbb-html5`. The script has been indispensible during the work on https://github.com/bigbluebutton/bigbluebutton/pull/11317 where multiple NodeJS processes were to run simultaneously but using different configuration.
+
+
diff --git a/bigbluebutton-html5/dev_local_deployment/bbb-html5-backend@.service b/bigbluebutton-html5/dev_local_deployment/bbb-html5-backend@.service
new file mode 100644
index 0000000000000000000000000000000000000000..7dd06c10b72ee3809af8c1adf24475aa2c78f129
--- /dev/null
+++ b/bigbluebutton-html5/dev_local_deployment/bbb-html5-backend@.service
@@ -0,0 +1,24 @@
+[Unit]
+Description=BigBlueButton HTML5 service, backend instance %i
+Requires=bbb-html5.service
+Before=bbb-html5.service
+BindsTo=bbb-html5.service
+
+[Service]
+PermissionsStartOnly=true
+#Type=simple
+Type=idle
+EnvironmentFile=/usr/share/meteor/bundle/bbb-html5-with-roles.conf
+ExecStart=/usr/share/meteor/bundle/systemd_start.sh %i $BACKEND_NODEJS_ROLE
+WorkingDirectory=/usr/share/meteor/bundle
+StandardOutput=syslog
+StandardError=syslog
+TimeoutStartSec=10
+RestartSec=10
+User=meteor
+Group=meteor
+CPUSchedulingPolicy=fifo
+Nice=19
+
+[Install]
+WantedBy=bbb-html5.service
diff --git a/bigbluebutton-html5/dev_local_deployment/bbb-html5-frontend@.service b/bigbluebutton-html5/dev_local_deployment/bbb-html5-frontend@.service
new file mode 100644
index 0000000000000000000000000000000000000000..2b673965ecad2a7b9d14f38fb169825fa428bb43
--- /dev/null
+++ b/bigbluebutton-html5/dev_local_deployment/bbb-html5-frontend@.service
@@ -0,0 +1,24 @@
+[Unit]
+Description=BigBlueButton HTML5 service, frontend instance %i
+Requires=bbb-html5.service
+Before=bbb-html5.service
+BindsTo=bbb-html5.service
+
+[Service]
+PermissionsStartOnly=true
+#Type=simple
+Type=idle
+EnvironmentFile=/usr/share/meteor/bundle/bbb-html5-with-roles.conf
+ExecStart=/usr/share/meteor/bundle/systemd_start_frontend.sh %i
+WorkingDirectory=/usr/share/meteor/bundle
+StandardOutput=syslog
+StandardError=syslog
+TimeoutStartSec=10
+RestartSec=10
+User=meteor
+Group=meteor
+CPUSchedulingPolicy=fifo
+Nice=19
+
+[Install]
+WantedBy=bbb-html5.service
diff --git a/bigbluebutton-html5/dev_local_deployment/mongo-ramdisk.conf b/bigbluebutton-html5/dev_local_deployment/mongo-ramdisk.conf
new file mode 100644
index 0000000000000000000000000000000000000000..40efff3de594e1ccee6d85d8b1751584099b1da5
--- /dev/null
+++ b/bigbluebutton-html5/dev_local_deployment/mongo-ramdisk.conf
@@ -0,0 +1,32 @@
+# mongod.conf
+
+# for documentation of all options, see:
+#   http://docs.mongodb.org/manual/reference/configuration-options/
+
+storage:
+  dbPath: /mnt/mongo-ramdisk
+  journal:
+   enabled: true
+  wiredTiger:
+    engineConfig:
+         cacheSizeGB: 0
+         journalCompressor: none
+         directoryForIndexes: true
+    collectionConfig:
+         blockCompressor: none
+    indexConfig:
+         prefixCompression: false
+
+systemLog:
+  destination: file
+  logAppend: true
+  path: /var/log/mongodb/mongod.log
+
+net:
+  port: 27017
+  bindIp: 127.0.1.1
+
+
+replication:
+  replSetName: rs0
+
diff --git a/bigbluebutton-html5/dev_local_deployment/mongod_start_pre.sh b/bigbluebutton-html5/dev_local_deployment/mongod_start_pre.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1c831ba8f6c5e49356f29769635ef710d2cda783
--- /dev/null
+++ b/bigbluebutton-html5/dev_local_deployment/mongod_start_pre.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+rm -rf /mnt/mongo-ramdisk/*
+mkdir -p /mnt/mongo-ramdisk
+if /bin/findmnt | grep -q "/mnt/mongo-ramdisk"; then
+  umount /mnt/mongo-ramdisk/
+fi
+if [ ! -f /.dockerenv ]; then
+  mount -t tmpfs -o size=512m tmpfs /mnt/mongo-ramdisk
+fi
+
+chown -R mongodb:mongodb /mnt/mongo-ramdisk
+
+
diff --git a/bigbluebutton-html5/dev_local_deployment/systemd_start.sh b/bigbluebutton-html5/dev_local_deployment/systemd_start.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f31c22cc3e5e7a8c5163986ee8b8c5748a6c7258
--- /dev/null
+++ b/bigbluebutton-html5/dev_local_deployment/systemd_start.sh
@@ -0,0 +1,51 @@
+#!/bin/bash -e
+
+#Allow to run outside of directory
+cd $(dirname $0)
+
+echo "Starting mongoDB"
+
+#wait for mongo startup
+MONGO_OK=0
+
+while [ "$MONGO_OK" = "0" ]; do
+    MONGO_OK=$(netstat -lan | grep 127.0.1.1 | grep 27017 &> /dev/null && echo 1 || echo 0)
+    sleep 1;
+done;
+
+echo "Mongo started";
+
+echo "Initializing replicaset"
+mongo 127.0.1.1 --eval 'rs.initiate({ _id: "rs0", members: [ {_id: 0, host: "127.0.1.1"} ]})'
+
+
+echo "Waiting to become a master"
+IS_MASTER="XX"
+while [ "$IS_MASTER" \!= "true" ]; do
+    IS_MASTER=$(mongo mongodb://127.0.1.1:27017/ --eval  'db.isMaster().ismaster' | tail -n 1)
+    sleep 0.5;
+done;
+
+echo "I'm the master!"
+
+if [ -z $1 ]
+then
+  INSTANCE_ID=1
+else
+  INSTANCE_ID=$1
+fi
+
+PORT=$(echo "3999+$INSTANCE_ID" | bc)
+
+echo "instanceId = $INSTANCE_ID   and port = $PORT   and role is backend (in backend file)"
+
+export INSTANCE_ID=$INSTANCE_ID
+export BBB_HTML5_ROLE=backend
+export ROOT_URL=http://127.0.0.1/html5client
+export MONGO_OPLOG_URL=mongodb://127.0.1.1/local
+export MONGO_URL=mongodb://127.0.1.1/meteor
+export NODE_ENV=production
+export NODE_VERSION=node-v12.16.1-linux-x64
+export SERVER_WEBSOCKET_COMPRESSION=0
+export BIND_IP=127.0.0.1
+PORT=$PORT /usr/share/$NODE_VERSION/bin/node --max-old-space-size=2048 --max_semi_space_size=128 main.js NODEJS_BACKEND_INSTANCE_ID=$INSTANCE_ID
diff --git a/bigbluebutton-html5/dev_local_deployment/systemd_start_frontend.sh b/bigbluebutton-html5/dev_local_deployment/systemd_start_frontend.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3e3d93b07ff92c23e9d80633d5eacaa4fc83da56
--- /dev/null
+++ b/bigbluebutton-html5/dev_local_deployment/systemd_start_frontend.sh
@@ -0,0 +1,51 @@
+#!/bin/bash -e
+
+#Allow to run outside of directory
+cd $(dirname $0)
+
+echo "Starting mongoDB"
+
+#wait for mongo startup
+MONGO_OK=0
+
+while [ "$MONGO_OK" = "0" ]; do
+    MONGO_OK=$(netstat -lan | grep 127.0.1.1 | grep 27017 &> /dev/null && echo 1 || echo 0)
+    sleep 1;
+done;
+
+echo "Mongo started";
+
+echo "Initializing replicaset"
+mongo 127.0.1.1 --eval 'rs.initiate({ _id: "rs0", members: [ {_id: 0, host: "127.0.1.1"} ]})'
+
+
+echo "Waiting to become a master"
+IS_MASTER="XX"
+while [ "$IS_MASTER" \!= "true" ]; do
+    IS_MASTER=$(mongo mongodb://127.0.1.1:27017/ --eval  'db.isMaster().ismaster' | tail -n 1)
+    sleep 0.5;
+done;
+
+echo "I'm the master!"
+
+if [ -z $1 ]
+then
+  INSTANCE_ID=1
+else
+  INSTANCE_ID=$1
+fi
+
+PORT=$(echo "4099+$INSTANCE_ID" | bc)
+
+echo "instanceId = $INSTANCE_ID   and port = $PORT and role is frontend (in frontend file)"
+
+export INSTANCE_ID=$INSTANCE_ID
+export BBB_HTML5_ROLE=frontend
+export ROOT_URL=http://127.0.0.1/html5client
+export MONGO_OPLOG_URL=mongodb://127.0.1.1/local
+export MONGO_URL=mongodb://127.0.1.1/meteor
+export NODE_ENV=production
+export NODE_VERSION=node-v12.16.1-linux-x64
+export SERVER_WEBSOCKET_COMPRESSION=0
+export BIND_IP=127.0.0.1
+PORT=$PORT /usr/share/$NODE_VERSION/bin/node --max-old-space-size=2048 --max_semi_space_size=128 main.js
diff --git a/bigbluebutton-html5/dev_local_deployment/workers-start.sh b/bigbluebutton-html5/dev_local_deployment/workers-start.sh
new file mode 100644
index 0000000000000000000000000000000000000000..806988d395ef203ca51ad3ccfdfc90f304fd2bab
--- /dev/null
+++ b/bigbluebutton-html5/dev_local_deployment/workers-start.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+# Start parallel nodejs processes for bbb-html5. Number varies on restrictions file bbb-html5-with-roles.conf
+
+source /usr/share/meteor/bundle/bbb-html5-with-roles.conf
+
+MIN_NUMBER_OF_BACKEND_PROCESSES=1
+MAX_NUMBER_OF_BACKEND_PROCESSES=4
+
+MIN_NUMBER_OF_FRONTEND_PROCESSES=0 # 0 means each nodejs process handles both front and backend roles
+MAX_NUMBER_OF_FRONTEND_PROCESSES=8
+
+
+# Start backend nodejs processes
+if ((NUMBER_OF_BACKEND_NODEJS_PROCESSES >= MIN_NUMBER_OF_BACKEND_PROCESSES && NUMBER_OF_BACKEND_NODEJS_PROCESSES <= MAX_NUMBER_OF_BACKEND_PROCESSES)); then
+  for ((i = 1 ; i <= NUMBER_OF_BACKEND_NODEJS_PROCESSES ; i++)); do
+    systemctl start bbb-html5-backend@$i
+  done
+fi
+
+
+# Start frontend nodejs processes
+if ((NUMBER_OF_FRONTEND_NODEJS_PROCESSES >= MIN_NUMBER_OF_FRONTEND_PROCESSES && NUMBER_OF_FRONTEND_NODEJS_PROCESSES <= MAX_NUMBER_OF_FRONTEND_PROCESSES)); then
+  if ((NUMBER_OF_FRONTEND_NODEJS_PROCESSES == 0)); then
+    echo 'Need to modify /etc/bigbluebutton/nginx/bbb-html5.nginx to ensure backend IPs are used'
+  fi
+  for ((i = 1 ; i <= NUMBER_OF_FRONTEND_NODEJS_PROCESSES ; i++)); do
+    systemctl start bbb-html5-frontend@$i
+  done
+fi