Запуск локального сервера: различия между версиями
Prentor (обсуждение | вклад) м Твик для тех, кто решил собрать, а не разбирается в вопросе |
Большой гайд добавлен |
||
| Строка 63: | Строка 63: | ||
<code>list</code> в консоль | <code>list</code> в консоль | ||
<code>help <команда></code> для подробностей о команде | <code>help <команда></code> для подробностей о команде | ||
===Учебное пособие по размещению серверов=== | |||
Это руководство о том, как настроить сервер SS14. Это руководство охватит все, что вам нужно, от приватных серверов для игр с друзьями до производственных серверов для подходящих хостов серверов. | |||
Вы можете использовать два метода. "Голый" сервер, который просто запускает игровой сервер напрямую, или </code>SS14.Watchdog</code> который обрабатывает обновления и запускает игровой сервер для вас. Мы рекомендуем последнее для более правильного развертывания, а также если вы хотите быть в списке на хабе в лаунчере. | |||
Для таких сервисов как </code>SS14.Watchdog</code>, вам ТАКЖЕ понадобится среда выполнения ASP .NET Core 7 (входит в .NET 7 SDK). | |||
==1.Базовая Настройка== | |||
# Загрузите последнюю версию сервера с нашей страницы сборки для вашей операционной системы. | |||
</code>https://builds.station14.ru/syndicate/</code> | |||
# Извлеките в любое место | |||
# Запустите Robust.Server.exe (или Robust.Server через терминал на macOS / Linux) | |||
# Перенаправление портов 1212/ TCP и 1212/UDP: | |||
* Самый простой способ сделать это - включить UPnP на сервере. Отредактируйте </code>server_config.toml</code> и удалите # перед upnp = true в блоке [net]. Это заставит сервер автоматически пытаться перенаправить порт на ваш маршрутизатор. Это должно работать на большинстве современных маршрутизаторов. | |||
* Если UPnP у вас не работает, вам придется сделать это вручную. Инструкции зависят от вашего маршрутизатора, поэтому мы оставляем поиск в браузере на ваше усмотрение. | |||
# Дайте своим друзьям и себе свой IP-адрес и попросите их вставить его в диалоговое окно "прямое подключение" в лаунчере. | |||
Это, конечно, не будет обрабатывать автоматические перезапуски (в случае сбоя) или обновления, как это сделал бы </code>watchdog</code>. Это также не приведет к публичному размещению вашего сервера на хабе, поскольку реклама по умолчанию отключена. Если вы хотите, чтобы ваш сервер был указан в хабе, пожалуйста, читайте ниже. | |||
==Простая конфигурация сервера== | |||
Вы можете настроить параметры на сервере, отредактировав конфигурационный файл, </code>server_config.toml</code> | |||
Настройки имеют один ключ, под который они подпадают, а затем имя. Итак, если я скажу game.lobbyenabled, что это идет под [game] заголовком следующим образом: | |||
</code>[game] | |||
lobbyenabled = true | |||
Некоторые значения по умолчанию, которые вы, возможно, захотите установить для своего сервера, если вы действительно собираетесь разместить это должным образом: | |||
[net] | |||
Тикрейт вашего сервера. | |||
tickrate = 30 | |||
[game] | |||
Ниже указываете имя вашего сервера. | |||
hostname = "Мой сервер" | |||
При запуске сервера включает лобби. | |||
lobbyenabled = true | |||
[auth] | |||
mode = 1 | |||
[hub] | |||
Показывать ли ваш сервер в хабе лаунчера. true - да false - нет. | |||
Пожалуйста, смотрите правила размещения серверов | |||
advertise = false</code> | |||
===Универсальные знания=== | |||
==Права администратора== | |||
По умолчанию права администратора не установлены. Соединения, сделанные с localhost, автоматически становятся полноправными администраторами и обходят любые требования к аутентификации. Конечно, это не очень полезно для реальных серверов, размещенных на выделенном сервере, поэтому у вас проблема. | |||
Вы можете использовать команду </code>promotehost</code> (например promotehost PJB) в консоли сервера, чтобы временно предоставить подключенному клиенту полные права хоста. Это позволит им настраивать дополнительные права администратора (и устанавливать свои собственные постоянные) с помощью панели разрешений администратора в игре (</code>permissions</code> команда). Привилегии теряются при завершении работы сервера. Рекомендуется предоставить себе все разрешения, чтобы вы могли предоставить их администраторам позже или правильно администрировать, если хостинг один. (За исключением +HOST случаев, когда вы не умеете им пользоваться! Если вы не знаете, что он делает, не давайте +HOST) | |||
+HOST предоставлять привилегии крайне опасно, и их следует предоставлять только тем, у кого уже есть доступ к вашему компьютеру или серверу. | |||
Предоставление кому +HOST - либо позволяет им полностью завладеть вашим сервером и / или компьютером. | |||
==Настройки производительности== | |||
Вот некоторые настройки, которые вы, вероятно, захотите включить на своем сервере для повышения производительности: | |||
Переменная среды для включения полного динамического PGO, что значительно повышает производительность за счет незначительно большего времени запуска: | |||
DOTNET_TieredPGO: 1 | |||
DOTNET_TC_QuickJitForLoops: 1 | |||
DOTNET_ReadyToRun: 0 | |||
Переменная среды для включения операций AVX в базе кода. В зависимости от вашего процессора это может снизить производительность, а не улучшить ее, в противном случае это может повысить производительность atmos. | |||
</code>ROBUST_NUMERICS_AVX: true</code> | |||
===Дополнительно - SS14.Watchdog и / или пользовательские кодовые базы=== | |||
https://github.com/space-wizards/SS14.Watchdog/ | |||
</code>SS14.Watchdog</code> (кодовое имя Ian) - это оболочка для хостинга серверов, похожая на TGS для BYOND (но на данный момент намного проще). Он обрабатывает автоматические обновления, мониторинг, автоматические перезапуски и администрирование. | |||
Чтобы настроить его, загрузите код (ссылка выше) и опубликуйте его для своей платформы </code>(dotnet publish -c Release -r linux-x64 --no-self-contained)</code>, поскольку в настоящее время мы сами не предоставляем никаких публикаций. Обратите внимание, что вам необходимо иметь ASP.NET Установленую как основная среда выполнения. Затем скопируйте SS14.Watchdog/bin/Release/net6.0/linux-x64/publish в каталог на вашем сервере или что-то в этом роде. | |||
Вы захотите отредактировать </code>appsettings.yml</code>, чтобы добавить сервер и настроить некоторые вещи. Пример с официальных серверов (очевидно, отредактированные токены): | |||
</code>Serilog: | |||
Using: [ "Serilog.Sinks.Console", "Serilog.Sinks.Loki" ] | |||
MinimumLevel: | |||
Default: Information | |||
Override: | |||
SS14: Information | |||
Microsoft: "Warning" | |||
Microsoft.Hosting.Lifetime: "Information" | |||
Microsoft.AspNetCore: Warning | |||
WriteTo: | |||
- Name: Console | |||
Args: | |||
OutputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3} {SourceContext}] {Message:lj}{NewLine}{Exception}" | |||
Enrich: [ "FromLogContext" ] | |||
# Uncomment to have watchdog log to Loki | |||
#Loki: | |||
# Address: "{{ loki_addr }}" | |||
# Name: "{{ server_id }}" | |||
# Username: "{{ loki_user }}" | |||
# password: "{{ loki_pass }}" | |||
AllowedHosts: "*" | |||
# API URL that your watchdog is accessible from. | |||
# This HAS to be set so the game servers can communicate with the watchdog. | |||
# If you don't want the watchdog to be publically accessible, do `http://localhost:5000/` here. | |||
BaseUrl: https://builds.spacestation14.io/watchdog/ | |||
Servers: | |||
Instances: | |||
# ID of your server. | |||
wizards_den: | |||
# Name of the server - Note that this is NOT the name of the server on the hub, that is set for each server under game.hostname in their respective config.toml files. | |||
Name: "Wizard's Den" | |||
ApiToken: "foobar" # API token to control this instance remotely like run updates, restart server. This should be confidential | |||
ApiPort: 1212 # API port OF THE GAME SERVER. This has to match the 1212 HTTP status API (described below). Otherwise the watchdog can't contact the game server for stuff. | |||
# Auto update configuration. This can be left out if you do not need auto updates. Example is for our officially hosted builds. | |||
# See below for alternatives. | |||
UpdateType: "Manifest" | |||
Updates: | |||
ManifestUrl: "https://central.spacestation14.io/builds/wizards/manifest.json" | |||
# Any environment variables you may want to specify. | |||
EnvironmentVariables: | |||
Foo: bar | |||
wizards_den_two: | |||
# Name of the second server | |||
Name: "Wizard's Den 2" | |||
etc...</code> | |||
===Общее устранение неполадок=== | |||
==SS14.Watchdog== | |||
Сервер продолжает перезагружаться каждые 30 секунд | |||
Это означает, что сервер неправильно взаимодействует со </code>SS14.Watchdog</code>, и </code>SS14.Watchdog</code> вынужден предположить, что сервер заблокирован или что-то подобное. Это происходит, если </code>BaseUrl</code> конфигурация </code>SS14.Watchdog</code> установлена неправильно или иным образом недоступна игровому серверу. | |||
</code>System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Posix.NETStandard, Version=1.0.0.0, Culture=neutral (...)</code> | |||
Текущая рабочая теория заключается в том, что это вызвано неправильными </code>dotnet publish</code> настройками. | |||
Приведенный ниже набор результатов тестов должен помочь объяснить. | |||
</code>dotnet publish -c Release -r linux-x64 --no-self-contained SS14.Watchdog -o test | |||
RESULT: Mono.Posix.NETStandard.dll included, System.dll not included (as expected)</code> | |||
</code>dotnet publish -c Release -r linux-x64 SS14.Watchdog -o test | |||
RESULT: Mono.Posix.NETStandard.dll included, System.dll included</code> | |||
</code>dotnet publish -c Release SS14.Watchdog -o test | |||
RESULT: Mono.Posix.NETStandard.dll not included, System.dll not included</code> | |||
Поскольку Watchdog используется </code>Mono.Posix.NETStandard.dll</code> для маркировки исполняемых файлов как исполняемых в Linux и Mac OS X, важно иметь его в этих ОС. | |||
==Запуск сервера на macOS или Linux== | |||
Откройте терминал в распакованном каталоге сборки | |||
Введите</code>./Robust.Server</code>, затем нажмите enter. Если вы видите кучу вещей, которые выводятся на экран, и на нем не написано ошибка, значит, сервер запущен. | |||