Setting up a Multiplayer Server/ru: Difference between revisions

From Vintage Story Wiki
(Created page with "6. Запустите сервер с помощью <code>./VintagestoryServer</code> или <code>dotnet Vintage storyServer.dll</code>")
Tags: Mobile edit Mobile web edit
No edit summary
 
(37 intermediate revisions by the same user not shown)
Line 123: Line 123:
6. Запустите сервер с помощью <code>./VintagestoryServer</code> или <code>dotnet Vintage storyServer.dll</code>
6. Запустите сервер с помощью <code>./VintagestoryServer</code> или <code>dotnet Vintage storyServer.dll</code>


<div lang="en" dir="ltr" class="mw-content-ltr">
Это загрузит последнюю версию Vintage story в текущий рабочий каталог, а затем заменит необходимые файлы для работы с ARM.
This will download the latest version of Vintagestory to the current working directory, then replace the needed files to work with ARM.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Если в любой момент вы захотите обновить Vintage Story до последней версии, просто запустите скрипт еще раз.
If at any time you want to update to the latest version of Vintage Story, simply run the script again.
----
----
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
==== Простая команда запуска сервера ====
==== Simple Server start command ====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Если вы хотите использовать пользовательский скрипт или просто вручную запустить свой сервер, вы можете запустить
If you want to use a custom script or just manually start your server you can run
dotnet VintagestoryServer.dll --dataPath /путь/к/данным
dotnet VintagestoryServer.dll --dataPath /path/to/data
Или
Or
././Vintage StoryServer --dataPath /путь/к/данным
./VintagestoryServer --dataPath /path/to/data
, если у вас установлена переменная окружения <code>DOTNET_ROOT</code>.
if you have the <code>DOTNET_ROOT</code> environment variable set.
</div>


==== Обновление серверов ====
==== Обновление серверов ====


Если вы хотите установить более новую версию, сначала удалите все установочные файлы, иначе вы получите непредвиденное поведение. Если вы выбрали папку данных внутри папки установки, не удаляйте ее, иначе вы потеряете сохраненные игры, настройки и данные игрока.
Если вы хотите установить более новую версию, сначала удалите все установочные файлы, иначе вы получите непредвиденное поведение. Если вы выбрали папку данных внутри папки установки, не удаляйте ее, иначе вы потеряете сохраненные игры, настройки и данные игрока.
Загрузите файл «Tar.gz Archive/Linux (только сервер)» и распакуйте его. Если у вас есть удаленная установка и только FTP-подключение к вашему серверу, вам придется распаковывать его локально и загружать каждый файл.
Загрузите файл ''Tar.gz Archive/Linux (только сервер)'' и распакуйте его. Если ваш сервер находится удалённо и имеется только FTP-подключение, вам придется распаковывать архив локально и загружать каждый файл вручную.


== Основные Настройки ==
== Базовые настройки ==


<div class="mw-translate-fuzzy">
Как только ваш сервер будет запущен, вы, возможно, захотите просмотреть некоторые из следующих параметров конфигурации. Вы можете настроить сервер во время его работы с помощью команд или путем редактирования {{ll|Server Config|serverconfig.json}}, для чего сначала необходимо остановить сервер.
Как только ваш сервер будет запущен, вы можете просмотреть некоторые из следующих параметров конфигурации. Вы можете настроить сервер во время его работы с помощью команд или путем редактирования файла serverconfig.json, для этого сервер должен быть остановлен.
В Windows по умолчанию этот файл расположен по адресу '''%appdata%/VintageStoryData/serverconfig.json'''.
В windows по умолчанию этот файл находится по адресу "%appdata%/VintageStoryData/serverconfig.json".
В Linux он находится в "./data/serverconfig.json" вашего каталога сервера (например, "/home/vintagestory/server/data/serverconfig.json", если настройка была выполнена так, как описано здесь).
В Linux находится на уровне "'./data/serverconfig.json"' в каталоге сервера (напр., ''/home/vintagestory/server/data/serverconfig.json''  если настройки, как описано здесь)
</div>


<div class="mw-translate-fuzzy">
{{Protip|Самый простой способ настроить мир в соответствии с вашими пожеланиями - сначала создать его в одиночной игре, используя расширенные параметры создания мира, а затем загрузить его для использования в качестве вашего серверного мира.}}
{{Protip
|Самый простой способ настроить мир в соответствии с вашими пожеланиями сначала создать его в одиночной игре, используя расширенные параметры создания мира, а затем загрузить его для использования в качестве сервера.
}}
</div>


"Объяснение значений в serverconfig.json вы можете найти здесь: [[server Config/ru]]"
"Объяснение значений в serverconfig.json вы можете найти здесь: [[server Config/ru]]"


Вот некоторые из конфигураций, задаваемых командами, которые обычно устанавливают.
Вот некоторые из значений, задаваемых командами, которые обычно устанавливают.


