Установка сервера и клиентов 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, не в чате.
Массовые аудио/видеоконференции из терминальных сессий — плохая идея: весь звук и видео кодируются на одном процессоре. Для звонков лучше локальный клиент или мобильное приложение.

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