Cloud server with Matrix
Matrix is an open protocol for decentralized and secure messaging. A cloud server with Matrix is a software server that provides communication and data synchronization within the Matrix network.
In Servercore, a cloud server with Matrix includes:
- Synapse — a server implementation of the Matrix protocol;
- Element Web — a web interface for the Matrix network, which allows you to interact with the Matrix network via a web browser without installing additional software;
- Coturn — open-source software that helps establish direct audio, video, and data connections between devices over the internet.
You can create a cloud server with a pre-installed Matrix application. In Russia, the application runs on a cloud server with a pre-configured SelectOS 1 64-bit operating system. In other countries — Ubuntu 22.04.
Before creating a cloud server with an application, read the software license agreements included with the image.
Minimum resource requirements
Create a cloud server with Matrix
For Matrix to work, the cloud server must be accessible from the internet. To achieve this, you must create a private subnet and attach a public IP address when creating the server. To configure Matrix, you need to specify user data—custom operating system configuration parameters—while creating the server.
After the server with Matrix is created, a free TLS certificate from Let’s Encrypt® will be automatically issued for the domain you specify. To issue the certificate, add an A record for the domain and specify the server's public IP address as the record value. The domain can be added to Servercore DNS Hosting (actual).
1. Create a public IP address
Create a public IP address so that the cloud server with Matrix is accessible from the internet.
Use the Create a public IP address section of the Public IP addresses guide.
2. Add an A record for the domain
Add a resource record to access Matrix by domain.
Specify:
- resource record type in the group — A; ;
- record value — the public IP address that you created in step 1.
3. Create a server with Matrix
-
In the Control panel, on the top menu, click Products and select Cloud Servers.
-
Click Create server.
-
Fill in the blocks:
-
Check the cloud server price.
-
Click Create.
Name and placement
-
Enter the server name. It will be set as the hostname in the operating system.
-
Select the location where the server will be created. The available list of server configurations and resource costs depend on the location. You cannot change the location after the server is created.
Source
-
Open the Applications tab.
-
Select Cloud Matrix.
-
Optional: if you need a different current or archived application version, in the Version field, select the required version.
Configuration
Select a configuration from 2 vCPU, RAM starting from 4 GB and a boot disk size starting from 20 GB. For all lines, except Shared and Dedicated, two types of server configurations are available:
- fixed configurations — ranges with different specifications, in which the resource ratio is fixed;
- custom configurations — configurations in which any resource ratio can be specified.
Different processors are used in configurations depending on the line and pool segment. You can configure the selected configuration. After the server is created, you can change the configuration.
Fixed configuration
Custom configuration
-
Open the tab with the range.
-
Click Fixed.
-
Optional: you can configure the setting if you are creating a server in a multi-zone pool ru-6 segment, or the ru-3b, ru-7a, and ru-7b pool segments:
3.1. Expand the block with the configuration settings.
3.2. Optional: select the processor manufacturer. Choosing a manufacturer is not available in all pools.
3.3. Optional: if you do not want physical processor cores pinned to the cloud server vCPUs, clear the Dedicated cores checkbox. For more details, see the Dedicated cores tutorial.
3.4. Optional: if you want to disable Hyper-Threading for a dedicated core server, clear the Hyper-Threading (SMT) checkbox.
3.5. Optional: if you are creating a cloud server with dedicated cores and want to host a multiprocessor server on a single NUMA node, check the Mandatory Hosting on a single NUMA node checkbox. You can host a server with 4 vCPUs or more on a single NUMA node. If the cloud server resources cannot be placed on one node, it will not be created. For more information, see the Placement on a single NUMA node section of the Dedicated cores tutorial.
-
Select a configuration.
-
If both local and network volumes are available in the selected configuration, select the disk to be used as the boot disk:
- local disk — select the Local SSD NVMe disk checkbox. A server with a local disk can only be created from images and applications;
- network volume — do not select the Local SSD NVMe disk checkbox.
The amount of RAM allocated to the server may be less than specified in the configuration — the operating system kernel reserves some RAM depending on the kernel version and distribution. You can check the allocated capacity on the server using the
sudo dmesg | grep Memorycommand.
Volumes
-
If you did not check the Local SSD NVMe disk checkbox when setting up the configuration, the first specified network volume will be used as the server boot disk. To configure it:
1.1. Select the network boot disk type.
1.2. Specify the size of the network boot disk in GB or TB. Observe the network volume limits for the maximum size.
1.3. If you selected the Universal v2 or Fast SSD v2 disk type, specify the total number of read and write operations in IOPS. After creating the volume, you can change the IOPS value — reduce or increase it. The number of IOPS changes is unlimited.
-
Optional: add an additional server network volume :
2.1. Click Add.
2.2. Select the network volume type.
2.3. Specify the size of the network disk in GB or TB. Observe the network volume limits for the maximum size.
2.4. If you selected the Universal v2 or Fast SSD v2 disk type, specify the total number of read and write operations in IOPS. After creating the volume, you can change the IOPS value — reduce or increase it. The number of IOPS changes is unlimited.
After creating the server, you can attach new additional disks.
Network
The server can be added to a new private subnet or an existing one.
Private — a subnet without internet access or with one static public IP address. The public IP address is connected to the server, which will be accessible from the internet.
Existing private subnet
New private subnet
-
Click Private subnet.
-
In the Public IP address for internet access field, select a public IP address that you created earlier or create a new one.
-
Expand the block with the private subnet settings.
-
In the Subnet field, select an existing subnet.
-
In the Private IP field, specify the private IP address of the server. A public IP address will be automatically connected to the private address.
Security
Select security groups to filter traffic on server ports. Without security groups, traffic will be denied. If the block is missing, traffic filtering (port security) is turned off in the server network. With traffic filtering disabled, all traffic will be allowed.
Access
-
Place an SSH key for the project on the server for secure connection:
1.1. If the SSH key for the project has not been added to the cloud platform, click Add SSH key, enter the key name, paste the public key in OpenSSH format, and click Add.
1.2. If the SSH key for the project has been added to the cloud platform, select an existing key in the SSH key field. The SSH key is only available in the pool where it is located.
-
Optional: in the Password for 'root' field:
2.1. Copy the password for the
rootuser — the user with unrestricted privileges for all system actions.2.2. Save the password in a secure place and do not share it in plain text.
Additional settings
-
Optional: if you plan to create multiple servers and want to increase infrastructure fault tolerance, add the server to a placement group:
1.1. To create a new group, in the Placement group field, click Create.
1.2. Select New group and enter the group name.
1.3. Choose a placement policy across different hosts:
- preferable — soft-anti-affinity. The system will attempt to place servers on different hosts. If there is no suitable host when creating the server, it will be created on the same host;
- mandatory — anti-affinity. Servers in the group must be located on different hosts. If there is no suitable host when creating the server, the server will not be created.
1.4. Once the group is created, in the Placement group field, select the placement group.
-
Optional: to add additional information or filter servers in the list, add server tags. OS and configuration tags are added automatically. To add a new tag, in the Tags field, enter the tag.
-
To add a script that will be executed using the cloud-init agent at the first operating system startup, in the Automation block in the User data field:
- open the Text tab and paste the script as text;
- or open the File tab and upload the file with the script.
#cloud-config
write_files:
- path: "/opt/gomplate/values/user-values.yml"
permissions: "0644"
content: |
domain: "<example.com>"
adminEmail: "<root@example.com>"
Specify:
<example.com>— the domain to access the Matrix web interface, which you added in step 2;<root@example.com>— the Matrix administrator's email for issuing a Let’s Encrypt® certificate.
Create a Matrix user
-
Connect to the cloud server via SSH.
After connecting to the cloud server, a message about available actions will appear. Example output:
1) Управление пользователями2) Обновление Synapse / Element-Web0) Выход -
Go to the user management menu; to do this, enter
1and press Enter. -
Create a user; to do this, in the user management menu enter
1and press Enter. -
Enter the username and press Enter.
-
Enter the user password and press Enter.
-
Ensure the user was created.
6.1. Open the user list; to do this, in the user management menu enter
6and press Enter.6.2. Make sure that the username you entered in step 4 is in the list.
6.3. Return to the menu; to do this, enter
0and press Enter. -
Optional: make the user an administrator.
7.1. Open administrator rights configuration; to do this, in the user management menu enter
2and press Enter.7.2. Enter the username of the user you want to make an administrator.