Перенос 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. Windows-пути в настройках сервера

Обязательный шаг. Вместе с базой переезжают все настройки сервера — а в них записаны старые Windows-пути (C:\ProgramData\MyChat Server\…). В Linux-контейнере таких путей нет, поэтому их нужно переписать на контейнерные — все внутри профиля /var/lib/mychatserver (он смонтирован на хостовый каталог /srv/mychatserver).

Формат — Wine-путь Z:\…, не Unix. Эти поля обрабатывает mcserv — Windows-приложение, работающее под Wine, поэтому путь он принимает в Windows-форме. В Wine диск Z: = корень Linux-ФС /, поэтому профиль /var/lib/mychatserver в админке записывается как Z:\var\lib\mychatserver\ — с обратными слешами и завершающим слешем.

Админка → Settings → Folders — привести к виду:

ПолеЗначение
Folder for the database backupsZ:\var\lib\mychatserver\backup\
Common folder for all MyChat Server usersZ:\var\lib\mychatserver\publicftp\
Folder for registered usersZ:\var\lib\mychatserver\users\
File cache folderZ:\var\lib\mychatserver\files\
Logs folderZ:\var\lib\mychatserver\logs\

Регистр имеет значение — за Z: стоит регистрозависимая Linux-ФС (Z:\var\lib\mychatserver\, не Z:\Var\Lib\…); завершающий слеш обязателен.

Не используйте Z:\opt\mychatserver\…. Это неизменяемое дерево образа: всё записанное туда живёт только в слое контейнера и исчезнет при обновлении образа или пересоздании контейнера. Данные пользователя должны лежать только в профиле /var/lib/mychatserver (то есть Z:\var\lib\mychatserver\) — это единственный том, который хранится на хосте.

После сохранения перезапустите сервер (./mc-stop.sh./mc-start.sh), чтобы новые пути подхватились.

Пройдитесь и по остальным разделам «Настроек». Windows-пути могут остаться везде, где администратор их когда-то задавал: сертификаты и ключи (HTTPS/Let's Encrypt), пути интеграций и плагинов, каталоги выгрузки/импорта, пути внешних утилит, бэкап по расписанию. Правило простое: любое значение, начинающееся с C:\ или \\ (сетевая шара), в контейнере недействительно — замените его на соответствующий подкаталог Z:\var\lib\mychatserver\… (сетевые шары смонтируйте на хост и добавьте в контейнер отдельным -v).

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

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

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

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

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

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

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

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