Setting up a Multiplayer Server/ru: Difference between revisions
No edit summary |
(Created page with "Чтобы настройки вашего многопользовательского сервера не мешали настройкам вашего одиночного сервера, используйте параметр --dataPath.") |
||
(62 intermediate revisions by 3 users not shown) | |||
Line 17: | Line 17: | ||
==== Платные хостинги ==== | ==== Платные хостинги ==== | ||
См. {{ll|List of server hosting providers|список хостингов для серверов}} | |||
==== Выделенные серверы для ОС Windows ==== | |||
Чтобы настройки вашего многопользовательского сервера не мешали настройкам вашего одиночного сервера, используйте параметр --dataPath. | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
'''Shortcut method:''' | |||
# Navigate to the location where you will store the server's data, such as a new VintagestoryServer folder created in <code>C:\Users\YourUsername\AppData\Roaming</code> | |||
# Create a folder for the server's data and give it a clear name, such as VSserverData | |||
# Open that folder and copy the entire path from the address bar of File Explorer. (example: <code>C:\Users\YourUsername\AppData\Roaming\VintagestoryServer\VSserverData</code>) | |||
# Open the game's application folder, it is <code>%appdata%/VintageStory</code> by default. | |||
# Create a shortcut of <code>VintagestoryServer.exe</code>. This can usually be accomplished through the right-click menu; google instructions specific to your operating system version if needed. | |||
# Open the Properties of the new shortcut. This can usually be accomplished through the right-click menu. | |||
# Click in the Target field of the shortcut's Properties, then go to the very end of what's written there. Add one space, then <code>--dataPath=</code>, then Paste the folder path you copied earlier, in quotes. The entire contents of the Target field should now be something like this: <code>"C:\Users\YourUsername\AppData\Roaming\Vintagestory\VintagestoryServer.exe" --dataPath="C:\Users\YourUsername\AppData\Roaming\VintagestoryServer\VSserverData"</code> | |||
* Optional: you can move/copy the shortcut, to your desktop and/or your new VintagestoryServer folder | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
'''Batch script method''' (functionally equivalent to the shortcut method above): | |||
# To create a batch script, simply create a blank text document and rename it with the .bat file extension. | |||
# You can edit it by right clicking and selecting edit. Then just type <code>%appdata%/Vintagestory/VintagestoryServer.exe --dataPath "[PATH]"</code> replacing [PATH] with the desired path for the server's data, then save and close. | |||
Running the script will run the server with the alternate datapath, and will generate its own collection of config files there. This is functionally equivalent to the modified link. | |||
</div> | |||
Далее: | |||
* запустите ярлык <code>VintagestoryServer.exe</code> или батник. | |||
* Если Защитник Windows попросит выдать разрешение — сделайте это. | |||
* Возможно, вам потребуется настроить переадресацию порта 42420 на вашем роутере, если сервер должен быть доступен за пределами вашей локальной сети (для людей, которые не используют тот же Wi-Fi, что и вы). Этот процесс значительно отличается; загуглите инструкции для вашей конкретной модели маршрутизатора. | |||
===== Использование Windows на виртуальной машине ===== | |||
=== | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
There are some reports that LAN connection to a Vintage Story server running inside a Windows virtual machine (VM) can be slow, even when internet (WAN) connections have normal performance. This may depend on VM solution and network drivers. If this affects you, a suggested workaround is to use the Paravirtualized network adapter (virtio-net) for network adapters. The drivers are located [https://docs.oracle.com/en/virtualization/virtualbox/6.0/user/nichardware.html here]. | |||
</div> | |||
---- | ---- | ||
Line 67: | Line 80: | ||
'''2. Разархивируйте tar.gz архив''' | '''2. Разархивируйте tar.gz архив''' | ||
tar xzf vs_server_linux-x64_*.*.*.tar.gz | |||
tar xzf | |||
'''3. Сделайте скрипт server.sh исполняемым''' | |||
''' | |||
chmod +x server.sh | chmod +x server.sh | ||
'''4. Отредактируйте файл server.sh''' | |||
''' | |||
По соображениям безопасности вы не должны запускать сервер | По соображениям безопасности вы не должны запускать сервер, как root пользователь, поэтому по умолчанию имя пользователя установлено на vintagestory. | ||
В большинстве | В большинстве дистрибутивов Linux вы можете создать пользователя с помощью команды adduser. | ||
adduser vintagestory | adduser vintagestory | ||
Line 91: | Line 98: | ||
VSPATH='<your-vs-directory>' | VSPATH='<your-vs-directory>' | ||
'''5. Откройте порт в брандмауэре (если это необходимо)''' | |||
''' | |||
firewalld | firewalld | ||
Line 101: | Line 106: | ||
iptables -A INPUT -p tcp -m tcp --dport 42420 -j ACCEPT | iptables -A INPUT -p tcp -m tcp --dport 42420 -j ACCEPT | ||
'''6. Запуск сервера и первые шаги''' | |||
''' | |||
./server.sh start | |||
./server.sh start | |||
Дождитесь | Дождитесь окончания запуска, затем вы можете дать себе полный доступ с помощью | ||
./server.sh command "/op <youusername>" | ./server.sh command "/op <youusername>" | ||
'''7. Подключайтесь к вашему IP/домену и получайте удовольствие''' | |||
''' | |||
---- | ---- | ||
==== Выделенные сервера для архитектуры ARM64 ==== | |||
==== | |||
</ | <span style="color:#E16100">Примечание: ''Пожалуйста, обратите внимание, что версия ARM64 является ЭКСПЕРИМЕНТАЛЬНОЙ, пожалуйста, сообщайте о любых проблемах в [https://discord.com/channels/302152934249070593/1128220205181587516 discord ]''. | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
Currently (in game version 1.19.3 - 1.19.4, February 2024) no ARM64 .NET7 version of the '''Harmony''' patching library is available. Therefore coded mods which use Harmony will not work on an ARM64 server. If a beta of the Harmony library becomes available in future, server owners can try installing it for themselves.</span> | |||
</div> | </div> | ||
Версия ARM64 доступна по адресу [https://github.com/anegostudios/VintagestoryServerArm64 GitHub ] | |||
Рекомендуется использовать установочный скрипт, расположенный на GitHub. Ниже приведено пошаговое руководство по использованию скрипта в системе на базе дистрибутива Debian (Ubuntu, Debian, Raspbian и т.д.). | |||
1. Установите необходимые зависимости для использования этого скрипта, выполнив <code>apt -y install curl jq</code> | |||
1. | |||
2. Создайте новый файл с именем <code>arm install.sh</code>, запустив <code>vim arminstall.sh </code> или <code>nano arminstall.sh</code> | |||
2. | |||
3. Скопируйте содержимое <code>arminstall.sh </code> скопируйте с GitHub в ваш только что созданный файл и сохраните его, используя <code>:wq</code> с помощью Vim или <code>Ctrl + X</code>, затем нажмите <code>Y</code>, затем нажмите <code>Enter</code> с помощью Nano. | |||
3. | |||
4. Сделайте скрипт исполняемым, запустив <code>chmod +x arm install.sh</code> | |||
4. | |||
5. Запустите скрипт, выполнив команду <code>./arm install.sh</code> | |||
5. | |||
6. Запустите сервер с помощью <code>./VintagestoryServer</code> или <code>dotnet Vintage storyServer.dll</code> | |||
6. | |||
Это загрузит последнюю версию Vintage story в текущий рабочий каталог, а затем заменит необходимые файлы для работы с ARM. | |||
Если в любой момент вы захотите обновить Vintage Story до последней версии, просто запустите скрипт еще раз. | |||
---- | ---- | ||
==== Простая команда запуска сервера ==== | |||
==== | |||
Если вы хотите использовать пользовательский скрипт или просто вручную запустить свой сервер, вы можете запустить | |||
dotnet VintagestoryServer.dll --dataPath /путь/к/данным | |||
Или | |||
././Vintage StoryServer --dataPath /путь/к/данным | |||
, если у вас установлена переменная окружения <code>DOTNET_ROOT</code>. | |||
==== Обновление серверов ==== | ==== Обновление серверов ==== | ||
Если вы хотите установить более новую версию, сначала удалите все установочные файлы, иначе вы получите непредвиденное поведение. Если вы выбрали папку данных внутри папки установки, не удаляйте ее, иначе вы потеряете сохраненные игры, настройки и данные игрока. | Если вы хотите установить более новую версию, сначала удалите все установочные файлы, иначе вы получите непредвиденное поведение. Если вы выбрали папку данных внутри папки установки, не удаляйте ее, иначе вы потеряете сохраненные игры, настройки и данные игрока. | ||
Загрузите файл | Загрузите файл ''Tar.gz Archive/Linux (только сервер)'' и распакуйте его. Если ваш сервер находится удалённо и имеется только FTP-подключение, вам придется распаковывать архив локально и загружать каждый файл вручную. | ||
== | == Базовые настройки == | ||
Как только ваш сервер будет запущен, вы, возможно, захотите просмотреть некоторые из следующих параметров конфигурации. Вы можете настроить сервер во время его работы с помощью команд или путем редактирования {{ll|Server Config|serverconfig.json}}, для чего сначала необходимо остановить сервер. | |||
Как только ваш сервер будет запущен, вы | В Windows по умолчанию этот файл расположен по адресу '''%appdata%/VintageStoryData/serverconfig.json'''. | ||
В | В Linux он находится в "./data/serverconfig.json" вашего каталога сервера (например, "/home/vintagestory/server/data/serverconfig.json", если настройка была выполнена так, как описано здесь). | ||
В Linux находится | |||
{{Protip|Самый простой способ настроить мир в соответствии с вашими пожеланиями - сначала создать его в одиночной игре, используя расширенные параметры создания мира, а затем загрузить его для использования в качестве вашего серверного мира.}} | |||
{{Protip | |||
|Самый простой способ настроить мир в соответствии с вашими пожеланиями | |||
}} | |||
"Объяснение значений в 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 204: | Line 174: | ||
* <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 220: | Line 190: | ||
== Расширенный Выделенный Сервер == | == Расширенный Выделенный Сервер == | ||
===Дистрибутив Debian с сервисом systemd и rsyslog=== | |||
===Debian с сервисом systemd и rsyslog=== | |||
Если вы предпочитаете использовать systemd вместо экрана для запуска вашего VS-сервера, вы можете следовать этим инструкциям.<br> | Если вы предпочитаете использовать systemd вместо экрана для запуска вашего VS-сервера, вы можете следовать этим инструкциям.<br> | ||
Мы также настроим rsyslog для разделения всех журналов на отдельные файлы.<br> | Мы также настроим rsyslog для разделения всех журналов на отдельные файлы.<br> | ||
==== Установка ==== | ==== Установка ==== | ||
'''1. Создайте пользователя''' | |||
''' | |||
adduser --shell /bin/bash --disabled-password gameserver | adduser --shell /bin/bash --disabled-password gameserver | ||
'''2. Создание каталоги''' | |||
''' | |||
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 | ||
'''3. Скачать игру''' | |||
'''3. Скачать игру | |||
cd /srv/gameserver/vintagestory | cd /srv/gameserver/vintagestory | ||
Перейдите к http://account.vintagestory.at/downloads <br> | |||
Скопируйте ссылку на новейший пакет "vs_server_linux-x64_*.*.*.tar.gz" ('''Сервер Linux (.tar.gz)"" в разделе ''''Показать другие доступные загрузки Vintage Story''')<br> | |||
Скопируйте ссылку | Скачайте с помощью "wget" через консоль (''В этом примере Vintage Story версии 1.18.8''). | ||
wget https://cdn.vintagestory.at/gamefiles/stable/vs_server_linux-x64_1.18.8.tar.gz | |||
wget https://cdn.vintagestory.at/gamefiles/stable/ | |||
'''4. Разархивируйте tar.gz архив''' | |||
'''4. | |||
tar xzf vs_server_linux-x64_1.18.8.tar.gz | |||
tar xzf | |||
'''5. Смените владельца''' | |||
'''5. | |||
Вы должны установить владельца каталога Вашего игрового сервера, чтобы избежать ошибок разрешения на запись | Вы должны установить владельца каталога Вашего игрового сервера, чтобы избежать ошибок разрешения на запись | ||
chown -R gameserver:gameserver /srv/gameserver | chown -R gameserver:gameserver /srv/gameserver | ||
'''6. Создать файл сервисного модуля systemd''' | |||
'''6. Создать файл сервисного | |||
Используйте свой любимый инструмент для создания файла сервиса(в данном примере используется 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 290: | Line 234: | ||
[Service] | [Service] | ||
WorkingDirectory=/srv/gameserver/vintagestory | WorkingDirectory=/srv/gameserver/vintagestory | ||
ExecStart= | ExecStart=dotnet VintagestoryServer.dll --dataPath /srv/gameserver/data/vs | ||
Restart=always | Restart=always | ||
RestartSec=30 | RestartSec=30 | ||
Line 301: | Line 245: | ||
[Install] | [Install] | ||
WantedBy=multi-user.target | WantedBy=multi-user.target | ||
Убедитесь, что у нового пользователя есть доступ к команде <code>dotnet</code>, или замените команду полным путем к месту установки dotnet runtime (если вы выбрали выборочную установку). Или вы также можете использовать <code>ExecStart=Vintage StoryServer --dataPath /srv/gameserver/data/vs</code>, если у вас установлена переменная окружения <code>DOTNET_ROOT</code>. | |||
'''7. Создайте файл конфигурации для rsyslog''' | |||
'''7. | |||
Используйте свой любимый инструмент для создания файла конфигурации 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 336: | Line 274: | ||
# Discard | # Discard | ||
if $programname == 'VSSRV' then ~ | if $programname == 'VSSRV' then ~ | ||
'''8. Перезапустите/включите службу rsyslog''' | |||
'''8. | Чтобы активировать rsyslog и сервер, введите следующие команды | ||
systemctl restart rsyslog.service; | systemctl restart rsyslog.service; | ||
systemctl enable vintagestoryserver.service | systemctl enable vintagestoryserver.service | ||
systemctl start vintagestoryserver.service | systemctl start vintagestoryserver.service | ||
---- | ---- | ||
Line 364: | Line 294: | ||
==== Конфигурация ==== | ==== Конфигурация ==== | ||
чтобы изменить конфигурацию серверов, остановите сервер и отредактируйте | чтобы изменить конфигурацию серверов, остановите сервер и отредактируйте | ||
nano /srv/gameserver/data/vs/serverconfig.json | nano /srv/gameserver/data/vs/serverconfig.json | ||
После того как вы сохранили | После того, как вы сохранили изменения, снова запустите сервер. | ||
==== | ==== Планирование перезапуска ==== | ||
Если вы хотите, чтобы ваш сервер перезапускался каждый день, | Если вы хотите, чтобы ваш сервер перезапускался каждый день, вы можете настроить для этого cronjob | ||
crontab-e | crontab -e | ||
вставьте эту строку, чтобы остановить сервер в 04: 30 | вставьте эту строку, чтобы остановить сервер в 04:30 | ||
30 4 * * * systemctl stop vintagestoryserver. service | 30 4 * * * systemctl stop vintagestoryserver.service | ||
Теперь можно выполнить задачи резервного копирования, а затем запустить его снова со следующей строкой в 04:32 (если вы запустили задачу резервного копирования, планируйте еще немного времени здесь) | |||
32 4 * * * systemctl start vintagestoryserver | 32 4 * * * systemctl start vintagestoryserver | ||
Если вы просто | Если вы хотите просто перезапустить сервер, то эта строка вместо двух других вполне подойдет | ||
30 4 * * * systemctl | 30 4 * * * systemctl restart vintagestoryserver.service | ||
==== | ==== Ведение журнала ==== | ||
Конфигурация rsyslog разбивает выходные журналы на отдельные файлы, которые вы можете просматривать с помощью команды tail<br> | Конфигурация rsyslog разбивает выходные журналы на отдельные файлы, которые вы можете просматривать с помощью команды tail<br> | ||
Line 401: | Line 331: | ||
Если вы хотите запустить несколько экземпляров на одной машине, вам просто нужно повторить некоторые из описанных выше шагов. Это всего лишь пример для второго экземпляра: | Если вы хотите запустить несколько экземпляров на одной машине, вам просто нужно повторить некоторые из описанных выше шагов. Это всего лишь пример для второго экземпляра: | ||
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= | ExecStart=dotnet VintagestoryServer.dll --dataPath /srv/gameserver/data/vs2 | ||
SyslogIdentifier=VSSRV2 | SyslogIdentifier=VSSRV2 | ||
Создайте файл rsyslog и скопируйте код | Создайте файл 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 420: | Line 349: | ||
Установите cronjob | Установите cronjob | ||
crontab -e | crontab -e | ||
Вставьте | |||
30 4 * * * systemctl restart vintagestoryserver2.service | 30 4 * * * systemctl restart vintagestoryserver2.service | ||
Приятной игры! | Приятной игры! | ||
==Расширенная настройка== | |||
= | |||
===Использование SRV-записи для указания домена на ваш сервер=== | |||
В некоторых случаях вы, возможно, не сможете иметь сервер с портом по умолчанию (несколько экземпляров на одном сервере, платные хосты...), и вам придется добавить порт в конце адреса сервера, чтобы подключиться к нему.<br> | |||
Но, возможно, вы захотите избежать необходимости указывать порт (проще запомнить, выглядит чище). | |||
Есть способ указать домен на ваш сервер и избежать необходимости добавлять порт : записи SRV<br> | |||
Записи SRV позволяют вам указать домен/поддомен для вашего экземпляра сервера, сообщая игре, какой порт использовать. | |||
SRV | Как настроить записи SRV, будет зависеть от вашего провайдера домена, и вам следует ознакомиться с их документацией, прежде чем вносить какие-либо изменения. Однако суть остаётся такой же для каждого провайдера.<br> | ||
Давайте возьмем сервер со следующими данными : | |||
* Адрес: <code>play.example.com</code> | |||
* | * Порт: <code>50030</code> | ||
* | * Собственный домен : <code>mydomain.com</code> | ||
* | * Желаемый субдомен: <code>vintagestory.mydomain.com</code> | ||
* | |||
Ваши необработанные записи SRV должны выглядеть примерно так : | |||
_vintagestory._tcp.vintagestory.mydomain.com. IN SRV 10 10 50030 server.example.com. | |||
Подчеркивания и конечные точки важны! Вот некоторые подробности : | |||
* <code>_vintagestory</code> определяет сервис, в нашем случае Vintage Story<br> | |||
* <code>_vintagestory</code> | * <code>_tcp</code> определяем протокол, в Vintage Story используем TCP<br> | ||
* <code>_tcp</code> | * <code>vintage story.mydomain.com.</code> это поддомен, который мы хотим использовать. Точка в конце важна!<br> | ||
* <code> | * <code>IN SRV</code> Определяет тип записи, не меняйте это<br> | ||
* <code>IN SRV</code> | * <code>10 10</code> указаны в порядке приоритета и веса нашей записи, в нашем случае это не важно, поскольку вы, вероятно, не собираетесь балансировать нагрузку на сервер Vintage Story<br> | ||
* <code>10 10</code> | * <code>50030</code> - это порт, который прослушивает наш экземпляр<br> | ||
* <code>50030</code> | * <code>server.example.com.</code> - целевой сервер, на котором расположен сервер. Конечная точка обязательна, поскольку целевой сервер находится не в том же домене, что и мы. Если бы это было так, вам нужно было бы только добавить поддомен целевого сервера без конечной точки<br> | ||
* <code>server.example.com.</code> | |||
Если бы вы хотите, чтобы ваша запись указывала непосредственно на ваш домен, у вас должен быть <code>mydomain.com.</code> вместо <code>vintagestory.mydomain.com.</code> | |||
Вот как это сделать для OVH и Hetzner (не забудьте отредактировать значения в соответствии с вашими настройками) : | |||
====OVH==== | ====OVH==== | ||
Вам нужно будет зайти в свою зону DNS и добавить запись, выбрать тип записи SRV : | |||
* * Поддомен : <code>_vintagestory._tcp.vintagestory</code> Вам не нужно добавлять свой домен, так как их форма сделает это за вас. | |||
* | * TTL: Нет необходимости изменять это | ||
* TTL : | * Приоритет: <code>10</code> | ||
* | * Вес: <code>10</code> | ||
* | * Порт : <code>50030</code> | ||
* | * Цель : <code>server.example.com.</code> | ||
* | |||
====Hetzner==== | ====Hetzner==== | ||
Вам нужно будет создать запись в их консоли DNS : | |||
* Введите : <code>SRV</code> | |||
* | * Имя : <code>_vintagestory._tcp.vintagestory.mydomain.com.</code> | ||
* | Нажмите на поле значения, чтобы ввести данные : | ||
* Приоритет : <code>10</code> | |||
* | * Вес: <code>10</code> | ||
* | * Порт : <code>50030</code> | ||
* | * Цель: <code>server.example.com.</code> | ||
* | |||
Подождите несколько минут, пока ваша запись распространится, а затем попробуйте использовать ее для подключения к серверу, используя <code>vintage story.mydomain.com</code> в качестве адреса. | |||
Теперь все настроено для совместного использования вашего сервера с вашим личным доменом. | |||
{{Game navbox}} | {{Game navbox}} |
Latest revision as of 16:56, 9 July 2024
Базовая Настройка
Временный сервер
Если вы хотите получить временный многопользовательский опыт, достаточно открыть однопользовательский мир, а затем нажать кнопку "Открыть в локальную сеть" в меню escape. Это позволит игрокам в вашей локальной сети присоединиться. Если вы хотите разрешить игрокам за пределами вашей локальной сети присоединиться к вам, вы также можете нажать кнопку "Открыть для Интернета", которая попытается настроить внешнее соединение для подключения к вашему серверу из интернета. Это делается с помощью метода, называемого UPnP, и должно быть включено на вашем интернет-маршрутизаторе, который часто используется по умолчанию. Короче говоря, мы оцениваем вероятность успеха примерно в 60%, что "открытый для интернета" работает мгновенно и без проблем. Если это не так, вам нужно будет настроить так называемую "переадресацию портов" на вашем интернет-маршрутизаторе, что, к сожалению, иногда может быть сложно и неприятно. В этом случае вам нужно будет перенаправить TCP-порт 42420 на ваш компьютер. (Google 'Port forwarding' с именем или моделью вашего интернет-маршрутизатора, чтобы найти помощь.)
Чтобы этот сервер работал, ваш однопользовательский мир должен оставаться открытым.
Выделенный сервер
В качестве альтернативы игра поставляется с выделенной серверной программой, которую вы можете запустить и оставить включенной навсегда, не входя в систему самостоятельно. Существует несколько способов запустить выделенный сервер.
Платные хостинги
См. список хостингов для серверов
Выделенные серверы для ОС Windows
Чтобы настройки вашего многопользовательского сервера не мешали настройкам вашего одиночного сервера, используйте параметр --dataPath.
Shortcut method:
- Navigate to the location where you will store the server's data, such as a new VintagestoryServer folder created in
C:\Users\YourUsername\AppData\Roaming
- Create a folder for the server's data and give it a clear name, such as VSserverData
- Open that folder and copy the entire path from the address bar of File Explorer. (example:
C:\Users\YourUsername\AppData\Roaming\VintagestoryServer\VSserverData
) - Open the game's application folder, it is
%appdata%/VintageStory
by default. - Create a shortcut of
VintagestoryServer.exe
. This can usually be accomplished through the right-click menu; google instructions specific to your operating system version if needed. - Open the Properties of the new shortcut. This can usually be accomplished through the right-click menu.
- Click in the Target field of the shortcut's Properties, then go to the very end of what's written there. Add one space, then
--dataPath=
, then Paste the folder path you copied earlier, in quotes. The entire contents of the Target field should now be something like this:"C:\Users\YourUsername\AppData\Roaming\Vintagestory\VintagestoryServer.exe" --dataPath="C:\Users\YourUsername\AppData\Roaming\VintagestoryServer\VSserverData"
- Optional: you can move/copy the shortcut, to your desktop and/or your new VintagestoryServer folder
Batch script method (functionally equivalent to the shortcut method above):
- To create a batch script, simply create a blank text document and rename it with the .bat file extension.
- You can edit it by right clicking and selecting edit. Then just type
%appdata%/Vintagestory/VintagestoryServer.exe --dataPath "[PATH]"
replacing [PATH] with the desired path for the server's data, then save and close.
Running the script will run the server with the alternate datapath, and will generate its own collection of config files there. This is functionally equivalent to the modified link.
Далее:
- запустите ярлык
VintagestoryServer.exe
или батник. - Если Защитник Windows попросит выдать разрешение — сделайте это.
- Возможно, вам потребуется настроить переадресацию порта 42420 на вашем роутере, если сервер должен быть доступен за пределами вашей локальной сети (для людей, которые не используют тот же Wi-Fi, что и вы). Этот процесс значительно отличается; загуглите инструкции для вашей конкретной модели маршрутизатора.
Использование Windows на виртуальной машине
There are some reports that LAN connection to a Vintage Story server running inside a Windows virtual machine (VM) can be slow, even when internet (WAN) connections have normal performance. This may depend on VM solution and network drivers. If this affects you, a suggested workaround is to use the Paravirtualized network adapter (virtio-net) for network adapters. The drivers are located here.
Выделенные серверы для ОС 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 .
Currently (in game version 1.19.3 - 1.19.4, February 2024) no ARM64 .NET7 version of the Harmony patching library is available. Therefore coded mods which use Harmony will not work on an ARM64 server. If a beta of the Harmony library becomes available in future, server owners can try installing it for themselves.
Версия 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 используем TCPvintage story.mydomain.com.
это поддомен, который мы хотим использовать. Точка в конце важна!IN SRV
Определяет тип записи, не меняйте это10 10
указаны в порядке приоритета и веса нашей записи, в нашем случае это не важно, поскольку вы, вероятно, не собираетесь балансировать нагрузку на сервер Vintage Story50030
- это порт, который прослушивает наш экземплярserver.example.com.
- целевой сервер, на котором расположен сервер. Конечная точка обязательна, поскольку целевой сервер находится не в том же домене, что и мы. Если бы это было так, вам нужно было бы только добавить поддомен целевого сервера без конечной точки
Если бы вы хотите, чтобы ваша запись указывала непосредственно на ваш домен, у вас должен быть mydomain.com.
вместо vintagestory.mydomain.com.
Вот как это сделать для OVH и Hetzner (не забудьте отредактировать значения в соответствии с вашими настройками) :
OVH
Вам нужно будет зайти в свою зону DNS и добавить запись, выбрать тип записи SRV :
- * Поддомен :
_vintagestory._tcp.vintagestory
Вам не нужно добавлять свой домен, так как их форма сделает это за вас. - TTL: Нет необходимости изменять это
- Приоритет:
10
- Вес:
10
- Порт :
50030
- Цель :
server.example.com.
Hetzner
Вам нужно будет создать запись в их консоли DNS :
- Введите :
SRV
- Имя :
_vintagestory._tcp.vintagestory.mydomain.com.
Нажмите на поле значения, чтобы ввести данные :
- Приоритет :
10
- Вес:
10
- Порт :
50030
- Цель:
server.example.com.
Подождите несколько минут, пока ваша запись распространится, а затем попробуйте использовать ее для подключения к серверу, используя vintage story.mydomain.com
в качестве адреса.
Теперь все настроено для совместного использования вашего сервера с вашим личным доменом.
Вики-навигация | |
---|---|
Vintage Story | Руководство • Частые вопросы (ЧАВО) • Саундтрек • Версии • Управление |
Игровые системы | Крафт • Откалывание • Формование глины • Кузнечное Дело • Кулинария • Температура • Голод • Горное дело • Темпоральная стабильность • Механическая сила • Торговля • Растениеводство • Животноводство |
Мир | Генерация мира • Биомы • Погода • Темпоральные штормы |
Предметы | Инструменты • Орудия • Броня • Одежда • Сумки • Материалы • Еда |
Блоки | Ландшафт • Растения • Декор • Источники света • Функциональные • Руда |
Сущности | Враждебные существа • Животные • NPC • Игроки |
Miscellaneous | Список клиентских команд • Список команд сервера • Creative Starter Guide • Система ботов • Как использовать WorldEdit • Кинематографичная камера • Регулируемая частота кадров при записи видео • Система тиков |