Setting up a Multiplayer Server/ru: Difference between revisions
(Created page with "Как только ваш сервер будет запущен, вы можете просмотреть некоторые из следующих параметров к...") |
(Created page with ""Объяснение значений в serverconfig.json вы можете найти здесь: server Config"") |
||
Line 145: | Line 145: | ||
В Linux находится на уровне "'./data/serverconfig.json"' в каталоге сервера (напр., ''/home/vintagestory/server/data/serverconfig.json'' если настройки, как описано здесь) | В Linux находится на уровне "'./data/serverconfig.json"' в каталоге сервера (напр., ''/home/vintagestory/server/data/serverconfig.json'' если настройки, как описано здесь) | ||
"Объяснение значений в serverconfig.json вы можете найти здесь: [[server Config]]" | |||
Here are some of the configurations set by commands, that you'd typically want to set. | Here are some of the configurations set by commands, that you'd typically want to set. |
Revision as of 14:21, 3 December 2020
Базовая Настройка
Временный сервер
Если вы хотите получить временный многопользовательский опыт, достаточно открыть однопользовательский мир, а затем нажать кнопку "Открыть в локальную сеть" в меню 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"
Here are some of the configurations set by commands, that you'd typically want to set.
/serverconfig upnp [0|1]
If set to one, the game server will attempt to set up port forwarding for you/serverconfig name Peaceful PvE Server
Set up the server name, visible in the public server listing/serverconfig description This is a medieval survival server, PvE only, everyone welcome! <3
Set up the servers description, visible in the public server listing/serverconfig motd Hi {playername}! Please remember to follow the rules!
The message shown to players when they join/serverconfig password asdaf
Require a password for players to log in, if desired. Use/serverconfig nopassword
to remove again./serverconfig advertise (1|0)
Whether or not add this server to the public server listing
Lastly, you can configure a server that was created with the 'Open to Lan' method in the same way as you do for dedicated ones, be aware though, in that case a few of the configurations are overridden by the client, such as the save file location.
Advanced Dedicated Server
Debian with systemd service and rsyslog
If you prefer using systemd instead of screen to run your VS Server, you can follow these Instructions.
We also will setup rsyslog to split all logs into separate files.
Installation
1. mono Install 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
For 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. create a user
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!