Skip to content

Commit 1d0eabd

Browse files
committed
Deployment Pro on premises refactoring
1 parent dbdb597 commit 1d0eabd

File tree

1 file changed

+55
-35
lines changed

1 file changed

+55
-35
lines changed

docs/openvidu-pro/deployment/on-premises.md

+55-35
Original file line numberDiff line numberDiff line change
@@ -71,50 +71,34 @@ Once you have your instances ready, be sure to meet the following criteria in th
7171

7272
- **2 CPUs and 8GB of RAM at least**, as well as a generous network bandwidth
7373

74-
- **Opened ports in _OpenVidu Server Pro Node_**
74+
- **Configure a domain name**: OpenVidu Pro is deployed using HTTPS because it is mandatory to use WebRTC. Then, if you do not have a domain name, an autogenerated SSL certificate will be used and an ugly warning will appear to your users when enter to your site. And of course you can suffer a man-in-the-middle attack. So it is recommended that you configure a domain name pointing to OpenVidu Server Pro Node public IP (Media Nodes do not need a domain name, it is enough for them to have a public IP). A valid SSL certificate can be automatically generated using Let's Encrypt in the installation process. If you already have a valid SSL certificate of your own, it also can be configured.
7575

76-
- **22 TCP**: to connect using SSH to admin OpenVidu.
77-
- **80 TCP**: if you select Let's Encrypt to generate an SSL certificate this port is used by the generation process.
78-
- **443 TCP**: OpenVidu Inspector is served in standard https port.
79-
- **3478 TCP+UDP**: used by TURN server to resolve clients IPs.
80-
- **40000 - 65535 TCP+UDP**: used by TURN server to establish relayed media connections.<br><br>
76+
- **Port configuration in _OpenVidu Server Pro Node_**
8177

