Установка сервера і клієнтів MyChat на термінальний сервер

Термінальний сервер (Windows Server + RDS, RDP-сесії) — окремий випадок: клієнт встановлюється на машину один раз, а працюють у ньому десятки користувачів одночасно, кожен у своїй сесії. Ця інструкція показує, куди ставити сервер, як установити клієнт для всіх користувачів, як зробити автореєстрацію й автозапуск, скільки ресурсів закладати і як оновлювати таку інсталяцію.

Якщо сервер MyChat ви плануєте тримати на Linux — дивіться установку MyChat Server на Linux-хост. Термінальна частина цієї інструкції від платформи сервера не залежить.


1 Схема: що і де стоїть

У MyChat дві незалежні частини, і на термінальному сервері їх зазвичай розносять:

КомпонентДе стоїть
MyChat ServerОкрема машина або віртуалка (Windows-служба чи Linux/Docker). Можна й на самому терміналі, але тоді сервер конкурує за ресурси з сесіями користувачів.
MyChat ClientОдна копія в Program Files термінального сервера. Усі RDP-сесії запускають цей самий mcclient.exe.
Дані користувачаУ профілі кожного користувача: %LOCALAPPDATA%\MyChat Client\ — налаштування, історія, кеш. Створюється автоматично на першому запуску.

Клієнт — нативний Win32-додаток, без .NET і без окремої «служби на користувача». Одна сесія — один процес mcclient.exe з власним профілем.

Не встановлюйте клієнт у профіль користувача. Каталог установки має бути спільним (C:\Program Files (x86)\MyChat Client), інакше кожен профіль отримає свою копію програми, і оновлювати доведеться кожну окремо.

2 Установка сервера

Сервер ставиться звичайно, термінальної специфіки в нього немає. Але на терміналі його треба запускати системною службою Windows, а не програмою в RDP-сесії адміністратора: інакше робота сервера залежить від цієї сесії.

  1. запустіть інсталятор сервера на вибраній машині;
  2. якщо сервер уже працює як звичайна програма — вимкніть його автозапуск у налаштуваннях і завершіть роботу;
  3. установіть службу і запустіть її (від імені адміністратора):
    "C:\Program Files (x86)\MyChat Server\SystemService\service_install.cmd"
    "C:\Program Files (x86)\MyChat Server\SystemService\service_start.cmd"
  4. у властивостях служби поставте тип запуску «Автоматично (відкладений запуск)»;
  5. відкрийте веб-адмінку за адресою http://<IP-сервера> і задайте адміністратора, домен, HTTPS.

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

ПортПризначення
2004 TCPпідключення клієнтів — обов'язково
80 / 443 TCPвеб-чат, веб-адмінка і вся передача файлів. Порт задає адміністратор, за замовчуванням 80
UDP 49000–50000, 8888TURN — аудіо/відео-дзвінки та конференції
Сервер працює або програмою, або службою — не одночасно. І не додавайте MyChat Server в автозавантаження іншим користувачам термінального сервера.
Сервер уже працює в мережі? Цей крок пропускайте — термінальний сервер просто стає ще одним місцем, звідки підключаються клієнти.

3 Установка клієнта на термінальний сервер

Установлюйте під обліковим записом адміністратора, один раз на всю машину:

  1. переведіть сервер у режим установки програм:
    change user /install
  2. запустіть інсталятор клієнта, у полі каталогу залиште C:\Program Files (x86)\MyChat Client;
  3. поверніть звичайний режим:
    change user /execute

Ярлик запуску кладіть у спільні каталоги, щоб він з'явився в усіх користувачів:

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\      # меню «Пуск» для всіх
C:\Users\Public\Desktop\                                   # робочий стіл для всіх

На першому запуску клієнт сам створює каталог даних поточного користувача:

C:\Users\<USER>\AppData\Local\MyChat Client\
Готувати профілі заздалегідь не потрібно — нічого копіювати руками не треба. Права на запис у каталог програми користувачам не потрібні.

4 Автозапуск і автореєстрація користувачів

Щоб не заводити акаунти вручну й не роздавати паролі, запускайте клієнт з параметрами автореєстрації. Додайте цей рядок в автозавантаження сесії:

"C:\Program Files (x86)\MyChat Client\mcclient.exe" /auto -server:"192.168.1.50" -randompassword

Значення параметрів пишуться через двокрапку, самі параметри розділяються пробілами.

