Запуск локального сервера: различия между версиями

Материал из Space Station 14 Вики
м (Твик для тех, кто решил собрать, а не разбирается в вопросе)
(Большой гайд добавлен)
Строка 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. Если вы видите кучу вещей, которые выводятся на экран, и на нем не написано ошибка, значит, сервер запущен.

Версия от 17:26, 24 января 2023

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

Запуск готовой сборки

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

Скачать готовую сборку под вашу ОС вы можете по этой ссылке: https://builds.station14.ru/syndicate/

  1. Скачайте сборку под вашу ОС
  2. Разархивируйте все файлы в любом удобное вам место
  3. Запустите Robust.Server.exe (или Robust.Server)
  4. Не закрывайте окно с консолью, это ваш запущенный сервер!
  5. Запустите лаунчер
  6. На вкладке Home нажмите Direct Connect To Server...
  7. Укажите адрес сервера - localhost и нажмите Connect
  8. Profit. Вы на вашем локальном сервере с правами хоста.


У меня открывается черное окно (или на долю секунды мелькает иконка сервера) и сразу пропадает, что делать?

Скорее всего у вас устаревшая версия .NET, попробуйте установить 7-ю версию.

Самостоятельная сборка

Сборка

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

  1. Откройте папку куда хотите сохранить все файлы локалки
  2. Открываем терминал (ПКМ -> Открыть в Windows Terminal) и работаем в нем. Если же у вас нет Windows Terminal, то вводим cmd через Win + R, в консоли переходим в папку где у вас будет сервер cd C:\
  3. Клонируем офф репозиторий git clone https://github.com/space-wizards/space-station-14.git или же репозиторий корвакса git clone https://github.com/space-syndicate/space-station-14.git
  4. Переходим в папку репозитория cd space-station-14
  5. Устанавливаем зависимости для сборки python ./RUN_THIS.py
  6. Собираем сервер и клиент dotnet build или dotnet build --configuration Release, если вы даете что-то более серьёзное.

Поздравляю, теперь вы счастливый обладатель локального сервера. Мама бы вами гордилась!

Запуск

Если после танцев с бубном у вас все получилось, то следующие шаги вас точно не заставят врасплох.

  1. Запускаем сервер открыв Content.Server.exe по пути ..\space-station-14\bin\Content.Server (не путать с Robust.Server.exe)
  2. Запускаем клиент открыв Content.Client.exe по пути ..\space-station-14\bin\Content.MapRenderer (не путать с Robust.Client.exe)
  3. Жмем Direct Connect To Server... в меню

И на этом все. Просто, не правда ли? Теперь вам никто не помешает устраивать военные преступления похлеще чем....

Дополнительное

Дополнительная информация, которая вам наверное, да и поможет

=> Как открыть консоль? На кнопку ~

=> Как перейти в лобби? golobby команда в консоль

=> Где настройки сервера? Файл в папке сервера - server_config.toml

=> Как просмотреть все команды? list в консоль help <команда> для подробностей о команде



Учебное пособие по размещению серверов

Это руководство о том, как настроить сервер SS14. Это руководство охватит все, что вам нужно, от приватных серверов для игр с друзьями до производственных серверов для подходящих хостов серверов.

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

Для таких сервисов как SS14.Watchdog, вам ТАКЖЕ понадобится среда выполнения ASP .NET Core 7 (входит в .NET 7 SDK).

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

  1. Загрузите последнюю версию сервера с нашей страницы сборки для вашей операционной системы.

https://builds.station14.ru/syndicate/

  1. Извлеките в любое место
  2. Запустите Robust.Server.exe (или Robust.Server через терминал на macOS / Linux)
  3. Перенаправление портов 1212/ TCP и 1212/UDP:
  • Самый простой способ сделать это - включить UPnP на сервере. Отредактируйте server_config.toml и удалите # перед upnp = true в блоке [net]. Это заставит сервер автоматически пытаться перенаправить порт на ваш маршрутизатор. Это должно работать на большинстве современных маршрутизаторов.
  • Если UPnP у вас не работает, вам придется сделать это вручную. Инструкции зависят от вашего маршрутизатора, поэтому мы оставляем поиск в браузере на ваше усмотрение.
  1. Дайте своим друзьям и себе свой IP-адрес и попросите их вставить его в диалоговое окно "прямое подключение" в лаунчере.

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

Простая конфигурация сервера

Вы можете настроить параметры на сервере, отредактировав конфигурационный файл, server_config.toml

Настройки имеют один ключ, под который они подпадают, а затем имя. Итак, если я скажу game.lobbyenabled, что это идет под [game] заголовком следующим образом:

