Настройка многопользовательского сервера
Базовая Настройка
Временный сервер
Если вы хотите получить временный многопользовательский опыт, достаточно открыть однопользовательский мир, а затем нажать кнопку "Открыть в локальную сеть" в меню 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. Моно Установка"'
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. Моно Установка"'
Начиная с "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]< / code>
Если установлено значение один, игровой сервер попытается настроить переадресацию портов для вас/serverconfig name / PvE Server< / code> < br>настройка имени сервера, видимого в списке общедоступных серверов
- < code>/serverconfig description Это средневековый сервер выживания, только PvE, добро пожаловать всем! <3< / code> < br>настройте описание серверов, видимое в списке общедоступных серверов
/serverconfig motd Hi {playername}! Пожалуйста, не забывайте следовать правилам!< / code> < br>сообщение, показанное игрокам, когда они присоединяются
/ serverconfig password asdaf< / code> < br>требуется пароль для входа игроков в систему, если это необходимо. Используйте
/serverconfig nopassword< / code> для повторного удаления.
/serverconfig advertise (1/0)< / code>
следует ли добавлять этот сервер в список общедоступных серверов
Наконец, вы можете настроить сервер, созданный с помощью метода "открыть в локальную сеть", так же, как и для выделенных серверов, однако имейте в виду, что в этом случае некоторые конфигурации переопределяются клиентом, например расположение файла сохранения.
Расширенный Выделенный Сервер
= = 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. create directories
mkdir -p /srv/gameserver/vintagestory
mkdir -p /srv/gameserver/data/vs
mkdir -p /usr/lib/systemd/system
3. Download the game
cd /srv/gameserver/vintagestory
Goto http://account.vintagestory.at/downloads
Copy the link of the newest "vs_server_*.*.*.tar.gz" package (Tar.gz Archive/Linux (server only) under Show other available downloads of Vintage Story)
Download with "wget" via console (Vintage Story version 1.12.9 in this example).
wget https://cdn.vintagestory.at/gamefiles/stable/vs_server_1.12.9.tar.gz
4. Extract tar.gz package
tar xzf vs_server_1.12.9.tar.gz
5. Change owner
You have to set the owner of your gameserver directory to avoid write permission errors
chown -R gameserver:gameserver /srv/gameserver
6. Create systemd service unit file
Use your favourite tool to create a service unit file (this example uses nano)
nano /usr/lib/systemd/system/vintagestoryserver.service
Insert the following content
[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. Create config file for rsyslog
Use your favourite tool to create a rsyslog config file (this example uses nano)
nano /etc/rsyslog.d/vintagestoryserver.conf
Insert the following content
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. restart rsyslog / enable service
To activate rsyslog and your vintagestory server type these commands
systemctl restart rsyslog.service;
systemctl enable vintagestoryserver.service
systemctl start vintagestoryserver.service
Stop, Start, Disable Server
To manually stop your VS Server use this command
systemctl stop vintagestoryserver.service
To manually start your VS Server again type
systemctl start vintagestoryserver.service
To disable the service use
systemctl disable vintagestoryserver.service
Config
to change your servers configuration, stop the server and edit
nano /srv/gameserver/data/vs/serverconfig.json
After you saved your changes, start server again.
Restart schedule
If you want your server to restart every day, you can setup a cronjob for this
crontab -e
insert this line to stop the server at 04:30
30 4 * * * systemctl stop vintagestoryserver.service
you could now ececute backup tasks and then start it again with the next line at 04:32 (if you run a backup task plan some more time here)
32 4 * * * systemctl start vintagestoryserver
If you just want to restart the server this line instead of the other two should be fine
30 4 * * * systemctl restart vintagestoryserver.service
Logging
The rsyslog config splits the output logs into seperate files that you can watch with tail command
For Login/Logout see
tail -f /var/log/vintagestory-server/login.log
For all chat messages see
tail -f /var/log/vintagestory-server/chat.log
For all messages containing [Server Warning] see
tail -f /var/log/vintagestory-server/warn.log
For all messages containing [Server Notification] see
tail -f /var/log/vintagestory-server/info.log
For all messages containing [Server Debug] see
tail -f /var/log/vintagestory-server/debug.log
For all messages containing [Server Event] see
tail -f /var/log/vintagestory-server/event.log
For all other messages see
tail -f /var/log/vintagestory-server/other.log
Multiple Server Instances
If you want to run multiple instances on the same machine you just have to redo some of the steps above. This is just an example for a second instance:
mkdir -p /srv/gameserver/data/vs2
nano /usr/lib/systemd/system/vintagestoryserver2.service
Copy from step 6 and change these lines:
Description=Vintage Story Server 2 Unit
ExecStart=/usr/bin/mono VintagestoryServer.exe --dataPath /srv/gameserver/data/vs2
SyslogIdentifier=VSSRV2
Create rsyslog file and copy code from step 7
nano /etc/rsyslog.d/vintagestoryserver2.conf
Change VSSRV
to VSSRV2
and /var/log/vintagestory-server
to /var/log/vintagestory-server2
Before you proceed make a copy of your first server configuration and edit it for your needs (change port!!!)
cp /srv/gameserver/data/vs/serverconfig.json /srv/gameserver/data/vs2/
nano /srv/gameserver/data/vs2/serverconfig.json
Now start the service
systemctl restart rsyslog.service;
systemctl enable vintagestoryserver2.service
systemctl start vintagestoryserver2.service
Install cronjob
crontab -e
Insert
30 4 * * * systemctl restart vintagestoryserver2.service
Have Fun!