MelGG
Новорег
- Сообщения
- 21
- Реакции
- 11
- Баллы
- 4
Matrix - это открытый и свободный протокол для децентрализованного общения в реальном времени. Насчёт безопасности в сети не было и нет единого мнения, т.к. это всегда был и будет комплекс мер и знаний, используемых в повседневной жизни, одной волшебной таблетки от всего не существует, но на сегодняшний день уже довольно многими признано, что Matrix - всё же лучшая альтернатива морально устаревающему Jabber (XMPP).
Эта инструкция - пошаговое описание по официальной документации (Installation - Synapse) и без сторонних скриптов, как поднять свой Synapse Homeserver, работающий на протоколе Matrix, для последующего использования в клиенте Element. В сети уже достаточно гайдов по этой тематике, но почему-то подавляющее большинство инструкций либо кривые (есть в командах какие-то нелепые строки, из-за которых система просто не запустится), либо полуобрезанные, либо использующие систему конфигураций Ansible и т.п.
Итак, начнём.
Ubuntu 22.04, 1GB of RAM, 1 CPU, 25GB SSD - для частного общения аренды такого железа будет более чем достаточно. Для работы команды 10-20 человек лучше начать с такого: Ubuntu 22.04, 2GB of RAM, 2 CPU, 60GB SSD.
После покупки доменного имени необходимо внести изменения в записи DNS, это возможно сделать в личном кабинете у абсолютно любого хостинг-регистратора, где был куплен домен, принцип везде один и тот же. Нужно создать запись типа А и указать IP адрес арендованного ранее VPS сервера, выглядит это следующим образом:

Заходим на VPS сервер и обновляем систему следующими командами:
apt update
apt upgrade
После ввода второй команды на появившийся вопрос "Do you want to continue? [Y/n]" отвечаем "y":

Если на момент установки будет (не будет - пропускаем этот шаг, идём сразу к п.4) уведомление о наличии нового ядра, то после нажатия "Ok" выбираем в списке все пункты (используя "пробел" на клавиатуре), затем "Ok":


Перезапускаем сервер:
reboot now
Соединение будет прервано, система перезагрузится. Спустя секунд 20 заходим на VPS.
Сначала запускаем инсталляцию пакетов для будущего ПО:
apt install -y lsb-release wget apt-transport-https

Документация Synapse рекомендует не использовать предустановленные пакеты в системе, поэтому загружаем всё с сайта проекта, добавляя ключ и официальный репозиторий:
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/matrix-org.list

Обновляем пакеты и устанавливаем непосредственно уже сам Matrix-Synapse:
apt update
apt install matrix-synapse-py3
После ввода второй команды, как и ранее на появившийся вопрос "Do you want to continue? [Y/n]" отвечаем "y".
Далее откроется окно, где вводим раннее приобретённое доменное имя и нажимаем "Ok":

Отказываемся от сбора статистики, выбрав "No":

Matrix-Synapse установлен, запускаем его и включаем автозапуск:
systemctl start matrix-synapse
systemctl enable matrix-synapse
Открываем файл конфигурации логов:
nano /etc/matrix-synapse/log.yaml
Находим строчку "filename: /var/log/matrix-synapse/homeserver.log":

И меняем путь на "/dev/null":

Далее сохраняем изменения, нажав на клавиатуре сочетание Ctrl+O, затем Enter, после чего выходим из редактора - Ctrl+X.
Для применения изменений перезапускаем Matrix:
systemctl restart matrix-synapse
В итоге логи будут отправляться в "пустоту".
Устанавливаем клиент Certbot:
apt install certbot
На вопрос "Do you want to continue? [Y/n]" отвечаем "y".
Далее генерируем сертификат (в конце команды редактируете текст, выделенный жёлтым, на своё доменное имя):
certbot certonly --rsa-key-size 2048 --standalone --agree-tos --register-unsafely-without-email -d tsum.shop

Сначала устанавливаем Nginx:
apt install nginx
Как и ранее на вопрос "Do you want to continue? [Y/n]" отвечаем "y".
Далее открываем файл конфигурации:
nano /etc/nginx/nginx.conf
Находим комментарий "Logging Settings":

