Показ дописів із міткою Linux. Показати всі дописи
Показ дописів із міткою Linux. Показати всі дописи

неділя, 28 жовтня 2018 р.

Трішки магії для ssh


Для підключення до віддаленого сервера, я використовую OpenSSH з додатковими налаштуваннями в .ssh/config
Host gw 
  HostName gw.extern.lan
  User gwuser
  IdentityFile ~/.ssh/keys/gw.extern.lan

Host remotehost 
  HostName remotehost.internal.lan
  User remoteuser
  IdentityFile ~/.ssh/keys/remotehost.internal.lan

Match Host remotehost !exec "ping -c 1 -W 1 ipaddrremote &>/dev/null"
  ProxyCommand ssh gw nc %h %p

І де ж тут магія, спитаєти ви?
А мвгія в тому, що якщо ви викоритовуєте наприклад ноутбук вдома чи на роботі, то для підключення до віддаленого сервера завжки використовується одна команда:
ssh remotehost

понеділок, 21 листопада 2016 р.

Удобный доступ к контейнеру Docker и другие вкусности :)

Сегодня пару коротких заметок о alias которые добавляют удобства для меня как администратора системы.

Первый alias
Так как я часто работаю с контейнерами Docker, и каждый раз для подключения к контейнеру писать docker attach мне лень, по этому я добавил себе в .profile
# Docker shell
alias dsh='function target(){ CONTAINER=$(docker inspect --format {{.State.Pid}} $1); sudo nsenter --target $CONTAINER --mount --uts --ipc --net --pid; }; target'
Теперь что бы получить "root" доступ к контейнеру, достаточно выполнить команду dsh

Второй alias
Вся суть этой команды, это показать актуальный лог файл игрового сервера. При перезапуске сервер формирует новый лог файл "logs/`date +%Y%m%d.%H%M%S`.log" и как обычно, лень как двигатель прогресса 😜 привела до написания этого alias, который как обычно добавил себе в .profile
# 7 Days to Die tools
alias tail7='grc -c conf.7dtd tail -f $(GAMELOG="/mnt/data/games/7DaysToDie/steam/games/7dtd/logs" && ls -tc ${GAMELOG} | echo "$GAMELOG/$(head -n1)")'
Дополнительная "плюшка" этого alias, это то что он еще раскрашивает лог файл.
Так как я иногда играя в игру, очень боюсь там собак, то я сделал себе такой вот "чит", перед тем как я подключаюсь к игре, я подключаюсь к серверу и запускаю эту команду и когда появляются собаки, консоль начинает "бибикать" 😎
Для раскраски лога, я использую утилиту Generic Colouriser, для которой я написал простенький конфигурационный файл conf.7dtd который нужно положить в ~/.grc/
# Spawned any zombies
regexp=.+Spawned.+|.+AIDirector.+
colours=yellow 
-
# Spawned Zombie Dog
regexp=.+Spawned.+Dog.+
colours=red beep
-
# Player info
regexp=.+Player.+
colours=green
-
regexp=.+ERR.+|.+EXC.+
colours=red
-
regexp=.+WRN.+|Warning.+|.+UNET.+
colours=magenta
-
regexp=(\d{4}\-\d{2}\-\d{2}).(\d{2}:\d{2}:\d{2})
colours=black, blue, blue bold
count=once
-
# Time: 6.00m FPS: 37.77 Heap: 250.0MB Max: 250.0MB
regexp=Time\: (\d{1,4}\.\d\dm) FPS\: (\d{1,3}\.\d\d) Heap\: (\d{1,4}\.\dMB) Max\: (\d{1,4}\.\dMB)
colours=default bold, blue bold, yellow bold, green bold, red bold
count=once
-
regexp=Ply\: (\d{1,2}) Zom\: (\d{1,2}) Ent\: (\d{1,2}) \((\d{1,2})\) Items\: (\d{1,2})
colours=default bold, green bold, red bold, yellow bold, yellow bold, blue bold
count=once
Вот так теперь радужно выглядит лог 😐

четвер, 6 жовтня 2016 р.

Автодополнение для Docker

Всем доброго времени суток :)
Уже несколько месяце я полностью переполз на Manjaro Linux (по сути ArchLinux для домохозяек :)) на рабочем ПК, и что бы продолжить эксперименты,  установил я недавно на него Docker. Все хорошо, вот только беда, на моем домашнем сервере было настроено автодополнение команд. Собственно и займемся исправлением данной "не удобности".
Для начало нужно установить пакет bash-completion
$ sudo pacman -S bash-completion
Дальше настраиваем само авто дополнение. Для этого идем на https://github.com/docker/docker/blob/master/contrib/completion/bash/docker и скачиваем файл.
Настроить автодополнение можно двумя способами - глобально или только для себя.
Для глобальной настройки нужно положить файл в /etc/bash_completion.d
$ sudo curl -L https://raw.githubusercontent.com/docker/docker/master/contrib/completion/bash/docker > /etc/bash_completion.d/docker 
Только для себя. Не забываем прописать в ~/.profile выполнение этого файла
$ sudo curl -L https://raw.githubusercontent.com/docker/docker/master/contrib/completion/bash/docker > ~/.docker-completion.sh
$ vim ~/.profile
... cut ...
. ~/.docker-completion.sh
... cut ...

середа, 22 липня 2015 р.

Создаем игровой сервере 7 Days to Die. Немножко автоматизации.


И снова добрый день/вечер/ночь и тд. всем кто читает данный блог.
Потихоньку я осваиваю основы Docker и вникаю в его возможности и функционал. Тяжелый это труд все это описывать, проще все сделать быстренько за какой то часик, а потом тратишь несколько дней на оформление этого все в читабельный вид, что бы можно это все опубликовать. Ну что же продолжим... это было небольшое лирическое отступление :) что бы выровнять первый абзац с картинкой :)
Продолжаем наши эксперименты с Docker. Сегодня поупражняемся с созданием Dockerfile. Подопытным "кроликом" будет у нас все тот же 7 Days to Die.
Несколько слов о новых образах, которые теперь доступны через на официальном "Hub Docker".
~> docker search sovicua
NAME             DESCRIPTION           STARS     OFFICIAL   AUTOMATED
sovicua/debian   Debian Jessie (8.0)   0
Все они построены на базе Debian Jessie. На текущий момент есть два образа с тегами "jessie" и "steamcmd". Собственно первый это чистый Debian с установленными дополнительными пакетами и настроенной временной зоной. Данные настройки были описаны в Установка timezone в базовом образе Docker. Второй собран на базе первого с установленными библиотеками и steamcmd.
Итак, создаем файл конфигурации для создания образа контейнера.
~> mkdir docker/steamcmd/
~> cd docker/steamcmd/
~/d/steamcmd> vim Dockerfile
FROM sovicua/debian:jessie
MAINTAINER Viktor M. Sytnyk <sovicua sovic.org.ua>
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get install -y wget \
 && echo 'deb http://download.opensuse.org/repositories/shells:/fish:/release:/2/Debian_8.0/ /' >> /etc/apt/sources.list.d/fish.list \
 && wget http://download.opensuse.org/repositories/shells:fish:release:2/Debian_8.0/Release.key \
 && apt-key add - < Release.key \
 && apt-get update && apt-get upgrade -y \
 && apt-get install -y lib32gcc1 lib32stdc++6 fish && apt-get clean \
 && useradd -m -c "SteamCMD User" -s /usr/bin/fish steam
WORKDIR /home/steam/steamcmd
RUN wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz \
 && tar -xvzf steamcmd_linux.tar.gz && rm steamcmd_linux.tar.gz \
 && chown -R steam:steam /home/steam
