.. _internet-guide: =================== Hosting on internet =================== .. warning:: Until now, those communications are not encrypted but are planned to be in a mid-term future (`Status `_). This tutorial aims to guide you to host a collaborative Session on internet. Hosting a session can be done is several ways: - :ref:`host-blender`: hosting a session directly from the blender addon pannel. - :ref:`host-dedicated`: hosting a session directly from the command line interface on a computer without blender. .. _host-blender: ------------- From blender ------------- By default your router doesn't allow anyone to share you connection. In order grant server access to people from internet you have tow main option: * The :ref:`connection-sharing`: the easiest way. * The :ref:`port-forwarding`: this one is the most unsecure, if you have no networking knowledge, you should definitively go to :ref:`connection-sharing`. .. _connection-sharing: Using a connection sharing solution ----------------------------------- Many different third party software like `ZEROTIER `_ (Free) or `HAMACHI `_ (Free until 5 users) allow you to share your private network with other peole. For the example I'm gonna use ZeroTier because its free and open soure. 1. Installation ^^^^^^^^^^^^^^^ Let's start by downloading and installing ZeroTier: https://www.zerotier.com/download/ Once installed, launch it. 2. Network creation ^^^^^^^^^^^^^^^^^^^ Before trying to connect to any network we need to create one. Only the host need to do this step. To create a ZeroTier private network you need to create a ZeroTier account `on my.zerotier.com `_ (click on **login** then register on the bottom) Once you account it activated, connect you to `my.zerotier.com `_. Head up to the **Network** section(highlighted in red in the image below). .. figure:: img/hosting_guide_head_network.png :align: center ZeroTier user homepage Hit 'Create a network' and go to the network settings. .. figure:: img/hosting_guide_create_network.png :align: center Network page Now that the network is created, let's quickly configure it. .. _port-forwarding: Using port-forwarding --------------------- 2. **Not secure** but simple: Setup port forwarding for each ports (for example 5555,5556,5557 and 5558 in our case). You can follow this `guide `_ for example. To know which port are used by the Once you have setup the network, you can run **HOST** in order to start the server. Then other users could join your session in the regular way. .. _host-dedicated: -------------------------- From the dedicated server -------------------------- .. code-block:: bash docker run -it --rm \ -p 5555-5560:5555-5560 \ -e port=5555 \ -e password=admin \ -e timeout=1000 \ registry.gitlab.com/slumber/multi-user/multi-user-server:0.0.3 .. _port-setup: ----------------------- Port setup (optionnal) ----------------------- The multi-user network architecture is based on a clients-server model. The communication protocol use four ports to communicate with client: * Commands: command transmission (such as **snapshots**, **change_rights**, etc.) [given port] * Subscriber : pull data [Commands port + 1] * Publisher : push data [Commands port + 2] * TTL (time to leave) : used to ping each clients [Commands port + 3] To know which ports will be used, you just have to read the port in your preference. .. figure:: img/hosting_guide_port.png :align: center :alt: Port Port in host settings In the picture below we have setup our port to **5555** so it will be: * Commands: 5555 (**5555**) * Subscriber: 5556 (**5555** +1) * Publisher: 5557 (**5555** +2) * TTL: 5558 (**5555** +3) Those four ports needs to be accessible from the client otherwise it wont work at all !