ПараметрЩо робить
/autoреєструє користувача під його ім'ям у Windows і одразу підключає до сервера
-server:"IP"адреса сервера MyChat — обов'язковий параметр
-port:2004TCP-порт сервера; потрібен, лише якщо він нестандартний (мінімум 1024)
-randompasswordгенерує випадковий 16-символьний пароль — користувач його не бачить і не вводить
-servpass:"x123"пароль доступу до сервера, якщо його ввімкнено

Куди прописати рядок — на вибір:

  • ярлик з цими параметрами в C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\ — найпростіше;
  • групова політика: Конфігурація користувача → Політики → Налаштування Windows → Сценарії → Вхід у систему.

Щоб /auto спрацював, на сервері має бути дозволена реєстрація нових користувачів.

/auto і прозора доменна авторизація Active Directory — взаємовиключні. Якщо користувачі імпортовані з AD і дані сервера роздаються через реєстр/GPO, клієнт запускають без ключів: "C:\Program Files (x86)\MyChat Client\mcclient.exe".
Один користувач — один акаунт MyChat. Не давайте кільком людям спільний логін: історія, статуси й доставка повідомлень розраховані на персональні акаунти.

5 Єдині налаштування для всіх сесій

На терміналі важливо, щоб усі клієнти поводилися однаково — особливо в частині приймання файлів. Робиться це на сервері, а не в кожній сесії:

  1. у адмінці сервера відкрийте Інструменти → Шаблони налаштувань клієнтів;
  2. створіть шаблон для термінальних користувачів: режим приймання файлів, каталог завантажень, звуки, автозапуск, оформлення;
  3. призначте шаблон групі користувачів (наприклад, Гості).

Шаблон діє і на вже створених користувачів групи, і на всіх нових — окремо донастроювати кожну сесію не потрібно.

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

6 Скільки ресурсів закладати

MyChat Client — нативний Win32 без .NET, у спокої тримає близько 40 МБ оперативної пам'яті на сесію. Це помітно менше за Skype чи Viber, тому клієнт нормально живе на терміналах з обмеженою пам'яттю.

Одночасних сесійRAM тільки під клієнтиПримітка
10≈ 0.4 ГБорієнтир, без урахування ОС і решти програм
25≈ 1 ГБ
50≈ 2 ГБ
100≈ 4 ГБсервер MyChat краще винести на окрему машину

Значення зростає при активному листуванні з картинками й відкритих історіях — закладайте запас 30–50%.

7 Веб-чат замість програми

Клієнт можна взагалі не встановлювати: MyChat має повноцінний веб-чат. Користувач відкриває в браузері

http://<IP-сервера>

і працює в тому ж чаті — з групами, файлами, каналами і конференціями.

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

8 Оновлення

Оновлення йде у два етапи, в такому порядку:

  1. Сервер. Зупиніть службу сервера, установіть нову версію поверх старої, запустіть.
  2. Клієнт. На термінальному сервері оновлюється одна копія програми — під адміністратором, поверх наявної установки.

Перед оновленням клієнта треба закрити всі запущені mcclient.exe — файл програми зайнятий, поки хоч одна сесія його тримає:

change user /install
taskkill /IM mcclient.exe /F      # закрити клієнти в усіх сесіях
... установка нової версії ...
change user /execute

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

Автооновлення клієнта на терміналі вимикайте: користувач без прав адміністратора оновити Program Files не зможе, і кожна сесія лише даремно питатиме про оновлення.

9 Типові граблі RDP

СимптомПричина і що робити
Не працює буфер обміну, не вставляється знімок екранау RDP-підключенні вимкнено перенаправлення буфера. Увімкніть його в клієнті RDP або в політиці RDS.
Немає звуку сповіщеньне перенаправлено відтворення звуку в сесію: RDP → Локальні ресурси → Відтворювати на цьому комп'ютері.
Не працює мікрофон у дзвінкахпотрібне перенаправлення запису звуку в RDP-сесію. Без нього аудіо/відео-дзвінки з термінальної сесії неможливі.
Другий вхід «викидає» першогокілька людей під одним акаунтом MyChat. Заведіть персональні акаунти (див. крок 4).
Файли зникають після виходусесія працює з тимчасовим профілем. Виправляється на рівні RDS, не в чаті.
Масові аудіо/відео-конференції з термінальних сесій — погана ідея: увесь звук і відео кодуються на одному процесорі. Для дзвінків краще локальний клієнт або мобільний додаток.

Служба поддержки