пости

Альтернатива Телеграма: як запустити власний сервер Matrix, використовуючи Docker Compose

Альтернатива Телеграма: як запустити власний сервер Matrix, використовуючи Docker Compose

Передмова:

Останнім часом дедалі більше людей замислюються про те, наскільки безпечно довіряти все своє листування, контакти й цифрове спілкування великим централізованим платформам. Хочеться не просто зручного месенджера, а відчуття, що твої дані справді належать тобі: що ти сам контролюєш інфраструктуру, сам вирішуєш, де все зберігається, і не залежиш від чужих правил, обмежень чи раптових змін політики сервісу.

Саме тут і з’являється Matrix — відкритий федеративний протокол для обміну повідомленнями в реальному часі. Якщо говорити просто, це не один «сервіс» і не один сайт, а ціла мережа незалежних серверів, які можуть взаємодіяти між собою. На відміну від звичних месенджерів, де все зав’язано на одній компанії, у Matrix немає єдиного центру, від якого залежить уся система.

Кожен такий сервер називають homeserver. На ньому можна реєструвати користувачів, зберігати повідомлення, кімнати, медіафайли та обслуговувати дзвінки. При цьому користувачі різних homeserver’ів усе одно можуть спілкуватися між собою в межах однієї федеративної мережі. У цьому й полягає головна ідея Matrix: ти можеш володіти своєю частиною інфраструктури, але не випадати з глобального спілкування.

Цей підхід особливо добре підходить тим, хто цінує приватність, хоче більше контролю над своїми даними й не хоче будувати критично важливу комунікацію на чужій закритій платформі. Matrix не обіцяє магії чи повної простоти “з коробки”, зате дає значно важливішу річ — свободу, прозорість і можливість покладатися насамперед на себе.

Цей гайд — для тих, хто загалом уже знайомий з Linux, DNS і Docker, але хоче пройти весь шлях із нуля: акуратно, послідовно й без пропуску важливих деталей. У результаті ви зможете самостійно підняти власний Matrix-сервер і краще зрозуміти, як влаштована федеративна комунікація на практиці.

Що буде в результаті:

Після завершення цього гайда ви матимете:

  • власний Matrix-сервер на домашньому обладнанні;
  • працюючу федерацію;
  • підтримку дзвінків через Element X / Element Call;
  • можливість реєструвати користувачів через Synapse Admin;
  • незалежну основу для особистого, сімейного або командного спілкування.

Що підготувати заздалегідь:

1. Статична публічна IP-адреса

Перевірте в особистому кабінеті провайдера, чи доступна послуга статичної публічної IP-адреси. У багатьох провайдерів вона підключається окремо.

2. Доменне ім’я

Придбайте домен у будь-якого реєстратора. Підійде будь-який зручний варіант. Сам домен зазвичай коштує недорого, але з урахуванням розширень і додаткових послуг загальна вартість за рік може бути вищою за базову ціну.

3. Стабільне підключення сервера до інтернету

Найкраще використовувати дротове підключення до маршрутизатора через RJ-45. Також заздалегідь перевірте локальну IP-адресу сервера у вашій домашній мережі, наприклад:

192.168.0.172

4. Сервер із доступом по SSH

Для запуску Matrix підійде майже будь-який комп’ютер, зокрема старий ноутбук або компактний домашній сервер.

Рекомендації:

  • краще використовувати Ubuntu Server або інший дистрибутив на базі Debian;
  • Windows для такого сценарію не рекомендується;
  • доступ до сервера бажано налаштувати через SSH.

Приклад підключення:

ssh user@server_ip

5. Docker і Docker Compose

На сервері мають бути встановлені Docker і Docker Compose. Для такого сценарію це один із найзручніших способів розгортання Matrix-стека.

Примітка: цей гайд передбачає, що у вас уже є працюючий Nginx Proxy Manager.


Крок 1. Налаштування DNS у Cloudflare

1.1. NS-записи домену

У панелі керування доменом вкажіть NS-сервери Cloudflare, які були видані для вашої зони.

Параметри зазвичай виглядають так:

  • Type: NS
  • Name: @
  • Content: NS-сервери, видані Cloudflare
  • TTL: Auto

1.2. CNAME-запис для Matrix

Створіть запис CNAME:

  • Type: CNAME
  • Name: matrix
  • Target: example.com — ваш домен
  • Proxy status: DNS only
  • TTL: Auto

