Введение
Если вы подбираете себе чат сервер и проверяете различные варианты, рекомендую так же посмотреть на сервер MyChat. Я его тестировал и достаточно подробно описал. Возможно, вам он подойдет больше, чем все остальное.
Информация по Matrix Synapse без проблем гуглится, поэтому не буду подробно рассказывать, что это такое. Кратко пройдемся по основному:
- Matrix — это открытый протокол для децентрализованной коммуникации. Он может быть реализован в различных серверах и мессенджерах.
- Synapse — локальный сервер, который работает на протоколе matrix, обеспечивает возможность подключения и общения клиентов.
- Riot — клиент, который может подключаться к любому серверу, работающему по протоколу matrix, в том числе к synapse. Представлен в виде десктропной или web версии, которую можно установить на свой сервер.
Далее мы займемся установкой локальной версии Matrix Synapse для подключения своих клиентов. На этом же сервере разместим веб клиента Riot. Все это дело снабдим ssl сертификатом. В общем, на выходе должны получить готовое бесплатное локальное решение для корпоративного чата.
Сразу хочу предупредить, что мое описание не подходит под готовое руководство, которое позволит простым копипастом все настроить. Это руководство именно по matrix и riot, вы должны как минимум уметь настраивать web сервер с nginx, устанавливать сертификаты, проксировать запросы, если вам это понадобится.
Запуск Synapse
Создайте сценарий OpenRC для управления демоном Synapse:
/etc/init.d/synapse
#!/sbin/openrc-run # Copyright 2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 name="Synapse daemon" description="Synapse daemon" command=/var/calculate/synapse/env/bin/synctl command_user=synapse command_args="${synapse_args}" directory=/var/calculate/synapse pidfile="/var/calculate/synapse/homeserver.pid" depend() { use net need postgresql nginx } start() { ebegin "Starting Synapse" start-stop-daemon -u "${command_user}" -S "${command}" \ -d "${directory}" -p "$pidfile" \ -- start &>/dev/null eend $? } stop() { ebegin "Stopping Synapse" start-stop-daemon -u "${command_user}" -K "${command}" \ -d "${directory}" -p "$pidfile" -- stop eend $? }
Установите права на запуск:
chmod 0755 /etc/init.d/synapse
Запустите демон Synapse:
/etc/init.d/synapse start
Добавьте Synapse в автозагрузку:
rc-update add synapse
Matrix-сервер настроен и готов к работе! Но это только начало пути. Впереди вас ждет открытие удивительных возможностей вашего персонального сервера Matrix.
Riot Client Installation
You do not have to install your own riot web client version. You can use the public web client https://riot.im/app/, and use it to connect to your server. To do this, specify the address of your server during the connection.
To connect via riot, you must have configured https connection. It won’t succeed in connecting using the usual protocol, there will be an error.
Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.
or like this:
Can't connect; check your SSL settings and trust the server
I tried this way and that, but it turned out to be easier and faster to make an SSL certificate from Let’s Encrypt than to deal with errors. In general, get a certificate in any way convenient for you.
In order to install riot’s own web client, it is enough to download its sources and place them on a web server. The latest version can be downloaded from here – https://github.com/vector-im/riot-web/releases. Next, I use the latest version at the time of writing.
# wget https://github.com/vector-im/riot-web/releases/download/v0.13.3/riot-v0.13.3.tar.gz # tar -xzvf riot-v0.13.3.tar.gz
Next, copy the contents of the unpacked directory to the root folder of the web server for the domain that you have assigned. In my example, this is /web/sites/riot.serveradmin.ru/www/.
We draw approximately such a config for publishing riot on the web.
# cat /etc/nginx/conf.d/riot.conf
server { listen 80; server_name riot.serveradmin.ru; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name riot.serveradmin.ru; root /web/sites/riot.serveradmin.ru/www/; index index.php index.html index.htm; access_log /web/sites/riot.serveradmin.ru/log/access.log main; error_log /web/sites/riot.serveradmin.ru/log/error.log; ssl on; ssl_certificate /etc/letsencrypt/live/riot.serveradmin.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/riot.serveradmin.ru/privkey.pem; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; location /.well-known { root /web/sites/riot.serveradmin.ru/www/; } }
We re-read the nginx config and you can go to the specified web address to use your riot client. There is a configuration file in the client directory config.sample.json. Rename it to config.json and change the default connection server setting. Indicate your.
"default_hs_url": "https://chat.serveradmin.ru",
This is enough to use your own riot web client at the configured address.
Configuring reverse proxy with nginx
Matrix recommends setting up a reverse proxy, such as nginx, Apache or HAProxy, in front of your Synapse server. This is intended to simplify client connections by allowing Matrix to use the common HTTPS port 443 while keeping the server-to-server connections at the port 8448.
Change the default home server configuration to only listen to the localhost address for the port 8008. Open the homeserver.yaml file for edit.
nano ~/synapse/homeserver.yaml
Find the following segment and set the bind only to the address 127.0.0.1 and check that the forward flag is set to true as shown below. You can leave the rest as is, we’ll terminate the SSL at the proxy so Matrix does not need to worry about TLS settings.
- port: 8008 tls: false bind_addresses: type: http x_forwarded: true
Save the file and exit.
Next, enable nginx to act as the reverse proxy by creating a configuration file for the proxy functionality.
sudo nano /etc/nginx/conf.d/matrix.conf
Then enter the following to enable the proxy with SSL termination. Replace the matrix.example.com with your domain in the server name. The certificates issued by Let’s Encrypt are saved under the directory indicated in the Certbot output, usually under /etc/letsencrypt/live/. Again, replace the matrix.example.com with the domain name the certificates were issued for.
server { listen 80; listen :80; server_name matrix.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl; listen :443 ssl; server_name matrix.example.com; ssl on; ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/matrix.example.com/privkey.pem; location / { proxy_pass http://localhost:8008; proxy_set_header X-Forwarded-For $remote_addr; } } server { listen 8448 ssl default_server; listen :8448 ssl default_server; server_name matrix.example.com; ssl on; ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/matrix.example.com/privkey.pem; location / { proxy_pass http://localhost:8008; proxy_set_header X-Forwarded-For $remote_addr; } }
The above nginx configuration includes three parts to help make using your Matrix Synapse home server as easy as possible. It listens for secure connections as ports 443 for HTTPS and 8448 for Matrix federation server-to-server communication. Connections to the insecure HTTP port 80 are redirected to use HTTPS instead.
Once you’re done, save the file and exit the editor.
Then start and enable nginx.
sudo systemctl restart nginx sudo systemctl enable nginx
Enabling TLS
Matrix Synapse now requires TLS enabled by default to allow the server to be used securely. The easiest way to configure TLS is to obtain SSL certificates from a trusted Certificate Authority such as Let’s Encrypt.
The Let’s Encrypt’s Certbot client is primarily distributed via Snap packages. Check below the instructions for installing Snap and Certbot client for your operating system.
The OS templates for Ubuntu 18 and 20 on UpCloud have Snap installed by default. Simply check that Snap is at its latest version and then use Snap to install Certbot.
sudo snap install core; sudo snap refresh core sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot
For Debian 10, install Snap first, then Certbot.
sudo apt-get install snapd -y sudo snap install core; sudo snap refresh core sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot
On CentOS 8 systems, you will first need to install the Extra Packages for Enterprise Linux (EPEL), followed by Snap and then Certbot itself.
sudo dnf install -y epel-release sudo dnf install -y snapd sudo snap install core; sudo snap refresh core sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot
You’ll also need to have a webserver available for Certbot to use for validating the certificate. Install nginx using the instructions below according to your operating system.
On Debian and Ubuntu systems, simply run the following command.
sudo apt-get install nginx
Nginx for CentOS 8 is also installed from the Extra Packages for Enterprise Linux (EPEL) which we already did for Certbot so just install Nginx with the command below.
sudo dnf install nginx
With the Certbot client and Nginx installed, you can obtain certificates using the certonly command together with the --nginx plugin. Include at least one domain name by replacing the matrix.example.com with yours.
Then use the Certbot client as shown in the example below.
sudo certbot certonly --nginx -d matrix.example.com
The command starts an interactive configuration script that asks a couple of questions to help with managing certificates.
- On the first installation on any specific host, you’ll need to enter a contact email.
- Then go through the Let’s Encrypt Terms of Service and select Agree if you accept the terms and wish to use the service.
- Choose whether you wish to share your email address with the Electronic Frontier Foundation (EFF) for updates on their work.
If the client was successful at obtaining a certificate you can find a confirmation and certificate expiration date at the end of the client output.
In case you are having problems with the client, make sure you are trying to register a domain or subdomain that currently resolves to your server as DNS configurations might take a moment to propagate. Also, check that you are running the command with admin privileges.
When the certificates have been issued successfully, you’ll need to enable them for the Synapse home server.
Другие статьи о Интернете и сетях
- Web Development Portal
- Networking
- Networking libraries — сравнение различных сетевых библиотек
- Brook Framework — Идеальный фреймворк Free Pascal для ваших веб-приложений. Это чистый Паскаль. Вам не нужно оставлять предпочитаемый язык программирования.
- Sockets — Компоненты сокетов TCP/IP
- fcl-net — Сетевая библиотека, поставляемая с FPC
- lNet — Легковесные сетевые компоненты
- Synapse — Последовательный порт и синхронная библиотека TCP/IP
- XML Tutorial -XML, часто использующиеся в сетевых коммуникациях
- FPC and Apache Modules
- fcl-web — Также известная как fpWeb, это библиотека для разработки веб-приложений, которые можно развернуть как модули cgi, fastcgi или apache.
- Безопасное программирование
- Internet Tools — Обертка для HTTP-компонентов Synapse/wininet/Android, упрощающая https и перенаправления, и механизм XPath/XQuery/CSS Selector/JSONiq для обработки загруженных страниц.
Шаг 6. Назначение роли администратора Active Directory SQL
Создатель рабочей области автоматически настраивается как администратор SQL Active Directory для рабочей области. Только один пользователь или одна группа может иметь эту роль. На этом шаге роль администратора SQL Active Directory в рабочей области будет назначена группе безопасности . Назначение этой роли дает этой группе широкие права администратора для доступа ко всем пулам и базам данных SQL в рабочей области.
- Откройте портал Azure.
- Перейдите на страницу .
- В разделе Параметры выберите Администратор SQL Active Directory
- Нажмите Задать администратора и выберите
Примечание
Шаг 6 не является обязательным. Группе можно предоставить и менее привилегированную роль. Чтобы назначить роль или другие роли SQL, необходимо выполнять скрипты в каждой базе данных SQL.
Установка Matrix Synapse home server
Я буду устанавливать чат сервер на CentOS 7
Если у вас еще нет сервера, то смотрите мои статьи по установке и базовой настройке centos.Сразу обращаю внимание, что у меня на сервере будет отключен selinux. Как это сделать, смотрите в статье по настройке сервера, ссылка на которую выше
Для работы synapse server необходим Python 2.7, который в CentOS 7 установлен по-умолчанию. Убедиться в этом можно введя в консоли:
Сервер чата synapse может использовать различные базы данных. По-умолчанию, он работает с SQLite, что подходит только для теста. В продакшене использовать эту базы плохое решение. Но даже для теста у меня не получилось настроить работу с SQLite. По-умолчанию, в CentOS устанавливается очень старая версия базы. При ее использовании возникает ошибка и сервер не работает. Я обновил базу до последней версии, но как оказалось, с ней тоже возникают проблемы. Я почитал на эту тему обсуждения и понял, что проблема распространенная, а не уникальная, поэтому решил в ней не разбираться. Вместо этого сразу буду использовать postgresql, что является самым надежным и разумным выбором.
Устанавливаю соответствующий моей версии репозиторий:
Ставим самую свежую на момент написания статьи версию postgresql:
Инициализируем базу данных:
Редактируем конфигурационный файл для включения MD5 аутентификации.
Меняем строки в самом конце:
на
Запускаем PostgreSQL и добавляем в автозагрузку:
Заходим в систему под пользователем postgres:
Создаем пользователя базы данных:
Запускаем консольный клиент для работы с базой данных:
Задаем пароль userpass для только что созданного пользователя:
Создаем базу данных для чат сервера matrix synapse:
Выходим из консоли управления и учетной записи postgres.
Установим еще несколько пакетов, необходимых для взаимодействия synapse с postgresql.
Подготовительные действия выполнили, теперь можно устанавливать сам сервер. Для этого установим необходимые зависимости.
Устанавливаем менеджер пакетов Python — pip.
Создаем виртуальную среду для приложения synapse. Она используется для изоляции отдельного python проекта. Проект будет использовать свои собственные директории и библиотеки, без взаимодействия с глобальным окружением.
Устанавливаем необходимые пакеты питона.
Обновляем setuptools:
Устанавливаем сам сервер matrix synapse.
Перед запуском сервера, необходимо создать файл конфигурации. Делаем это.
Я использую доменное имя для своего чат сервера chat.serveradmin.ru
Обращаю внимание на этот параметр. Он важен, если вы захотите использовать полноценный ssl сертификат и https подключения
Используйте реальное доменное имя, на которое потом будете получать сертификат. После выполнения команды вы получите примерно такой вывод:
По умолчанию, в файле конфигурации homeserver.yaml будет указано использовать базу данных SQLite. Комментируем строки, отвечающие за эту настройку и добавляем параметры для подключения созданной ранее postgresql базы.
Обращаю внимание на отступы в файле конфигурации. Они принципиально важны
Должно быть именно так, как показано — database без отступа, name, args один пробел с начала строки. Все остальное — два пробела.
На этом установка сервера закончена, двигаемся дальше.
1: Установка Synapse
Обновите индекс пакетов сервера:
Добавьте в APT официальный репозиторий Matrix:
Чтобы защитить сервер, нужно добавить ключ репозитория. Он позволяет подтвердить, что все файлы и обновления были подписаны разработчиками и репозиторий не содержит поддельных или поврежденных пакетов.
Обновите индекс пакетов, чтобы использовать новый репозиторий.
Теперь установить Synapse можно с помощью пакетного менеджера:
Во время установки будет предложено ввести имя сервера, укажите здесь ваш домен. Также будет предложено отправить анонимную статистику о homeserver в Matrix. Затем Synapse будет установлен.
После установки можно запустить Synapse с помощью systemctl.
Эта команда будет использоваться для запуска Synapse вместе с сервером. Если сервер уже запущен, запустите Synapse вручную с помощью команды:
Identity Servers
They are not where accounts or credentials are stored — these live on home
servers. Identity Servers are just for mapping 3rd party IDs to matrix IDs.
This process is very security-sensitive, as there is obvious risk of spam if it
is too easy to sign up for Matrix accounts or harvest 3PID data. In the longer
term, we hope to create a decentralised system to manage it (matrix-doc #712), but in the meantime,
the role of managing trusted identity in the Matrix ecosystem is farmed out to
a cluster of known trusted ecosystem partners, who run ‘Matrix Identity
Servers’ such as Sydent, whose role
is purely to authenticate and track 3PID logins and publish end-user public
keys.
Использование ssl сертификата Let’s Encrypt
Прежде чем начать настройку сервера, установим на него полноценный ssl сертификат. Если вам это не нужно, можно пропустить данный пункт. Просто посмотреть на чат можно и с самописным сертификатом, который мы получили ранее. Но есть один нюанс. Клиент Riot, который я буду использовать для подключения к серверу, не будет работать с самописным сертификатом. Он будет ругаться на него во время подключения. Так что если вы хотите полноценно протестировать работу мессенджера Riot в связке с matrix synapse, придется установить нормальный сертификат.
Мой сервер с чатом напрямую не смотрит в интернет. Я буду проксировать все подключения к нему через web сервер, на котором установлен nginx. Поэтому получение сертификата нужно выполнять именно на нем. Если у вас matrix сервер будет смотреть напрямую в интернет, то настраивать получение ssl сертификата надо именно на нем.
Прежде чем получить сертификат, нарисовал примерно такой конфиг виртуального домена для nginx.
server { listen 80; server_name chat.serveradmin.ru; location /.well-known { root /web/sites/chat.serveradmin.ru/www/; } }
Подробно про получение сертификатов Let’s Encrypt я рассказывал в статье по настройке веб сервера. За всеми подробностями можете заглянуть туда. Здесь же без подробных пояснений выполняем необходимые действия.
Устанавливаем certbot.
# yum install certbot
Запускаем запрос сертификата.
# certbot certonly
При первом запуске на сервере, нужно будет зарегистрировать новую учетную запись на сервер и указать почтовый ящик. Я все это уже ранее делал, так что просто выбираю тип подтверждения домена:
2: Place files in webroot directory (webroot)
Далее указываю имя домена:
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to cancel): chat.serveradmin.ru
Указываю директорию веб сервера:
Input the webroot for chat.serveradmin.ru: (Enter 'c' to cancel): /web/sites/chat.serveradmin.ru/www
Сертификат получил. Дальше рисую следующий конфиг для виртуального хоста nginx уже для работы по https.
upstream matrix { server 77.37.225.129:22991; } server { listen 80; server_name chat.serveradmin.ru; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name chat.serveradmin.ru; ssl on; ssl_certificate /etc/letsencrypt/live/chat.serveradmin.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/chat.serveradmin.ru/privkey.pem; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; location /.well-known { root /web/sites/chat.serveradmin.ru/www/; } location / { client_max_body_size 50M; proxy_set_header Connection ""; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Frame-Options SAMEORIGIN; proxy_pass http://matrix; } }
На сервере 77.37.225.129 сделан проброс внешнего порта 22991 на локальный 8008. На этом порту работает synapse по незащищенному соединению. Редиректить надо именно на этот порт, так как если сделать переадресацию на защищенный порт, который работает со своим сертификатом, будут проблемы при совместной работе этого локального сертификата и внешнего от Let’s Encrypt.
С сертификатом и самим сервером synapse разобрались. Дальше я предлагаю сначала установить и настроить бесплатный web клиент для чата — Riot. Если он вам не нужен, можно сразу переходить к настройке самого сервера.
Язык запросов
Языки запросов, используемые в Synapse SQL, могут поддерживать разный набор функций в зависимости от модели потребления. В следующей таблице приведены наиболее важные отличия в диалектах языка запросов для Transact-SQL:
Выделенные | Бессерверные приложения | |
---|---|---|
Инструкция SELECT | Да. Не поддерживаются предложения запроса Transact-SQL FOR XML/FOR JSON, MATCH и OFFSET/FETCH. | Да. Не поддерживаются предложения запроса Transact-SQL FOR XML, MATCH и PREDICT, GROUPNG SETS, а также указания запроса. |
Инструкция INSERT | Да | Нет |
Инструкция UPDATE | Да | Нет |
Инструкция DELETE | Да | Нет |
Инструкция MERGE | Да (предварительная версия) | Нет |
Транзакции | Да | Да, применяются к объектам meta-data. |
Метки | Да | Нет |
Загрузка данных | Да. Лучше всего использовать инструкцию COPY, но система поддерживает для загрузки данных как массовую загрузку (BCP), так и CETAS. | Нет |
Экспорт данных | Да. Использование CETAS. | Да. Использование CETAS. |
Типы | Да, все типы Transact-SQL, за исключением cursor, hierarchyid, ntext, text и image, rowversion, пространственных типов, sql_variant и xml. | Да, все типы Transact-SQL, за исключением cursor, hierarchyid, ntext, text и image, rowversion, пространственных типов, sql_variant, xml и табличного типа. |
Запросы баз данных | Нет | Да, включая инструкции USE. |
Встроенные функции (анализ) | Да, все функции аналитики, преобразования, даты и времени, логические и математические функции из Transact-SQL, кроме CHOOSE и PARSE. | Да, все функции аналитики, преобразования, даты и времени, логические и математические функции из Transact-SQL. |
Встроенные функции (строка) | Да. Все функции Transact-SQL для работы со строками, JSON и параметрами сортировки, кроме STRING_ESCAPE и TRANSLATE. | Да. Все функции Transact-SQL для работы со строками, JSON и параметрами сортировки. |
Встроенные функции (криптографические) | Некотор. | нет |
Встроенные функции с табличным значением | Да, все , кроме OPENXML, OPENDATASOURCE, OPENQUERY и OPENROWSET. | Да, все , кроме OPENXML, OPENDATASOURCE и OPENQUERY. |
Статистические выражения | Все встроенные статистические функции Transact-SQL, за исключением CHECKSUM_AGG и GROUPING_ID. | Все встроенные статистические функции Transact-SQL. |
Операторы | Да, все операторы Transact-SQL, кроме !> и !<. | Да, только операторы Transact-SQL. |
Управление потоком | Да. Все инструкции Transact-SQL для управления потоком, за исключением CONTINUE, GOTO, RETURN, USE и WAITFOR. | Да. Все инструкции Transact-SQL для управления потоком, за исключением запроса SELECT в условии . |
Инструкции DDL (CREATE, ALTER, DROP) | Да. Все инструкции DDL из Transact-SQL, применимые к поддерживаемым типам объектов. | Да. Все инструкции DDL из Transact-SQL, применимые к поддерживаемым типам объектов. |
Вкладка «Основные сведения», раздел «Сведения о рабочей области»
Заполните следующие поля:
- Имя рабочей области: выберите любое глобально уникальное имя. В этом учебнике используется имя myworkspace.
- Регион. Выберите регион, в котором вы разместили свои клиентские приложения/службы (например, виртуальная машина Azure, Power BI, служба анализа Azure) и хранилища, содержащие данные (например, хранилище озера данных Azure, аналитическое хранилище Azure Cosmos DB).
Примечание
Рабочая область, не связанная с клиентскими приложениями или хранилищем, может являться основной причиной множества проблем с производительностью. Если ваши данные или клиенты размещены в нескольких регионах, вы можете создавать отдельные рабочие области в разных регионах, размещенные вместе с вашими данными и клиентами.
В разделе Выбор Data Lake Storage 2-го поколения:
- В разделе Имя учетной записи выберите Создать новую и присвойте новой учетной записи хранения имя contosolake или аналогичное имя, так как оно должно быть уникальным.
- В разделе Имя файловой системы выберите Создать новую и присвойте файловой системе имя users. Будет создан контейнер хранилища с именем users. В рабочей области эта учетная запись хранения будет использоваться как основная для таблиц и журналов приложений Spark.
- Установите флажок, позволяющий назначить себе роль «Участник для данных BLOB-объектов хранилища» в учетной записи Data Lake Storage 2-го поколения.
Шаг 2. Подготовка учетной записи хранения ADLS 2-го поколения
Рабочая область Synapse использует контейнер хранилища по умолчанию для:
- хранения резервных файлов данных для таблиц Spark;
- журналов выполнения для заданий Spark.
- Управление библиотеками, выбранными для установки
Введите следующие сведения для однорангового узла виртуального сетевого модуля.
-
Учетная ADLS 2-го поколения, используемая для рабочей области. В настоящей документации — это . считается «главной» учетной записью хранения в рабочей области.
-
Контейнер в , который будет использоваться рабочей областью Synapse по умолчанию. В настоящей документации — это .
-
С помощью портала Azure назначьте группам безопасности следующие роли в
- Роль Участник данных BLOB-объектов хранилища для
- Роль Участник данных BLOB-объектов хранилища для
- Роль Участник данных BLOB-объектов хранилища для
Центры Приватного канала Azure
Используя приватные каналы, вы можете безопасно подключаться к Azure Synapse Studio из виртуальной сети Azure. Центры Приватных каналов Azure Synapse Analytics — это ресурсы Azure, которые выполняют функцию соединителей между защищенной сетью и веб-интерфейсом Synapse Studio.
Подключение к Synapse Studio с помощью приватных каналов выполняется в два шага. Сначала необходимо создать ресурс для центров приватных каналов. Затем необходимо создать частную конечную точку из виртуальной сети Azure в центр приватных каналов. После этого можно использовать частные конечные точки для безопасной связи с Synapse Studio. Частные конечные точки необходимо интегрировать с решением DNS, локальным решением или с Частной зоной DNS Azure.
Используйте в качестве фронтэнда nginx
Это позволит упростить работу с сертификатами доменов, т.к. нет необходимости что-то прописывать в настройках synapse, использовать nginx в качестве прокси при переносе сервера synapse на другой IP адрес, т.е. уменьшить время простоя.
Если вы используете на фронтенде nginx, то нет необходимости разбираться с настройками сертификатов непосредственно в synapse, как их получать, куда их размещать. Используя nginx, вы можете использовать имеющийся опыт работы с сертификатами на других веб-серверах, либо получить этот опыт на своём Matrix-сервере и использовать его при настройке других сервисов. Получение сертификата для домена, например, с Let’s Encrypt, легко автоматизируется в nginx. При этом если вы захотите перенести свой synapse на другую машину, то достаточно будет на nginx прописать настройки прокси, а сертификат необходимый у вас уже будет настроен и доступен. Нужно лишь немного изменить настройку виртуального хоста в nginx на вашей старой машине.
Пример конфигурации nginx
В данной конфигурации производится прослушивание двух портов (443 и 8448), а также двух типов IP адресов IPv4 и IPv6. При этом по IPv4 на порту 443 кроме Matrix можут находиться другие веб-сайты. Для IPv6 для сервиса Matrix выделен отдельный адрес (укажите свой) и другие сайты недоступны через этот порт, поэтому указан параметр default_server.
Порт 8448 используется исключительно для synapse. Для этого порта не используется SNI (Server Name Indication, с которым были проблемы в старых версиях synapse). Кроме этого, т.к. порт используется для федерации с дургими серверами Matrix, я не включаю протокол http2, на всякий случай.
В качестве server_name укажите своё доменное имя.
Файлы логов доступа и ошибок размещены в стандартном месте. Если они не нужны, укажите вместо пути значение off. Если просто закомментировать строки, то лог будет писаться в общий лог nginx.
Пути сертификату и ключу указаны стандартные для сертификатов Let’s Encrypt, полученных через certbot. Эти строки необходимы для работы протокола https.
Ключ client_max_body_size указывает на максимальный размер запроса, фактически это ограничение на размер загружаемых на сервер файлов, т.к. эти запросы самые объёмные. В данном случае указано ограничение в 10 мегабайт.
Ключи root и index указывают на папку с содержимым веб-сайта и файл по умолчанию. В данном случае рассчитывается, что по данному пути будет расположен веб-клиент Riot.im. Благодаря этому подключиться к серверу через браузер можно будет просто введя адрес https://matrix.example.com/. При этом будет запущен клиент Riot.im.
Секция location обеспечивает доступ к API matrix-synapse. Закомментированные строки позволяют получить реальный IP адрес пользователя, если он был подключен через доверенный прокси по адресу xx.xx.xx.xx. Адрес клиента в этом случае берётся из заголовка X-Forwarded-For, который добавляет вышестоящий прокси, а не из IP-адреса источника. По этом причине не следует указывать адреса прокси серверов, которым вы не доверяете, поскольку они могут легко указать любой адрес или не указывать заголовок совсем. Эти же настрйки вышестоящего прокси могут быть перенесены непосредственно в секцию server, тогда они будут действовать на любые контексты на сайте matrix.example.com.
При смене IP адреса вашего matrix-synapse пропишите в настройках nginx на старом сервере следующее:
В качестве адреса сервера yy.yy.yy.yy необходимо указать IP адрес вашего нового сервера (не доменное имя, т.к. оно может всё ещё указывать на текущий сервер).
Последний пункт конфигурации нужен для прохождения проверки при получении нового сертификата Let’s Encrypt. Содержимое файла /etc/nginx/acme.conf:
Папка /var/letsencrypt создана вручную и должна быть указана при создании нового сертификата как webroot, например: