Перенос MyChat Server с Windows на Linux (Docker)


Эта инструкция — как перенести рабочую инсталляцию MyChat Server с Windows на готовый Linux Docker-образ с сохранением базы, файлов и сертификатов. Если у сервера меняется IP-адрес — в конце показано, как перенастроить клиентов.

Если Linux-образ ещё не установлен — сначала пройдите Установку; эта инструкция её продолжает.


1 Что переносим, а что нет

С Windows-сервера переносим только данные пользователя. Остальное — пути, конфиги, бинарники — даёт сам образ.

ПереносимНе переносим
db/ — системная база (через бэкап-архив админки)options.json — используются Linux-дефолты образа
files/ — файлы пользователейконфиги turn/mixer — генерирует сервер при каждом запуске
cert/ — сертификаты (как есть, без перевыпуска)любые Windows-пути и бинарники
Сертификаты переносятся как есть. Сервер загружает отдельные файлы ключа и серта и сам нормализует формат — перевыпускать или конвертировать ничего не нужно.

2 Шаг 1. Бэкап на Windows

  1. В веб-админке старого сервера: Settings → Backup → «Make backup now» — сделайте и скачайте архив базы.
  2. Запомните, где лежат данные. По умолчанию весь профиль лежит в C:\ProgramData\MyChat Server\ — большинство инсталляций используют стандартный путь, так что проще всего искать именно там. Внутри:
    • база: C:\ProgramData\MyChat Server\db\
    • файлы: админка → Settings → Folders (там указаны реальные пути)
    • сертификаты: C:\ProgramData\MyChat Server\cert\
    • логи: C:\ProgramData\MyChat Server\logs\ (переносить при необходимости)
Имя папки в ProgramData совпадает с именем установочной папки в Program Files (x86).

3 Шаг 2. Пустой старт на Linux

Сначала поднимите сервер на пустом профиле — при первом старте он сам развернёт корректную структуру, в которую на следующем шаге подложим данные со старого сервера.

Через лаунчер (рекомендуется):

wget https://nsoft-s.com/files/doker/deploy.tar.gz
tar -xzf deploy.tar.gz
cd deploy
./mc-launcher.sh

Мастер проведёт «за руку»:

  • выберет язык интерфейса;
  • проверит Docker и подскажет, чего не хватает;
  • скачает и установит образ (docker load) — в меню это пункты «Скачать Docker-образ с сайта» и «Подключить Docker-образ»;
  • создаст каталог профиля (/srv/mychatserver);
  • запустит контейнер со всеми обязательными параметрами — пункт «Запустить сервер».

Или вручную (свой оркестратор, автоматизация, хост без TUI):

wget https://nsoft-s.com/files/doker/mychatserver-slim.tar.gz
docker load -i mychatserver-slim.tar.gz

mkdir -p /srv/mychatserver
docker run -d --name mychatserver --network host \
    -v /srv/mychatserver:/var/lib/mychatserver \
    --stop-timeout 30 \
    mychatserver:slim

Дождитесь старта — админка откроется на http://<IP-сервера>:8080.

--network host и --stop-timeout 30 — обязательны: без host-сети не будет работать TURN, без таймаута база может закрыться некорректно. Лаунчер выставляет их сам.

4 Шаг 3. Остановка и заливка данных

Остановите сервер — в лаунчере пункт «Остановить сервер MyChat», или:

./mc-stop.sh             # или вручную: docker stop -t 30 mychatserver

В каталог профиля на хосте (/srv/mychatserver) подложите данные со старого сервера:

  1. База. Распакуйте бэкап-архив в /srv/mychatserver/db/, заменив созданную образом пустую базу. Копируйте все файлы каталога db\ (архив содержит их все, не только mcserv.db).
  2. Файлы. Скопируйте содержимое Windows-files/ в /srv/mychatserver/files/.
  3. Сертификаты. Скопируйте cert/ со старого сервера в /srv/mychatserver/cert/.
  4. Логи (при необходимости). Если важно сохранить историю логов — скопируйте содержимое Windows-logs/ в /srv/mychatserver/logs/.
Образ работает от root — файлы профиля на хосте принадлежат root; для правок понадобится sudo.

5 Шаг 4. Повторный старт и проверка

Запустите сервер снова — в лаунчере пункт «Запустить сервер», или ./mc-start.sh. При старте сервер увидит имеющуюся базу и подхватит её (при необходимости обновит схему под версию образа).

Проверьте:

./mc-status.sh           # контейнер, порты, TURN relay-адрес, диск
./mc-logs.sh             # живые логи (логи всех сервисов — в /srv/mychatserver/logs/)

Войдите в админку и убедитесь, что история, пользователи и файлы со старого сервера на месте.

6 Шаг 5. Клиенты при смене IP-адреса

Если новый сервер получил тот же IP-адрес — этот шаг можно пропустить, клиенты подключатся сами.

Серверная часть. Админка → Tools → «Server moving»: укажите новый IP-адрес, порты, основной и резервный адреса сервера.

Клиенты (все десктоп-клиенты ведут себя одинаково):

Способ подключенияДействие
DNS-имяПереназначьте старое DNS-имя на новый IP. Клиенты подхватят: в LAN — сразу, через интернет — в течение ~72 ч.
Прямой IPУкажите новый адрес сервера в каждом клиенте вручную.
Active DirectoryОбновите REG-файл с параметрами подключения и раздайте через GPO — клиенты применят при следующем входе.

7 Бэкап, откат и устранение неполадок

  • Дальнейший бэкап/перенос. Один том (/srv/mychatserver) = полное состояние инсталляции. Остановите контейнер (./mc-stop.sh) и скопируйте каталог. Перенос на другой хост — разверните лаунчер там и подложите тот же каталог профиля.
  • Ошибка при старте «каталог непустой, но mcserv.db не найден» — скорее всего неверный путь в -v или база не попала в db/. Проверьте, что mcserv.db лежит именно в <профиль>/db/.
  • Не спешите удалять старый Windows-сервер — выключайте его только после полной проверки нового.

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