Сверхподробное руководство по развертыванию Matrix Synapse: отличное решение для частного обмена мгновенными сообщениями
Сверхподробное руководство по развертыванию Matrix Synapse: отличное решение для частного обмена мгновенными сообщениями

Советы по чтению

Эта статья была перенесена из блога в сообщество Tencent Cloud, поэтому в форматировании может возникнуть некоторая путаница.

Рекомендуется читать в блоге:https://www.baiyuyu.com/304.html

введение

Чтобы удовлетворить потребности частного общения, сообщество с открытым исходным кодом постоянно разрабатывает и совершенствует инструменты обмена мгновенными сообщениями, а Matrix является одним из превосходных протоколов зашифрованной связи. Когда я исследовал эту тему, я обнаружил, что учебные пособия в Интернете фрагментированы и разбросаны, поэтому я просто сам составил более полное, надеясь быть полезным тем, кто придет после меня.

Протокол Matrix поддерживает множество функций: децентрализованную связь, сквозное шифрование, голосовые вызовы/видеозвонки WebRTC, запросы на чтение сообщений, запросы о статусе ввода, групповые чаты...

Мало того, что, как следует из названия: «Матрица», если вы являетесь администратором этого сервера, вы также можете разрешить вашему серверу Matrix формировать матричную сеть с другими серверами Matrix, позволяя пользователям общаться с пользователями других серверов Matrix.

Все разговоры на серверах Matrix полностью зашифрованы и чрезвычайно безопасны.

Часто задаваемые вопросы

Вопрос: Что такое сквозное шифрование?

Сквозное шифрование можно понимать как прямую связь между двумя терминалами. Приведем пример, чтобы было легче понять:

Предположим, что Сяо Мин используетУстройствоДля СяохунОборудование Ботправил сообщение,В это время Сяо Хэй хотел посмотреть, о чем они говорят.,Ю да Сяохэй украл аккаунт Сяохун пароль,и преуспелсуществоватьУстройство Сначальство Авторизоваться Получил аккаунт Сяохун。 Может ли Сяо Хэй увидеть историю чата между ними двумя? не могу. При сквозном зашифрованном разговоре все исходящие сообщения автоматически шифруются. Когда Сяо Мин отправляет сообщение Сяо Хуну,Он также автоматически прикрепитсяначальство Строка, используемая для расшифровки этого сообщенияизКлюч дешифрования。СяохунсуществоватьОборудование Бначальствополучатьприезжатьновости,Получил эту строку одновременноКлюч дешифрования,Таким образом, вы можете просматривать сообщения в обычном режиме.。Но Сяохэй его не получил.Ключ дешифрования,Поэтому невозможно расшифровать эти исторические сообщения. Сквозное шифрование на сегодняшний день является относительно наиболее безопасным методом защиты конфиденциальности и может удовлетворить потребности безопасности большинства людей.

Некоторые скажут: «Мне не нужен такой высокий уровень безопасности, это слишком избыточно!»

При фактическом использовании вы можете снять флажок «Сквозное шифрование» при создании нового разговора.

Вопрос: Что такое синапс? Как это связано с Matrix Synapse?

Matrix — это протокол, а Matrix Synapse — это конкретная реализация протокола Matrix.

Кроме того, Синапс Это всего лишь Сервер, у которого нет графического интерфейса. Нам также нужна поддержка. Matrix Нормально общаться может только клиент протокола. Общая поддержка Matrix Клиентами протокола являются:

Элемент (наиболее известный и часто используемый)

  • Кроссплатформенная поддержка:включая рабочий стол、Мобильный и Web конец.
  • Многофункциональный:Аудио и видеозвонки、Поддержка плагинов и т. д.
  • поддержка сообщества:Element да Matrix Один из самых популярных клиентов в сообществе, сообщество более активное.

Cinny (новое поколение Matrix Клиент, пользовательский интерфейс Простой и современный дизайн):

  • легкий:Cinny дановое поколениелегкийиз Matrix Клиент больше подойдет пользователям, которым нравится простой интерфейс.
  • недостаточный:Более новая дата выпуска,Поэтому функциональность не так хороша, как Element Комплексный, например Cinny Кроме того, в настоящее время не поддерживаются аудио- и видеозвонки; Cinny только Web конец, нет Android и iOS приложение;

В этой статье в основном говорится о Synapse Серверизразвертывать。

Если вы развертываете клиент, вы можете обратиться к другой моей статье. https://www.baiyuyu.com/127.html

1. Установка Синапса

1.1 Конфигурация доменного имени

Сначала зайдите в панель управления доменным именем и добавьте запись A разрешения DNS.

⚠ Уведомление Эта статья следует «Клиент/Сервер разделяет доменное имя» Написано по ситуации, это то, что я считаю лучшим решением. «Клиент/Сервер разделяет доменное имя» В случае имени пользователя Форматда:@user:xxx.com。И если Сервер Используется домен второго уровня,ноимя пользователястанет @user:server.xxx.com , лично я чувствую себя немного некрасиво ... Поэтому рекомендуется поделиться доменным именем! Если вы хотите, чтобы клиент использовал два разных доменных имени (например, xxx.com какклиентдоменное имя,server.xxx.com как доменное имя Сервера), может также относиться к Официальная документация

1.2 Установите докер

Для удобства переключитесь на пользователя root:

Язык кода:javascript
копировать
sudo su

Обновите источник программного обеспечения:

Язык кода:javascript
копировать
sudo apt upadte

Установите docker и создайте docker:

Язык кода:javascript
копировать
curl -L https://get.docker.com | sh

1.3 Создать рабочий каталог

Язык кода:javascript
копировать
cd /
mkdir -p /var/matrix-synapse-data/