CMD /usr/bin/fish
Как вы можете видеть, shell по умолчанию я использую Fish Shell, хотя это не существенно, но понравился он мне :)
Создаем образ:
~/d/steamcmd> docker build -t sovicua/debian:steamcmd .
После этого можно выгрузить образ на Docker Hub:
~/d/steamcmd> docker push sovicua/debian:steamcmd
Теперь у нас есть готовый образ с установленным steamcmd, что позволит нам в дальнейшем быстро развернуть любую игру которая поддерживает установку с использованием данной утилиты. Теперь переходим к созданию образа с установленным сервером 7 Days to Die.
Для начала создадим файл скрипта с помощью которого будем устанавливать, а также обновлять саму игру.
~> mkdir docker/games/7dtd
~> cd docker/games/7dtd
~/d/steamcmd> vim 7dtd.steamcmd

login steam_user steam_password
force_install_dir /home/steam/games/7dtd
app_update 294420 validate
quit
Где, steam_user и steam_password это имя пользователя и пароль на учетной записи которого куплена эта игра.
Теперь создадим собственно сам файл конфигурации создания образа.
~/d/steamcmd> vim Dockerfile
FROM sovicua/debian:steamcmd
MAINTAINER Viktor M. Sytnyk <sovicua@sovic.org.ua>
WORKDIR /home/steam/steamcmd
COPY 7dtd.steamcmd /home/steam/steamcmd/
CMD /usr/bin/fish
Честно говоря, можно было бы и не делать данный образ, для этих целей можно бы использовать предыдущий образ, создав в нем скрипт установки и обновления игры, но раз уж автоматизируем то делаем все типа ка надо :) Изначально я планировал что бы при создании образа, сразу инсталлирована игра, но так как у меня настроен Steam Guard, то он запрашивал у меня код, так как это типа новая машина которая хочет получить доступ к моей учетной записи.
В Dockerfile была команда на запуск скрипта:
RUN ./steamcmd.sh +runscript 7dtd.steamcmd
Победить это, что бы инсталляция останавливалась при запросе кода, у меня так и не получилось. :( По этому инсталляцию придется выполнять руками уже в контейнере.
После этого создаем сам образ как обычно.
~/d/g/7dtd> docker build -t sovicua/games:7dtd
Вот что у нас получилось после всех этих процедур:
~/d/7dtd> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
sovicua/games   7dtd                c1c3539bbe2b        4 hours ago         594 MB
sovicua/debian  steamcmd            72ebdb1d894c        4 hours ago         594 MB
sovicua/debian  jessie              8ca03adc0398        27 hours ago        478.9 MB
Теперь мы можем быстренько создать контейнер:
~/d/7dtd> docker run --name="7dtd" --net="host" --user="steam" -i -t sovicua/games:7dtd
Выполняем инсталляцию игры, не забываем указать имя пользователя и пароль, если это не сделали раньше.
~/steamcmd> ./steamcmd.sh +runscript 7dtd.steamcmd
После инсталляции правим файл конфигурации сервера serverconfig.xml как вам удобно, и можно запускать сервер.
~/steamcmd> cd ../games/7dtd
~/g/7dtd> vim serverconfig.xml
Из параметров которые я у себя изменил, это установил пароль на доступ по telnet, и небольшие настройки самого сервера, такие как тройной лут и длина суток 2 часа реального времени. И еще пару параметров.
<property name="ServerName"             value="iHome Games Server" />
<property name="ServerPassword"         value="" />
<property name="ServerMaxPlayerCount"   value="4" />
<property name="ServerDescription"      value="iHome 7 Days to Die server" />
<property name="ServerWebsiteURL"       value="home.sovic.org.ua" />
...
<property name="DayNightLength"         value="120" />
<property name="DayLightLength"         value="18" />
...
<property name="DropOnDeath"            value="2" />
<property name="DropOnQuit"             value="0" />
...
<property name="CraftTimer"             value="0" />
<property name="LootTimer"              value="0" />
...
<property name="EnemySpawnMode"         value="4" />
...
<property name="LootAbundance"          value="300" />
<property name="LootRespawnDays"        value="30" />
Дополнительно, можно установить мод на сервер, который добавит пару дополнительных команд и самое вкусное что мне нравиться это возможность просмотра карты через веб. Очень помогает в поиске пещерок :) так как они редко сейчас встречаются, а на игровой карте искать не удобно, пока ищешь могут и "ушатать" :)
~/g/7dtd> wget http://illy.bz/fi/7dtd/server_fixes.tar.gz
~/g/7dtd> tar -xzvf server_fixes.tar.gz
Пример работы данного мода можно посмотреть у меня на сервере iHome 7 Days to Die server.
Ну вот и все, запускаем сервер:
~/g/7dtd> ./startserver.sh -configfile=serverconfig.xml
Если кто забыл, то напоминаю, что бы выйти с контейнера без его остановки, используем комбинацию клавиш Ctrl+p Ctrl+q.
На этом все, приятной игры. Если кто захочет поиграть вместе у меня на сервера, пишите.
Заходите на мой блог - UNIX и не только...