Цей запис є обов’язковим для основного Matrix-хоста:

matrix.example.com

Саме до нього підключатимуться клієнти.

cname-record

1.3. DNS-запис для сервісу дзвінків

Створіть A-запис:

  • Type:A
  • Name:matrixrtc
  • IPv4: <ваш_публічний_IP>
  • Proxy status:DNS only
  • TTL:Auto

Цей запис буде потрібний для сервісу дзвінків.

A-запис

Для таких сервісів зазвичай важливо використовувати режим DNS only, оскільки проксування через Cloudflare може заважати коректній роботі Matrix-компонентів і сервісів дзвінків.


Крок 2. Налаштування Nginx Proxy Manager

У цій конфігурації вам знадобляться два proxy host:

  • matrix.example.com
  • matrixrtc.example.com

2.1. Proxy Host для matrix.example.com

У вкладці Details вкажіть:

  • Domain Names:matrix.example.com
  • Scheme:http
  • Forward Hostname / IP: локальна IP-адреса сервера, наприклад 192.168.0.172
  • Forward Port:8008
  • Access List:Publicly Accessible
  • Cache Assets:ON
  • Block Common Exploits:ON
  • Websockets Support:ON

nginx-matrix-detales

У вкладці Custom Locations додайте дві локації.

Локація 1: /.well-known/matrix/server

Параметри:

  • Scheme:http
  • Forward Hostname / IP:127.0.0.1
  • Forward Port:65535

У поле Custom Nginx Configuration вставте:

default_type application/json;
add_header Access-Control-Allow-Origin *;

return 200 '{"m.server":"matrix.example.com:443"}';

nginx-matrix-локація-1

Локація 2: /.well-known/matrix/client

Параметри:

  • Scheme:http
  • Forward Hostname / IP:127.0.0.1
  • Forward Port:65535

У поле Custom Nginx Configuration вставте:

default_type application/json;
add_header Access-Control-Allow-Origin *;

return 200 '{
  "m.homeserver": { "base_url": "https://matrix.example.com" },
  "org.matrix.msc4143.rtc_foci": [
    {
      "type": "livekit",
      "livekit_service_url": "https://matrixrtc.example.com/livekit/jwt"
    }
  ]
}';

nginx-matrix-локація-2

Ці адреси потрібні для такого:

  • /.well-known/matrix/server повідомляє федерації, за якою адресою доступний ваш сервер;
  • /.well-known/matrix/client повідомляє Matrix-клієнтам, який homeserver використовувати і де розміщений сервіс дзвінків.

У вкладці SSL увімкніть:

  • сертифікат: wildcard або сертифікат на ваш домен, наприклад*.example.com
  • Force SSL:ON
  • HTTP/2 Support:ON
  • HSTS Enabled:ON
  • HSTS Subdomains:OFF

nginx-matrix-ssl


2.2. Proxy Host для matrixrtc.example.com

У вкладці Details вкажіть:

  • Domain Names:matrixrtc.example.com
  • Scheme:http
  • Forward Hostname / IP: локальна IP-адреса сервера, наприклад 192.168.0.172
  • Forward Port:7880
  • Access List:Publicly Accessible
  • Websockets Support:ON
  • Cache Assets:OFF
  • Block Common Exploits:OFF

nginx-matrixrtrtc-details

Для matrixrtc додаткові Custom Locations не потрібні.

У вкладці SSL увімкніть:

  • сертифікат:*.example.com
  • Force SSL:ON
  • HTTP/2 Support:ON
  • HSTS Enabled:OFF

nginx-matrixrtc-ssl


Крок 3. Перенаправлення портів на маршрутизаторі

На маршрутизаторі потрібно відкрити й пробросити порти на локальну IP-адресу сервера.

У цьому прикладі використовуються такі правила:

  • 7881/TCP192.168.0.172:7881 — LiveKit
  • 50100-50200/UDP192.168.0.172:50100-50200 — медіатрафік LiveKit
  • 5349/TCP192.168.0.172:5349 — TURN over TLS
  • 3478/UDP192.168.0.172:3478 — TURN

Важливо розуміти, що в кожного маршрутизатора свій інтерфейс, але принцип налаштування всюди однаковий: зовнішній порт має бути перенаправлений на внутрішню адресу та порт вашого сервера.

маршрутизатор-порт-підварка


Крок 4. Запуск Matrix

