Setting up a Multiplayer Server/ru: Difference between revisions
Mirotworez (talk | contribs) No edit summary |
Mirotworez (talk | contribs) No edit summary |
||
Line 11: | Line 11: | ||
В качестве альтернативы игра поставляется с выделенной серверной программой, которую вы можете запустить и оставить включенной навсегда, не входя в систему самостоятельно. | В качестве альтернативы игра поставляется с выделенной серверной программой, которую вы можете запустить и оставить включенной навсегда, не входя в систему самостоятельно. | ||
Существует несколько способов запустить выделенный сервер. | Существует несколько способов запустить выделенный сервер. | ||
---- | |||
= = = = Платные хосты ==== | = = = = Платные хосты ==== |
Revision as of 10:32, 17 February 2022
Базовая Настройка
Временный сервер
Если вы хотите получить временный многопользовательский опыт, достаточно открыть однопользовательский мир, а затем нажать кнопку "Открыть в локальную сеть" в меню escape. Это позволит игрокам в вашей локальной сети присоединиться. Если вы хотите разрешить игрокам за пределами вашей локальной сети присоединиться к вам, вы также можете нажать кнопку "Открыть для Интернета", которая попытается настроить внешнее соединение для подключения к вашему серверу из интернета. Это делается с помощью метода, называемого UPnP, и должно быть включено на вашем интернет-маршрутизаторе, который часто используется по умолчанию. Короче говоря, мы оцениваем вероятность успеха примерно в 60%, что "открытый для интернета" работает мгновенно и без проблем. Если это не так, вам нужно будет настроить так называемую "переадресацию портов" на вашем интернет-маршрутизаторе, что, к сожалению, иногда может быть сложно и неприятно. В этом случае вам нужно будет перенаправить TCP-порт 42420 на ваш компьютер. (Google 'Port forwarding' с именем или моделью вашего интернет-маршрутизатора, чтобы найти помощь.)
Чтобы этот сервер работал, ваш однопользовательский мир должен оставаться открытым.
Выделенный сервер
В качестве альтернативы игра поставляется с выделенной серверной программой, которую вы можете запустить и оставить включенной навсегда, не входя в систему самостоятельно. Существует несколько способов запустить выделенный сервер.
= = = Платные хосты ===
Некоторые коммерческие хостинговые услуги предлагают платный хостинг серверов. В настоящее время Vintage Story hosting предлагается компаниями PingPerfect, Citadel Server, Creeperhost, Akliz and GPortal
Выделенные серверы на Windows
- Откройте папку игры, по умолчанию это %appdata%/VintageStory
- запустите VintagestoryServer.exe
- Возможно, Вам потребуется настроить переадресацию портов на вашем интернет-маршрутизаторе, если сервер должен быть доступен за пределами вашей локальной сети (интернета).
Выделенные серверы на Linux
Здесь описано, как настроить сервер в качестве службы в системах Linux.
Требования к CentOS 7 (RHEL, Fedora, ...)
1. EPEL/screen/wget/curl Install
yum -y install epel-release screen wget curl
2. Установка mono"'
yum -y install yum-utils rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF" yum-config-manager --add-repo http://download.mono-project.com/repo/centos/ yum -y install mono mono-devel
Требования к Ubuntu (Debian, Mint,...)
1. screen/wget/curl Install
sudo apt install -y screen wget curl
2. Установка mono"'
Начиная с "Vintage Story version 1.12.7" и выше рекомендуется использовать "Mono version 5 или выше". Это "это написано, предполагая Ubuntu 18.04" в качестве базовой ОС. Чтобы установить последнюю стабильную версию для вашего конкретного дистрибутива, пожалуйста, следуйте инструкциям из официальная страница загрузки моно-проекта. sudo apt install gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list sudo apt update sudo apt install -y mono-complete
3. Загрузить игру
Advice: Создайте отдельный каталог для Vintage Story так как tar.gz не содержит вложенной папки.
mkdir server && cd server
Перейдите http://account.vintagestory.at/downloads
Скопируйте ссылку из новейших "vs_server_*.*.*.пакет tar.gz" ("'Tar.gz Archive/Linux (server only)"' под надписью "'Показать другие доступные загрузки Vintage Story"')
Скачать с помощью "wget" через консоль ("Vintage Story version 1.12.9 в этом примере").
wget https://cdn.vintagestory.at/gamefiles/stable/vs_server_1.12.9.tar.gz
4. Извлечение tar.gz архива"'
tar xzf vs_server_*.*.*.tar.gz
5. Запустить server.sh "'
chmod +x server.sh
6. Редактировать server.sh "'
По соображениям безопасности вы не должны запускать сервер от имени пользователя root, поэтому по умолчанию имя пользователя установлено на vintagestory. В большинстве операционных систем linux вы можете создать пользователя с помощью команды adduser.
adduser vintagestory
Затем измените эти параметры в соответствии с вашими потребностями:
USERNAME='<your-vs-server-username>' VSPATH='<your-vs-directory>'
7. Откройте порт на брандмауэре (если это необходимо)"'
firewalld
firewall-cmd --permanent --zone=public --add-port=42420/tcp firewall-cmd --reload
iptables
iptables -A INPUT -p tcp -m tcp --dport 42420 -j ACCEPT
8. Запуск сервера и первые шаги"'
./server.sh start Дождитесь завершения запуска, и тогда вы сможете дать себе OP с помощью ./server.sh command "/op <youusername>"
9. Подключайтесь к IP/домену и получайте удовольствие"'
Требования к Alpine (Advanced, без поддержки)
1. Установка mono"'
Поскольку mono находится в тестировании в Alpine, URL-адрес тестирования (http://dl-cdn.alpinelinux.org/alpine/edge/testing) придется раскомментировать в
/etc/apk/repositories
после этого
apk update apk add mono mono-dev
2. Установка tmux"'
apk add tmux
3. Сертификаты
apk add ca-certificates
потом
cert-sync /etc/ssl/certs/ca-certificates.crt
чтобы обновить сертификаты.
4. Упрощенный Сценарий Запуска"'
Загрузите и извлеките сервер в обычное место, а затем поместите это в скрипт:
#!/bin/ash mono VintagestoryServer.exe --dataPath ./data
Этот скрипт просто запустит сервер, поместив файлы сохранения мира в ту же папку, в которую был извлечен сервер. Как продвинутый пользователь, вам не нужно беспокоиться о наличии зависимостей, проверке новых версий, установке сервера или сохранении файлов под разными пользователями и местоположениями.
Запустите скрипт в сеансе tmux.
Еще немного советов (брандмауэр и т. д.).
Основные Настройки
Как только ваш сервер будет запущен, вы можете просмотреть некоторые из следующих параметров конфигурации. Вы можете настроить сервер во время его работы с помощью команд или путем редактирования файла serverconfig.json, для этого сервер должен быть остановлен. В windows по умолчанию этот файл находится по адресу "%appdata%/VintageStoryData/serverconfig.json". В Linux находится на уровне "'./data/serverconfig.json"' в каталоге сервера (напр., /home/vintagestory/server/data/serverconfig.json если настройки, как описано здесь)
"Объяснение значений в serverconfig.json вы можете найти здесь: server Config"
Вот некоторые из конфигураций, задаваемых командами, которые обычно устанавливают.
/serverconfig upnp [0|1]
Если установлено значение один, игровой сервер попытается настроить переадресацию портов для вас/serverconfig name Peaceful PvE Server
настройка имени сервера, видимого в списке общедоступных серверов/serverconfig description Это средневековый сервер выживания, только PvE, добро пожаловать всем!<3
настройте описание серверов, видимое в списке общедоступных серверов/serverconfig motd Hi {playername}!Пожалуйста, не забывайте следовать правилам!
сообщение, показанное игрокам, когда они присоединяются/serverconfig password asdaf
Если необходим пароль для входа , используйте/serverconfig nopassword
для повторного удаления./serverconfig advertise (1|0)
Если следует добавить этот сервер в список общедоступных серверов
Наконец, вы можете настроить сервер, созданный с помощью метода "открыть в локальную сеть", так же, как и для выделенных серверов, однако имейте в виду, что в этом случае некоторые конфигурации переопределяются клиентом, например расположение файла сохранения.
Расширенный Выделенный Сервер
= = Debian с сервисом systemd и rsyslog==
Если вы предпочитаете использовать systemd вместо экрана для запуска вашего VS-сервера, вы можете следовать этим инструкциям.
Мы также настроим rsyslog для разделения всех журналов на отдельные файлы.
Установка
1. mono Установка Debian 9
sudo apt install apt-transport-https dirmngr gnupg ca-certificates wget nano sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb https://download.mono-project.com/repo/debian stable-stretch main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list sudo apt update sudo apt install mono-devel
Для Debian 10 use
echo "deb https://download.mono-project.com/repo/debian stable-buster main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
2. создание пользователя
adduser --shell /bin/bash --disabled-password gameserver
3. создание каталогов
mkdir -p /srv/gameserver/vintagestory mkdir -p /srv/gameserver/data/vs mkdir -p /usr/lib/systemd/system
3. Скачать игру'
cd /srv/gameserver/vintagestory
Перейти http://account.vintagestory.at/downloads
Скопируйте ссылку из новейших "vs_server_*.*.*.пакет tar.gz" ("'Tar.gz Archive/Linux (server only)"' под надписью "'показать другие доступные загрузки Vintage Story"')
Скачать с помощью "wget" через консоль ("Vintage Story version 1.12.9 в этом примере").
wget https://cdn.vintagestory.at/gamefiles/stable/vs_server_1.12.9.tar.gz
4. Извлечение tar.gz архива"'
tar xzf vs_server_1.12.9.tar.gz
5. Сменить владельца
Вы должны установить владельца каталога Вашего игрового сервера, чтобы избежать ошибок разрешения на запись
chown -R gameserver:gameserver /srv/gameserver
6. Создать файл сервисного блока systemd"'
Используйте свой любимый инструмент для создания файла сервисной единицы (в этом примере используется nano)
nano /usr/lib/systemd/system/vintagestoryserver.service
Вставить следующее содержимое
[Unit] Description=Vintage Story Server Unit After=network.target [Service] WorkingDirectory=/srv/gameserver/vintagestory ExecStart=/usr/bin/mono VintagestoryServer.exe --dataPath /srv/gameserver/data/vs Restart=always RestartSec=30 StandardOutput=syslog StandardError=syslog SyslogIdentifier=VSSRV User=gameserver Group=gameserver [Install] WantedBy=multi-user.target
7. Создать конфигурационный файл для rsyslog"'
Используйте свой любимый инструмент для создания конфигурационного файла rsyslog (в этом примере используется nano)
nano /etc/rsyslog.d/vintagestoryserver.conf
Вставить следующее содержимое
if $programname == 'VSSRV' then { if($msg contains "Chat") then { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/chat.log") } else if($msg contains "verließ") then { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/login.log") } else if($msg contains "join") then { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/login.log") } else if($msg contains "Server Warning") then { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/warn.log") } else if($msg contains "Server Notification") then { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/info.log") } else if($msg contains "Server Debug") then { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/debug.log") } else if($msg contains "Server Event") then { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/event.log") } else { action(type="omfile" dirCreateMode="0755" FileCreateMode="0644" File="/var/log/vintagestory-server/other.log") } } # Discard if $programname == 'VSSRV' then ~
8. перезапустить rsyslog / включить службу Чтобы активировать rsyslog и ваш сервер vintagestory введите следующие команды
systemctl restart rsyslog.service; systemctl enable vintagestoryserver.service systemctl start vintagestoryserver.service
Остановка, Запуск, Отключение Сервера
Чтобы остановить свой сервер используйте эту команду
systemctl stop vintagestoryserver.service
Чтобы снова запустить VS сервер введите
systemctl start vintagestoryserver.service
Чтобы отключить использование сервиса
systemctl disable vintagestoryserver.service
Конфигурация
чтобы изменить конфигурацию серверов, остановите сервер и отредактируйте его
nano /srv/gameserver/data/vs/serverconfig.json
После того как вы сохранили свои изменения, снова запустите сервер.
Расписание перезапуска
Если вы хотите, чтобы ваш сервер перезапускался каждый день, Вы можете настроить cronjob для этого crontab-e вставьте эту строку, чтобы остановить сервер в 04: 30
30 4 * * * systemctl stop vintagestoryserver. service теперь
вы можете выполнить задачи резервного копирования, а затем запустить их снова со следующей строкой в 04: 32 (если вы запускаете задачу резервного копирования, запланируйте здесь еще некоторое время)
32 4 * * * systemctl start vintagestoryserver
Если вы просто хотите перезапустить сервер эта строка вместо двух верхних
30 4 * * * systemctl перезапустить vintagestoryserver. service
Регистрация
Конфигурация rsyslog разбивает выходные журналы на отдельные файлы, которые вы можете просматривать с помощью команды tail
Для входа/выхода из системы см.
tail -f /var/log/vintagestory-server/login.log
Для всех сообщений чата см.
tail -f /var/log/vintagestory-server/chat.log
Все сообщения, содержащие [предупреждение сервера], см. В разделе
tail -f /var/log/vintagestory-server/warn.log
Все сообщения, содержащие [уведомление сервера], см. В разделе
tail -f /var/log/vintagestory-server/info.log
Для всех сообщений, содержащих [тестовый сервер] см.
tail -f /var/log/vintagestory-server/debug.log
Все сообщения, содержащие [событие сервера], см. В разделе
tail -f /var/log/vintagestory-server/event.log
Все остальные сообщения см. В разделе
tail -f /var/log/vintagestory-server/other.log
Несколько Экземпляров Сервера
Если вы хотите запустить несколько экземпляров на одной машине, вам просто нужно повторить некоторые из описанных выше шагов. Это всего лишь пример для второго экземпляра:
mkdir -p /srv/gameserver/data/vs2 nano /usr/lib/systemd/system/vintagestoryserver2.service
Скопируйте из шага 6 и измените эти строки:
Description=Vintage Story Server 2 Unit ExecStart=/usr/bin/mono VintagestoryServer.exe --dataPath /srv/gameserver/data/vs2 SyslogIdentifier=VSSRV2
Создайте файл rsyslog и скопируйте код с шага 7
nano /etc/rsyslog.d/vintagestoryserver2.conf
Измените VSSRV
на VSSRV2
и /var/log/vintagestory-server
на /var/log/vintagestory-server2
Прежде чем продолжить, сделайте копию вашей первой конфигурации сервера и отредактируйте ее в соответствии с вашими потребностями (измените порт!!!)
cp /srv/gameserver/data/vs/serverconfig.json /srv/gameserver/data/vs2/ nano /srv/gameserver/data/vs2/serverconfig.json
Теперь запустите службу
systemctl restart rsyslog.service; systemctl enable vintagestoryserver2.service systemctl start vintagestoryserver2.service
Установите cronjob
crontab -e
Введите
30 4 * * * systemctl restart vintagestoryserver2.service
Приятной игры!