Настройка выделенного сервера
Описание и требования
Выделенный сервер - это сервер который запускается не на ПК игрока, а используется для этого отдельный физический или виртуальный.
Но в целом инструкция применима и для запуска сервера на своем ПК
Для 7DTD существует 2 вариации: для Linux и Windows серверов
Минимальные требования к серверу
CPU: 2 ядра по 2.4Гц
RAM: от 8 Гб (в некоторых источниках пишут, что +2Гб на каждого игрока)
Диск: свободного места от 12 Гб
Открытые сетевые порты:
TCP/UDP: 26900-26905, 27015-27050
Настройка Linux-сервера
Загрузка файлов и подготовка сервера Linux
Предполагается, что вы умеете работать в консоле и понимаете что делаете. Инструкция не позиционирует себя как step-by-step.
Инструкция не содержит рекомендации по настройке безопасности ОС, расположения файлов и пр. Только как запустить сервер
Все описанные действия выполняются под root
- Устанавливаем SteamCMD. Код ниже подходит для Ubuntu. Для Debian/Centos смотрите в документации SteamCMDsudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update sudo apt install steamcmd
- Создаем папку под сервер и файл с конфигурацией, который выкачает сервер 7DTD. Вместо USER указываем имя учетки под которой будет запускаться сервер mkdir -R /game/7dtd chown USER /game Под учеткой, которой будем запускать серверvi /game/7dtd.sh # строчку ниже добавляем в 7dtd.sh /usr/games/steamcmd +force_install_dir /game/7dtd +login anonymous +app_update 294420 validate +quit
- Запускаем файл от имени пользователяsh /game/7dtd.sh
Если выдается ошибка Error! App '294420' state is 0x202 after update job значит у вас на диске не достаточно места
Запуск сервера Linux
Для запуска сервера достаточно использовать эту команду
/game/7dtd/startserver.sh -configfile=/game/7dtd/serverconfig.xmlНо она не удобна тем, что при отключении консоли сервер выключается.
Есть несколько вариантов запуска:
Запуск отдельной сессии с сервером (рекомендуемый №1)
1) Используем sсreen для запуска
# Ставим screen apt install screen2) Заходим в сессию
screen3) Запускаем сервер
/game/7dtd/startserver.sh -configfile=/game/7dtd/serverconfig.xml4) Для отключения от сесии нажимаем Ctrl+a, потом жмем d Для повторного подключения к сессии с сервером пишем
screen -rЗапуск контейнера в Docker (не рекомендуемый)
Сложный вариант, используйте лучше запуск как отдельная сессия или как сервис.
Добавлен просто как just for fun
Настройку/установку Docker не описываем. Официальная инструкция по установке тут: https://docs.docker.com/engine/install/
Добавляем пользователя от которого будем запускать контейнер в группу docker. Команда выполняется от root. Вместо USER указываем имя учетки
usermod -aG docker USER1) Создаем Dockerfile
FROM ubuntu:latest # Установить зависимости (например, bash) RUN apt-get update && apt-get install -y bash # Убедиться, что контейнер готов к маппингу папки WORKDIR /game/7dtd CMD ["bash"]2) Собираем контейнер
docker build -t 7dtd .3) Подготавливаем docker compose файл
vi docker-compose.yml version: '3.8' services: game_server: image: 7dtd:latest # Укажите ваш Docker-образ container_name: 7dtd_server network_mode: host volumes: - /game/7dtd:/game/7dtd # Маппинг папки с игрой как volume - /game/7dtd/share:/root/.local/share # маппим папку для сохранения мира working_dir: /game/7dtd entrypoint: ["bash", "/game/7dtd/startserver.sh", "-configfile=/game/7dtd/serverconfig.xml"] # Параметры запуска restart: unless-stopped4) Запускаем контейнер
docker compose up -d5) Проверяем, что контейнер запустился
docker ps -aСоздание отдельного сервиса с игрой (Рекомендумый №2)
Делаем от root
0) Настраиваем сервер. Добавляем строчки в конфиг и перезагружаем сервер
vi /etc/security/limits.conf root soft nofile 10240 vi /etc/sysctl.conf vm.max_map_count=26214 reboot now1) Создаем конфиг для сервиса
vi /etc/systemd/system/7dtd.service2) Добавляем в кофиг
[Unit] Description=7DTD server After=network.target [Service] WorkingDirectory=/game/7dtd Restart=always User=root ExecStart=/game/7dtd/startserver.sh -configfile=/game/7dtd/serverconfig.xml LimitNOFILE=10240 [Install] WantedBy=multi-user.target3) Перечитываем список сервисов
systemctl daemon-reload4) Активируем сервис и запускаем
systemctl enable 7dtd systemctl start 7dtdЧерез несколько минут сервер будет запущен
Настройка Windows-сервера
1) Через Steam ставим 7 Days to Die Dedicated Server
2) Запускаем через клиент Steam или через startdedicated.bat в папке с сервером (steamapps\common\7 Days to Die Dedicated Server)
serverconfig.xml
Описание настроек в serverconfig.xml. Там описаны различные параметры для запуска сервера
| Тип | Наименование | Описание | Комментарий | |
|---|---|---|---|---|
| Основные параметры | ServerName | Название сервера | ||
| ServerDescription | Описание сервера | |||
| ServerWebsiteURL | Ссылка на веб-сайт вашего сервера | |||
| ServerPassword | Пароль для входа на сервер | |||
| ServerLoginConfirmationText | Если включить, то перед появлением в мире будет сообщение. Нужно подтвердить, что бы продолжить | |||
| Region | Регион месторасположения сервера | |||
| Language | Основной язык для игроков | |||
| Сетевые | ServerPort | Порт для подключения | Желательно оставить в дефолтное значение. Ну или держать в диапазоне 26900 - 26905 или 27015 - 27020 | |
| ServerVisibility | Видимость сервера в общем списке | 2 - публичный
1 - видим только друзьям 0 - не показывать Для dedicated серверов значение 1 будет работать, если первый игрок присоединяется по IP | ||
| ServerDisabledNetworkProtocols | Список протоколов, которые не будут использоваться | На dedicated серверах нужно отключать SteamNetworking, если нет NAT или настроена правильно переадресация портов | ||
| ServerMaxWorldTransferSpeedKiBs | Максимальная скорость с которой игроки могут загрузить себе мир | Мир загружается при первом подключении игрока.
Максимальное значение - 1300. Да, оно в kiB |
||
| Слоты | ServerMaxPlayerCount | Максимальное кол-во игроков на сервере | ||
| ServerReservedSlots | Сколько слотов из ServerMaxPlayerCount будут зарезервированы для определенных игроков | |||
| ServerReservedSlotsPermission | Уровень доступа, что бы использовать ServerReservedSlots | |||
| ServerAdminSlots | Сколько админов могут присоединится, даже если все слоты забиты | |||
| ServerAdminSlotsPermission | Уровень доступа, что бы использовать ServerAdminSlots | |||
| Если вы не собираетесь отдельно как-то админить сервер, то настройки "Интерфейс администратора" вам не интересны | ||||
| Интерфейс администратора | WebDashboardEnabled | Включить/выключить web-интерфейс дашборда | ||
| WebDashboardPort | Порт для web-интерфейса | По-умолчанию 8080 | ||
| WebDashboardUrl | URL для web-интерфейса | Внешний URL, если используется публичный (внешний) IP. Оставьте пустой, если у вас "белый" (статический внешний) IP | ||
| EnableMapRendering | Вкл/выкл рендеринг карты при её изучении | Для отображения в web-интерфейсе | ||
| TelnetEnabled | Включить telnet | |||
| TelnetPort | Порт для telnet | |||
| TelnetPassword | Пароль для подключения к telnet | |||
| TelnetFailedLoginLimit | Количество не правильных вводов пароля перед блокировкой возможности логина к telnet | |||
| TelnetFailedLoginsBlocktime | На сколько времени блокировать | |||
| TerminalWindowEnabled | Показывать окно терминала для вывода логов или ввода команд | Только для Windows | ||
| Папки и пути | AdminFileName | Имя файла со списком админов | Путь указывать относительно UserDataFolder/Saves | |
| UserDataFolder | Путь до папки где сервер хранит все данные по пользователям, мирам и сохранениям | По-умолчанию опция закоменчена (выключена и недоступна). В этом случае используется дефолтный путь | ||
| Прочие технические настройки | ServerAllowCrossplay | Разрешение кросплея | ||
| EACEnabled | Включить/выключить стандартный античит (EasyAntiCheat) | |||
| IgnoreEOSSanctions | Игнорировать ограничения EOS ограничения | |||
| HideCommandExecutionLog | Скрыть протоколирование команд в консоле | 0 - показывать все
1 - скрывать только от telnet/control panel (web-интерфейс) 2 - скрывать от удаленных игровых клиентов (игроков) 3 - скрывать все | ||
| MaxUncoveredMapChunksPerPlayer | Максимальное количество chunk (фрагметы, считай частей карты) сколько может быть открыто одним игроком | Максимальный размер файла карты для одного игрока составляет (x * 512 байт), площадь раскрытия - (x * 256 м²). По умолчанию 131072 означает, что в любой момент времени может быть открыто не более 32 км². | ||
| PersistentPlayerProfiles | Постоянные профили пользователей | Если выключено, то игрок может подключится к любому (своему) выбранному профилю. Если включено (true), то к последнему профилю которым играл | ||
| MaxChunkAge | Количество игровых дней, через которое он вернется в свое первоначальное состояние, если его не посещать или не стоит итем типа "привата" территории | -1 - отключено состояние | ||
| SaveDataLimit | Максимальный объем дискового пространства для каждой сохраненной игры в мегабайтах (МБ). Сохраненные фрагменты (chunk) могут быть принудительно сброшены в исходное состояние, чтобы освободить место при достижении этого лимита. | -1 - отключено | ||
В статьи использованы материалы сайта 7daystodie.fandom.com/ru/wiki/, в соответствии с условиями лицензии CC-BY-SA.