И ниже редактируем путь для логов, как делали это уже ранее, на "/dev/null" (в этом файле в конце каждой строчки ОБЯЗАТЕЛЬНО наличие ";"):

Сохраняем изменения, нажав на клавиатуре сочетание Ctrl+O, затем Enter, после чего выходим из редактора - Ctrl+X.
Далее создаём новый файл для управления входящими соединениями:
nano /etc/nginx/sites-available/matrix
Затем вставляем в него этот скрипт ("tsum.shop" меняем на своё доменное имя):

Сохраняем изменения, нажав на клавиатуре сочетание Ctrl+O, затем Enter, после чего выходим из редактора - Ctrl+X.
Создаём ссылку на новый файл для Nginx и запускаем тест на отсутствие ошибок:
ln -s /etc/nginx/sites-available/matrix /etc/nginx/sites-enabled/
nginx -t

Прокси на базе Nginx установлен, перезапускаем его и включаем автозапуск:
systemctl restart nginx
systemctl enable nginx

Тут всё максимально просто:
for svc in ssh http https 8448
do
ufw allow $svc
done

Далее включаем брандмауэр (на вопрос, как всегда, соглашаемся, поставив "y") и в итоге проверяем правила:
ufw enable
ufw status numbered

По умолчанию Matrix-Synapse работает с SQLite, и в официальной документации рекомендовано использовать его в целях тестирования или для серверов с небольшой рабочей нагрузкой. В ином случае стоит перейти на Postgres - более совершенный и производительный движок.
Сначала устанавливаем Postgres:
apt install postgresql postgresql-contrib
apt install libpq5
На вопрос "Do you want to continue? [Y/n]" отвечаем "y".
Далее заходим в движок, создаём там нового пользователя "synapse_user" (пароль сохраняем, он нам понадобиться чуть позже) и новую базу данных, вносим разрешение для его локального подключения к базе и обратно возвращаемся к системному пользователю root:
su - postgres
createuser --pwprompt synapse_user
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse
su - root

Открываем в редакторе основной файл конфигурации Homeserver:
nano /etc/matrix-synapse/homeserver.yaml
Удаляем 4 строки сочетанием клавиш Ctrl+K:

И вставляем новые ("Tsum_shop" меняете на свой пароль, сохранённый ранее при создании пользователя "synapse_user"):

Сохраняем изменения, нажав на клавиатуре сочетание Ctrl+O, затем Enter, после чего выходим из редактора - Ctrl+X.
Далее открываем в редакторе файл конфигурации Postgres:
nano /etc/postgresql/14/main/postgresql.conf
Там находим строку "#listen_addresses = 'localhost’", затем разкомментируем её, удалив знак "#" в начале:

Сохраняем изменения, нажав на клавиатуре сочетание Ctrl+O, затем Enter, после чего выходим из редактора - Ctrl+X.
Для применения изменений перезапускаем Matrix:
systemctl restart matrix-synapse
Для проверки настроек на сервере заходим на Matrix Federation Tester и вводим своё доменное имя, нажав затем на кнопку "Go":

Сначала добавляем в файл конфигурации Homeserver секретную фразу (можете заменить на любую свою, выделено жёлтым текстом), затем перезапускаем сервер, чтобы изменения вступили в силу, и регистрируем нового пользователя:
echo "registration_shared_secret: Tsum_shop" >> /etc/matrix-synapse/homeserver.yaml
systemctl restart matrix-synapse
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008

Далее заходим в веб-клиент Element, либо скачиваем и устанавливаем его на свою ОС. Нажимаем “Войти”:

Выбираем "Изменить":

Водите своё доменное имя:

Вводите логин и пароль, нажимаете "Войти":