вівторок, 7 липня 2015 р.

Сетевой media сервер для PS3. Продолжение.

Как я и говорил в предыдущей части Сетевой media сервер для PS3 мы не будем использовать rc-скрипты для управление сервисом, а создадим отдельный контейнер для данного сервиса используя возможности Docker.
Создадим отдельную папку для размещения файла конфигурации создания контейнера и скопируем в него скомпилированый файл (смотрите предедущую часть). Для примера:
$ cd ~/docker/ps3netsrv
$ cp ~/source/ps3netsrv/ps3netsrv ./
Создадим файл конфигурации:
$ vim Dockerfile
FROM sovicua:jessie
MAINTAINER Viktor M. Sytnyk <sovicua@sovic.org.ua>
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get upgrade -y
RUN groupadd -g 1000 ps3netsrv
RUN useradd -u 1000 -g 1000 -m -c "PS3 Media Server" ps3netsrv
VOLUME /home/ps3netsrv/media
RUN chown ps3netsrv:ps3netsrv /home/ps3netsrv/media
COPY ps3netsrv /home/ps3netsrv/
RUN chown ps3netsrv:ps3netsrv /home/ps3netsrv/ps3netsrv
WORKDIR /home/ps3netsrv
CMD ./ps3netsrv ./media
Создаем образ для данного сервиса:
$ docker build -t sovicua:ps3netsrv .
И запускаем контейнер:
$ docker run --net=host --name=ps3netsrv --user=ps3netsrv -v /mnt/media/ps3netsrv:/home/ps3netsrv/media -i -t -d sovicua:ps3netsrv
- где /mnt/media/ps3netsrv - корневой каталог в основной операционной системе, который монтируется в /home/ps3netsrv/media в контейнере. Все можно проверять работу нашего медиа-сервера на PS3. Думаю что вы сможете дальше не составить труда вам разобрать что и как.
В дальнейшем я планирую выгрузить данный контейнер в общий пул Docker, что бы каждый мог воспользоваться данным готовым контейнером для создания медиа-сервера.
Хотелось бы услышать ваше мнение по данному вопросу.

понеділок, 6 липня 2015 р.

Установка timezone в базовом образе Docker


Как то так случилось что я забыл установить в базовом образе правильную часовую зону, и после этого все контейнеры которые я делал с этого образа понятное дело имели зону UTC вместо Europe/Kiev. Каждый раз устанавливать правильную временную зону меня напрягает, соответственно что бы больше не заморачивать с данной проблемой, я решил обновить базовый образ.
Дополнительно обновим образ и установим еще несколько пакетов которые потребуются нам в дальнейшем.
$ docker run --name=jessie -i -t sovicua:jessie
# export DEBIAN_FRONTEND=noninteractive
# apt-get update && apt-get upgrade -y
# apt-get install -y apt-utils debconf-utils
# echo 'Europe/Kiev' > /etc/timezone
# dpkg-reconfigure tzdata
Выходим из контейнера и обновляем базовый образ.
$ docker commit --author="Viktor M. Sytnyk <sovicua@sovic.org.ua>" jessie sovicua:jessie
Ну вот и все, теперь в базовом образе у нас будет установлена правильная временная зона Europe/Kiev, а не UTC.