82-
Please take care to close ports not mentioned above to block access to some of the internal services of OpenVidu platform (like Redis). For example, you can configure public/private ports in any cloud platform ([OpenStak security groups](https://docs.openstack.org/horizon/latest/user/configure-access-and-security-for-instances.html#), [AWS security groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html), etc..) or installing [UFW](https://manpages.ubuntu.com/manpages/bionic/en/man8/ufw.8.html) with the following configuration:
78+
- **Open these ports** ([here](#close-ports-in-openvidu-server-pro-node-to-avoid-external-attacks) you have an UFW sample to configure a firewall)
8379

84-
```
85-
ufw allow ssh
86-
ufw allow 80/tcp
87-
ufw allow 443/tcp
88-
ufw allow 3478/tcp
89-
ufw allow 3478/udp
90-
ufw allow 40000:65535/tcp
91-
ufw allow 40000:65535/udp
92-
ufw enable
93-
```
94-
95-
- **Free ports in _OpenVidu Server Pro Node_**: OpenVidu platform services will need the following ports to be available in the machine: 80, 443, 3478, 5442, 5443, 6379. If some of these ports is used by any process, OpenVidu platform won't work correctly. It is a typical error to have an NGINX process in the system before installing OpenVidu. Please uninstall it.
80+
- **22 TCP**: to connect using SSH to admin OpenVidu.
81+
- **80 TCP**: if you select Let's Encrypt to generate an SSL certificate this port is used by the generation process.
82+
- **443 TCP**: OpenVidu Inspector is served by default in standard https port.
83+
- **3478 TCP+UDP**: used by TURN server to resolve clients IPs.
84+
- **40000 - 65535 TCP+UDP**: used by TURN server to establish relayed media connections.<br><br>
9685

97-
- **Opened ports in _Media Nodes_**
86+
- **Close all other ports**: this is VERY important to avoid external attacks to OpenVidu internal services. Check troubleshooting section [Close ports in OpenVidu Server Pro Node to avoid external attacks](#close-ports-in-openvidu-server-pro-node-to-avoid-external-attacks) to learn more about this.
9887

99-
- **22 TCP**: to connect using SSH to admin OpenVidu.
100-
- **40000 - 65535 TCP+UDP**: used by Kurento Media Server to establish media connections.
101-
- **8888 TCP**: Kurento Media Server handler listens on port 8888. <strong style="color: #990000">WARNING!!</strong> Port 8888 **must only be accessible for OpenVidu Server Pro instance**. Access trough this port must be restricted from the Internet, or anyone could spy your sessions.<br><br>
88+
- **Free ports inside the server**: OpenVidu Server Pro Node services will need the following ports to be available inside the machine: 80, 443, 3478, 5442, 5443, 6379. If some of these ports is used by any process, OpenVidu platform won't work correctly. It is a typical error to have an NGINX process in the system before installing OpenVidu. Please uninstall it.
10289

103-
If you use [UFW](https://manpages.ubuntu.com/manpages/bionic/en/man8/ufw.8.html) the configuration is:
104-
105-
```
106-
ufw allow ssh
107-
ufw allow 40000:65535/tcp
108-
ufw allow 40000:65535/udp
109-
ufw allow 8888/tcp from <OPENVIDU_SERVER_PRO_IP>
110-
ufw enable
111-
```
90+
- **Port configuration in _Media Nodes_**
11291

113-
- **Free ports in _Media Nodes_**: OpenVidu platform services will need the port 8888 to be available in the machine.
92+
- **Open these ports** ([here](#close-ports-in-media-nodes-to-avoid-external-attacks) you have an UFW sample to configure a firewall)
11493

115-
- **Configure a domain name**: OpenVidu Pro is deployed using HTTPS because it is mandatory to use WebRTC. Then, if you do not have a domain name, an autogenerated SSL certificate will be used and an ugly warning will appear to your users when enter to your site. And of course you can suffer a man-in-the-middle attack. So it is recommeded that you configure a domain name pointing to **OpenVidu Server Pro Node** public IP. A valid SSL certificate can be automatically generated using Let's Encrypt in the installation process. If you already have a valid SSL certificate of your own, it also can be configured.
94+
- **22 TCP**: to connect using SSH to admin OpenVidu.
95+
- **80 TCP**: to allow OpenVidu Server Pro Node downloading recording files.
96+
- **40000 - 65535 TCP+UDP**: used by Kurento Media Server to establish media connections.
97+
- **8888 TCP**: Kurento Media Server handler listens on port 8888. <strong style="color: #990000">WARNING!!</strong> Port 8888 **must only be accessible for OpenVidu Server Pro instance**. Access trough this port must be restricted from the Internet, or anyone could spy your sessions.<br><br>
11698

99+
- **Close all other ports**: this is VERY important to avoid external attacks to OpenVidu internal services. Check troubleshooting section [Close ports in Media Nodes to avoid external attacks](#close-ports-in-media-nodes-to-avoid-external-attacks) to learn more about this.
117100

101+
- **Free ports inside the server**: Media Node services will need the port 8888 to be available inside the machine.
118102

119103
<br>
120104

@@ -219,7 +203,7 @@ [email protected]
219203
By default, the [OpenVidu Call](demos/openvidu-call/){:target="_blank"} application is deployed alongside OpenVidu Platform. It is accessible in the URL:
220204

221205
```console
222-
https://openvidu_domain_or_public_ip/
206+
https://OPENVIDU_DOMAIN_OR_PUBLIC_IP/
223207
```
224208

225209
This application is defined in file `docker-compose.override.yml`. To disable OpenVidu Call application, you can delete the file `docker-compose.override.yml` (or just rename it in case you want to enable it again in the future).
@@ -610,6 +594,25 @@ Configuration properties
610594

611595
To change the level of _openvidu-server_ logs change the property `OV_CE_DEBUG_LEVEL` in configuration file `.env`.
612596

597+
#### Close ports in OpenVidu Server Pro Node to avoid external attacks
598+
599+
Closing all non-necessary ports in your OpenVidu Server Pro Node machine is very important to avoid external attacks. Some administrators using OpenVidu have reported attacks because their ports weren't properly closed. Of course, all of the opened ports stated in [Prerequisites](#1-prerequisites) section must be accessible from the exterior, but the rest must be closed to grant proper protection.
600+
601+
Typically, cloud providers initiate their machines with all ports closed by default, so usually it is only necessary to open the required ones. For example, you can configure public/private ports in in OpenStack with [OpenStack security groups](https://docs.openstack.org/horizon/latest/user/configure-access-and-security-for-instances.html#){:target="_blank"}, in AWS with [AWS security groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html){:target="_blank"}, etc...
602+
603+
If your only choice is to manually configure a firewall, you can for example install in any GNU/LInux system the great [UFW (Uncomplicated Firewall)](https://manpages.ubuntu.com/manpages/bionic/en/man8/ufw.8.html){:target="_blank"} (`sudo apt install ufw`) with the following configuration to only allow the required ports necessary in your OpenVidu Server Pro Node:
604+
605+
```
606+
ufw allow ssh
607+
ufw allow 80/tcp
608+
ufw allow 443/tcp
609+
ufw allow 3478/tcp
610+
ufw allow 3478/udp
611+
ufw allow 40000:65535/tcp
612+
ufw allow 40000:65535/udp
613+
ufw enable
614+
```
615+
613616
---
614617

615618
### Troubleshooting Media Nodes
@@ -657,6 +660,23 @@ To change the level of Kurento Media Server _kms_ logs change the property `KMS_
657660

658661
OpenVidu and Kurento Media Server evolve at a different pace. Sometimes, it is possible that a new KMS is released but OpenVidu is not still updated. In that case, if you hit a bug that might be solved in the last KMS version, you can test if just updating KMS fixes your issue. `KMS_IMAGE` property allows you to specify the new KMS image in configuration file `.env`.
659662

663+
#### Close ports in Media Nodes to avoid external attacks
664+
665+
Closing all non-necessary ports in your Media Node machines is very important to avoid external attacks. Some administrators using OpenVidu have reported attacks because their ports weren't properly closed. Of course, all of the opened ports stated in [Prerequisites](#1-prerequisites) section must be accessible from the exterior, but the rest must be closed to grant proper protection.
666+
667+
Typically, cloud providers initiate their machines with all ports closed by default, so usually it is only necessary to open the required ones. For example, you can configure public/private ports in in OpenStack with [OpenStack security groups](https://docs.openstack.org/horizon/latest/user/configure-access-and-security-for-instances.html#){:target="_blank"}, in AWS with [AWS security groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html){:target="_blank"}, etc...
668+
669+
If your only choice is to manually configure a firewall, you can for example install in any GNU/LInux system the great [UFW (Uncomplicated Firewall)](https://manpages.ubuntu.com/manpages/bionic/en/man8/ufw.8.html){:target="_blank"} (`sudo apt install ufw`) with the following configuration to only allow the required ports necessary in your Media Nodes:
670+
671+
```
672+
ufw allow ssh
673+
ufw allow 80/tcp
674+
ufw allow 40000:65535/tcp
675+
ufw allow 40000:65535/udp
676+
ufw allow 8888/tcp from <OPENVIDU_SERVER_PRO_IP>
677+
ufw enable
678+
```
679+
660680
<br>
661681

662682
<script src="js/copy-btn.js"></script>

0 commit comments

Comments
 (0)