[game]

lobbyenabled = true

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

[net]

Тикрейт вашего сервера.

tickrate = 30

[game] Ниже указываете имя вашего сервера. hostname = "Мой сервер" При запуске сервера включает лобби. lobbyenabled = true

[auth] mode = 1

[hub] Показывать ли ваш сервер в хабе лаунчера. true - да false - нет. Пожалуйста, смотрите правила размещения серверов advertise = false

Универсальные знания

Права администратора

По умолчанию права администратора не установлены. Соединения, сделанные с localhost, автоматически становятся полноправными администраторами и обходят любые требования к аутентификации. Конечно, это не очень полезно для реальных серверов, размещенных на выделенном сервере, поэтому у вас проблема.

Вы можете использовать команду promotehost (например promotehost PJB) в консоли сервера, чтобы временно предоставить подключенному клиенту полные права хоста. Это позволит им настраивать дополнительные права администратора (и устанавливать свои собственные постоянные) с помощью панели разрешений администратора в игре (permissions команда). Привилегии теряются при завершении работы сервера. Рекомендуется предоставить себе все разрешения, чтобы вы могли предоставить их администраторам позже или правильно администрировать, если хостинг один. (За исключением +HOST случаев, когда вы не умеете им пользоваться! Если вы не знаете, что он делает, не давайте +HOST)

+HOST предоставлять привилегии крайне опасно, и их следует предоставлять только тем, у кого уже есть доступ к вашему компьютеру или серверу.

Предоставление кому +HOST - либо позволяет им полностью завладеть вашим сервером и / или компьютером.

Настройки производительности

Вот некоторые настройки, которые вы, вероятно, захотите включить на своем сервере для повышения производительности:

Переменная среды для включения полного динамического PGO, что значительно повышает производительность за счет незначительно большего времени запуска:

DOTNET_TieredPGO: 1

DOTNET_TC_QuickJitForLoops: 1

DOTNET_ReadyToRun: 0

Переменная среды для включения операций AVX в базе кода. В зависимости от вашего процессора это может снизить производительность, а не улучшить ее, в противном случае это может повысить производительность atmos.

ROBUST_NUMERICS_AVX: true

Дополнительно - SS14.Watchdog и / или пользовательские кодовые базы

https://github.com/space-wizards/SS14.Watchdog/

SS14.Watchdog (кодовое имя Ian) - это оболочка для хостинга серверов, похожая на TGS для BYOND (но на данный момент намного проще). Он обрабатывает автоматические обновления, мониторинг, автоматические перезапуски и администрирование.

Чтобы настроить его, загрузите код (ссылка выше) и опубликуйте его для своей платформы (dotnet publish -c Release -r linux-x64 --no-self-contained), поскольку в настоящее время мы сами не предоставляем никаких публикаций. Обратите внимание, что вам необходимо иметь ASP.NET Установленую как основная среда выполнения. Затем скопируйте SS14.Watchdog/bin/Release/net6.0/linux-x64/publish в каталог на вашем сервере или что-то в этом роде.

Вы захотите отредактировать appsettings.yml, чтобы добавить сервер и настроить некоторые вещи. Пример с официальных серверов (очевидно, отредактированные токены):

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...

Общее устранение неполадок

SS14.Watchdog

Сервер продолжает перезагружаться каждые 30 секунд Это означает, что сервер неправильно взаимодействует со SS14.Watchdog, и SS14.Watchdog вынужден предположить, что сервер заблокирован или что-то подобное. Это происходит, если BaseUrl конфигурация SS14.Watchdog установлена неправильно или иным образом недоступна игровому серверу.

System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Posix.NETStandard, Version=1.0.0.0, Culture=neutral (...) Текущая рабочая теория заключается в том, что это вызвано неправильными dotnet publish настройками. Приведенный ниже набор результатов тестов должен помочь объяснить.

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)

dotnet publish -c Release -r linux-x64 SS14.Watchdog -o test

RESULT: Mono.Posix.NETStandard.dll included, System.dll included

dotnet publish -c Release SS14.Watchdog -o test

RESULT: Mono.Posix.NETStandard.dll not included, System.dll not included

Поскольку Watchdog используется Mono.Posix.NETStandard.dll для маркировки исполняемых файлов как исполняемых в Linux и Mac OS X, важно иметь его в этих ОС.

Запуск сервера на macOS или Linux

Откройте терминал в распакованном каталоге сборки Введите./Robust.Server, затем нажмите enter. Если вы видите кучу вещей, которые выводятся на экран, и на нем не написано ошибка, значит, сервер запущен.