середа, 1 липня 2015 р.

Собираем и настраиваем DNS сервер bundy (BIND10). Часть 1.

Как то незаметно ☺ дошли руки все таки потрогать BIND10. Для начала немного истории о данном продукте.
Первый релиз BIND10 был представлен консорциумом ISC в феврале 2013. 17 апреля 2014 консорциум ISC выпустил последний релиз BIND10 1.2.0, после это передал все наработки сообществу независимых разработчиков. Данного решение было принято в связи с тем что у консорциума нет ресурсов для разработки двух альтернативных проектов. Поэтому они будут развивать только BIND9, а BIND10 полностью переходит в руки сообщества. Для уменьшения путаницы с BIND9, на GitHub был создан новый проект в который перенесли все наработки консорциума по BIND10 и данный проект получил название Bundy.

Ну что же, думаю можно приступать к эксперименту.

Создадим новый контейнер и подключаемся к нему:
$ docker run --name bundy --hostname=bundy -d -i -t sovicua:jessie
$ docker attach bundy

Как обычно обновляемся и устанавливаем нужные пакеты для сборки.
# apt-get update
# apt-get upgrade
# apt-get install git-core g++ make pkg-config python3-dev sqlite3 libsqlite3-dev libbotan1.10-dev liblog4cplus-dev libboost-dev python3-setproctitle dnsutils net-tools autoconf autoconf-archive automake libtool

Получаем исходные коды проекта и выполняем сборку:
# git clone https://github.com/bundy-dns/bundy.git
# cd bundy
# autoreconf --install
# ./configure --prefix=/usr --sysconfdir=/etc --without-werror --enable-experimental-resolver
# make