Не забудьте сразу зайти в настроках в раздел "Шифрование" и сгенерировать ключ безопасности.
Безопасного и приватного всем общения!
Эта инструкция - пошаговое описание по официальной документации (Installation - Synapse) и без сторонних скриптов, как поднять свой Synapse Homeserver, работающий на протоколе Matrix, для последующего использования в клиенте Element. В сети уже достаточно гайдов по этой тематике, но почему-то подавляющее большинство инструкций либо кривые (есть в командах какие-то нелепые строки, из-за которых система просто не запустится), либо полуобрезанные, либо использующие систему конфигураций Ansible и т.п.
Итак, начнём.
1. Арендуем VPS сервер.
Ubuntu 22.04, 1GB of RAM, 1 CPU, 25GB SSD - для частного общения аренды такого железа будет более чем достаточно. Для работы команды 10-20 человек лучше начать с такого: Ubuntu 22.04, 2GB of RAM, 2 CPU, 60GB SSD.
2. Покупаем доменное имя.
После покупки доменного имени необходимо внести изменения в записи DNS, это возможно сделать в личном кабинете у абсолютно любого хостинг-регистратора, где был куплен домен, принцип везде один и тот же. Нужно создать запись типа А и указать IP адрес арендованного ранее VPS сервера, выглядит это следующим образом:

3. Обновляем ОС.
Заходим на VPS сервер и обновляем систему следующими командами:
apt update
apt upgrade
После ввода второй команды на появившийся вопрос "Do you want to continue? [Y/n]" отвечаем "y":

Если на момент установки будет (не будет - пропускаем этот шаг, идём сразу к п.4) уведомление о наличии нового ядра, то после нажатия "Ok" выбираем в списке все пункты (используя "пробел" на клавиатуре), затем "Ok":


Перезапускаем сервер:
reboot now
Соединение будет прервано, система перезагрузится. Спустя секунд 20 заходим на VPS.
4. Устанавливаем Matrix-Synapse.
Сначала запускаем инсталляцию пакетов для будущего ПО:
apt install -y lsb-release wget apt-transport-https

Документация Synapse рекомендует не использовать предустановленные пакеты в системе, поэтому загружаем всё с сайта проекта, добавляя ключ и официальный репозиторий:
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/matrix-org.list

Обновляем пакеты и устанавливаем непосредственно уже сам Matrix-Synapse:
apt update
apt install matrix-synapse-py3
После ввода второй команды, как и ранее на появившийся вопрос "Do you want to continue? [Y/n]" отвечаем "y".
Далее откроется окно, где вводим раннее приобретённое доменное имя и нажимаем "Ok":

Отказываемся от сбора статистики, выбрав "No":

Matrix-Synapse установлен, запускаем его и включаем автозапуск:
systemctl start matrix-synapse
systemctl enable matrix-synapse
5. Перенаправляем логи Matrix-Synapse.
Открываем файл конфигурации логов:
nano /etc/matrix-synapse/log.yaml
Находим строчку "filename: /var/log/matrix-synapse/homeserver.log":

И меняем путь на "/dev/null":

Далее сохраняем изменения, нажав на клавиатуре сочетание Ctrl+O, затем Enter, после чего выходим из редактора - Ctrl+X.
Для применения изменений перезапускаем Matrix:
systemctl restart matrix-synapse
В итоге логи будут отправляться в "пустоту".
6. Создание SSL-сертификата.
Устанавливаем клиент Certbot:
apt install certbot
На вопрос "Do you want to continue? [Y/n]" отвечаем "y".
Далее генерируем сертификат (в конце команды редактируете текст, выделенный жёлтым, на своё доменное имя):
certbot certonly --rsa-key-size 2048 --standalone --agree-tos --register-unsafely-without-email -d tsum.shop

7. Настройка прокси для подключения клиентов через https.
Сначала устанавливаем Nginx:
apt install nginx
Как и ранее на вопрос "Do you want to continue? [Y/n]" отвечаем "y".
Далее открываем файл конфигурации:
nano /etc/nginx/nginx.conf
Находим комментарий "Logging Settings":

И ниже редактируем путь для логов, как делали это уже ранее, на "/dev/null" (в этом файле в конце каждой строчки ОБЯЗАТЕЛЬНО наличие ";"):

Сохраняем изменения, нажав на клавиатуре сочетание Ctrl+O, затем Enter, после чего выходим из редактора - Ctrl+X.
Далее создаём новый файл для управления входящими соединениями:
nano /etc/nginx/sites-available/matrix
Затем вставляем в него этот скрипт ("tsum.shop" меняем на своё доменное имя):
Код:
server {
listen 80;
server_name tsum.shop;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name tsum.shop;
ssl_certificate /etc/letsencrypt/live/tsum.shop/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tsum.shop/privkey.pem;
location /_matrix {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
client_max_body_size 300M;
}
}
server {
listen 8448 ssl;
server_name tsum.shop;
ssl_certificate /etc/letsencrypt/live/tsum.shop/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tsum.shop/privkey.pem;
location / {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
}
}

