Эта статья была перенесена из блога в сообщество Tencent Cloud, поэтому в форматировании может возникнуть некоторая путаница.
Рекомендуется читать в блоге:https://www.baiyuyu.com/304.html
Чтобы удовлетворить потребности частного общения, сообщество с открытым исходным кодом постоянно разрабатывает и совершенствует инструменты обмена мгновенными сообщениями, а Matrix является одним из превосходных протоколов зашифрованной связи. Когда я исследовал эту тему, я обнаружил, что учебные пособия в Интернете фрагментированы и разбросаны, поэтому я просто сам составил более полное, надеясь быть полезным тем, кто придет после меня.
Протокол Matrix поддерживает множество функций: децентрализованную связь, сквозное шифрование, голосовые вызовы/видеозвонки WebRTC, запросы на чтение сообщений, запросы о статусе ввода, групповые чаты...
Мало того, что, как следует из названия: «Матрица», если вы являетесь администратором этого сервера, вы также можете разрешить вашему серверу Matrix формировать матричную сеть с другими серверами Matrix, позволяя пользователям общаться с пользователями других серверов Matrix.
Все разговоры на серверах Matrix полностью зашифрованы и чрезвычайно безопасны.
Сквозное шифрование можно понимать как прямую связь между двумя терминалами. Приведем пример, чтобы было легче понять:
Предположим, что Сяо Мин использует
Устройство
Для СяохунОборудование Б
отправил сообщение,В это время Сяо Хэй хотел посмотреть, о чем они говорят.,Ю да Сяохэй украл аккаунт Сяохун пароль,и преуспелсуществоватьУстройство С
начальство Авторизоваться Получил аккаунт Сяохун。 Может ли Сяо Хэй увидеть историю чата между ними двумя? не могу. При сквозном зашифрованном разговоре все исходящие сообщения автоматически шифруются. Когда Сяо Мин отправляет сообщение Сяо Хуну,Он также автоматически прикрепитсяначальство Строка, используемая для расшифровки этого сообщенияизКлюч дешифрования
。СяохунсуществоватьОборудование Б
начальствополучатьприезжатьновости,Получил эту строку одновременноКлюч дешифрования
,Таким образом, вы можете просматривать сообщения в обычном режиме.。Но Сяохэй его не получил.Ключ дешифрования
,Поэтому невозможно расшифровать эти исторические сообщения. Сквозное шифрование на сегодняшний день является относительно наиболее безопасным методом защиты конфиденциальности и может удовлетворить потребности безопасности большинства людей.
Некоторые скажут: «Мне не нужен такой высокий уровень безопасности, это слишком избыточно!»
При фактическом использовании вы можете снять флажок «Сквозное шифрование» при создании нового разговора.
Matrix — это протокол, а Matrix Synapse — это конкретная реализация протокола Matrix.
Кроме того, Синапс Это всего лишь Сервер, у которого нет графического интерфейса. Нам также нужна поддержка. Matrix Нормально общаться может только клиент протокола. Общая поддержка Matrix Клиентами протокола являются:
Cinny (новое поколение Matrix Клиент, пользовательский интерфейс Простой и современный дизайн):
В этой статье в основном говорится о Synapse Серверизразвертывать。
Если вы развертываете клиент, вы можете обратиться к другой моей статье. https://www.baiyuyu.com/127.html 。
Сначала зайдите в панель управления доменным именем и добавьте запись A разрешения DNS.
⚠ Уведомление Эта статья следует «Клиент/Сервер разделяет доменное имя» Написано по ситуации, это то, что я считаю лучшим решением. «Клиент/Сервер разделяет доменное имя» В случае имени пользователя Форматда:
@user:xxx.com
。И если Сервер Используется домен второго уровня,ноимя пользователястанет@user:server.xxx.com
, лично я чувствую себя немного некрасиво ... Поэтому рекомендуется поделиться доменным именем! Если вы хотите, чтобы клиент использовал два разных доменных имени (например,xxx.com
какклиентдоменное имя,server.xxx.com
как доменное имя Сервера), может также относиться к Официальная документация 。
Для удобства переключитесь на пользователя root:
sudo su
Обновите источник программного обеспечения:
sudo apt upadte
Установите docker и создайте docker:
curl -L https://get.docker.com | sh
cd /
mkdir -p /var/matrix-synapse-data/
Уведомление: Имя домена не может быть изменено позже.
docker run -it --rm -v /var/matrix-synapse-data/:/data/ -e SYNAPSE_SERVER_NAME=Ваше доменное имя Сервера -e SYNAPSE_REPORT_STATS=no matrixdotorg/synapse:latest generate
Объясните каждый параметр:
-v /var/matrix-synapse-data/:/data/
Это конкретный путь сопоставления, и его не нужно изменять.-e SYNAPSE_SERVER_NAME
да Ваше доменное имя сервера, Эта статья следует«Клиент/Сервер разделяет доменное имя»изнаписание ситуации-e SYNAPSE_REPORT_STATS
Отправлять ли анонимную статистику
docker run -d --name synapse -v /var/matrix-synapse-data/:/data/ -p 8008:8008 -p 8009:8009 -p 8448:8448 matrixdotorg/synapse:latest
Пучок имя пользователя
и пароль
Измените значение, которое вы хотите установить:
docker exec -it synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml -a -u имя пользователя -p пароль
Рекомендуется прочитать самостоятельно Официальная документация:https://matrix-org.github.io/synapse/latest/welcome_and_overview.html
сейчассуществовать,тыиз/var/matrix-synapse-data/
Должен быть каталог с именемhomeserver.yaml
издокумент,Отредактируйте это:
vi /var/matrix-synapse-data/homeserver.yaml
homeserver.yaml
виз Содержаниеда Matrix Ключом сервера является Конфигурация, который используется для настройки различных функций и параметров сервера.
Вот некоторые ключевые элементы, которые можно скопировать:
# Включить регистрацию для новых пользователей
enable_registration: true
# Нет электронной почты или recaptcha Просто подтвердите и зарегистрируйтесь (на самом деле не рекомендуется)
enable_registration_without_verification: true
# Клиент используется для доступа к этому Homeserver базовый публичный URL
public_baseurl: Ваше доменное имя Сервера
# По умолчанию другие серверы попытаются передать порт 8448 Получите доступ к нашему серверу и сообщите другим серверам отправлять трафик на порт. 443
serve_server_wellknown: true
Окончательный конфигурационный файл может выглядеть так, см.:
server_name: "<server.xxx.com>" # Модифицировано на ваше доменное имя Сервера
pid_file: /data/homeserver.pid
listeners:
- port: 8008
tls: false
type: http
x_forwarded: true
#bind_addresses: ['127.0.0.1']
resources:
- names: [client, federation, openid] # Openid здесь предназначен для удобства последующего использования третьей стороной OIDC Авторизоваться
compress: false
log_config: "/data/<server.baiyuyu.com>.log.config" # Модифицировано на ваше доменное имя Сервера
media_store_path: /data/media_store # путь хранения медиафайлов, обычно не требует изменения
registration_shared_secret: "****************" # Сохраните исходную конфигурацию, никаких изменений не требуется.
report_stats: true
macaroon_secret_key: "****************" # Сохраните исходную конфигурацию, никаких изменений не требуется.
form_secret: "****************" # Сохраните исходную конфигурацию, никаких изменений не требуется.
signing_key_path: "/data/<server.xxx.com>.signing.key" #Модифицировано на ваше доменное имя Сервера
trusted_key_servers:
- server_name: "matrix.org"
suppress_key_server_warning: true
presence:
enabled: true
email:
smtp_host: smtp.exmail.qq.com #вашmtpserver
smtp_port: 465 #generalда465
smtp_user: "<тыиз Почта>" #Заполните сами
smtp_pass: "<тыиз Почтапароль>" #Заполните сами
force_tls: true
require_transport_security: true
enable_tls: true
notif_from: «Имя отправителя» #Измените имя отправителя, которое вы хотите установить
enable_notifs: true
notif_for_new_users: false
client_base_url: "https://<xxx.com>" #Измените доменное имя вашего клиента
validation_token_lifetime: 15m
invite_client_location: https://<xxx.com> #Измените доменное имя вашего клиента
#templates:
# custom_template_directory: /path/to/custom/templates/
#Настраиваемый шаблон электронного письма, см. Официальную страницу. документация Конфигурация https://matrix-org.github.io/synapse/latest/templates.html
#Заголовки следующих типов писем можно настроить:
subjects:
message_from_person_in_room: "%(person)s существовать %(room)s Вам отправлено сообщение в чат"
message_from_person: "%(person)s Отправил вам сообщение"
messages_from_person: "%(person)s Отправил вам несколько сообщений"
messages_in_room: «У вас есть строка от %(room)s Сообщения в чате"
messages_in_room_and_others: «У тебя есть немного от %(room)s Чаты и сообщения других людей"
messages_from_person_and_others: "[%(app)s] у тебя есть кое-что от %(person)s и Новости от других"
invite_from_person_to_room: "%(person)s приглашаю вас присоединиться %(room)s чат"
invite_from_person: "%(person)s Приглашаем вас зарегистрироваться<xxx.com>"
password_reset: "【<xxx.com>】парольперезагрузить"
email_validation: "【<xxx.com>】Подтвердить васизэлектронная почта"
max_avatar_size: 10M #Максимальный размер загружаемого аватара, обычно не требует изменения
federation_domain_whitelist: #Белый список в сочетании с другими серверами Matrix обычно не требует изменения.
# - server.baiyuyu.com
# - bbb.example.com
# - ccc.example.com
allow_profile_lookup_over_federation: false
database:
name: sqlite3 #Для удобства здесь в качестве базы данных выбран sqlite3. Вы также можете использовать базу данных PostgreSQL, см. Официальную информацию. документациясамоходный Конфигурация args:
database: /data/homeserver.db
max_upload_size: 1024M #Максимальный размер загружаемого файла, обычно не требует изменения
enable_registration: true #да Включать ли регистрацию, вообще модифицировать не нужно
enable_registration_captcha: true #да Нет включения recaptchat
recaptcha_public_key: "<填入тыизrecaptchatоткрытый ключ>"
recaptcha_private_key: "<填入тыизrecaptchatзакрытый ключ>"
registrations_require_3pid: #Разрешенные методы регистрации 3pid
- email
allow_guest_access: false #новички
user_directory:
enabled: true
search_all_users: true
prefer_local_users: true
show_locked_users: false
### При первом использовании рекомендуется удалить весь контент ниже этой разделительной линии. См. Официальная. документациясвязанный OIDC После обучения перейдите к настройке.
oidc_providers:
- idp_id: microsoft
idp_name: Microsoft
#idp_icon: "mxc://**********/**********" #icon (необязательно)
issuer: "https://login.microsoftonline.com/**********/v2.0"
client_id: "**********"
client_secret: "**********"
scopes: ["openid", "profile"]
authorization_endpoint: "https://login.microsoftonline.com/**********/oauth2/v2.0/authorize"
token_endpoint: "https://login.microsoftonline.com/**********/oauth2/v2.0/token"
userinfo_endpoint: "https://graph.microsoft.com/oidc/userinfo"
user_mapping_provider:
config:
localpart_template: "{{ user.preferred_username.split('@')[0] }}"
display_name_template: "{{ user.name }}"
⚠ Уведомление В этом наборе конфигурации используется встроенный SQLite База данных, если количество пользователей относительно велико, вы также можете изменить ее на официально рекомендуемую. PostgreSQL
После завершения редактирования сохраните и перезапустите Docker-контейнер.
docker ps
docker restart synapse
Следующее редактирование nginx Конфигурационный файл。
потому что Сервериклиентподелитесь однимдоменное имя,Конфигурация здесь немного сложнее,Вы можете скопировать следующую конфигурацию,Вы также можете сначала прочитать Официальную документация:https://matrix-org.github.io/synapse/latest/delegate.html
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
server_name www.xxx.com xxx.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name www.xxx.com baiyuyu.com;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA;
#Укажите, когда использовать SSLv3 и TLS протокол, пароль сервера имеет приоритет над паролем клиента.
ssl_prefer_server_ciphers on;
ssl_stapling on;
#Включить или отключить пару серверов OCSP Проверка ответов.
ssl_stapling_verify on;
#HSTSStrategy, Один год: 31536000 , 180 дней: 15552000, 30 дней: 2592000
###########add_header Strict-Transport-Security "max-age=15552000; includeSubDomains; preload" always;
#Анти-XSS-атаки
add_header X-Xss-Protection 1;
ssl_certificate https/aaa.pem; #Измените фактическое местоположение самостоятельно
ssl_certificate_key https/aaa.key;
ignore_invalid_headers off;
client_max_body_size 0;
proxy_read_timeout 600s;
error_page 403 404 500 502 503 504 /index.html;
index index.htm index.html;
# доступ WEB клиент
location / {
root /www/wwwroot/baiyuyu.com/your-path; #вебклиент путь,Вы можете выбрать элемент или цинни,Пучокклиент Выпуск исходного кодаприезжатьты喜欢изв каталоге
try_files $uri $uri/ =404;
}
# Пучок /.well-known/ и /_matrix/ Все запросы по этому пути перенаправляются на внутренний сервер.
location ~ ^/(_matrix|.well-known|_synapse)/ {
proxy_pass http://127.0.0.1:8008;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Proxy-Host $proxy_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_ssl_protocols TLSv1.2 TLSv1.3;
}
}
Перезагрузите или перезагрузите nginx ,делать Конфигурация Вступить в силу:
nginx -s reload
На этом этапе поздравляем с успешным завершением настройки сервера Synapse.
Далее вы можете изучитьклиент Понятно,Вы также можете прочитать мою статью:https://www.baiyuyu.com/127.html 。
Далее есть несколько вариантов на выбор.
Вы все еще помните шаги, которые только что были сделаны с первой учетной записью администратора? Это немного хлопотно?
Synapse-admin — очень полезная панель управления, позволяющая легко управлять пользователями и комнатами на сервере Matrix через графический интерфейс.
⚠ Уведомление Если бы только сейчас “Nginx «обратный прокси» В этих шагах вы напрямую скопировали предоставленную мной конфигурацию. файл, то нет необходимости выполнять какую-либо дополнительную настройку, пропустите этот столбец и продолжайте читать следующее содержимое. В противном случае проверьте конфигурацию. файлиз
location
да Не включает/_matrix
и/_synapse/admin
две части,чтобы правильно открыть этот порт для доступа в Интернет.
от https://github.com/Awesome-Technologies/synapse-admin/releases/latest Загрузите последнюю версию Synapse-admin в каталог вашего сервера.
Перейдите в корневой каталог сайта,Создать новую папку,Вы можете взять что-то вродеsynapse-admin
、synapse-panel
такизимя。
⚠ Уведомление Конечно, лучше всего выбрать сложное имя, известное только вам, чтобы повысить безопасность.
В качестве титула. Тогда вы можете использовать его в обычном режиме.
假如тыиздокумент夹命名为panel
,тогда ты сможешь пройтиhttps://<тыиздоменное имя>/panel
доступприезжать Synapse-admin панель.
На этом установка Synapse-admin завершена.
OIDC или OpenID Connect — это сторонний протокол входа в систему, который можно рассматривать как ветвь OAuth.
Вы можете взглянуть на официальный сервер, который поддерживает множество сторонних логинов:
Конфигурация также очень проста, вам нужно только отредактировать ту, что есть сейчас. homeserver.yaml
Соответствующие его части в порядке.
Этот контент из связанного OIDC,Официальная документация Там очень подробно написано, можете посмотреть.
Вот простой список проблем, с которыми я столкнулся:
1. Внутренний WeChat и QQ Ни за что Конфигурация OIDC Войти, они не соответствуют стандарту OpenID Согласен, я долго над этим работал, но безуспешно.
2023/12 Пополнить: если пройдет auth0 Кажется, такой транзит возможен? Еще не изучен
2. Майкрософт OIDC: Если нажать Официальную Зайдите в документацию и вы обнаружите, что личный кабинет использовать нельзя. Рекомендуется обратиться к следующей Конфигурации (конечная точка была изменена)
- idp_id: microsoft
idp_name: Microsoft
issuer: "https://login.microsoftonline.com/consumers/v2.0"
client_id: «Заполните свое»
client_secret: «Заполните свое»
scopes: ["openid", "profile"]
authorization_endpoint: "https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize"
token_endpoint: "https://login.microsoftonline.com/consumers/oauth2/v2.0/token"
userinfo_endpoint: "https://graph.microsoft.com/oidc/userinfo"
user_mapping_provider:
config:
localpart_template: "{{ user.preferred_username.split('@')[0] }}"
display_name_template: "{{ user.name }}"
3. Apple OIDC: сложно. Если вы хотите открыть «Войти через Apple», вы должны заплатить ежегодную плату за учетную запись разработчика в размере 688 юаней...
4. Каждый метод входа в систему может устанавливать значок отдельно, но способ установки значка очень интересен: вам нужно сначала отправить файл значка в интерфейс чата, а затем щелкнуть правой кнопкой мыши, чтобы проверить элемент, чтобы получить значок. mxc Адрес ресурса , скопируйте его для дальнейшего использования. а затем обратно в homeserver.yaml
документиз Соответствующие части,Пучокэто mxc Заполните адрес. Первый раз делал, долго искал и не нашел даже туториала. .
В любом случае, это все! Надеюсь, это вам поможет ( •̀ ω •́ )
Эта статья может часто пересматриваться и обновляться, пожалуйста, не стесняйтесь переходить сюда. https://www.baiyuyu.com/304.html Проверять.
Заявление об авторских правах: Данная статья является оригинальной работой автора, воспроизведение без разрешения запрещено, в противном случае будет наложена юридическая ответственность.
Исходный адрес:https://www.baiyuyu.com/304.html