И получаем ошибку при сборке resolver :(
Ошибку получаем из-за того что ветке master отсутствуют некоторые файлы, в частности в папки src/lib/xfr которая нужна для сборки resolver. Если собирать без этой опции то все собирается и работает. Но так как мне хотелось попробовать все, то мне пришлось загрузить исходные коды с другой ветки и собирать все снова.
Дополнительно включаем для сервера DHCP хранение базы в MySQL. В процессе инсталляции нам зададут несколько вопросов на которые думаю не сложно будет ответить ☺
# wget http://dev.mysql.com/get/mysql-apt-config_0.3.6-1debian8_all.deb
# dpkg -i mysql-apt-config_0.3.6-1debian8_all.deb
Выбираем самую последнюю версию (DRM - Developer milestone releases)
Configuring mysql-apt-config
----------------------------

MySQL APT Repo features MySQL Server along with a variety of MySQL components. You may select the appropriate product to choose the version that you wish to receive.

Once you are satisfied with the configuration then select last option 'Apply' to save the configuration. Advanced users can always change the configurations later,
depending on their own needs.

  1. Server  2. Connector-Python  3. Utilities  4. Apply

Which MySQL product do you wish to configure? 1

This configuration program will detect the current state of your system, check for any installed MySQL Server packages, and try to select the most appropriate version
of MySQL Server to be installed. If you are not sure which version to choose for yourself, do not change the auto-selected version. Advanced users can always change
the version later, depending on their own needs.

  1. mysql-5.6  2. mysql-5.7-dmr  3. none

Which server version do you wish to receive? 2

MySQL APT Repo features MySQL Server along with a variety of MySQL components. You may select the appropriate product to choose the version that you wish to receive.

Once you are satisfied with the configuration then select last option 'Apply' to save the configuration. Advanced users can always change the configurations later,
depending on their own needs.

  1. Server  2. Connector-Python  3. Utilities  4. Apply

Which MySQL product do you wish to configure? 4
Если вы решили использовать стабильную версию, то нужно выполнить команду:
# dpkg-reconfigure mysql-apt-config
... и выбрать требуемую версию ПО которое вы хотите использовать.
После этого обновляем данные репозитория и устанавливаем MySQL сервер.
# apt-get update
# apt-get install mysql-server libmysqlclient-dev libz-dev
Запускаем сервер MySQL
# service mysql start
..
[info] MySQL Community Server 5.7.7-rc is started.
# service mysql status
[info] MySQL Community Server 5.7.7-rc is running.

Теперь мы готовы к повторной сборке.
# git clone --branch bundyfork --single-branch https://github.com/bundy-dns/bundy.git
# cd bundy
# autoreconf --install
# ./configure --prefix=/usr --sysconfdir=/etc --without-werror --with-dhcp-mysql --enable-experimental-resolver 
# make
...

... первый запуск и инициализация, это мы продолжим в второй части когда закончится сборка ☺

четвер, 25 червня 2015 р.

Дополнительная настройка Docker

Так уж случилось что у меня в моем домашнем типа NAS два диска, один маленький всего 20G  на котором установлена система и второй большой, который я использую для хранения файлов, как обычно говорят - файлопомойка :). С учетом того что я довольно часто играюсь с Docker, и образы его иногда получаются не маленькие, так как я часто пробую делать игровые сервера :)
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
sovicua/games       csgo                72db510df094        2 weeks ago         11.73 GB
sovicua/games       7dtd                11ec48e2f063        6 weeks ago         3.001 GB
sovicua/steam       jessie              ad9da57cc230        9 weeks ago         573.2 MB
Понятно что место на системном диске быстро закончится, так как по умолчанию Docker складывает образы контейнеров в /var/lib/docker. Самым простым решением это конечно просто перенести данную директорию в новое место (на большой диск) и сделать простую символическую ссылку. Но в некоторых случаях пишут что это не работает или возникают некоторые проблемы в работе. Более правильно нужно использовать опцию -g /mnt/docker.
И так, приступаем:
Останавливаем сервис
# service docker stop
Редактируем файл /etc/default/docker, добавляем параметр
DOCKER_OPTS="-g /mnt/docker"
Переносим папку /var/lib/docker и для верности еще создаем символическую ссылку :)
Запускаем сервис
# service docker start
Проверяем что у нас сменился Root Dir
# docker info | grep Root
 Root Dir: /mnt/docker/aufs

середа, 22 квітня 2015 р.

Игровой сервер 7 Days to Die

Ну вот я и дома, рабочий день закончился...
Иногда, когда просто все реально надоед и хочется просто отключить мозг и не думать о том что творится в стране, на работе и тд., я играю в разные игры жанра зомби-апокалипсис или песочницы, такие как 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, для запуска которой требуется Х-сервер. 

пʼятниця, 23 січня 2015 р.

Инсталляция новой системы. Что же дальше...?

После начальной инсталляции, я доставляю несколько пакетов которые нам просто необходимы, но перед этим конечно же нужно обновить список доступных пакетов и сами пакеты.
# apt-get update
# apt-get upgrade
После этого устанавливаем нужные нам пакеты и настраиваем их.
# apt-get install sudo vim
Настраиваем редактор vim. 
Для этого копируем пример файла настройки:
# cp /usr/share/vim/vim73/vimrc_example.vim ~/.vimrc
Настраиваем редактор под себя, первое я отключаю резервное копирование (ну не травятся мне эти файлы с тильдой в конце), хотя это полезная фича, но тут каждый решает для себя что ему лучше. Находим секцию:
if has("vms")
  set nobackup          " do not keep a backup file, use versions instead