1.4 генерировать Synapse Конфигурационный файл

Уведомление: Имя домена не может быть изменено позже.

Язык кода:javascript
копировать
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 Отправлять ли анонимную статистику

1.5 Установите и запустите

Язык кода:javascript
копировать
docker run -d --name synapse -v /var/matrix-synapse-data/:/data/ -p 8008:8008 -p 8009:8009 -p 8448:8448 matrixdotorg/synapse:latest

1.6 Создайте первого пользователя-администратора

Пучок имя пользователя и пароль Измените значение, которое вы хотите установить:

Язык кода:javascript
копировать
docker exec -it synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml -a -u имя пользователя -p пароль

1.7 Конфигурация Synapse Сервер

Рекомендуется прочитать самостоятельно Официальная документация:https://matrix-org.github.io/synapse/latest/welcome_and_overview.html

сейчассуществовать,тыиз/var/matrix-synapse-data/Должен быть каталог с именемhomeserver.yamlиздокумент,Отредактируйте это:

Язык кода:javascript
копировать
vi /var/matrix-synapse-data/homeserver.yaml

homeserver.yamlвиз Содержаниеда Matrix Ключом сервера является Конфигурация, который используется для настройки различных функций и параметров сервера.

Вот некоторые ключевые элементы, которые можно скопировать:

Язык кода:javascript
копировать
# Включить регистрацию для новых пользователей
enable_registration: true

# Нет электронной почты или recaptcha Просто подтвердите и зарегистрируйтесь (на самом деле не рекомендуется)
enable_registration_without_verification: true

# Клиент используется для доступа к этому Homeserver базовый публичный URL
public_baseurl: Ваше доменное имя Сервера

# По умолчанию другие серверы попытаются передать порт 8448 Получите доступ к нашему серверу и сообщите другим серверам отправлять трафик на порт. 443
serve_server_wellknown: true

Окончательный конфигурационный файл может выглядеть так, см.:

Язык кода:javascript
копировать
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-контейнер.

Язык кода:javascript
копировать
docker ps
docker restart synapse

2. Обратный прокси-сервер Nginx.

Следующее редактирование nginx Конфигурационный файл。

потому что Сервериклиентподелитесь однимдоменное имя,Конфигурация здесь немного сложнее,Вы можете скопировать следующую конфигурацию,Вы также можете сначала прочитать Официальную документация:https://matrix-org.github.io/synapse/latest/delegate.html

Язык кода:javascript
копировать
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 ,делать Конфигурация Вступить в силу:

Язык кода:javascript
копировать
nginx -s reload

3. Завершить

На этом этапе поздравляем с успешным завершением настройки сервера Synapse.

Далее вы можете изучитьклиент Понятно,Вы также можете прочитать мою статью:https://www.baiyuyu.com/127.html

4. Дополнительная конфигурация

Далее есть несколько вариантов на выбор.

4.1 Администратор Synapse (необязательно)

Вы все еще помните шаги, которые только что были сделаны с первой учетной записью администратора? Это немного хлопотно?

Synapse-admin — очень полезная панель управления, позволяющая легко управлять пользователями и комнатами на сервере Matrix через графический интерфейс.

Источник Synapse-admin Проектный склад
Источник Synapse-admin Проектный склад

Уведомление Если бы только сейчас “Nginx «обратный прокси» В этих шагах вы напрямую скопировали предоставленную мной конфигурацию. файл, то нет необходимости выполнять какую-либо дополнительную настройку, пропустите этот столбец и продолжайте читать следующее содержимое. В противном случае проверьте конфигурацию. файлизlocationда Не включает/_matrixи/_synapse/adminдве части,чтобы правильно открыть этот порт для доступа в Интернет.

4.1.1 Скачать Synapse-admin

от https://github.com/Awesome-Technologies/synapse-admin/releases/latest Загрузите последнюю версию Synapse-admin в каталог вашего сервера.

4.1.2 Создайте новую папку в каталоге сайта.

Перейдите в корневой каталог сайта,Создать новую папку,Вы можете взять что-то вродеsynapse-adminsynapse-panelтакизимя。

⚠ Уведомление Конечно, лучше всего выбрать сложное имя, известное только вам, чтобы повысить безопасность.

4.1.3 Переместите загруженный файл tar.gz в эту папку и распакуйте его.

В качестве титула. Тогда вы можете использовать его в обычном режиме.

假如тыиздокумент夹命名为panel,тогда ты сможешь пройтиhttps://<тыиздоменное имя>/panelдоступприезжать Synapse-admin панель.

На этом установка Synapse-admin завершена.

4.2 Вход в систему OIDC (необязательно)

OIDC или OpenID Connect — это сторонний протокол входа в систему, который можно рассматривать как ветвь OAuth.

Вы можете взглянуть на официальный сервер, который поддерживает множество сторонних логинов:

Конфигурация также очень проста, вам нужно только отредактировать ту, что есть сейчас. homeserver.yaml Соответствующие его части в порядке.

Этот контент из связанного OIDC,Официальная документация Там очень подробно написано, можете посмотреть.

Вот простой список проблем, с которыми я столкнулся:

1. Внутренний WeChat и QQ Ни за что Конфигурация OIDC Войти, они не соответствуют стандарту OpenID Согласен, я долго над этим работал, но безуспешно.

2023/12 Пополнить: если пройдет auth0 Кажется, такой транзит возможен? Еще не изучен

2. Майкрософт OIDC: Если нажать Официальную Зайдите в документацию и вы обнаружите, что личный кабинет использовать нельзя. Рекомендуется обратиться к следующей Конфигурации (конечная точка была изменена)

Язык кода:javascript
копировать
  - 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

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.