Свій захищений месенджер безкоштовно: 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: наскрізне шифрування, кімнати, дзвінки й вибір власного сервера.
Element X
Element X — поточний застосунок Element для Android: месенджер на відкритому протоколі Matrix з наскрізним шифруванням, групами, дзвінками й вибором сервера.
Claude
Claude для Windows — офіційний настільний застосунок Anthropic для роботи зі штучним інтелектом: чат, файли, браузер і підключення сервісів через MCP. Є безкоштовний план із лімітами.
ChatGPT
ChatGPT для Windows — офіційний застосунок OpenAI з Microsoft Store, що поєднує чат із режимами роботи й програмування Codex. Базовий доступ безкоштовний із лімітами.
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 Cloud | oracle.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 — ресурсів із великим запасом. Нижче — усі скриншоти створення машини по порядку, а далі кожен крок окремо.
- 1. Відкрийте Compute → Instances і натисніть Create instance.
- 2. Задайте ім'я машини; availability domain можна залишити запропонований.
- 3. Образ за замовчуванням — Oracle Linux; натисніть Change image, щоб обрати Ubuntu.
- 4. Оберіть плитку Ubuntu.
- 5. Для Ampere беріть збірку aarch64, для AMD — x86_64, потім натисніть Select image.
- 6. Натисніть Change shape, щоб обрати форму й ресурси машини.
- 7. Тип — Virtual machine, серія — Ampere.
- 8. Повзунками задайте OCPU і пам'ять у межах безкоштовного ліміту.
- 9. Таке попередження означає, що ресурсів забагато, — зменште OCPU або пам'ять.
- 10. На кроці Security налаштування можна не змінювати.
- 11. Завантажте обидва ключі зараз — Oracle показує їх лише один раз.
- 12. Збільште завантажувальний том до 90–100 ГБ у межах безкоштовних 200 ГБ.
- 13. Перевірте зведення й натисніть Create.
Створення інстансу та вибір образу
У консолі відкрийте 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.
Форма машини: Ampere A1.Flex і ліміти
У блоці Shape натисніть Change shape, оберіть тип Virtual machine, серію Ampere і форму VM.Standard.A1.Flex з позначкою «Always Free-eligible». Повзунками задайте кількість OCPU та пам'яті. Офіційний безкоштовний ліміт сьогодні — 2 OCPU і 12 ГБ на акаунт; для Conduit і моста вистачить і 1 OCPU з 6 ГБ, якщо хочете залишити ресурси для другої машини.
Якщо перевищити ліміт, консоль із затримкою покаже попередження Service limits status. У серпні 2025 року авторові вдалося створити машину з 3 OCPU і 18 ГБ (при 3 / 20 ГБ з'являлося попередження), але зараз офіційно діє 2 OCPU / 12 ГБ. Перевіряйте ліміт на сторінці Oracle і не вірте старим інструкціям із 4 OCPU / 24 ГБ.
Натисніть 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-ключ, можна вставити його публічну частину.
Диск і створення
На кроці Storage завантажувальний том за замовчуванням близько 47 ГБ. Автор матеріалу радить 90–100 ГБ на машину — так у межах безкоштовних 200 ГБ поміститься дві машини, а медіафайли чатів не впруться в стелю. Шифрування під час передачі залиште увімкненим.
На останньому кроці Review перевірте, що публічна IPv4-адреса буде призначена (Public IPv4: Yes), ключі додано, розмір диска правильний, і натисніть Create. Коли статус машини зміниться на Running, скопіюйте її Public IP — далі в прикладах це 203.0.113.10.
Out of host capacity. Якщо при створенні з'являється це повідомлення, у регіоні тимчасово закінчилися машини Ampere. Спробуйте інший availability domain або повторіть спробу пізніше — це не помилка вашого акаунта.
Відкриваємо порти в Security List
В Oracle два файрволи: iptables усередині машини (їх відкриє скрипт) і Security List хмарної мережі — лише в консолі. Без нього ззовні до сервера ніхто не достукається; це найчастіша причина «все налаштував, а не працює».
- Відкрийте Networking → Virtual Cloud Networks і свою VCN.
- Перейдіть у Subnets, відкрийте підмережу, далі Security Lists → Default Security List.
- Натисніть 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.
ssh -i key.pem [email protected]
На Linux і macOS SSH відмовиться від ключа з надто відкритими правами — виправте їх командою chmod 600 key.pem. Після входу оновіть систему:
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
Запис оновлюється від кількох хвилин до години. Перевірте зі свого комп'ютера або із сервера:
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-256f68f41490bc9…
Як завантажити скрипт на сервер
Найпростіше — скопіювати файл зі свого комп'ютера командою scp (виконується на комп'ютері, не на сервері):
scp -i key.pem setup-conduit.sh [email protected]:~/
Інший спосіб — створити файл прямо на сервері в редакторі nano, вставити вміст скрипта, зберегти (Ctrl+O, Enter) і вийти (Ctrl+X). Якщо в мінімальному образі nano немає, встановіть його: sudo apt install -y nano.
nano ~/setup-conduit.sh
Потім зробіть скрипт виконуваним і запустіть від імені адміністратора:
chmod +x ~/setup-conduit.sh
sudo ~/setup-conduit.sh
Що питає скрипт
Усі параметри задаються відповідями в терміналі. Значення за замовчуванням показано у квадратних дужках — натисніть Enter, щоб його прийняти. Повідомлення скрипта кольорові й мають позначки [INFO], [WARN], [ERROR].
- Спосіб установки.
1— завантажити готовий статичний бінарний файл Conduit із GitLab (рекомендовано);2— використати свій бінарний файл, якщо ви зібрали Conduit самі (скрипт попросить шлях до нього). - Домен (FQDN). Введіть точно той домен, який налаштували в кроці 2, наприклад
matrix.example.org. Він станеserver_nameі змінити його потім не можна. - Registration token. Це «пароль на реєстрацію»: без нього ніхто не створить обліковий запис на вашому сервері. Скрипт пропонує випадковий — прийміть його або введіть свій. Запишіть токен: він знадобиться вам і друзям.
- Увімкнути федерацію?
[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 до сервера не підключаться, тому цей крок не пропускайте.
sudo certbot --nginx -d matrix.example.org
Що всередині: конфіг, служба, nginx
Знати це не обов'язково, але корисно, коли щось доведеться змінити вручну. Ключові рядки конфігу Conduit:
[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 і працює від окремого користувача з обмеженнями. Приблизно так:
[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 МБ, а файли в чатах більші) і не склеювати подвійні скісні риски в адресах:
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, друга — адресу вашого сервера для клієнтів:
curl https://matrix.example.org/_matrix/client/versions
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.
- На екрані входу оберіть створення облікового запису (Create account).
- Біля назви сервера натисніть Edit (змінити домашній сервер) і введіть
https://matrix.example.org. - Введіть ім'я користувача, наприклад
admin, і надійний пароль. - Коли Element попросить registration token, вставте токен, який показав скрипт.
Перший зареєстрований користувач стає адміністратором: Conduit автоматично додає його в кімнату адміністраторів #admins, де працює службовий бот @conduit:matrix.example.org. Звертайтеся до бота на початку повідомлення:
@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 для цієї схеми не потрібен.
- Відкрийте my.telegram.org/apps і увійдіть за номером телефону — код підтвердження прийде в застосунок Telegram.
- Відкрийте API development tools і заповніть форму: назва застосунку та коротке ім'я — будь-які (наприклад,
Matrix Bridgeіmatrixbridge), платформа — Other. - Натисніть Create application і збережіть два значення:
api_id(число) іapi_hash(рядок із літер і цифр).
Нікому не передавайте ці ключі й не публікуйте їх: вони прив'язані до вашого облікового запису Telegram.
Запуск скрипта моста
Скрипт setup-bridge.sh запускається лише після успішної установки Conduit: він перевіряє, що сервер працює, і бере домен із збережених параметрів. Завантажте й запустіть його так само, як перший.
-
setup-bridge.shСкачати
Міст Telegram (mautrix-telegram на Go): бінарник, конфіг, реєстрація, systemd
скрипт bash · 0,1 МБ · SHA-256ab98664194f7…
scp -i key.pem setup-bridge.sh [email protected]:~/
chmod +x ~/setup-bridge.sh
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 прочитає реєстрацію. Виглядає це приблизно так:
@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-кімнати свого сервера.
Перевірте, що реєстрація пройшла:
@conduit:matrix.example.org: list-appservices
Бот має відповісти, що зареєстровано один appservice — telegram. Перезапускати Conduit після реєстрації не потрібно. Поверніться в термінал і відповідайте y — скрипт запустить міст. Стан служби можна перевірити так:
sudo systemctl status mautrix-telegram
Якщо помилилися з реєстрацією, видаліть її командою unregister-appservice telegram і надішліть повідомлення знову. Якщо міст запущено, але він не відповідає, перезапустіть Conduit, поки міст працює: sudo systemctl restart conduit.
Вхід у Telegram через міст
В Element почніть особистий чат із ботом @telegrambot:matrix.example.org (кнопка нового повідомлення, введіть повний ідентифікатор бота). Список команд бот покаже на help. Увійти можна двома способами.
За номером телефону. Надішліть боту команду з вашим номером у міжнародному форматі:
login phone +380XXXXXXXXX
Код підтвердження прийде не SMS, а повідомленням в іншому застосунку Telegram, де ви вже увійшли, — тому на момент входу тримайте під рукою телефон або комп'ютер із Telegram. Надішліть код боту. Якщо в Telegram увімкнено двоетапну перевірку, бот попросить хмарний пароль — надішліть його в ту саму кімнату.
За QR-кодом. Надішліть боту:
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-коду або порівнянням емодзі.
Простір і кімнати для друзів
- Створіть простір (кнопка «+» біля списку просторів), дайте йому назву, оберіть приватний.
- Додайте в простір кімнати: загальний чат, кімнату для фото, для планів. Приватні кімнати Element шифрує за замовчуванням.
- Друзям надішліть адресу сервера та registration token, щоб вони зареєструвалися, а потім запросіть їх у простір за ідентифікатором
@ім'я:matrix.example.org. - Коли всі зареєструвалися, вимкніть реєстрацію в admin-кімнаті.
Федерація: увімкнути або вимкнути
Якщо під час установки ви відповіли N, сервер ізольований: писати можна лише користувачам вашого сервера. Щоб друзі з matrix.org та інших серверів могли спілкуватися з вами, увімкніть федерацію в конфігу й перезапустіть Conduit:
allow_federation = true
sudo systemctl restart conduit
Перевірте федерацію на federationtester.matrix.org: введіть свій домен — сервіс покаже, чи можуть інші сервери до вас достукатися. Вимикається федерація так само — значенням false і перезапуском.
Якщо щось не працює
Найшвидший шлях до причини — подивитися логи. Щоб не збирати їх вручну, є скрипт collect-logs.sh.
-
collect-logs.shСкачати
Збір логів і діагностики в архів із замаскованими секретами
скрипт bash · 0,1 МБ · SHA-256799fc2b5342d…
chmod +x ~/collect-logs.sh
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***. Завантажте архів на свій комп'ютер:
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:6167 | Conduit не запущений | sudo systemctl start conduit, потім логи Conduit |
Бот @telegrambot не відповідає | Міст не запущений або не зареєстрований | list-appservices, systemctl status mautrix-telegram; перезапустіть Conduit при запущеному мості |
| Код входу Telegram не приходить | Код надсилається в інший застосунок Telegram, а не SMS | Відкрийте Telegram на іншому пристрої або увійдіть через login qr |
Корисні команди
Логи в реальному часі (вихід — Ctrl+C):
sudo journalctl -u conduit -f
sudo journalctl -u mautrix-telegram -f
Останні 50 рядків логу без прокрутки:
sudo journalctl -u conduit -n 50 --no-pager
Хто які порти слухає (мають бути 6167, 29317, 80, 443):
sudo ss -tlnp
Перезапуск служб:
sudo systemctl restart conduit
sudo systemctl restart mautrix-telegram
sudo systemctl restart nginx
Оновлення та резервні копії
Оновлення Conduit
Підпишіться на релізи репозиторію famedly/conduit на GitLab (сповіщення про нові релізи) — оновлення безпеки виходять регулярно. Оновлення — це заміна бінарного файлу: зупиніть службу, завантажте свіжу стабільну збірку для своєї архітектури й запустіть знову.
sudo systemctl stop conduit
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"
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.
sudo systemctl stop mautrix-telegram
sudo wget -O /opt/mautrix-telegram/mautrix-telegram https://github.com/mautrix/telegram/releases/latest/download/mautrix-telegram-arm64
sudo chmod +x /opt/mautrix-telegram/mautrix-telegram && sudo systemctl start mautrix-telegram
Перед оновленням моста прочитайте опис релізу: іноді в конфігу з'являються нові параметри.
Резервні копії
Усе цінне — у трьох місцях: дані Conduit (/var/lib/matrix-conduit/), конфіги (/etc/matrix-conduit/) і каталог моста (/opt/mautrix-telegram/). Найпростіша копія — архів при зупинених службах:
sudo systemctl stop mautrix-telegram conduit
sudo tar czf ~/matrix-backup-$(date +%F).tar.gz /var/lib/matrix-conduit /etc/matrix-conduit /opt/mautrix-telegram
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-256f68f41490bc9… -
setup-bridge.shСкачати
Міст Telegram (mautrix-telegram на Go): бінарник, конфіг, реєстрація, systemd
скрипт bash · 0,1 МБ · SHA-256ab98664194f7… -
collect-logs.shСкачати
Збір логів і діагностики в архів із замаскованими секретами
скрипт bash · 0,1 МБ · SHA-256799fc2b5342d… -
prompt-debug.uk.mdСкачати
Промпт-помічник для Claude / ChatGPT / DeepSeek: розбір логів
промпт · 0,1 МБ · SHA-2566777d0cc5a64… -
prompt-debug.ru.mdСкачати
Промпт-помічник для Claude / ChatGPT / DeepSeek: розбір логів (рос.)
промпт · 0,1 МБ · SHA-256fe42fbaa7d3c…
Скрипти перед запуском перегляньте: вони виконуються від root. Промпти — текст для ШІ-помічника, без секретів.
Альтернативи
Conduit — не єдиний легкий сервер Matrix. У нього є форки з тим самим принципом установки (один бінарний файл, вбудована база):
- continuwuity — громадський форк conduwuit, активно розвивається. Репозиторій — forgejo.ellis.link/continuwuation/continuwuity.
- tuwunel — називає себе офіційним наступником conduwuit, підтримує міграцію з Conduit і форків. Репозиторій — github.com/matrix-construct/tuwunel.
Зверніть увагу: у форків команди admin-кімнати пишуться через підкреслення (register_appservice, list_appservices), а не через дефіс, як у Conduit. Сам conduwuit більше не підтримується.
Synapse (Python) і Dendrite (Go) потужніші, але важчі — на машині AMD з 1 ГБ це відчутно:
| Критерій | Synapse | Dendrite | Conduit |
|---|---|---|---|
| Мова | Python | Go | Rust |
| Пам'ять у спокої (за спостереженнями автора матеріалу) | 300–500 МБ | 100–200 МБ | 15–50 МБ |
| База даних | Зовнішній PostgreSQL | Зовнішній PostgreSQL | Вбудована RocksDB або SQLite |
| Залежності | Python, PostgreSQL | PostgreSQL | Один бінарний файл |
| Машина AMD 1 ГБ | Не вистачає | На межі | Працює |
На Ampere A1 з 12 ГБ поміститься будь-який, але Conduit простіший в обслуговуванні: немає окремої бази, яку треба оновлювати й копіювати.
Джерела
- Conduit на GitLab — релізи v0.10.13–v0.10.15, README, статус beta (перевірено 11–12.10.2026).
- Документація Conduit: конфігурація і appservices (12.10.2026); загальне розгортання і делегування (11.10.2026).
- mautrix-telegram на GitHub — реліз v26.09 від 16.09.2026 (12.10.2026).
- Встановлення мостів mautrix на Go, вхід у міст Telegram, реєстрація appservice (12.10.2026).
- Блог mau.fi: випуск мостів, квітень 2026 — перехід mautrix-telegram на Go (12.10.2026).
- Oracle Cloud: ресурси Always Free (12.10.2026) і рекомендації щодо файрвола Compute (11.10.2026).
- Oracle Cloud Free Tier FAQ — картка, один акаунт на людину (11.10.2026).
- Сервери Matrix на matrix.org і tuwunel (11.10.2026).
- Специфікація Matrix, Federation Tester.
- Власний досвід автора матеріалу: створення машини в Oracle Cloud (серпень 2025), установка Conduit і моста (до лютого 2026).
Запитання й відповіді
- Це справді безкоштовно?
- Так. Машина 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
Розділ: Дзвінки та відеозв'язок