Ну вот я и дома, рабочий день закончился...
Иногда, когда просто все реально надоед и хочется просто отключить мозг и не думать о том что творится в стране, на работе и тд., я играю в разные игры жанра зомби-апокалипсис или песочницы, такие как DayZ, H1Z1, RUST, 7 Days to Die или в Minecraft :) куда же без него :)
Все эти игры жанра Online MMO Game, что совсем не очень то располагает к расслаблению, так как обычно там куча каких то неадекватных людей играет :( и ты быстрее умрешь от руки другого игрока чем от какого то зомби (Minecraft не считаем, так как там есть одиночный режим). Последнее время я выбираю 7 Days to Die, но самому играть не интересно, вначале конечно интересно бегать что то исследовать, но как обычно это заканчивается тем что тебя зомби быстро убивают. И приходится все начинать сначала.
Что бы хоть как то разнообразить это дело, и можно было поиграть в многопользовательский режим без всяких "бубуинов" с домашними или друзьями, я как обычно решил поднять на своем домашнем NASе, выделенный сервер для игры 7 Days to Die. Но что бы не забивать основную ОС разными там библиотеками и тд. для этого я решил приспособить контейнеры Docker. Я не стал делать отдельный Dockerfile, так как это все делается для себя.
Итак, у меня уже был базовый образ для Debian Jessie, то его и будем использовать для создания игрового сервера.
Так как мне не нужно что бы контейнеру был выделенный отдельный сетевой адрес из подсети Docker, я использовал опцию --net=host, что позволило мне обращаться к контейнеру по адресу самого сервера.
Создаем новый контейнер
Запускаем steamcmd и устанавливаем игру в ~/games/7dtd/, app_id = 294420 для 7 Days to Die Linux Dedicated Server
Важное замечание:
Для игры 7 Days to Die, нужно регистрироваться под учетной записью где она у вас куплена, в остальных случаях можно регистрироваться под анонимным пользователем. Перечень доступных серверов которые можно создать с помощью SteamCMD и их параметры можно найти по ссылке Dedicated Servers List
Данный файл хорошо документирован, так что разобраться что и как нужно править думаю не составит большого труда.
Так же стоит исправить файл запуска сервера 7DaysToDie.sh, добавив опцию -configfile=serverconfig.xml и убрав добавление даты и времени к лог файлу. Кстати я так и не понял почему в данном файле закоментировано проверка платформы и запуск 64-битной версии, у меня что та 32 что 64 битная версия заработала.
После всех исправлений, запускаем еще раз сервер руками и проверяем что все работает и клиент подключается.
Для управления сервером, подключаемся к нему телнетом на порт 8081 (по умолчанию). Если все нормально, то останавливаем сервер командой shutdown через консоль управления.
Теперь можно сохранить данный образ что бы можно быстро развернуть сервер. Запускать мы его будем руками, я не ставил перед собой цель это все автоматизировать.
Выходим из контейнера
Итак создаем контейнер с уже настроенной игрой, используя подготовленный образ и запускаем.
В дальнейшем мы сможем подключиться к контейнеру используя команду
В следующий раз мы попробуем создать игровой сервер для игры Factorio, для запуска которой требуется Х-сервер.
Иногда, когда просто все реально надоед и хочется просто отключить мозг и не думать о том что творится в стране, на работе и тд., я играю в разные игры жанра зомби-апокалипсис или песочницы, такие как DayZ, H1Z1, RUST, 7 Days to Die или в Minecraft :) куда же без него :)
Все эти игры жанра Online MMO Game, что совсем не очень то располагает к расслаблению, так как обычно там куча каких то неадекватных людей играет :( и ты быстрее умрешь от руки другого игрока чем от какого то зомби (Minecraft не считаем, так как там есть одиночный режим). Последнее время я выбираю 7 Days to Die, но самому играть не интересно, вначале конечно интересно бегать что то исследовать, но как обычно это заканчивается тем что тебя зомби быстро убивают. И приходится все начинать сначала.
Что бы хоть как то разнообразить это дело, и можно было поиграть в многопользовательский режим без всяких "бубуинов" с домашними или друзьями, я как обычно решил поднять на своем домашнем NASе, выделенный сервер для игры 7 Days to Die. Но что бы не забивать основную ОС разными там библиотеками и тд. для этого я решил приспособить контейнеры Docker. Я не стал делать отдельный Dockerfile, так как это все делается для себя.
Итак, у меня уже был базовый образ для Debian Jessie, то его и будем использовать для создания игрового сервера.
Так как мне не нужно что бы контейнеру был выделенный отдельный сетевой адрес из подсети Docker, я использовал опцию --net=host, что позволило мне обращаться к контейнеру по адресу самого сервера.
Создаем новый контейнер
# docker run --net=host --name jessie -i -t sovicua:jessie
Обновляем образ
# apt-get update # apt-get upgradeПодготавливаем образ для установки SteamCMD, устанавливаем дополнительные библиотеки и утилиты
# apt-get install lib32gcc1 lib32stdc++6 wget # useradd -m -c "SteamCMD User" -s /bin/bash steamСкачиваем и устанавливаем SteamCMD
# su - steam $ mkdir SteamCMD $ cd SteamCMD/ $ wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz $ tar -xvzf steamcmd_linux.tar.gzПосле установки, файл с архивом инсталляции можно удалить что бы не путался под ногами.
Запускаем steamcmd и устанавливаем игру в ~/games/7dtd/, app_id = 294420 для 7 Days to Die Linux Dedicated Server
Важное замечание:
Для игры 7 Days to Die, нужно регистрироваться под учетной записью где она у вас куплена, в остальных случаях можно регистрироваться под анонимным пользователем. Перечень доступных серверов которые можно создать с помощью SteamCMD и их параметры можно найти по ссылке Dedicated Servers List
$ ./steamcmd.sh ... идет установка ... Steam> login steam_user steam_password Steam> force_install_dir ./../games/7dtd/ Steam> app_update 294420 validate ... идет установка ... Success! App '294420' fully installed. Steam> exitОсталось немножко подправить файл конфигурации serverconfig.xml на свое усмотрение и можно запускать сервер.
Данный файл хорошо документирован, так что разобраться что и как нужно править думаю не составит большого труда.
Так же стоит исправить файл запуска сервера 7DaysToDie.sh, добавив опцию -configfile=serverconfig.xml и убрав добавление даты и времени к лог файлу. Кстати я так и не понял почему в данном файле закоментировано проверка платформы и запуск 64-битной версии, у меня что та 32 что 64 битная версия заработала.
$ cd ../games/7dtd/ $ cat 7DaysToDie.sh #!/bin/sh export LD_LIBRARY_PATH=~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu #export MALLOC_CHECK_=0 #if [ $(getconf LONG_BIT) = 64 ]; then # ./7DaysToDie.x86_64 -configfile=serverconfig.xml -logfile 7DaysToDie_Data/output_log__`date +%Y-%m-%d__%H-%M-%S`.txt $@ #else ./7DaysToDie.x86 -configfile=serverconfig.xml -logfile 7DaysToDie_Data/output.log $@ & #fiМожно выполнить первый запуск.
$ ./7DaysToDie.sh
После первого запуска нужно подправить serveradmin.xml что бы назначить себя администратором. Обычно он лежит в ~/7 Days To Die/Saves/После всех исправлений, запускаем еще раз сервер руками и проверяем что все работает и клиент подключается.
Для управления сервером, подключаемся к нему телнетом на порт 8081 (по умолчанию). Если все нормально, то останавливаем сервер командой shutdown через консоль управления.
Теперь можно сохранить данный образ что бы можно быстро развернуть сервер. Запускать мы его будем руками, я не ставил перед собой цель это все автоматизировать.
Выходим из контейнера
$ exit # exitСохраняем образ в локальном репозитории
# docker commit --author="Viktor M. Sytnyk <sovicua@mail.ua>" jessie sovicua/steam:7dtd
Можно посмотреть на созданный образ :)# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
sovicua/steam 7dtd 620bfd31cc61 About a minute ago 2.643 GB
sovicua jessie 0d4a8604eed7 24 hours ago 423 MB
sovicua/games minecraft e2555d48e61b 10 weeks ago 835.3 MB
debian jessie 58052b122b60 3 months ago 122.8 MB
Контейнер с которым мы до этого игрались, можно удалить, зачем он будет только место занимать.Итак создаем контейнер с уже настроенной игрой, используя подготовленный образ и запускаем.
# docker run --net=host --name=7dtd --user=steam -t -i sovicua/steam:7dtd $ cd ~/games/7dtd/ $ ./7DaysToDie.shДля выхода из контейнера используем комбинацию Ctrl+p Ctrl+q
В дальнейшем мы сможем подключиться к контейнеру используя команду
# docker attach 7dtd
В следующий раз мы попробуем создать игровой сервер для игры Factorio, для запуска которой требуется Х-сервер.
Когда-нибудь дядя Витя в процессе настройки игры напишет собственную операционку :)
ВідповістиВидалитиНет Родиончик, этому уже не быть... это в молодости была такая идея, даже начал что то писать.
ВидалитиА сейчас меня хватает только вот на таки опусы, и то один или два в месяц максимум :(
Я думал, ты уже большой мальчик. :)
ВідповістиВидалитиНу не маленький это точно :)
ВидалитиЖорж, это же для души так сказать, не SAP да Oracle мне дома ставить :)
Плюс, изучаю новую контейнерную виртуализацию в Linux, она сейчас в тренде так сказать.
А тупо читать доки, оно же совсем не интересно и скучно.
З.Ы. Вот может когда то соберусь и допишу про то как я делал сервер для Factorio :), вот там было весело, нужно было настроить что бы еще X-сы отдавались с контейнера :)