else
  set backup            " keep a backup file (restore to previous version)
  set undofile          " keep an undo file (undo changes after closing)
endif
Удаляем или комментируем все строчки кроме:
set nobackup            " do not keep a backup file, use versions instead
Устанавливаем предпочитаемую цветовую схему, добавив строчку
colorscheme desert
Если вы занимаетесь написанием скриптов, то будет полезно включить отображение номера строки:
set number
Настройка sudo.
Тут все просто, нужно прописать пользователя которому разрешено получать права администратора. Примечание, дополнительно я для этого пользователя еще отключаю ввод пароля (снижает безопасность), так как обычно я один администратор на этой системе, а каждый раз набирать пароль мне не нравится :)
А лучше конечно включить пользователя в группу и дать группе права:
ALL=NOPASSWD: ALL
Настройка окружения пользователя.
Как для администратора так и для обычного пользователя я включаю раскраску файлов для вывода команды ls, а так же настраиваю цветное приглашение.
Все изменения вносим в ~/.bashrc
Раскоментируем строку для принудительного включения цветного приглашения (раньше в FreeBSD это была Esc-последовательность как мне помнится) 
force_color_prompt=yes
И устанавливаем вид приглашения, для пользователя:
PS1='\[\e]0;\w\a\]\[\e[36m\][\[\e[34m\]\D{%H:%M}\[\e[36m\]] \[\e[32m\]\u\[\e[36m\]@\[\e[32m\]\h \[\e[33m\]\w\[\e[36m\] $\[\e[0m\] '
Для администратора:
PS1='\[\e]0;\w\a\]\[\e[36m\][\[\e[34m\]\D{%H:%M}\[\e[36m\]] \[\e[31m\]\u\[\e[36m\]@\[\e[32m\]\h \[\e[33m\]\w\[\e[31m\] #\[\e[0m\] '
и
export LS_OPTIONS='--color=always'
На этом как бы все...   

понеділок, 8 грудня 2014 р.

Лучший терминальный клиент для Windows

Для доступа к UNIX системам обычно используется протокол SSH или TELNET. Если в качестве рабочего места вы используете какую то операционную систему UNIX, то никаких проблем с доступом у вас не будет, так как терминальный клиент уже входит в ПО данной операционной системы. А вот для Windows, нужен терминальный клиент. Конечно можно использовать Putty, но я предпочитаю XShell. При этом вы можете использовать данное ПО совершенно бесплатно :) при условии что вы его используете только для дома :) или для образования.
Для скачивания вам нужно пройти регистрацию или воспользоваться этой ссылкой.

Заметки о сетевых интерфейсах

Для тестирования ПО перед тем как инсталлировать на железо, я стараюсь развернуть это ПО на виртуальной машине в Oracle VM VirtualBox. Операционная система Debian 7.7 (wheezy).
Обычно, я настраиваю два интерфейса, один по DHCP настраивается для доступа в интернет через NAT. Второй это виртуальный адаптер хоста (Virtual Host-Only Ethernet Adapter) для доступа к виртуальной машине по SSH. Итак, настройка второго интерфейса в файле /etc/network/interfaces
...
auto eth1
iface eth1 inet static
   address 192.168.56.2
   netmask 255.255.255.0

...
... если это единственный интерфейс то добавляем еще шлюз и DNS
...
   gateway 192.168.56.1
   dns-nameserver 192.168.56.1
   dns-search cilab.local.net

...
При инсталляции Samba 4 мне нужно было что бы клиент DHCP не переписывал DNS сервер, так как Samba сама была DNS сервером. Что бы обеспечить работу DNS Samba, нужно отключить обновление resolve.conf DHCP клиентом. Вносим правки в /etc/dhcp/dhclient.conf, добавляем опции перезаписи DNS серверов полученных от DHCP сервера.
...
supersede domain-name "cilab.local.net";
supersede domain-name-servers 127.0.0.1;
...
Перезапускаем сеть
# /etc/init.d/networking restart