Насамперед потрібно завантажити конфігурацію Docker Compose з GitHub-репозиторію:

git clone [email protected]:inne-dev/matrix-server.git

Потім перейдіть в папку з проектом:

cd matrix-server

Для швидкого старту використайте шаблон змінних середовища:

cp .env.example .env

Після цього відкрийте файл .env і обов’язково вкажіть:

  • MATRIX_DOMAIN
  • секрети з достатньо надійними значеннями:
    • POSTGRES_PASSWORD
    • SYNAPSE_*_SECRET
    • TURN_PASSWORD
    • LIVEKIT_SECRET

Потім згенеруйте конфігурацію за замовчуванням:

./scripts/render-configs.sh

Після створення конфігурації підніміть сервіси:

docker compose up -d

Щоб перевірити стан контейнерів, використайте:

docker compose ps
docker compose logs --tail=100 synapse

Крок 5. Створення першого користувача

Після запуску стека створіть першого користувача за допомогою вбудованої утиліти Synapse з контейнера:

docker exec -it synapse register_new_matrix_user \
  -c /data/homeserver.yaml \
  http://localhost:8008

Далі в інтерактивному режимі майстер попросить вказати:

  • ім’я користувача;
  • пароль;
  • чи потрібно надати цьому користувачу права адміністратора.

Крок 6. Підключення клієнтів

Ви можете використовувати:

  • на смартфоні -- Element X
  • на комп’ютері -- Element Desktop

Під час входу вкажіть власний homeserver, наприклад:

https://matrix.example.com

Після цього можна увійти у свій обліковий запис, підключитися до сервера й почати користуватися власною Matrix-інфраструктурою.


Для кого цей посібник

Цей матеріал буде корисний, якщо ви шукаєте:

  • безпечний месенджер для особистого користування;
  • відкритий месенджер для команди або спільноти;
  • спосіб підняти власний месенджер на домашньому сервері;
  • рішення, яке менше залежить від однієї компанії;
  • більш приватний і контрольований спосіб спілкування.

Підсумок

У результаті ви отримуєте власну незалежну схему комунікації. Такий сервер можна використовувати для особистого спілкування, сім’ї, невеликих команд, закритих спільнот або технічних проєктів, де важливі контроль над інфраструктурою, автономність і передбачуваність роботи.

Головна перевага Matrix у тому, що це не централізований месенджер, повністю прив’язаний до одного оператора. Це відкрита федеративна мережа, у межах якої ви можете розгорнути власний homeserver, керувати користувачами, підключати клієнтів і, за потреби, розширювати систему додатковими сервісами.

Якщо вам потрібен власний месенджер на домашньому сервері або просто більш самостійний спосіб зберігати зв’язок, Matrix виглядає одним із найсильніших доступних варіантів. Так, у цього підходу є поріг входу: доведеться мати справу з DNS, сертифікатами, reverse proxy, перенаправленням портів і базовою конфігурацією контейнерів. Але натомість ви отримуєте гнучкість, незалежність і рівень контролю, якого зазвичай не дають звичайні споживчі месенджери.


Часті запитання

Чи складно підняти власний Matrix-сервер?

Базовий запуск Matrix не є надто складним, якщо ви вже працювали з Linux, Docker, DNS і reverse proxy. Основна складність зазвичай полягає не в самому Synapse, а в правильному налаштуванні домену, TLS-сертифікатів, федерації та сервісів дзвінків.

Чи можна використовувати Matrix для сім’ї або невеликої команди?

Так. Matrix добре підходить як для особистого спілкування, так і для невеликих команд, сімейних чатів, закритих спільнот або технічних проєктів, де важливі автономність, контроль і передбачуваність роботи.

Чи обов’язково підіймати сервер вдома?

Ні. Ви можете розгорнути Matrix як на домашньому сервері, так і на VPS або іншій орендованій інфраструктурі. Домашній сервер — лише один із можливих варіантів, якщо вам важливо повністю контролювати свою систему.

Чи замінить Matrix звичайні популярні месенджери?

Для багатьох сценаріїв — так, особливо якщо вам важливі незалежність, приватність і контроль над інфраструктурою. Але варто враховувати, що Matrix потребує трохи більше технічної підготовки й не завжди дає той самий рівень простоти, який пропонують масові споживчі сервіси.

1

Коментарі

Залишити коментар

Коментарів поки немає.