* <code>/serverconfig upnp [0|1]</code><br>Если установлено значение один, игровой сервер попытается настроить переадресацию портов для вас
* <code>/serverconfig upnp [0|1]</code><br>Если установлено значение один, игровой сервер попытается настроить переадресацию портов для вас
Line 171: Line 157:
* <code>/serverconfig description  Это средневековый сервер выживания, только PvE, добро пожаловать всем!<3</code><br>настройте описание серверов, видимое в списке общедоступных серверов
* <code>/serverconfig description  Это средневековый сервер выживания, только PvE, добро пожаловать всем!<3</code><br>настройте описание серверов, видимое в списке общедоступных серверов
* <code>/serverconfig motd Hi {playername}!Пожалуйста, не забывайте следовать правилам!</code><br>сообщение, показанное игрокам, когда они присоединяются
* <code>/serverconfig motd Hi {playername}!Пожалуйста, не забывайте следовать правилам!</code><br>сообщение, показанное игрокам, когда они присоединяются
* <code>/serverconfig password asdaf</code><br>Если необходим пароль для входа , используйте<code>/serverconfig nopassword</code>для повторного удаления.
* <code>/serverconfig password asdaf</code><br>Если необходим пароль для входа, используйте <code>/serverconfig nopassword</code>для его удаления.
* <code>/serverconfig advertise (1|0)</code><br>Если следует добавить этот сервер в список общедоступных серверов
* <code>/serverconfig advertise (1|0)</code><br>Если следует добавить этот сервер в список общедоступных серверов


Line 187: Line 173:
== Расширенный Выделенный Сервер ==
== Расширенный Выделенный Сервер ==


<div class="mw-translate-fuzzy">
===Дистрибутив Debian с сервисом systemd и rsyslog===
===Debian с сервисом systemd и rsyslog===
 
Если вы предпочитаете использовать systemd вместо экрана для запуска вашего VS-сервера, вы можете следовать этим инструкциям.<br>
Если вы предпочитаете использовать systemd вместо экрана для запуска вашего VS-сервера, вы можете следовать этим инструкциям.<br>
Мы также настроим rsyslog для разделения всех журналов на отдельные файлы.<br>
Мы также настроим rsyslog для разделения всех журналов на отдельные файлы.<br>
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
If you prefer using systemd instead of screen to run your VS Server, you can follow these Instructions.<br>
We also will setup rsyslog to split all logs into separate files.<br>
</div>


==== Установка ====
==== Установка ====


<div class="mw-translate-fuzzy">
'''1. Создайте пользователя'''
'''2. создание пользователя'''
   adduser --shell /bin/bash --disabled-password gameserver
   adduser --shell /bin/bash --disabled-password gameserver
</div>


<div class="mw-translate-fuzzy">
'''2. Создание каталоги'''
'''3. создание каталогов'''
   mkdir -p /srv/gameserver/vintagestory
   mkdir -p /srv/gameserver/vintagestory
   mkdir -p /srv/gameserver/data/vs
   mkdir -p /srv/gameserver/data/vs
   mkdir -p /usr/lib/systemd/system
   mkdir -p /usr/lib/systemd/system
</div>


<div class="mw-translate-fuzzy">
'''3. Скачать игру'''
'''3. Скачать игру''''
   cd /srv/gameserver/vintagestory
   cd /srv/gameserver/vintagestory
</div>


<div class="mw-translate-fuzzy">
Перейдите к http://account.vintagestory.at/downloads <br>
Перейти http://account.vintagestory.at/downloads<br>
Скопируйте ссылку на новейший пакет "vs_server_linux-x64_*.*.*.tar.gz" ('''Сервер Linux (.tar.gz)"" в разделе ''''Показать другие доступные загрузки Vintage Story''')<br>
Скопируйте ссылку из новейших "vs_server_*.*.*.пакет tar.gz" ("'Tar.gz Archive/Linux (server only)"' под надписью "'показать другие доступные загрузки Vintage Story"')<br>
Скачайте с помощью "wget" через консоль (''В этом примере Vintage Story версии 1.18.8'').
Скачать с помощью "wget" через консоль ("Vintage Story version 1.12.9 в этом примере").
</div>


   <div class="mw-translate-fuzzy">
   wget https://cdn.vintagestory.at/gamefiles/stable/vs_server_linux-x64_1.18.8.tar.gz
wget https://cdn.vintagestory.at/gamefiles/stable/vs_server_1.12.9.tar.gz
</div>


<div class="mw-translate-fuzzy">
'''4. Разархивируйте tar.gz архив'''
'''4. Извлечение tar.gz архива"'
</div>


   <div class="mw-translate-fuzzy">
   tar xzf vs_server_linux-x64_1.18.8.tar.gz
tar xzf vs_server_1.12.9.tar.gz
'''5. Сменить владельца'''
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
'''5. Смените владельца'''
'''5. Change owner'''
</div>


Вы должны установить владельца каталога Вашего игрового сервера, чтобы избежать ошибок разрешения на запись
Вы должны установить владельца каталога Вашего игрового сервера, чтобы избежать ошибок разрешения на запись
   chown -R gameserver:gameserver /srv/gameserver
   chown -R gameserver:gameserver /srv/gameserver


<div class="mw-translate-fuzzy">
'''6. Создать файл сервисного модуля systemd'''
'''6. Создать файл сервисного блока systemd"'
</div>


<div class="mw-translate-fuzzy">
Используйте свой любимый инструмент для создания файла сервисаданном примере используется nano)
Используйте свой любимый инструмент для создания файла сервисной единицы этом примере используется nano)
   nano /usr/lib/systemd/system/vintagestoryserver.service
   nano /usr/lib/systemd/system/vintagestoryserver.service
Вставить следующее содержимое
Вставьте следующее содержимое
   [Unit]
   [Unit]
   Description=Vintage Story Server Unit
   Description=Vintage Story Server Unit
Line 257: Line 217:
   [Service]
   [Service]
   WorkingDirectory=/srv/gameserver/vintagestory
   WorkingDirectory=/srv/gameserver/vintagestory
   ExecStart=/usr/bin/mono VintagestoryServer.exe --dataPath /srv/gameserver/data/vs
   ExecStart=dotnet VintagestoryServer.dll --dataPath /srv/gameserver/data/vs
   Restart=always
   Restart=always
   RestartSec=30
   RestartSec=30
Line 268: Line 228:
   [Install]
   [Install]
   WantedBy=multi-user.target
   WantedBy=multi-user.target
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Убедитесь, что у нового пользователя есть доступ к команде <code>dotnet</code>, или замените команду полным путем к месту установки dotnet runtime (если вы выбрали выборочную установку). Или вы также можете использовать <code>ExecStart=Vintage StoryServer --dataPath /srv/gameserver/data/vs</code>, если у вас установлена переменная окружения <code>DOTNET_ROOT</code>.
Make sure the new user has access to the <code>dotnet</code> command or replace the command with the full path to where you installed the dotnet runtime (if you picked a custom install). Or you can also use <code>ExecStart=VintagestoryServer --dataPath /srv/gameserver/data/vs</code> if you have the <code>DOTNET_ROOT</code> environment variable set.
</div>


