Перенос существующего сервера
Переезд должен сохранить идентичность сервера и согласованное состояние игроков. Новая карточка не требуется только из-за смены компьютера; она создаёт другой ID и не переносит автоматически ключи, модерацию и связанные данные.
Подготовьте новый Windows x64-хост, ASCII-путь, сетевые правила, место для копии и совместимую СУБД. Проверьте доступность нового публичного адреса заранее. Если у провайдера CGNAT, перенос файлов не решит входящие соединения — сначала обеспечьте подходящую сеть.
Последовательность переезда
- Составьте перечень файлов и внешних зависимостей по инструкции резервирования.
- Запланируйте простой и остановите старый игровой процесс/монитор.
- Сделайте окончательную согласованную копию файлов и БД после остановки записей.
- Установите проверенный комплект на новом хосте, восстановите данные и SQL.
- Исправьте dataPath, пути ресурсов, строку БД и ACL для нового пользователя Windows.
- Настройте TCP/UDP на новом игровом хосте и NAT на маршрутизаторе.
- Если публичный endpoint изменился, обновите карточку, пройдите необходимую повторную модерацию и импортируйте актуальную конфигурацию публикации.
- Запустите только новый экземпляр, проверьте локальный ID, heartbeat, шлюз и реальный вход извне.
- После приёмки отключите старые задачи автозапуска и правила публикации старого экземпляра.
Смена компьютера не требует безусловного перевыпуска каждого ключа, если секреты перенесены защищённо и не скомпрометированы. Но отозванный ключ из резервной копии не заработает. Проверяйте соответствие ID и пары публикации.
Смена пользователя Windows
NTFS-права привязаны к SID, а не только к видимому имени. Новый пользователь с тем же именем на другом компьютере не обязательно имеет доступ к приватному состоянию. Назначьте права новому владельцу через штатные средства и проверьте запуск от его имени.
Не выдавайте Everyone: Full Control всему комплекту. Отдельно проверьте доступ к txData, секретам, внешнему server-data и приватному SQL-конфигу. Удалите лишний доступ прежних пользователей, если это предусмотрено планом переноса.
Смена домена или внешнего IP
Обновите DNS/адрес карточки, NAT и, если изменился порт, настройки мастера. Дождитесь актуального разрешения DNS и модерации. Старый publisher.json может содержать прежний одобренный endpoint; получите актуальную конфигурацию вместо ручного редактирования случайных полей.
Скрытый endpoint в каталоге всё равно должен быть верным и доступным инфраструктуре. Отключение отображения адреса не позволяет оставить в карточке старый адрес.
Несколько серверов на одном компьютере
Каждому экземпляру нужны собственные комплект/профиль, каталог данных, игровой порт, порт панели, карточка с ID, ключ доступа и пара публикации. Для режима с SQL используйте отдельную БД и пользователя, если режим явно не спроектирован для совместной схемы.
| Параметр | Пример A | Пример B |
|---|---|---|
| Папка | C:\OpenM-A |
C:\OpenM-B |
| Игровой TCP/UDP | 30120 | 30121 |
| Панель | 40120 | 40121 |
| БД | openm_a |
openm_b |
| ID и ключи | От карточки A | От карточки B |
Примеры портов не разрешают конфликты автоматически: проверьте, что они свободны. Игровые порты не должны попадать в диапазон панели 40120–40150. Для выбранного порта панели используйте документированный помощник запуска с -PanelPort; запуск голого EXE без нужных параметров может использовать стандартный порт.
Клон для тестов
Копия production не должна отправлять heartbeat от его имени или писать в его БД. До запуска отключите публикацию, измените порты и строку БД. Для полноценного внешнего тестирования используйте отдельную карточку и ключи. Для локальной диагностики выбирайте соответствующий режим мастера, учитывая ограничения входа игроков.
Возврат на старый хост
Остановите новый экземпляр, согласуйте возврат данных, endpoint и NAT. Если на новом сервере уже появились изменения игроков, старая копия устарела: переносите финальное состояние либо явно принимайте потерю изменений. Только после этого запускайте старый экземпляр. Одновременный запуск двух издателей с одним ID не является отказоустойчивым кластером.