Перенос 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-сервер — вимикайте його лише після повної перевірки нового.

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