Сохраняем изменения, нажав на клавиатуре сочетание Ctrl+O, затем Enter, после чего выходим из редактора - Ctrl+X.
Создаём ссылку на новый файл для Nginx и запускаем тест на отсутствие ошибок:
ln -s /etc/nginx/sites-available/matrix /etc/nginx/sites-enabled/
nginx -t

Прокси на базе Nginx установлен, перезапускаем его и включаем автозапуск:
systemctl restart nginx
systemctl enable nginx

8. Настраиваем брандмауэр.
Тут всё максимально просто:
for svc in ssh http https 8448
do
ufw allow $svc
done

Далее включаем брандмауэр (на вопрос, как всегда, соглашаемся, поставив "y") и в итоге проверяем правила:
ufw enable
ufw status numbered

9. Смена движка базы данных (если сервер используется для личных целей или для команды до 5 человек - данный шаг пропускаем и переходим к п. 10).
По умолчанию Matrix-Synapse работает с SQLite, и в официальной документации рекомендовано использовать его в целях тестирования или для серверов с небольшой рабочей нагрузкой. В ином случае стоит перейти на Postgres - более совершенный и производительный движок.
Сначала устанавливаем Postgres:
apt install postgresql postgresql-contrib
apt install libpq5
На вопрос "Do you want to continue? [Y/n]" отвечаем "y".
Далее заходим в движок, создаём там нового пользователя "synapse_user" (пароль сохраняем, он нам понадобиться чуть позже) и новую базу данных, вносим разрешение для его локального подключения к базе и обратно возвращаемся к системному пользователю root:
su - postgres
createuser --pwprompt synapse_user
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse
echo "local synapse synapse_user scram-sha-256" >> /etc/postgresql/14/main/pg_hba.conf
su - root

Открываем в редакторе основной файл конфигурации Homeserver:
nano /etc/matrix-synapse/homeserver.yaml
Удаляем 4 строки сочетанием клавиш Ctrl+K:

И вставляем новые ("Tsum_shop" меняете на свой пароль, сохранённый ранее при создании пользователя "synapse_user"):
Код:
database:
name: psycopg2
args:
user: synapse_user
password: Tsum_shop
database: synapse
host: localhost
cp_min: 5
cp_max: 10

Сохраняем изменения, нажав на клавиатуре сочетание Ctrl+O, затем Enter, после чего выходим из редактора - Ctrl+X.
Далее открываем в редакторе файл конфигурации Postgres:
nano /etc/postgresql/14/main/postgresql.conf
Там находим строку "#listen_addresses = 'localhost’", затем разкомментируем её, удалив знак "#" в начале:

Сохраняем изменения, нажав на клавиатуре сочетание Ctrl+O, затем Enter, после чего выходим из редактора - Ctrl+X.
Для применения изменений перезапускаем Matrix:
systemctl restart matrix-synapse
10. Проверка настроек.
Для проверки настроек на сервере заходим на Matrix Federation Tester и вводим своё доменное имя, нажав затем на кнопку "Go":

11. Регистрация нового пользователя.
Сначала добавляем в файл конфигурации Homeserver секретную фразу (можете заменить на любую свою, выделено жёлтым текстом), затем перезапускаем сервер, чтобы изменения вступили в силу, и регистрируем нового пользователя:
echo "registration_shared_secret: Tsum_shop" >> /etc/matrix-synapse/homeserver.yaml
systemctl restart matrix-synapse
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008

Далее заходим в веб-клиент Element, либо скачиваем и устанавливаем его на свою ОС. Нажимаем “Войти”:

Выбираем "Изменить":

Водите своё доменное имя:

Вводите логин и пароль, нажимаете "Войти":

Не забудьте сразу зайти в настроках в раздел "Шифрование" и сгенерировать ключ безопасности.
Безопасного и приватного всем общения!
Последнее редактирование: