Свой защищённый мессенджер бесплатно: Matrix-сервер Conduit на Oracle Cloud и мост с Telegram

Это руководство для тех, кто хочет свой защищённый мессенджер на собственном сервере: полный контроль над данными и доступом, общение с друзьями и семьёй, своя часть децентрализованной сети Matrix — и всё это бесплатно. Мы поднимем Matrix-сервер Conduit на бесплатной виртуальной машине Oracle Cloud, подключим к нему Element на компьютере и телефоне и установим мост, который забирает ваши переписки из Telegram в то же приложение.

Что получится в итоге: сервер на вашем домене вроде matrix.example.org, ваша учётная запись @admin:matrix.example.org, комнаты и пространства для друзей со сквозным шифрованием, по желанию — федерация с matrix.org и другими серверами, и бот-мост @telegrambot:matrix.example.org, через который чаты Telegram появляются в Element.

Понадобится 30–60 минут и базовое знакомство с терминалом. Основную работу выполняют три готовых скрипта: установка Conduit, мост и сбор диагностики. Платить не нужно: машина — из Oracle Always Free, домен — бесплатный, сертификат — от Let's Encrypt, программы — открытые.

Факты сверены в октябре 2026 года: Conduit v0.10.15 (релиз от 30.09.2026), мост mautrix-telegram v26.09 (тег v0.2609.0 от 16.09.2026, версия на Go). Скриншоты консоли Oracle сделаны в августе 2025 года — интерфейс мог немного измениться, но шаги те же.

Зачем свой Matrix-сервер

Matrix — открытый протокол обмена сообщениями, а не сервис одной компании. Как с электронной почтой: у каждого может быть свой сервер, и серверы общаются между собой.

  • Контроль и доступ. Учётные записи, история, файлы и ключи хранятся на вашей машине. Вы решаете, кто может зарегистрироваться, и не зависите от того, заблокируют или закроют ли чужой сервис.
  • Комнаты и пространства. Комната — чат любого размера; личная переписка тоже комната. Пространства группируют комнаты в «сообщество» с иерархией и приглашениями: например, «Семья» с комнатами «Общее», «Фото», «Поездки».
  • Сквозное шифрование. В приватных комнатах Element шифрование (Olm/Megolm) включается по умолчанию: сервер хранит сообщения, но не читает их текст. Устройства подтверждаются перекрёстной подписью, ключи хранятся в зашифрованной резервной копии.
  • Федерация. Если её включить, сервер общается с matrix.org и другими серверами Matrix. Или наоборот — сервер изолирован только для своих.
  • Клиенты для всего. Element работает на Windows, macOS, Linux и в браузере; Element X — на Android и iOS. Есть и другие клиенты: FluffyChat, Cinny, Nheko.
  • Мосты. К Matrix можно подключить Telegram, WhatsApp, Signal, Discord и другие сети, чтобы собирать переписку в одном приложении. В этом руководстве — мост с Telegram.

Почему Conduit. Это лёгкий Matrix-сервер на Rust: один статический бинарный файл и встроенная база (RocksDB или SQLite), без PostgreSQL, Python и Docker. Разработчики позиционируют его как сервер для семьи и друзей, который запускается даже на Raspberry Pi. Лицензия — Apache-2.0.

Честно о статусе. Разработчики помечают Conduit как beta: он участвует в большинстве комнат, но части функций не хватает (например, сравнения эмодзи для подтверждения шифрования через федерацию, исходящих уведомлений о прочтении, набора текста и присутствия через федерацию). С декабря 2025 по сентябрь 2026 вышло шесть релизов, и четыре из них исправляли серьёзные уязвимости — в том числе v0.10.14 от 26.09.2026, где учётная запись могла получить доступ к чужим учётным записям на том же сервере. Поэтому главное правило своего сервера: обновляйте Conduit сразу после выхода релиза (как — в разделе об обновлениях).

Какой софт используется

Element

Element — бесплатный настольный мессенджер для Windows на открытом протоколе Matrix: сквозное шифрование, комнаты, звонки и выбор собственного сервера.

Звонки и видеосвязь 199 МБ
клиент

Element X

Element X — текущее приложение Element для Android: мессенджер на открытом протоколе Matrix со сквозным шифрованием, группами, звонками и выбором сервера.

Мессенджеры
клиент

Claude

Claude для Windows — официальное настольное приложение Anthropic для работы с искусственным интеллектом: чат, файлы, браузер и подключение сервисов через MCP. Есть бесплатный план с лимитами.

Искусственный интеллект 281 МБ
помощник

ChatGPT

ChatGPT для Windows — официальное приложение OpenAI из Microsoft Store, которое объединяет чат с режимами работы и программирования Codex. Базовый доступ бесплатный, с лимитами.

Искусственный интеллект 901 МБ
помощник

DeepSeek

DeepSeek — бесплатный чат-бот с искусственным интеллектом, который работает в браузере: отвечает на вопросы, пишет тексты и код. Нужна регистрация.

Искусственный интеллект
помощник
ИнструментРольСсылки
Conduit Matrix-сервер (Rust, один бинарник, встроенная база RocksDB) Сайт Документация GitLab
mautrix-telegram мост Telegram ↔ Matrix (Go, bridgev2) Сайт GitHub
nginx обратный прокси и HTTPS перед Conduit Сайт GitHub
Certbot сертификаты Let's Encrypt с автообновлением Сайт GitHub
Oracle Cloud Always Free бесплатная ARM-машина Ampere A1 (2 OCPU, 12 ГБ) Сайт Документация
Element Web веб-клиент app.element.io для первого входа Сайт GitHub
Element X iOS клиент для iPhone (карточки в каталоге нет) Сайт GitHub
FreeDNS (afraid.org) бесплатный поддомен, если своего домена нет Сайт
Matrix.org спецификация протокола, federation tester Сайт Документация

Что понадобится

ЧтоГде взятьЗачем
Аккаунт Oracle Cloudoracle.com/cloud/freeБесплатная виртуальная машина Ampere A1
Банковская картаВаша дебетовая или кредитнаяТолько верификация; предоплаченные и виртуальные карты Oracle не принимает
ДоменFreeDNS (бесплатно) или собственныйАдрес сервера и часть каждого идентификатора пользователя
SSH-клиентВстроен в Windows 10/11, macOS, LinuxПодключение к серверу
Учётная запись TelegramУже есть и выполнен вход хотя бы в одном приложенииКлючи API и вход через мост
Время30–60 минутПлюс до часа ожидания DNS, если не повезёт

Два ограничения заранее. Имя сервера (server_name) после первого запуска изменить нельзя — оно входит в каждый идентификатор, так что выберите домен надолго. И Oracle может забрать простаивающую машину: если за 7 дней загрузка процессора (95-й перцентиль), сети и памяти (для A1) ниже 20 %. Сервер для нескольких человек под этот порог попадает — делайте резервные копии.

Шаг 1. Бесплатная виртуальная машина в Oracle Cloud

Зарегистрируйтесь в Oracle Cloud. При регистрации выбирается домашний регион — изменить его потом нельзя, и бесплатные машины создаются только в нём. Один бесплатный аккаунт разрешён на одного человека.

Что даёт Always Free для нашей задачи (по официальной странице Oracle, октябрь 2026):

  • Ampere A1 (ARM): 1500 OCPU-часов и 9000 ГБ-часов в месяц, то есть 2 OCPU и 12 ГБ памяти постоянно — одна машина или две по 1 OCPU.
  • AMD: до двух машин VM.Standard.E2.1.Micro с 1/8 OCPU и 1 ГБ памяти.
  • Диск: 200 ГБ суммарно на загрузочные и блочные тома, 5 бэкапов томов.
  • Трафик: 10 ТБ исходящего в месяц.

Для Conduit и моста выбираем Ampere A1 — ресурсов с большим запасом. Ниже — все скриншоты создания машины по порядку, а дальше каждый шаг отдельно.

Создание инстанса и выбор образа

В консоли откройте Compute → Instances и нажмите Create instance. Задайте имя машины, в блоке Placement оставьте предложенный availability domain. В разделе Image and shape по умолчанию стоит Oracle Linux — нажмите Change image, выберите плитку Ubuntu и в списке образов Canonical Ubuntu возьмите версию для своей архитектуры: для Ampere — сборку aarch64, для AMD — обычную x86_64. Скрипты руководства работают на Ubuntu 22.04 и 24.04. Подтвердите кнопкой Select image.

Список образов Canonical Ubuntu 20.04, 22.04, 24.04 с пометками aarch64 и x86
5. Для Ampere берите сборку aarch64, для AMD — x86_64, затем нажмите Select image.

Форма машины: Ampere A1.Flex и лимиты

В блоке Shape нажмите Change shape, выберите тип Virtual machine, серию Ampere и форму VM.Standard.A1.Flex с пометкой «Always Free-eligible». Ползунками задайте количество OCPU и памяти. Официальный бесплатный лимит сегодня — 2 OCPU и 12 ГБ на аккаунт; для Conduit и моста хватит и 1 OCPU с 6 ГБ, если хотите оставить ресурсы для второй машины.

Форма VM.Standard.A1.Flex с ползунками количества OCPU и объёма памяти
8. Ползунками задайте OCPU и память в пределах бесплатного лимита.

Если превысить лимит, консоль с задержкой покажет предупреждение Service limits status. В августе 2025 года автору удалось создать машину с 3 OCPU и 18 ГБ (при 3 / 20 ГБ появлялось предупреждение), но сейчас официально действует 2 OCPU / 12 ГБ. Проверяйте лимит на странице Oracle и не верьте старым инструкциям с 4 OCPU / 24 ГБ.

Предупреждение Service limits status при превышении лимитов Always Free
9. Такое предупреждение означает, что ресурсов слишком много, — уменьшите OCPU или память.

Нажмите Select shape, затем Next. На шаге Security параметр Shielded instance можно оставить выключенным.

Сеть и SSH-ключи

На шаге Networking всё можно оставить по умолчанию: Oracle создаст сеть (VCN) с публичной подсетью, а машина получит публичный адрес IPv4. Самое важное на этом шаге — блок Add SSH keys. Выберите Generate a key pair for me и нажмите обе кнопки: Download private key и Download public key. Ключ показывается один раз — без него вы не зайдёте на сервер. Сохраните оба файла в надёжное место. Если у вас уже есть свой SSH-ключ, можно вставить его публичную часть.

Шаг Networking, блок Add SSH keys: кнопки Download private key и Download public key
11. Скачайте оба ключа сейчас — Oracle показывает их только один раз.

Диск и создание

На шаге Storage загрузочный том по умолчанию около 47 ГБ. Автор материала советует 90–100 ГБ на машину — так в пределах бесплатных 200 ГБ поместятся две машины, а медиафайлы чатов не упрутся в потолок. Шифрование при передаче оставьте включённым.

Шаг Storage: размер загрузочного тома и шифрование при передаче
12. Увеличьте загрузочный том до 90–100 ГБ в пределах бесплатных 200 ГБ.

На последнем шаге Review проверьте, что публичный IPv4-адрес будет назначен (Public IPv4: Yes), ключи добавлены, размер диска правильный, и нажмите Create. Когда статус машины сменится на Running, скопируйте её Public IP — дальше в примерах это 203.0.113.10.

Шаг Review: Public IPv4 Yes, SSH-ключи, диск и кнопка Create
13. Проверьте сводку и нажмите Create.

Out of host capacity. Если при создании появляется это сообщение, в регионе временно закончились машины Ampere. Попробуйте другой availability domain или повторите попытку позже — это не ошибка вашего аккаунта.

Открываем порты в Security List

В Oracle два файрвола: iptables внутри машины (их откроет скрипт) и Security List облачной сети — только в консоли. Без него снаружи до сервера никто не достучится; это самая частая причина «всё настроил, а не работает».

  1. Откройте Networking → Virtual Cloud Networks и свою VCN.
  2. Перейдите в Subnets, откройте подсеть, далее Security Lists → Default Security List.
  3. Нажмите Add Ingress Rules и добавьте правила с источником 0.0.0.0/0, протокол TCP: порт 80 (проверка Let's Encrypt), порт 443 (HTTPS и Matrix API), порт 8448 (федерация; необязательно, пояснение — в шаге 3).

Подключение по SSH и обновление системы

На своём компьютере откройте терминал (в Windows — PowerShell) и подключитесь, указав путь к скачанному приватному ключу. Пользователь в образах Ubuntu от Oracle — ubuntu.

bash
ssh -i key.pem [email protected]

На Linux и macOS SSH откажется от ключа со слишком открытыми правами — исправьте их командой chmod 600 key.pem. После входа обновите систему:

bash
sudo apt update && sudo apt upgrade -y

Не включайте UFW. Oracle официально не рекомендует UFW на своём образе Ubuntu: он может нарушить обязательные правила файрвола (в том числе для дисков iSCSI), и машина перестанет загружаться. Порты открываются правилами iptables — их добавит скрипт установки. Не удаляйте существующие правила образа.

Шаг 2. Домен и DNS

Matrix требует HTTPS с действительным сертификатом, а сертификат выдаётся на домен — так что без доменного имени не обойтись. Домен станет именем сервера и частью каждого идентификатора, поэтому чем короче, тем удобнее.

Вариант A: бесплатный поддомен FreeDNS

На freedns.afraid.org зарегистрируйтесь и подтвердите e-mail. В разделе Subdomains нажмите Add и заполните: Type — A, Subdomain — например matrix, Domain — один из общедоступных доменов из списка (получится адрес вида matrix.mooo.com), Destination — публичный IP-адрес вашей машины. Сохраните запись.

Вариант B: свой домен

В панели регистратора или DNS-провайдера добавьте A-запись: имя matrix (или @ для корня домена), значение — IP машины, TTL — 300 или Auto. В примерах дальше домен — matrix.example.org; подставляйте свой.

Проверка DNS

Запись обновляется от нескольких минут до часа. Проверьте со своего компьютера или с сервера:

bash
dig matrix.example.org +short

Команда должна вернуть IP вашей машины, например 203.0.113.10. Если ответ пустой — подождите. Скрипт установки тоже проверит DNS и, если домен ещё не работает, предложит временный вариант без сертификата.

FreeDNS и Cloudflare

Поддомен FreeDNS не получится добавить в Cloudflare как отдельную зону: базовые домены FreeDNS не входят в Public Suffix List, а Cloudflare нужно управление NS-записями всего домена. Для этого руководства Cloudflare не нужен — nginx и Let's Encrypt на самой машине работают с любым доменом. Если же вам нужен прокси Cloudflare (скрытие IP, защита от DDoS), купите недорогой собственный домен и подключите его к Cloudflare. В этом случае помните, что бесплатный план Cloudflare не проксирует порт 8448 — федерация должна идти через делегирование на 443, которое скрипт уже настраивает.

Шаг 3. Устанавливаем Conduit одним скриптом

Скрипт setup-conduit.sh делает всё, что обычно расписывают на несколько страниц: скачивает Conduit, создаёт пользователя, конфиг и службу systemd, ставит nginx и получает сертификат Let's Encrypt, открывает порты в iptables и проверяет результат. Работает на Ubuntu 22.04 и 24.04, на процессорах aarch64 и x86_64.

  • setup-conduit.sh

    Установка Conduit: бинарник, systemd, nginx, Let's Encrypt, файрвол

    скрипт bash · 0,1 МБ · SHA-256 f68f41490bc9…
    Скачать

Как загрузить скрипт на сервер

Проще всего — скопировать файл со своего компьютера командой scp (выполняется на компьютере, не на сервере):

bash
scp -i key.pem setup-conduit.sh [email protected]:~/

Другой способ — создать файл прямо на сервере в редакторе nano, вставить содержимое скрипта, сохранить (Ctrl+O, Enter) и выйти (Ctrl+X). Если в минимальном образе nano нет, установите его: sudo apt install -y nano.

bash
nano ~/setup-conduit.sh

Затем сделайте скрипт исполняемым и запустите от имени администратора:

bash
chmod +x ~/setup-conduit.sh
bash
sudo ~/setup-conduit.sh

Что спрашивает скрипт

Все параметры задаются ответами в терминале. Значение по умолчанию показано в квадратных скобках — нажмите Enter, чтобы его принять. Сообщения скрипта цветные и помечены [INFO], [WARN], [ERROR].

  1. Способ установки. 1 — скачать готовый статический бинарный файл Conduit с GitLab (рекомендуется); 2 — использовать свой бинарный файл, если вы собрали Conduit сами (скрипт попросит путь к нему).
  2. Домен (FQDN). Введите ровно тот домен, который настроили в шаге 2, например matrix.example.org. Он станет server_name, и изменить его потом нельзя.
  3. Registration token. Это «пароль на регистрацию»: без него никто не создаст учётную запись на вашем сервере. Скрипт предлагает случайный — примите его или введите свой. Запишите токен: он понадобится вам и друзьям.
  4. Включить федерацию? [y/N]. N — изолированный сервер только для ваших пользователей; y — общение с matrix.org и другими серверами. Федерацию можно включить позже (шаг 6).

Дальше — сводка параметров, подтверждение и e-mail для Let's Encrypt (по умолчанию admin@ плюс домен). Сюда приходят уведомления о сертификате, поэтому лучше указать настоящий адрес, например [email protected].

Что делает скрипт

  • Ставит утилиты (wget, curl, dnsutils, openssl) и кладёт Conduit в /usr/local/bin/matrix-conduit.
  • Создаёт пользователя conduit, каталог данных /var/lib/matrix-conduit/, конфиг /etc/matrix-conduit/conduit.toml и службу conduit.service, запускает её и проверяет API на 127.0.0.1:6167.
  • Ставит nginx и certbot, открывает в iptables порты 80 и 443 (и 8448 с федерацией) выше правила reject образа Oracle и сохраняет их (netfilter-persistent save).
  • Сверяет DNS домена с внешним IP машины, получает сертификат и пишет полный конфиг nginx.
  • Проверяет службы, API локально и через домен, .well-known, таймер certbot.timer; параметры сохраняет в /etc/matrix-conduit/.install-params для скрипта моста.

Работа занимает 2–5 минут.

Если DNS ещё не готов. Скрипт заметит, что домен не указывает на сервер, и предложит пока настроить nginx только по HTTP. Согласитесь, дождитесь, пока dig покажет правильный адрес, и получите сертификат одной командой, приведённой ниже. Без HTTPS клиенты Matrix к серверу не подключатся, поэтому этот шаг не пропускайте.

bash
sudo certbot --nginx -d matrix.example.org

Что внутри: конфиг, служба, nginx

Знать это не обязательно, но полезно, когда что-то придётся поменять вручную. Ключевые строки конфига Conduit:

/etc/matrix-conduit/conduit.toml toml
[global]
server_name = "matrix.example.org"
database_backend = "rocksdb"
database_path = "/var/lib/matrix-conduit/"
address = "127.0.0.1"
port = 6167
max_request_size = 20_000_000
allow_registration = true
registration_token = "<registration_token>"
allow_federation = false
trusted_servers = ["matrix.org"]

[global.well_known]
client = "https://matrix.example.org"
server = "matrix.example.org:443"

Conduit слушает только локальный адрес 127.0.0.1, а наружу его выставляет nginx. trusted_servers — серверы, которым Conduit доверяет при получении ключей других серверов; документация предупреждает, что они очень привилегированы, поэтому добавляйте туда только те, которым доверяете полностью. Блок [global.well_known] заставляет Conduit самого отдавать адреса /.well-known/matrix/*, и тогда федерация работает через обычный порт 443.

Служба systemd читает конфиг из переменной окружения CONDUIT_CONFIG и работает от отдельного пользователя с ограничениями. Примерно так:

/etc/systemd/system/conduit.service ini
[Unit]
Description=Conduit Matrix Server
After=network.target

[Service]
Environment="CONDUIT_CONFIG=/etc/matrix-conduit/conduit.toml"
User=conduit
Group=conduit
ExecStart=/usr/local/bin/matrix-conduit
Restart=always
ProtectSystem=strict
ReadWritePaths=/var/lib/matrix-conduit
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

В конфиге nginx главное — передать Conduit адреса /_matrix/ и /.well-known/matrix/, поднять лимит размера запроса (в nginx по умолчанию всего 1 МБ, а файлы в чатах больше) и не склеивать двойные слэши в адресах:

/etc/nginx/sites-available/matrix nginx
server {
    listen 443 ssl http2;
    server_name matrix.example.org;

    ssl_certificate /etc/letsencrypt/live/matrix.example.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/matrix.example.org/privkey.pem;

    client_max_body_size 20M;
    merge_slashes off;

    location /_matrix/ {
        proxy_pass http://127.0.0.1:6167;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_buffering off;
        proxy_read_timeout 300;
    }

    location /.well-known/matrix/ {
        proxy_pass http://127.0.0.1:6167;
        proxy_set_header Host $host;
    }
}

Проверка

После скрипта проверьте сервер с любого компьютера. Первая команда должна вернуть JSON со списком версий API Matrix, вторая — адрес вашего сервера для клиентов:

bash
curl https://matrix.example.org/_matrix/client/versions
bash
curl https://matrix.example.org/.well-known/matrix/client

Если локально API отвечает, а через домен — нет, причина почти всегда одна из двух: DNS ещё не обновился или в Security List не открыты порты 80 и 443.

Порт 8448. Серверы Matrix традиционно общаются через 8448, но скрипт настраивает /.well-known/matrix/server с адресом на 443, так что другие серверы придут туда, и 8448 не обязателен.

Шаг 4. Первый пользователь и admin-комната

Создадим учётную запись администратора. Для первого входа удобно воспользоваться веб-версией Element по адресу app.element.io или программой Element для Windows.

  1. На экране входа выберите создание учётной записи (Create account).
  2. Рядом с названием сервера нажмите Edit (изменить домашний сервер) и введите https://matrix.example.org.
  3. Введите имя пользователя, например admin, и надёжный пароль.
  4. Когда Element попросит registration token, вставьте токен, который показал скрипт.

Первый зарегистрированный пользователь становится администратором: Conduit автоматически добавляет его в комнату администраторов #admins, где работает служебный бот @conduit:matrix.example.org. Обращайтесь к боту в начале сообщения:

text
@conduit:matrix.example.org: help

Основные команды admin-комнаты:

КомандаЧто делает
helpСписок всех команд
list-usersПользователи сервера
disable-registrationОтключить регистрацию без перезапуска
enable-registrationВключить регистрацию снова
register-appserviceЗарегистрировать мост (шаг 5)
list-appservicesЗарегистрированные мосты
unregister-appservice <id>Удалить регистрацию моста

Совет. Когда друзья зарегистрируются, отключите регистрацию командой disable-registration. Токен защищает от посторонних, но закрытая регистрация надёжнее. Для нового друга её можно временно включить снова.

Шаг 5. Мост с Telegram

Мост — это отдельная программа, которая с одной стороны входит в Telegram как ещё одно ваше устройство, а с другой — подключается к Matrix-серверу как appservice (служебное приложение с расширенными правами). Каждый чат Telegram становится комнатой Matrix, собеседники из Telegram — «виртуальными» пользователями вашего сервера, а ваши ответы из Element уходят в Telegram от вашего имени.

Мы ставим mautrix-telegram на Go. Старая версия на Python больше не поддерживается (последний релиз — v0.15.3), а новая вышла в апреле 2026 года и обновляется ежемесячно. Инструкции с pip, venv, командами !tg и файлом регистрации в каталоге сервера — про старую версию: Conduit не читает файлы appservice с диска, мост регистрируется только через admin-комнату.

Новая версия поддерживает личные чаты, группы, каналы, медиа, реакции, правки и удаления, темы (topics) в группах и импорт стикеров и эмодзи. Ваши сообщения из Telegram-клиента в Matrix будут выглядеть как ваши.

Ключи API Telegram

Мосту нужны собственные ключи приложения Telegram — api_id и api_hash. Токен бота от BotFather для этой схемы не нужен.

  1. Откройте my.telegram.org/apps и войдите по номеру телефона — код подтверждения придёт в приложение Telegram.
  2. Откройте API development tools и заполните форму: название приложения и короткое имя — любые (например, Matrix Bridge и matrixbridge), платформа — Other.
  3. Нажмите Create application и сохраните два значения: api_id (число) и api_hash (строка из букв и цифр).

Никому не передавайте эти ключи и не публикуйте их: они привязаны к вашей учётной записи Telegram.

Запуск скрипта моста

Скрипт setup-bridge.sh запускается только после успешной установки Conduit: он проверяет, что сервер работает, и берёт домен из сохранённых параметров. Загрузите и запустите его так же, как первый.

  • setup-bridge.sh

    Мост Telegram (mautrix-telegram на Go): бинарник, конфиг, регистрация, systemd

    скрипт bash · 0,1 МБ · SHA-256 ab98664194f7…
    Скачать
bash
scp -i key.pem setup-bridge.sh [email protected]:~/
bash
chmod +x ~/setup-bridge.sh
bash
sudo ~/setup-bridge.sh

Скрипт спросит:

  • Домен — по умолчанию подставляется из параметров установки Conduit, достаточно нажать Enter.
  • Matrix ID администратора — по умолчанию @admin:matrix.example.org; если вы регистрировались под другим именем, впишите своё.
  • Telegram api_id и api_hash — значения с my.telegram.org.
  • Порт моста — по умолчанию 29317; мост слушает его только локально.

После подтверждения скрипт:

  • скачивает с GitHub последний релиз mautrix-telegram под вашу архитектуру и сверяет контрольную сумму с sha256sums.txt;
  • создаёт пользователя mautrix-telegram и каталог /opt/mautrix-telegram/ (бинарный файл, config.yaml, registration.yaml, база SQLite);
  • выставляет в конфиге адрес Conduit http://127.0.0.1:6167, домен, бота telegrambot, ключи Telegram, права (ваш сервер — пользователи, ваш ID — администратор), разрешение на зашифрованные комнаты и relay для администратора;
  • генерирует регистрацию appservice и ждёт, пока вы зарегистрируете мост в Conduit;
  • создаёт службу mautrix-telegram.service, запускает её и проверяет порт.

Работа занимает 1–3 минуты, не считая регистрации.

Регистрация моста в admin-комнате

В какой-то момент скрипт выведет содержимое registration.yaml и готовое сообщение для admin-комнаты и будет ждать ответа. Не закрывайте терминал. Откройте Element, зайдите в комнату администраторов и отправьте одним сообщением: первая строка — команда, дальше — YAML в блоке кода между строками с тремя обратными кавычками. Element превратит их в блок кода, и Conduit прочитает регистрацию. Выглядит это примерно так:

text
@conduit:matrix.example.org: register-appservice
```
id: telegram
url: http://127.0.0.1:29317
as_token: <as_token>
hs_token: <hs_token>
sender_localpart: <sender_localpart>
rate_limited: false
namespaces:
  users:
  - regex: ^@telegrambot:matrix\.example\.org$
    exclusive: true
  - regex: ^@telegram_.*:matrix\.example\.org$
    exclusive: true
```

Копируйте текст из своего терминала, а не из этого примера. Токены as_token и hs_token генерируются на вашем сервере и должны точно совпадать с теми, что записаны в конфиге моста. Не пересылайте это сообщение никуда, кроме admin-комнаты своего сервера.

Проверьте, что регистрация прошла:

text
@conduit:matrix.example.org: list-appservices

Бот должен ответить, что зарегистрирован один appservice — telegram. Перезапускать Conduit после регистрации не нужно. Вернитесь в терминал и ответьте y — скрипт запустит мост. Состояние службы можно проверить так:

bash
sudo systemctl status mautrix-telegram

Если ошиблись с регистрацией, удалите её командой unregister-appservice telegram и отправьте сообщение снова. Если мост запущен, но не отвечает, перезапустите Conduit, пока мост работает: sudo systemctl restart conduit.

Вход в Telegram через мост

В Element начните личный чат с ботом @telegrambot:matrix.example.org (кнопка нового сообщения, введите полный идентификатор бота). Список команд бот покажет на help. Войти можно двумя способами.

По номеру телефона. Отправьте боту команду с вашим номером в международном формате:

text
login phone +380XXXXXXXXX

Код подтверждения придёт не SMS, а сообщением в другом приложении Telegram, где вы уже вошли, — поэтому на момент входа держите под рукой телефон или компьютер с Telegram. Отправьте код боту. Если в Telegram включена двухэтапная проверка, бот попросит облачный пароль — отправьте его в ту же комнату.

По QR-коду. Отправьте боту:

text
login qr

Бот покажет QR-код. В приложении Telegram на телефоне откройте Settings → Devices → Link Desktop Device (в русском интерфейсе — настройки, раздел устройств, подключение устройства) и отсканируйте код.

После входа чаты Telegram появятся в Element как комнаты с приглашениями от моста. Новую учётную запись Telegram через мост не зарегистрировать — только в официальном приложении. Вход ботом (login bot с токеном BotFather) тоже есть, но чаты тогда синхронизируются только после сообщения боту.

Друзья без Telegram: режим relay

Чтобы друг без Telegram мог писать в Telegram-группу, есть режим relay: команда set-relay в мостовой комнате делает вашу учётную запись ретранслятором, и сообщения других участников уходят в Telegram через неё. Команда bridge связывает существующий чат Telegram с существующей комнатой Matrix. Скрипт разрешает relay для администратора; старый relaybot Python-версии не переносится. Подробности — в документации моста.

Шифрование и приватность

Скрипт разрешает мосту работать в зашифрованных комнатах (encryption.allow: true): со стороны Matrix переписку мостовых комнат можно шифровать так же, как обычных. Чтобы шифрование включалось во всех новых мостовых комнатах автоматически, в config.yaml есть параметр encryption.default.

Границы стоит понимать: мост — это ещё одно ваше устройство Telegram. Сессия хранится в базе моста на вашем сервере, а сообщения, как и раньше, проходят через серверы Telegram. Защищайте сервер (SSH только по ключу, обновления, ограниченный доступ к /opt/mautrix-telegram/). Сессию моста видно в Telegram в списке устройств — там её можно завершить.

Если мост не стартует или бот молчит — раздел «Если что-то не работает» и скрипт collect-logs.sh.

Шаг 6. Клиенты: Element на ПК и Element X на Android

Сервер работает — теперь подключим постоянные приложения.

  • Компьютер: Element для Windows (есть версии для macOS и Linux, а также веб-версия app.element.io).
  • Android: Element X для Android — новый клиент на Rust SDK, использующий sliding sync; Conduit поддерживает его с версии 0.10.0.
  • iPhone: Element X для iOS из App Store.

При входе в каждом приложении смените сервер на matrix.example.org и войдите под своей учётной записью.

Ключи шифрования

При первом входе Element предложит настроить безопасное резервное копирование ключей и перекрёстную подпись. Не пропускайте этот шаг: сохраните ключ восстановления (security key) в менеджере паролей или другом надёжном месте. Без него на новом устройстве старые зашифрованные сообщения не расшифруются. Новые устройства подтверждайте с уже подтверждённого — сканированием QR-кода или сравнением эмодзи.

Пространство и комнаты для друзей

  1. Создайте пространство (кнопка «+» рядом со списком пространств), дайте ему название, выберите приватное.
  2. Добавьте в пространство комнаты: общий чат, комнату для фото, для планов. Приватные комнаты Element шифрует по умолчанию.
  3. Друзьям отправьте адрес сервера и registration token, чтобы они зарегистрировались, а затем пригласите их в пространство по идентификатору @имя:matrix.example.org.
  4. Когда все зарегистрировались, отключите регистрацию в admin-комнате.

Федерация: включить или выключить

Если при установке вы ответили N, сервер изолирован: писать можно только пользователям вашего сервера. Чтобы друзья с matrix.org и других серверов могли общаться с вами, включите федерацию в конфиге и перезапустите Conduit:

/etc/matrix-conduit/conduit.toml toml
allow_federation = true
bash
sudo systemctl restart conduit

Проверьте федерацию на federationtester.matrix.org: введите свой домен — сервис покажет, могут ли другие серверы до вас достучаться. Выключается федерация так же — значением false и перезапуском.

Если что-то не работает

Самый быстрый путь к причине — посмотреть логи. Чтобы не собирать их вручную, есть скрипт collect-logs.sh.

  • collect-logs.sh

    Сбор логов и диагностики в архив с замаскированными секретами

    скрипт bash · 0,1 МБ · SHA-256 799fc2b5342d…
    Скачать
bash
chmod +x ~/collect-logs.sh
bash
sudo ~/collect-logs.sh

Скрипт складывает в архив conduit-diag-<дата>.tar.gz: информацию о системе, состояние служб conduit, mautrix-telegram и nginx, логи journalctl (по 500 строк и отдельно Conduit за последний час), конфиги, конфиг nginx и unit-файлы служб, открытые порты и правила iptables, проверку DNS, сертификата и .well-known, размеры данных и версии Conduit, моста, nginx и certbot. Внутри есть README с описанием файлов. Секреты в конфигах (registration_token, as_token, hs_token, api_hash, api_id) заменяются на ***MASKED***. Скачайте архив на свой компьютер:

bash
scp -i key.pem [email protected]:~/conduit-diag-*.tar.gz .

Разбор логов с ИИ-помощником

Архив удобно разобрать с чат-ботом: Claude, ChatGPT или DeepSeek. Готовый промпт ниже объясняет помощнику устройство сервера и просит сначала назвать вероятную причину, а потом давать команды проверки по одной, без «переустановите всё». Замените {{ПРОБЛЕМА}} на описание симптома и приложите архив.

Промпт для ИИ-помощника
# Помоги найти причину сбоя Matrix-сервера Conduit

Ты — опытный администратор Linux, который хорошо знает Matrix, сервер Conduit, мост mautrix-telegram, nginx, certbot и Oracle Cloud.

## Как устроен мой сервер
- Ubuntu 22.04/24.04 на бесплатной машине Oracle Cloud Always Free (Ampere A1, aarch64 или AMD x86_64); файрвол — Security List в Oracle и iptables на машине (UFW не используется).
- Conduit: бинарный файл `/usr/local/bin/matrix-conduit`, конфиг `/etc/matrix-conduit/conduit.toml`, данные `/var/lib/matrix-conduit/`, служба `conduit.service`, слушает `127.0.0.1:6167`.
- nginx с сертификатом Let's Encrypt (certbot) проксирует `/_matrix/` и `/.well-known/matrix/` на Conduit; конфиг `/etc/nginx/sites-available/matrix`.
- Мост mautrix-telegram на Go (bridgev2): `/opt/mautrix-telegram/` (бинарный файл, `config.yaml`, `registration.yaml`, база SQLite), служба `mautrix-telegram.service`, слушает `127.0.0.1:29317`. Appservice зарегистрирован через admin-комнату Conduit командой `register-appservice`.

## Что я отправляю
Архив `conduit-diag-<дата>.tar.gz` от скрипта `collect-logs.sh` (или вставленные фрагменты логов): системная информация, статус служб, журналы journalctl, конфиги, порты и iptables, DNS, SSL, `.well-known`, версии. Секреты в архиве замаскированы как `***MASKED***`.

## Проблема
{{ПРОБЛЕМА}}

## Что мне нужно
1. Сначала по логам назови самую вероятную причину и строки, которые на неё указывают.
2. Затем дай минимальные команды проверки и исправления — по одной, с пояснением, что каждая должна показать. Дождись моего результата, прежде чем давать следующую.
3. Не предлагай переустанавливать систему или сервер, пока не проверены более простые причины.
4. Не проси пароли, токены, ключи API или коды входа — работай с замаскированными данными.

> Напоминание для того, кто отправляет: не вставляйте токены и пароли; в архиве они замаскированы, но просмотрите файлы перед отправкой.

Скопируйте текст в Claude, ChatGPT или DeepSeek вместе с архивом логов или их фрагментом; токены и пароли не вставляйте. · prompt-debug.uk.md

Сначала просмотрите архив сами. Скрипт маскирует известные токены и ключи, но логи могут содержать ваш домен, идентификаторы пользователей и названия комнат. Распакуйте архив, просмотрите файлы и удалите то, чем не хотите делиться. Никогда не вставляйте в чат пароли, токены или код входа Telegram.

Типичные ошибки

СимптомВероятная причинаЧто сделать
Element: «Can't connect to homeserver»Адрес введён без https://, закрыт порт 443 или не обновился DNSОткройте в браузере https://matrix.example.org/_matrix/client/versions; проверьте Security List и dig
Certbot не получает сертификатDNS указывает не на сервер, закрыт порт 80, nginx не запущенПроверьте dig, Security List, systemctl status nginx; попробуйте certbot --nginx -d matrix.example.org --dry-run
Conduit не запускается, «database_backend is required»В конфиге нет параметра базыДобавьте database_backend = "rocksdb" в [global]
«Permission denied» при запуске ConduitБинарный файл не исполняемыйsudo chmod +x /usr/local/bin/matrix-conduit
«Address already in use» на 6167Порт занят другим процессомsudo ss -tlnp и остановите лишний процесс
«Config error: unknown field»Устаревший формат конфигаБлок well-known должен быть секцией [global.well_known]
Мост: M_UNKNOWN_TOKENТокены в регистрации Conduit и в конфиге моста не совпадаютunregister-appservice telegram и зарегистрируйте актуальный registration.yaml заново
Мост: «connection refused» к 127.0.0.1:6167Conduit не запущенsudo systemctl start conduit, затем логи Conduit
Бот @telegrambot не отвечаетМост не запущен или не зарегистрированlist-appservices, systemctl status mautrix-telegram; перезапустите Conduit при запущенном мосте
Код входа Telegram не приходитКод отправляется в другое приложение Telegram, а не SMSОткройте Telegram на другом устройстве или войдите через login qr

Полезные команды

Логи в реальном времени (выход — Ctrl+C):

bash
sudo journalctl -u conduit -f
bash
sudo journalctl -u mautrix-telegram -f

Последние 50 строк лога без прокрутки:

bash
sudo journalctl -u conduit -n 50 --no-pager

Кто какие порты слушает (должны быть 6167, 29317, 80, 443):

bash
sudo ss -tlnp

Перезапуск служб:

bash
sudo systemctl restart conduit
bash
sudo systemctl restart mautrix-telegram
bash
sudo systemctl restart nginx

Обновления и резервные копии

Обновление Conduit

Подпишитесь на релизы репозитория famedly/conduit на GitLab (уведомления о новых релизах) — обновления безопасности выходят регулярно. Обновление — это замена бинарного файла: остановите службу, скачайте свежую стабильную сборку для своей архитектуры и запустите снова.

bash
sudo systemctl stop conduit
bash
sudo wget -O /usr/local/bin/matrix-conduit "https://gitlab.com/api/v4/projects/famedly%2Fconduit/jobs/artifacts/master/raw/$(uname -m)-unknown-linux-musl?job=artifacts"
bash
sudo chmod +x /usr/local/bin/matrix-conduit && sudo systemctl start conduit

Команда uname -m подставит aarch64 или x86_64. Миграции базы Conduit выполняет автоматически при запуске. После обновления проверьте systemctl status conduit и ответ /_matrix/client/versions.

Обновление моста

Мост обновляется так же — заменой бинарного файла и перезапуском. Релизы выходят ежемесячно; список — на странице github.com/mautrix/telegram/releases. Для Ampere нужен файл mautrix-telegram-arm64, для x86 — mautrix-telegram-amd64.

bash
sudo systemctl stop mautrix-telegram
bash
sudo wget -O /opt/mautrix-telegram/mautrix-telegram https://github.com/mautrix/telegram/releases/latest/download/mautrix-telegram-arm64
bash
sudo chmod +x /opt/mautrix-telegram/mautrix-telegram && sudo systemctl start mautrix-telegram

Перед обновлением моста прочитайте описание релиза: иногда в конфиге появляются новые параметры.

Резервные копии

Всё ценное — в трёх местах: данные Conduit (/var/lib/matrix-conduit/), конфиги (/etc/matrix-conduit/) и каталог моста (/opt/mautrix-telegram/). Самая простая копия — архив при остановленных службах:

bash
sudo systemctl stop mautrix-telegram conduit
bash
sudo tar czf ~/matrix-backup-$(date +%F).tar.gz /var/lib/matrix-conduit /etc/matrix-conduit /opt/mautrix-telegram
bash
sudo systemctl start conduit mautrix-telegram

Архив скачайте на свой компьютер через scp — копия на том же сервере не спасёт, если машину заберут. Дополнительно Oracle даёт бесплатно 5 резервных копий томов: в консоли откройте загрузочный том машины и создайте backup. Помните, что в архиве есть токены и сессия Telegram — храните его как пароль.

Для защиты самой машины стоит поставить fail2ban (защита SSH от подбора) и автоматические обновления безопасности unattended-upgrades.

Файлы к инструкции

  • setup-conduit.sh

    Установка Conduit: бинарник, systemd, nginx, Let's Encrypt, файрвол

    скрипт bash · 0,1 МБ · SHA-256 f68f41490bc9…
    Скачать
  • setup-bridge.sh

    Мост Telegram (mautrix-telegram на Go): бинарник, конфиг, регистрация, systemd

    скрипт bash · 0,1 МБ · SHA-256 ab98664194f7…
    Скачать
  • collect-logs.sh

    Сбор логов и диагностики в архив с замаскированными секретами

    скрипт bash · 0,1 МБ · SHA-256 799fc2b5342d…
    Скачать
  • prompt-debug.uk.md

    Промпт-помощник для Claude / ChatGPT / DeepSeek: разбор логов (укр.)

    промпт · 0,1 МБ · SHA-256 6777d0cc5a64…
    Скачать
  • prompt-debug.ru.md

    Промпт-помощник для Claude / ChatGPT / DeepSeek: разбор логов

    промпт · 0,1 МБ · SHA-256 fe42fbaa7d3c…
    Скачать

Скрипты перед запуском просмотрите: они выполняются от root. Промпты — текст для ИИ-помощника, без секретов.

Альтернативы

Conduit — не единственный лёгкий сервер Matrix. У него есть форки с тем же принципом установки (один бинарный файл, встроенная база):

Обратите внимание: у форков команды admin-комнаты пишутся через подчёркивание (register_appservice, list_appservices), а не через дефис, как у Conduit. Сам conduwuit больше не поддерживается.

Synapse (Python) и Dendrite (Go) мощнее, но тяжелее — на машине AMD с 1 ГБ это заметно:

КритерийSynapseDendriteConduit
ЯзыкPythonGoRust
Память в покое (по наблюдениям автора материала)300–500 МБ100–200 МБ15–50 МБ
База данныхВнешний PostgreSQLВнешний PostgreSQLВстроенная RocksDB или SQLite
ЗависимостиPython, PostgreSQLPostgreSQLОдин бинарный файл
Машина AMD 1 ГБНе хватаетНа пределеРаботает

На Ampere A1 с 12 ГБ поместится любой, но Conduit проще в обслуживании: нет отдельной базы, которую нужно обновлять и копировать.

Источники

Вопросы и ответы

Это действительно бесплатно?
Да. Машина Ampere A1 входит в бесплатный уровень Oracle Always Free (2 OCPU и 12 ГБ памяти), домен можно взять во FreeDNS, сертификат выдаёт Let's Encrypt, а Conduit, mautrix-telegram и Element — открытое программное обеспечение. Карта нужна только для верификации аккаунта Oracle.
Conduit в статусе beta — можно ли им пользоваться?
Разработчики помечают Conduit как beta: он участвует в большинстве комнат, но части функций федерации не хватает. За 2025–2026 годы вышло несколько релизов с исправлением серьёзных уязвимостей, поэтому обновляйте Conduit сразу после каждого релиза.
Можно ли потом сменить домен сервера?
Нет. Имя сервера (server_name) входит в каждый идентификатор пользователя и комнаты, поэтому после первого запуска его не изменить. Выберите домен, которым будете пользоваться долго.
Может ли Oracle забрать бесплатную машину?
Может, если она простаивает: за 7 дней загрузка процессора (95-й перцентиль), сети и памяти ниже 20 %. Небольшой Matrix-сервер под этот порог попадает, поэтому регулярно делайте резервные копии данных и конфигов.
Видит ли сервер мои сообщения из Telegram?
Мост работает как ещё одно ваше устройство Telegram: сессия хранится на вашем сервере, а сообщения, как и раньше, проходят через Telegram. В Matrix мостовые комнаты можно шифровать сквозным шифрованием, если в конфиге моста разрешено шифрование.
Нужен ли порт 8448?
Не обязательно. Скрипт настраивает делегирование через /.well-known/matrix/server на порт 443, так что другие серверы федерации подключаются через 443. Порт 8448 можно открыть дополнительно.
Можно ли обойтись без домена?
Нет: клиенты Matrix требуют HTTPS с действительным сертификатом, а он выдаётся на доменное имя. Бесплатный поддомен можно получить во FreeDNS.
Сколько людей потянет такой сервер?
Официальных требований к железу в документации Conduit нет; разработчики позиционируют его как сервер для семьи и друзей, который работает даже на Raspberry Pi. Машина Ampere A1 даёт ресурсы с большим запасом для такого масштаба.

Опубликовано 11 октября 2026, обновлено 11 октября 2026

Раздел: Звонки и видеосвязь