<div class="mw-translate-fuzzy">
'''7. Создайте файл конфигурации для rsyslog'''
'''7. Создать конфигурационный файл для rsyslog"'
</div>


<div class="mw-translate-fuzzy">
Используйте свой любимый инструмент для создания файла конфигурации rsyslog (в данном примере используется nano).
Используйте свой любимый инструмент для создания конфигурационного файла rsyslog (в этом примере используется nano)
   nano /etc/rsyslog.d/vintagestoryserver.conf
   nano /etc/rsyslog.d/vintagestoryserver.conf
Вставить следующее содержимое
Вставьте следующее содержимое:
   if $programname == 'VSSRV' then {
   if $programname == 'VSSRV' then {
       if($msg contains "Chat") then {
       if($msg contains "Chat") then {
Line 303: Line 257:
   # Discard  
   # Discard  
   if $programname == 'VSSRV' then ~
   if $programname == 'VSSRV' then ~
'''8. перезапустить rsyslog / включить службу'''
Чтобы активировать rsyslog и ваш сервер vintagestory введите следующие команды
  systemctl restart rsyslog.service;
  systemctl enable vintagestoryserver.service
  systemctl start vintagestoryserver.service
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
'''8. Перезапустите/включите службу rsyslog'''
'''8. restart rsyslog / enable service'''
Чтобы активировать rsyslog и сервер, введите следующие команды
To activate rsyslog and your vintagestory server type these commands
   systemctl restart rsyslog.service;
   systemctl restart rsyslog.service;
   systemctl enable vintagestoryserver.service
   systemctl enable vintagestoryserver.service
   systemctl start vintagestoryserver.service
   systemctl start vintagestoryserver.service
</div>


----
----
Line 331: Line 277:
==== Конфигурация ====
==== Конфигурация ====


чтобы изменить конфигурацию серверов, остановите сервер и отредактируйте его
чтобы изменить конфигурацию серверов, остановите сервер и отредактируйте
   nano /srv/gameserver/data/vs/serverconfig.json
   nano /srv/gameserver/data/vs/serverconfig.json
После того как вы сохранили свои изменения, снова запустите сервер.
После того, как вы сохранили изменения, снова запустите сервер.


==== Расписание перезапуска ====
==== Планирование перезапуска ====


Если вы хотите, чтобы ваш сервер перезапускался каждый день, Вы можете настроить cronjob для этого
Если вы хотите, чтобы ваш сервер перезапускался каждый день, вы можете настроить для этого cronjob
crontab-e
  crontab -e
вставьте эту строку, чтобы остановить сервер в 04: 30
вставьте эту строку, чтобы остановить сервер в 04:30
   30 4 * * * systemctl stop vintagestoryserver. service теперь
   30 4 * * *     systemctl stop vintagestoryserver.service
вы можете выполнить задачи резервного копирования, а затем запустить их снова со следующей строкой в 04: 32 (если вы запускаете задачу резервного копирования, запланируйте здесь еще некоторое время)
Теперь можно выполнить задачи резервного копирования, а затем запустить его снова со следующей строкой в 04:32 (если вы запустили задачу резервного копирования, планируйте еще немного времени здесь)
   32 4 * * * systemctl start vintagestoryserver
   32 4 * * *     systemctl start vintagestoryserver
Если вы просто хотите перезапустить сервер эта строка вместо двух верхних
Если вы хотите просто перезапустить сервер, то эта строка вместо двух других вполне подойдет
   30 4 * * * systemctl перезапустить vintagestoryserver. service
   30 4 * * *     systemctl restart vintagestoryserver.service


==== Регистрация ====
==== Ведение журнала ====


Конфигурация rsyslog разбивает выходные журналы на отдельные файлы, которые вы можете просматривать с помощью команды tail<br>
Конфигурация rsyslog разбивает выходные журналы на отдельные файлы, которые вы можете просматривать с помощью команды tail<br>
Line 368: Line 314:
Если вы хотите запустить несколько экземпляров на одной машине, вам просто нужно повторить некоторые из описанных выше шагов. Это всего лишь пример для второго экземпляра:
Если вы хотите запустить несколько экземпляров на одной машине, вам просто нужно повторить некоторые из описанных выше шагов. Это всего лишь пример для второго экземпляра:


   <div class="mw-translate-fuzzy">
   mkdir -p /srv/gameserver/data/vs2
mkdir -p /srv/gameserver/data/vs2
   nano /usr/lib/systemd/system/vintagestoryserver2.service
   nano /usr/lib/systemd/system/vintagestoryserver2.service
Скопируйте из шага 6 и измените эти строки:
Скопируйте из шага 6 и измените следующие строки:
   Description=Vintage Story Server 2 Unit
   Description=Vintage Story Server 2 Unit
   ExecStart=/usr/bin/mono VintagestoryServer.exe --dataPath /srv/gameserver/data/vs2
   ExecStart=dotnet VintagestoryServer.dll --dataPath /srv/gameserver/data/vs2
   SyslogIdentifier=VSSRV2
   SyslogIdentifier=VSSRV2
Создайте файл rsyslog и скопируйте код с шага 7
Создайте файл rsyslog и скопируйте код из шага 7
   nano /etc/rsyslog.d/vintagestoryserver2.conf
   nano /etc/rsyslog.d/vintagestoryserver2.conf
Измените <code>VSSRV</code> на <code>VSSRV2</code> и <code>/var/log/vintagestory-server</code> на <code>/var/log/vintagestory-server2</code><br>
Измените <code>VSSRV</code> на <code>VSSRV2</code> и <code>/var/log/vintagestory-server</code> на   <code>/var/log/vintagestory-server2</code><br>
Прежде чем продолжить, сделайте копию вашей первой конфигурации сервера и отредактируйте ее в соответствии с вашими потребностями (измените порт!!!)
Перед продолжением создайте копию конфигурации вашего первого сервера и отредактируйте ее по своему усмотрению (измените порт!!!)
   cp /srv/gameserver/data/vs/serverconfig.json /srv/gameserver/data/vs2/
   cp /srv/gameserver/data/vs/serverconfig.json /srv/gameserver/data/vs2/
   nano /srv/gameserver/data/vs2/serverconfig.json
   nano /srv/gameserver/data/vs2/serverconfig.json
Теперь запустите службу
Теперь запустите сервис
   systemctl restart rsyslog.service;
   systemctl restart rsyslog.service;
   systemctl enable vintagestoryserver2.service
   systemctl enable vintagestoryserver2.service
Line 387: Line 332:
Установите cronjob
Установите cronjob
   crontab -e
   crontab -e
Введите
Вставьте
   30 4 * * *      systemctl restart vintagestoryserver2.service
   30 4 * * *      systemctl restart vintagestoryserver2.service
</div>


Приятной игры!
Приятной игры!


<div lang="en" dir="ltr" class="mw-content-ltr">
==Расширенная настройка==
==Advanced setup==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
===Использование SRV-записи для указания домена на ваш сервер===
===Using an SRV Record to point a domain to your server===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
В некоторых случаях вы, возможно, не сможете иметь сервер с портом по умолчанию (несколько экземпляров на одном сервере, платные хосты...), и вам придется добавить порт в конце адреса сервера, чтобы подключиться к нему.<br>
In some cases, you may not able to get a server with the default port (Multiple instances on the same server, paid hosts...), and you will have to add the port at the end of the server's address in order to connect to it.<br>
Но, возможно, вы захотите избежать необходимости указывать порт (проще запомнить, выглядит чище).
But you might want to avoid the need to specify the port (Easier to remember, look cleaner).
Есть способ указать домен на ваш сервер и избежать необходимости добавлять порт : записи SRV<br>
There is a way to point a domain to your server and avoid the need to add the port : SRV Records<br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Записи SRV позволяют вам указать домен/поддомен для вашего экземпляра сервера, сообщая игре, какой порт использовать.
SRV Records allow you to point a domain/subdomain to your instance, while letting the game know the port to use.<br>
Как настроить записи SRV, будет зависеть от вашего провайдера домена, и вам следует ознакомиться с их документацией, прежде чем вносить какие-либо изменения. Однако суть остаётся такой же для каждого провайдера.<br>
How to set up an SRV Records will depend on your domain provider, and you should check on their documentation before making any changes. However, the idea and values remain the same for every provider.<br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Давайте возьмем сервер со следующими данными :
Let's take a server with the following details :
* Адрес: <code>play.example.com</code>
* Address : <code>play.example.com</code>
* Порт: <code>50030</code>
* Port : <code>50030</code>
* Собственный домен : <code>mydomain.com</code>
* Owned domain : <code>mydomain.com</code>
* Желаемый субдомен: <code>vintagestory.mydomain.com</code>
* Desired subdomain : <code>vintagestory.mydomain.com</code>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Ваши необработанные записи SRV должны выглядеть примерно так :
Your raw SRV Records should look something like this :
_vintagestory._tcp.vintagestory.mydomain.com. IN SRV 10 10 50030 server.example.com.
  _vintagestory._tcp.vintagestory.mydomain.com.   IN SRV 10 10 50030 server.example.com.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Подчеркивания и конечные точки важны! Вот некоторые подробности :
The underscores and trailing dots are important! Here are some details :
* <code>_vintagestory</code> определяет сервис, в нашем случае Vintage Story<br>
* <code>_vintagestory</code> define the service, in our case, Vintage Story<br>
* <code>_tcp</code> определяем протокол, в Vintage Story используем TCP<br>
* <code>_tcp</code> define the protocol, Vintage Story use TCP<br>
* <code>vintage story.mydomain.com.</code> это поддомен, который мы хотим использовать. Точка в конце важна!<br>
* <code>vintagestory.mydomain.com.</code> is the subdomain we want to use. The trailing dot is important!<br>
* <code>IN SRV</code> Определяет тип записи, не меняйте это<br>
* <code>IN SRV</code> Define the record type, don't change this<br>
* <code>10 10</code> указаны в порядке приоритета и веса нашей записи, в нашем случае это не важно, поскольку вы, вероятно, не собираетесь балансировать нагрузку на сервер Vintage Story<br>
* <code>10 10</code> are in order the priority and the weight of our record, in our case those are not important, as you are probably not going to load balance a Vintage Story server<br>
* <code>50030</code> - это порт, который прослушивает наш экземпляр<br>
* <code>50030</code> is the port our instance is listening on<br>
* <code>server.example.com.</code> - целевой сервер, на котором расположен сервер. Конечная точка обязательна, поскольку целевой сервер находится не в том же домене, что и мы. Если бы это было так, вам нужно было бы только добавить поддомен целевого сервера без конечной точки<br>
* <code>server.example.com.</code> is the target, where the server is located. The trailing dot is mandatory as the target server is not on the same domain as us. If it was the case, you would only need to add the subdomain of the target without the trailing dot<br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Если бы вы хотите, чтобы ваша запись указывала непосредственно на ваш домен, у вас должен быть <code>mydomain.com.</code> вместо <code>vintagestory.mydomain.com.</code>
If you wanted to have your record pointing to your domain directly, you would have <code>mydomain.com.</code> instead of <code>vintagestory.mydomain.com.</code>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Вот как это сделать для OVH и Hetzner (не забудьте отредактировать значения в соответствии с вашими настройками) :
Here is how to do it for OVH and Hetzner (Don't forget to edit the values to suit your setup !) :
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
====OVH====
====OVH====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Вам нужно будет зайти в свою зону DNS и добавить запись, выбрать тип записи SRV :
You will need to go to your DNS zone and add an entry, select the SRV Record type :
* * Поддомен : <code>_vintagestory._tcp.vintagestory</code> Вам не нужно добавлять свой домен, так как их форма сделает это за вас.
* Sub-domain : <code>_vintagestory._tcp.vintagestory</code> You don't need to add your domain, as their form do it for you.
* TTL: Нет необходимости изменять это
* TTL : No need to change this
* Приоритет: <code>10</code>
* Priority : <code>10</code>
* Вес: <code>10</code>
* Weight : <code>10</code>
* Порт : <code>50030</code>
* Port : <code>50030</code>
* Цель : <code>server.example.com.</code>
* Target : <code>server.example.com.</code>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
====Хетцнер====
====Hetzner====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Вам нужно будет создать запись в их консоли DNS :
You will need to create a record from their DNS Console :
* Введите : <code>SRV</code>
* Type : <code>SRV</code>
* Имя : <code>_vintagestory._tcp.vintagestory.mydomain.com.</code>
* Name : <code>_vintagestory._tcp.vintagestory.mydomain.com.</code>
Нажмите на поле значения, чтобы ввести данные :
Click on the Value field to enter the details :
* Приоритет : <code>10</code>
* Priority : <code>10</code>
* Вес: <code>10</code>
* Weight : <code>10</code>
* Порт : <code>50030</code>
* Port : <code>50030</code>
* Цель: <code>server.example.com.</code>
* Target : <code>server.example.com.</code>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Подождите несколько минут, пока ваша запись распространится, а затем попробуйте использовать ее для подключения к серверу, используя <code>vintage story.mydomain.com</code> в качестве адреса.
Wait a few minutes for your record to propagate and then try to use it to connect to the server, using <code>vintagestory.mydomain.com</code> as the address.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Теперь все настроено для совместного использования вашего сервера с вашим личным доменом.
You are now all set up to share your server with your custom domain.
</div>


{{Game navbox}}
{{Game navbox}}

Latest revision as of 11:22, 2 March 2024

Other languages:


Базовая Настройка

Временный сервер

Если вы хотите получить временный многопользовательский опыт, достаточно открыть однопользовательский мир, а затем нажать кнопку "Открыть в локальную сеть" в меню escape. Это позволит игрокам в вашей локальной сети присоединиться. Если вы хотите разрешить игрокам за пределами вашей локальной сети присоединиться к вам, вы также можете нажать кнопку "Открыть для Интернета", которая попытается настроить внешнее соединение для подключения к вашему серверу из интернета. Это делается с помощью метода, называемого UPnP, и должно быть включено на вашем интернет-маршрутизаторе, который часто используется по умолчанию. Короче говоря, мы оцениваем вероятность успеха примерно в 60%, что "открытый для интернета" работает мгновенно и без проблем. Если это не так, вам нужно будет настроить так называемую "переадресацию портов" на вашем интернет-маршрутизаторе, что, к сожалению, иногда может быть сложно и неприятно. В этом случае вам нужно будет перенаправить TCP-порт 42420 на ваш компьютер. (Google 'Port forwarding' с именем или моделью вашего интернет-маршрутизатора, чтобы найти помощь.)

Чтобы этот сервер работал, ваш однопользовательский мир должен оставаться открытым.


Выделенный сервер

В качестве альтернативы игра поставляется с выделенной серверной программой, которую вы можете запустить и оставить включенной навсегда, не входя в систему самостоятельно. Существует несколько способов запустить выделенный сервер.

Платные хостинги

Хостинг предоставляется создателями игры через интегрированную панель управления серверами, поддержки модов пока нет, серверы расположены в центральной Европе.

Сторонние хостинговые сервисы в порядке убывания:

Выделенные серверы для ОС Windows

  • Откройте папку игры, по умолчанию это %appdata%/VintageStory
  • запустите VintagestoryServer.exe.
  • Возможно, Вам потребуется настроить переадресацию портов на вашем роутере, если сервер должен быть доступен за пределами вашей локальной сети (для людей, которые не используют тот же Wi-Fi, что и вы).

Выделенные серверы для ОС Linux

Здесь описано, как настроить сервер как службу в системах Linux.
Примечание: Это работает только для процессоров на базе x64 архитектуры, при использовании ARM, пожалуйста, обратитесь к следующему разделу.

Требования

  • .NET Runtime 7.0 Этого должно быть достаточно для запуска сервера Vintage story. Все остальное предназначено только для удобства запуска и управления им.
  • установите pgrep, screen и wget с помощью системного менеджера пакетов.
Запуск сервера

1. Скачайте игру

Совет: Создайте отдельную директорию для Vintage Story, поскольку tar.gz не содержит подпапок.

 mkdir server && cd server

Перейдите к http://account.vintagestory.at/downloads
Скопируйте ссылку на новейший пакет "vs_server_linux-x64_*.*.*.tar.gz" ('Сервер Linux (.tar.gz)' в разделе 'Показать другие доступные загрузки Vintage Story')
Загрузите с помощью "wget" через консоль (В этом примере Vintage Story версии 1.18.8).

 wget https://cdn.vintagestory.at/gamefiles/stable/vs_server_linux-x64_1.18.8.tar.gz

2. Разархивируйте tar.gz архив

 tar xzf vs_server_linux-x64_*.*.*.tar.gz

3. Сделайте скрипт server.sh исполняемым

 chmod +x server.sh

4. Отредактируйте файл server.sh

По соображениям безопасности вы не должны запускать сервер, как root пользователь, поэтому по умолчанию имя пользователя установлено на vintagestory. В большинстве дистрибутивов Linux вы можете создать пользователя с помощью команды adduser.

 adduser vintagestory

Затем измените эти параметры в соответствии с вашими потребностями:

 USERNAME='<your-vs-server-username>'
 VSPATH='<your-vs-directory>'

5. Откройте порт в брандмауэре (если это необходимо)

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

6. Запуск сервера и первые шаги

   ./server.sh start
 
 Дождитесь окончания запуска, затем вы можете дать себе полный доступ с помощью
 ./server.sh command "/op <youusername>"

7. Подключайтесь к вашему IP/домену и получайте удовольствие


Выделенные сервера для архитектуры ARM64

Примечание: Пожалуйста, обратите внимание, что версия ARM64 является ЭКСПЕРИМЕНТАЛЬНОЙ, пожалуйста, сообщайте о любых проблемах в discord

Версия ARM64 доступна по адресу GitHub

Рекомендуется использовать установочный скрипт, расположенный на GitHub. Ниже приведено пошаговое руководство по использованию скрипта в системе на базе дистрибутива Debian (Ubuntu, Debian, Raspbian и т.д.).

1. Установите необходимые зависимости для использования этого скрипта, выполнив apt -y install curl jq

2. Создайте новый файл с именем arm install.sh, запустив vim arminstall.sh или nano arminstall.sh

3. Скопируйте содержимое arminstall.sh скопируйте с GitHub в ваш только что созданный файл и сохраните его, используя :wq с помощью Vim или Ctrl + X, затем нажмите Y, затем нажмите Enter с помощью Nano.

4. Сделайте скрипт исполняемым, запустив chmod +x arm install.sh

5. Запустите скрипт, выполнив команду ./arm install.sh

6. Запустите сервер с помощью ./VintagestoryServer или dotnet Vintage storyServer.dll

Это загрузит последнюю версию Vintage story в текущий рабочий каталог, а затем заменит необходимые файлы для работы с ARM.

Если в любой момент вы захотите обновить Vintage Story до последней версии, просто запустите скрипт еще раз.


Простая команда запуска сервера

Если вы хотите использовать пользовательский скрипт или просто вручную запустить свой сервер, вы можете запустить dotnet VintagestoryServer.dll --dataPath /путь/к/данным Или ././Vintage StoryServer --dataPath /путь/к/данным , если у вас установлена переменная окружения DOTNET_ROOT.

Обновление серверов

Если вы хотите установить более новую версию, сначала удалите все установочные файлы, иначе вы получите непредвиденное поведение. Если вы выбрали папку данных внутри папки установки, не удаляйте ее, иначе вы потеряете сохраненные игры, настройки и данные игрока. Загрузите файл Tar.gz Archive/Linux (только сервер) и распакуйте его. Если ваш сервер находится удалённо и имеется только FTP-подключение, вам придется распаковывать архив локально и загружать каждый файл вручную.

Базовые настройки

Как только ваш сервер будет запущен, вы, возможно, захотите просмотреть некоторые из следующих параметров конфигурации. Вы можете настроить сервер во время его работы с помощью команд или путем редактирования serverconfig.json , для чего сначала необходимо остановить сервер. В Windows по умолчанию этот файл расположен по адресу %appdata%/VintageStoryData/serverconfig.json. В Linux он находится в "./data/serverconfig.json" вашего каталога сервера (например, "/home/vintagestory/server/data/serverconfig.json", если настройка была выполнена так, как описано здесь).

Подсказка:
Самый простой способ настроить мир в соответствии с вашими пожеланиями - сначала создать его в одиночной игре, используя расширенные параметры создания мира, а затем загрузить его для использования в качестве вашего серверного мира.


"Объяснение значений в serverconfig.json вы можете найти здесь: server Config/ru"

Вот некоторые из значений, задаваемых командами, которые обычно устанавливают.

  • /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)
    Если следует добавить этот сервер в список общедоступных серверов

Наконец, вы можете настроить сервер, созданный с помощью метода "открыть в локальную сеть", так же, как и для выделенных серверов, однако имейте в виду, что в этом случае некоторые конфигурации переопределяются клиентом, например расположение файла сохранения.

Получение прав администратора сервера

Если у вас есть доступ к консоли сервера, введите /op playername. Если нет, откройте serverconfig.json и замените "StartupCommands": null, с "StartupCommands": "/op playername",

В обоих случаях вы должны заменить playername своим реальным именем игрока.

Расширенный Выделенный Сервер

Дистрибутив Debian с сервисом systemd и rsyslog

Если вы предпочитаете использовать systemd вместо экрана для запуска вашего VS-сервера, вы можете следовать этим инструкциям.
Мы также настроим rsyslog для разделения всех журналов на отдельные файлы.

Установка

1. Создайте пользователя

 adduser --shell /bin/bash --disabled-password gameserver

2. Создание каталоги

 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_linux-x64_*.*.*.tar.gz" (Сервер Linux (.tar.gz)"" в разделе 'Показать другие доступные загрузки Vintage Story)
Скачайте с помощью "wget" через консоль (В этом примере Vintage Story версии 1.18.8).

 wget https://cdn.vintagestory.at/gamefiles/stable/vs_server_linux-x64_1.18.8.tar.gz

4. Разархивируйте tar.gz архив

 tar xzf vs_server_linux-x64_1.18.8.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=dotnet VintagestoryServer.dll --dataPath /srv/gameserver/data/vs
 Restart=always
 RestartSec=30
 StandardOutput=syslog
 StandardError=syslog
 SyslogIdentifier=VSSRV
 User=gameserver
 Group=gameserver
 
 [Install]
 WantedBy=multi-user.target

Убедитесь, что у нового пользователя есть доступ к команде dotnet, или замените команду полным путем к месту установки dotnet runtime (если вы выбрали выборочную установку). Или вы также можете использовать ExecStart=Vintage StoryServer --dataPath /srv/gameserver/data/vs, если у вас установлена переменная окружения DOTNET_ROOT.

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 и сервер, введите следующие команды

 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 restart 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=dotnet VintagestoryServer.dll --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

Приятной игры!

Расширенная настройка

Использование SRV-записи для указания домена на ваш сервер

В некоторых случаях вы, возможно, не сможете иметь сервер с портом по умолчанию (несколько экземпляров на одном сервере, платные хосты...), и вам придется добавить порт в конце адреса сервера, чтобы подключиться к нему.
Но, возможно, вы захотите избежать необходимости указывать порт (проще запомнить, выглядит чище). Есть способ указать домен на ваш сервер и избежать необходимости добавлять порт : записи SRV

Записи SRV позволяют вам указать домен/поддомен для вашего экземпляра сервера, сообщая игре, какой порт использовать. Как настроить записи SRV, будет зависеть от вашего провайдера домена, и вам следует ознакомиться с их документацией, прежде чем вносить какие-либо изменения. Однако суть остаётся такой же для каждого провайдера.

Давайте возьмем сервер со следующими данными :

  • Адрес: play.example.com
  • Порт: 50030
  • Собственный домен : mydomain.com
  • Желаемый субдомен: vintagestory.mydomain.com

Ваши необработанные записи SRV должны выглядеть примерно так : _vintagestory._tcp.vintagestory.mydomain.com. IN SRV 10 10 50030 server.example.com.

Подчеркивания и конечные точки важны! Вот некоторые подробности :

  • _vintagestory определяет сервис, в нашем случае Vintage Story
  • _tcp определяем протокол, в Vintage Story используем TCP
  • vintage story.mydomain.com. это поддомен, который мы хотим использовать. Точка в конце важна!
  • IN SRV Определяет тип записи, не меняйте это
  • 10 10 указаны в порядке приоритета и веса нашей записи, в нашем случае это не важно, поскольку вы, вероятно, не собираетесь балансировать нагрузку на сервер Vintage Story
  • 50030 - это порт, который прослушивает наш экземпляр
  • server.example.com. - целевой сервер, на котором расположен сервер. Конечная точка обязательна, поскольку целевой сервер находится не в том же домене, что и мы. Если бы это было так, вам нужно было бы только добавить поддомен целевого сервера без конечной точки

Если бы вы хотите, чтобы ваша запись указывала непосредственно на ваш домен, у вас должен быть mydomain.com. вместо vintagestory.mydomain.com.

Вот как это сделать для OVH и Hetzner (не забудьте отредактировать значения в соответствии с вашими настройками) :

OVH

Вам нужно будет зайти в свою зону DNS и добавить запись, выбрать тип записи SRV :

  • * Поддомен : _vintagestory._tcp.vintagestory Вам не нужно добавлять свой домен, так как их форма сделает это за вас.
  • TTL: Нет необходимости изменять это
  • Приоритет: 10
  • Вес: 10
  • Порт : 50030
  • Цель : server.example.com.

Хетцнер

Вам нужно будет создать запись в их консоли DNS :

  • Введите : SRV
  • Имя : _vintagestory._tcp.vintagestory.mydomain.com.

Нажмите на поле значения, чтобы ввести данные :

  • Приоритет : 10
  • Вес: 10
  • Порт : 50030
  • Цель: server.example.com.

Подождите несколько минут, пока ваша запись распространится, а затем попробуйте использовать ее для подключения к серверу, используя vintage story.mydomain.com в качестве адреса.

Теперь все настроено для совместного использования вашего сервера с вашим личным доменом.


Вики-навигация
Vintage Story Руководство[[::Category:Guides| ]]Частые вопросы (ЧАВО) Саундтрек Версии Управление
Игровые системы Крафт Откалывание Формование глины Кузнечное Дело Кулинария Температура Голод Горное дело Темпоральная стабильность Механическая сила Торговля Растениеводство Животноводство
Мир Генерация мира Биомы Погода Темпоральные штормы
Предметы Инструменты Орудия Броня Одежда Сумки Материалы Еда
Блоки Ландшафт Растения Декор Источники света Функциональные Руда
Сущности Враждебные существа Животные NPC Игроки
Miscellaneous Список клиентских команд Список команд сервера Руководство по творческому режиму для начинающих Система ботов Как использовать WorldEdit Кинематографичная камера Регулируемая частота кадров при записи видео Система тиков