Страницы

Показаны сообщения с ярлыком microserver. Показать все сообщения
Показаны сообщения с ярлыком microserver. Показать все сообщения

воскресенье, 31 декабря 2017 г.

Мониторинг температур и напряжений на микросервере HP Proliant Microserver Gen7 sensors

После обновления ядра Linux на микросервере HP ProLiant Microserver Gen7, удалось настроить просмотр напряжений и температур, с помощью утилиты sensors.

Спецификации на железо микросервера ищутся по ключевым словам в поисковой системе Google:
"AMD RS785E databook filetype:pdf"
"AMD SB850M databook filetype:pdf"
"Nuvoton W83795ADG filetype:pdf"

Конфигурация приведена для домашнего использования и полагаться на эти данные неразумно.

Конфигурационный файл: /etc/sensors.d/hp-microserver-gen7.conf

# Конфигурация сенсоров для микросервера HP Microserver Gen7
# Процесор AMD Turion II Neo (K625)
# Для работы драйвера мониторинга w83795adg, нужно ядро выше 4.5 версии.
#
# AMD RS785E - northbridge, 55 nm, 1.1V CMOS tech
# 5.2.1. RS785E Thermal Limits
# Operating Case Temperature 95 MAX
# Absolute Rated Junction Temperature 115 MAX
# Ambient Temperature 45 MAX
# 5.2.2. Thermal Diode Characteristics
# The RS785E has on-die thermal diode

#
# AMD SB850M - southbridge
#
# Чип мониторинга напряжений, вентиляторов, температур: Nuvoton W83795ADG
# Диапазон измеряемого напряжения VSEN#, 0-2.048 V, ±10 mV
# Диапазон измеряемой температуры 25~90 градусов Цельсия, ±1 г.Ц.
#
# Дата: 31 декабря 2017 года
# сервер: microserver
# Поместить этот файл в /etc/sensors.d/
# URL: https://gimmor.blogspot.com/2017/12/hp-proliant-microserver-gen7-sensors.html 


chip "w83795adg-*"

label in0 "CPU Core VID"
set in0_min 0.7
set in0_max 0.9

# JEDEC standard 1.5V ± 0.075V Power Supply
label in1 "DDR3 Memory voltage"
compute in1 @, @
set in1_min  1.5-0.075
set in1_max  1.5+0.075

label in2 "PCI-E Gen2 VDDC,VDDHT, 1.1V"
set in2_min 1.045
set in2_max 1.155

label in3 "VSEN ?"
label in12 "ATX +3.3V"
set in12_min 3.14
set in12_max 3.47

# in13 - Линия питания +3.3VSB (±5%)
label in13 "ATX +3.3V StandBy"
set in13_min 3.14
set in13_max 3.47

label temp1 "CPU on-die temperature"
set temp1_min 0
set temp1_max 95
set temp1_crit 105

label temp2 "NB RS785E on-die temperature"
set temp2_min 0
set temp2_max 95
set temp2_crit 115
label temp5 "Motherboard ambient temperature"
set temp5_min 0
set temp5_max 45

label fan1 "120 mm fan"
# CASEOPEN# signal
label intrusion0 "Locked"
set intrusion0_alarm 0
set intrusion0_beep 0


chip "jc42-*"
label temp1 "Integrated Radeon HD4200 graphics temperature"
set temp1_min 0
set temp1_max 95
set temp1_crit 115


chip "k10temp-pci-00c3"
label temp1 "AMD CPU internal temperature"

Один вывод in3 остался неопределённым.

Сервер отслеживает напряжения ядра процессора (0.8V), памяти (1.5V), ядра северного моста, шины hypertransport и pci-e (1.1V) и основных питающих напряжений +3.3V.
Сервер отслеживает температуры подложки процессора (cpu on-die), подложки северного моста (nb on-die) и системной платы. Где конкретно расположен датчик системной платы остаётся не выясненным.
Наиболее горячий (по показаниям), в обычном режиме простоя - северный мост (NB).
Критическая температура системной платы определена по максимальной окружающей температуре для северного моста (NB Ambient temperature).
Также присутствует датчик температуры встроенного графического ядра ATI Radeon 4200, но уже на чипе "jc42-*", по другому адресу на шине i2c.
Один системный вентилятор.

Вывод команды sensors:

root@microserver:~# sensors
k10temp-pci-00c3
Adapter: PCI adapter
AMD CPU internal temperature:  +38.0°C  (high = +70.0°C)
                                        (crit = +100.0°C, hyst = +95.0°C)

jc42-i2c-5-18
Adapter: SMBus PIIX4 adapter port 0 at 0b00
Integrated Radeon HD4200 graphics temperature:  +31.5°C  (low  =  +0.0°C)
                                                         (high = +95.0°C, hyst = +95.0°C)
                                                         (crit = +115.0°C, hyst = +115.0°C)

w83795adg-i2c-6-2f
Adapter: SMBus PIIX4 adapter port 2 at 0b00
CPU Core VID:                     +0.79 V  (min =  +0.70 V, max =  +0.90 V)
DDR3 Memory voltage:              +1.51 V  (min =  +1.42 V, max =  +1.57 V)
PCI-E Gen2 VDDC,VDDHT, 1.1V:      +1.10 V  (min =  +1.04 V, max =  +1.15 V)
VSEN ?:                           +0.98 V  (min =  +0.00 V, max =  +2.05 V)
ATX +3.3V:                        +3.31 V  (min =  +3.14 V, max =  +3.47 V)
ATX +3.3V StandBy:                +3.25 V  (min =  +3.14 V, max =  +3.47 V)
120 mm fan:                       747 RPM  (min =  329 RPM)
CPU on-die temperature:           +35.2°C  (high = +95.0°C, hyst = +109.0°C)
                                           (crit = +105.0°C, hyst = +109.0°C)  sensor = thermal diode
NB RS785E on-die temperature:     +45.5°C  (high = +95.0°C, hyst = +105.0°C)
                                           (crit = +115.0°C, hyst = +105.0°C)  sensor = thermal diode
Motherboard ambient temperature:  +25.2°C  (high = +45.0°C, hyst = +39.0°C)
                                           (crit = +44.0°C, hyst = +44.0°C)  sensor = thermistor
Locked:                 OK

root@microserver:~#


Если датчик открытия корпуса сработал (Locked: BAD), то нужно в BIOS очистить события (events).

※※※

четверг, 29 октября 2015 г.

Быстрая установка Docker в Ubuntu server 15.10

После установки Ubuntu Server 15.10 в один из разделов на микросервере, пришло время установить контейнерную виртуализацию, в рамках идеи переноса сервисных служб в контейнеры, на новой основе - Docker.

Инструкция по установке в Ubuntu есть на сайте docker - http://docs.docker.com/installation/ubuntulinux/ .

Здесь только команды, для быстрого запуска, под пользователем root:
Смена комплектного репозитория ubuntu на новейший репозиторий от Docker. Команды все в одной строке.

root@microserver# apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

root@microserver# touch /etc/apt/sources.list.d/docker.list

root@microserver# nano /etc/apt/sources.list.d/docker.list

root@microserver# cat /etc/apt/sources.list.d/docker.list

# Docker.IO - пакеты контейнерной виртуализации
# сервер: microserver
# 29.10.2015
deb https://apt.dockerproject.org/repo ubuntu-wily main


root@microserver# apt-get update

root@microserver# apt-cache policy docker-engine

Установка Docker и проверка работоспособности:

root@microserver# apt-get install docker-engine

root@microserver# docker run hello-world

Добавление пользователя iam в группу docker, дабы была возможность запускать контейнеры от обычного пользователя.

root@microserver# usermod -aG docker iam


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



понедельник, 12 октября 2015 г.

Microserver. Syncthing синхронизация файлов Android, Windows, Linux

Замечательная открытая программа Syncthing, позволяющая пользователю поддерживать файлы в актуальном состоянии на нескольких компьютерах, под управлением Linux, Android, Windows.

Под капотом, собственный протокол передачи блоков содержимого файлов с шифрованием. Открытое ПО.

Типичное использование синхронизации файлов Syncthing


1. Автоматическая загрузка фотографий с телефона Android на сервер (в моем случае, микросервер под управлением Ubuntu LTS).
2. Автоматическое формирование копии файлов с настольного компьютера, на другом компьютере (в моем случае, микросервер  под управлением Ubuntu LTS).
3. Распределённая папка хранения или обмена.
4. Собственный облачный сервис, на собственном оборудовании.


Простые возможности, но позволяют реализовать собственную поддержку резервирования ценных данных (фотографий, видеороликов) на удалённом (домашнем, постоянно включенном) компьютере, без особых проблем. Сфотографировал - минута (период опроса) - файл лежит на сервере в далёком городе. Передача файлов через Интернет, с прохождением шлюза, с помощью UPnP (в серых сотовых сетях). Также можно сделать версии файлов (File versioning), чтобы случайное удаление на устройстве телефоне, не повлияло на наличие данных. Есть возможность защиты источника файлов (синхронизируемой папки), от изменений сделанных на других устройствах.

Для связи с устройствами, надо фактически знать DeviceID и соблюдать некоторые синтаксические правила именования устройств и папок синхронизации.

※※※

Настройка Syncthing для сервера Ubuntu LTS 12.04.5


Для Debian & Ubuntu есть репозиторий. http://apt.syncthing.net/

Для стабильной ветки Syncthing надо выполнить команды:

$ curl -s https://syncthing.net/release-key.txt | sudo apt-key add -

# Добавление источника стабильной версии Syncthing в список источников APT

$ echo deb http://apt.syncthing.net/ syncthing release | sudo tee /etc/apt/sources.list.d/syncthing-release.list

# Обновление списка пакетов
$ sudo apt-get update
# Установка пакета Syncthing
$ sudo apt-get install syncthing


Команда запуска (можно под обычным пользователем):
$ syncthing

При первом запуске, генерируется начальная конфигурация для компьютера config.xml, сертификат компьютера cert.pem, ключи шифрования key.pem и https-key.pem.
Device ID формируется как HASH-сумма от содержимого сертификата.

Конфигурация сохраняется в: ~/.config/syncthing/
Конфигурационный файл Syncthing config.xml: ~/.config/syncthing/config.xml

Сервер-посредник для анонсирования подключения: udp4://announce.syncthing.net:22026
Также поддерживается IPv6. Т.е. каждое устройство анонсирует себя на этом сервере и таким образом находит свои конечные точки синхронизации (другие устройства).
Можно запустить собственный сервер анонсирования (Discovery server) для большей конфиденциальности, например на собственном хостинге и отвязаться от неконтролируемого сервера-посредника.
Можно также избежать глобального анонсирования (global announce & discovery), строго прописав статические IP, DNS-имена.
В локальной сети действует локальное анонсирование, в пределах подсети, что позволяет файлам домашних компьютеров находится в актуальном состоянии.


Из-за файрвола, у меня не работал веб-интерфейс на адресе: 127.0.0.1:8384, пришлось поправить в config.xml на конкретный IP-адрес интерфейса. После этого, всё запустилось и дальнейшее связывание устройств проходило в графическом интерфейсе пользователя.

Для автозагрузки при старте сервера, надо писать системную задачу, либо просто добавить в автозапуск.

※※※

Выводы


1. Почти идеальная программа.
2. Нет возможности раздачи неавторизованным пользователям. Ну вот есть у меня файлы проектов, которые хотелось бы раздавать с собственного сервера (без поднятия FTP, HTTP и пр.). Syncthing почти приближается к такой возможности, но пока не даёт.

※※※

Ресурсы


1. Официальный сайт Syncthing. https://syncthing.net/
2. Репозиторий для Ubuntu. http://apt.syncthing.net/
3. Документация (en). http://docs.syncthing.net/index.html



※※※

воскресенье, 1 июня 2014 г.

Nginx, OwnCloud, Pydio, Bittorrent tracker. Доступ и распространение авторских материалов альтернативным способом

В связи со складывающейся ситуацией в российском сегменте сети Интернет, было принято решение сохранить (отзеркалировать) некоторые ресурсы сети, составляющие большую ценность, в силу накопленного человеческого труда, вложенного в их создание.
В данном случае, для этого будет поднято т.н. собственное облако - домашнее облако - персональное облако, на собственном домашнем компьютере/сервере.
Вначале, я хочу кратко остановиться на требованиях к компьютерным конфигурациям, используемым для персонального домашнего облака.

Во первых, это должен быть не домашний настольный компьютер. Хотя я сплошь и рядом это нарушаю.
Во вторых, это должен быть тихий, малопотребляющий и компактный компьютер, чтобы он мог  работать 24 часа в сутки, с минимальным вмешательством.
В третьих, это должен быть компьютер под управлением Linux.
В четвертых, он должен позволять удалённое управление, должен работать без клавиатуры и мыши, без монитора. Восстанавливаться и загружаться после потери питания.
В пятых, он должен иметь постоянное подключение к сети Интернет.
В шестых, должен поддерживать ftp,web-сервера, подключение webdav, ssh ftps, https, rsync, bittorrent и пр.

Я подобрал небольшие предварительные конфигурации для домашнего облака, которая возможно будет отвечать этим требованиям на сегодняшний момент (Май 2014 года).

1. Intel NUC (с процессором Celeron), Гибридный 1 Тб винчестер SSD Seagate, память 4Г.
2. Pegatrom Mercury L6 (с процессором Celeron, пассивное охлаждение), Гибридный 1 Тб винчестер SSD Seagate, память 4Г.
3. Сетевой жесткий диск WD Cloud, с модифицированной прошивкой.

Конфигурации начальные, обеспечивают цену домашнему облаку менее 11 тыс. руб.
И при текущей стоимости интернет-подключения ~450 руб./мес. 5500 руб. в год.
Если сравнить стоимость со стоимостью облачного хранения, например в Google за 120$ за терабайт, то возникают некоторые вопросы. Однако, домашнее, непосредственно доступное облако с некоторых позиций выглядит предпочтительнее.


Установка и настройка web-сервера nginx


Nginx - известный кэширующий веб-сервер.
Веб-сервер занимается тем, что отдает файлы с сервера, по протоколу http/https клиенту.

Подразумевается, что установка производиться на чистую систему, где нет других web-серверов. При их наличии, надо обязательно сделать резервирование, т.к. может происходит затирание некоторых настроек и пр.

В Ubuntu 14.04 он идёт в пакетах,

$ sudo apt-get install nginx
либо
$ sudo apt-get install nginx-extras

Последний пакет, нужен если будет (а он будет, удобно) использоваться протокол webdav на сервере, для каких-то иных целей. В ownCloud встроен собственный webdav, так что системный не задействуется, как я понимаю.
Но у меня заработало более менее с nginx-extras


Основной конфигурационный файл web-сервера nginx: /etc/nginx/nginx.conf

Конфигурация сайта по умолчанию, сразу после установки: /etc/nginx/sites-enabled/default,
/etc/nginx/sites-enabled - это ссылки на конфигурации сайтов которые будет работать после запуска сервиса nginx
/etc/nginx/sites-available - это конфигурации сайтов, как работающих так и в процессе настройки и конфигурирования (неработающих).


Сайт по-умолчанию, после установки работает на 80 порту и содержит приветствие nginx.

Просмотреть его можно по ссылке: http://localhost/


Пользователь добавленный в систему: www-data

Простейшая документация по web-серверу и его конфигурационному файлу: http://nginx.com/resources/admin-guide/web-server/


Теперь надо определиться с месторасположением (location) файлов web-сервера в локальной файловой системе компьютера.

Пусть это будет /srv/www
Создадим /srv/www и установим пользователя www-data у этого каталога.

# mkdir /srv/www
# chown -R www-data:www-data /srv/www

Сюда (в /srv/www) можно скопировать index.html файл из начального примера.

http://localhost/index.html


※※※


Предварительно устанавливаемые пакеты


autogen - генератор текстовых файлов по шаблону.
ntp - сервис "сетевая служба времени", понадобиться, видимо при синхронизации файлов между клиентами owncloud.
clamav - антивирусная проверка файлов.

К серверу добавится служба времени, служба антивируса, и обновления времени и баз сигнатур (отпечатков вирусов) антивируса.

※※※


Установка PHP5


PHP5 - дедушка Интернета. Использовался с очень древних пор. Но всё ещё продолжает использоваться. Кому-то нравиться.

Поиск пакетов в репозитории:
apt-cache search php5
apt-cache search php



Общий список устанавливаемых пакетов:

$ sudo apt-get install php5 php5-cgi php5-cli php5-common php-pear php5-fpm php5-mysqlnd php5-pgsql php5-sqlite php5-ldap php-xml-parserphp5-curl php5-dev php5-gd php5-imagick php5-intl php5-mcrypt

Базовая система
php5 - метапакет серверной части.
php5-cgi отдельный пакет, обеспечивающий связь Common Gateway Interface c php.
php5-cli
php5-common

php-pear

Отдельные модули php5

php5-fpm - PHP-FPM демон для запуска FastCGI сервера, для обработка php-программ.

php5-mysqlnd - родной пакет для поддержки связи php и субд mysql
php5-pgsql - пакет для поддержки связи php и субд postgresql
php5-sqlite - пакет для поддержки связи php и субд sqlite

php5-ldap - пакет для поддеркжи связи php и LDAP-серверов
php-apc - пакет для оптимизатора
php5-apc - если найдётся в пакетах

php-xml-parserphp5-curl
php5-dev
php5-gd
php5-imagick - поддерка связи php и imagick - утилиты и библиотеки обработки графических файлов
php5-intl - интернационализация
php5-mcrypt - поддержка какого-то кодирования


Конфигурационные файлы:
/etc/php5/cli/php.ini
/etc/php5/fpm/php.ini

В этих файлах надо настроить ограничения (снять) на размер загружаемого файла (обычное 2 Мб).

Установим максимальный размер загружаемого файла (пусть это будет архив, видео, резервный файл и т.п)

upload_max_filesize = 16G

Также приведём в соответствие максимальный размер POST-запроса, передаваемого серверу
post_max_size = 16G
Объём памяти выделяемый под загружаемый файл, пусть будет больше загружаемого файла, чтобы с запасом.
Единственное что, сложно - это размер памяти сервера, он достаточно мал, будет использоваться подкачка.

memory_limit = 20G

Плюс над протестировать в реальных условиях, а то может получить не очень хорошо.

Ещё кое что надо сделать в этих файлах (/etc/php5/fpm/php.ini):
cgi.fix_pathinfo=0

После внесения изменений перезапустить php5-fpm:
# service php5-fpm restart


Долго не мог понять, почему не изменяется размер возможного загружаемое файла в ownCloud, вроде все опции настроил по инструкции, перезапускал и сервер и php-rpm. Решение оказалось банальным - перезапустить компьютер. Что-то, где-то, видимо было недообновлено.

※※※

Опционально. Установка СУБД mySQL 


Для домашнего использования, совсем необязательно использовать mysql сервер и настраивать его. Достаточно использовать sqlite3.

# apt-get install mysql-server mysql-client


Настройку mysql, но я выбираю postgresql приведу возможно позже, в рамках другой заметки.

※※※

Подготовка и установка цифровых сертификатов подлинности сервера


Самоподписанные сертификаты позволяют без затрат денег, установить "заглушку" в протокол https, т.е. всё будет почти также работать как с настоящими сертификатами, но только при открытии сайта (в данном случае облака) обычные браузеры будут сообщать о риске и недоверенном узле. Тут надо будет добавить в список исключений этот сертификат облака и тогда на это можно будет не обращать внимания. Разве только красным цветом выделение надписи https будет "напрягать".

В результате мы должны получить 2 файла:

microserver.key - частный (приватный) ключ
microserver.crt - самоподписанный сертификат виртуального сервера

Инструкцию с описанием шагов по генерации самоподписанных сертификатов можно посмотреть на ресурсе [8].

Здесь просто последовательность команд, выполнение которых обеспечит достижение цели данного руководства.

openssl genrsa -des3 -out microserver.key 2048
openssl rsa -in microserver.key -out microserver.key.insecure
mv microserver.key microserver.key.secure
mv microserver.key.insecure microserver.key
openssl req -new -key microserver.key -out microserver.csr
openssl x509 -req -days 365 -in microserver.csr -signkey microserver.key -out microserver.crt


Скопировать их в хранилище сертификатов и ключей.
sudo cp microserver.crt /etc/ssl/certs
sudo cp microserver.key /etc/ssl/private

Пути к этим файлам, будут позже прописаны в конфигурации виртуального хоста nginx, чтобы сервер мог осуществлять https-соединения.
※※※

Подготовка к установке ownCloud

Для установки ownCloud в Ubuntu 14.04, проще всего подключить репозиторий, c сайта проекта[11]:

$ wget http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_14.04/Release.key 
$ sudo apt-key add - < Release.key
$ sudo sh -c "echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/xUbuntu_14.04/ /' >> /etc/apt/sources.list.d/owncloud.list" 
$ sudo apt-get update 
$ sudo apt-get install owncloud

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

Может потребоваться деинсталляция пакета apache2, т.к. здесь используется nginx.


Облако будет установлено в стандартную папку сайтов: /var/www, под именем owncloud.

Конфигурационный файл облака: /var/www/owncloud/config/config.php

Важная опция trusted_domain, она отвечает за домены с которых будут подключения. Важна, при выводе облака в общую сеть Интернет.

Для начала, лучше подготовить каталог, папку, том(volume), точку монтирования, которая будет выступать в качестве хранилища данных для собственного облака.
Очень часто, хранилище располагается на томе lvm, что даёт некоторые гибкие возможности по увеличению места, но я исповедую иной подход, т.к. увеличение места может закончиться неудачно, а данные огромны и просто так их не зарезервируешь.




Если этого не сделать, то данные будут храниться в папке по умолчанию: /var/www/owncloud/data, что не всегда безопасно, т.к. грозит удалением, при обновлении сервиса.

※※※

Настройка безопасного подключения к облаку ownCloud


"Безопасное подключение" - это использование протокола http поверх (внутри) ssl/tls, с ассиметричным шифрованием данных.


Теперь надо настроить виртуальный www-сервер (vhost nginx) на использование owncloud.
Для начала:
Доменное имя, по которому облако будет доступно: my.domain.name
В частных случаях, это может быть динамическое доменное имя (от сервисов подобных twodns, dyndns).
Если облако доступно только в домашней сети - что не имеет особого смысла, то это может быть avahi-домен, либо IP-адрес внутренней сети.
Т.е. если набрать в браузере https://my.domain.name/, то мы должны попасть на страницу регистрации (login).
Обычно, обычные пользователи используют какой-либо маршрутизатор, которые и принимает белый ip-адрес от провайдера, а остальным домашним клиентам выдаёт "серые" из диапазона неподключенных сетей.
В этом случае, надо делать проброс портов на роутере, регистрацию динамического доменного имени (например  twodns), чтобы таки получить возможность в строке браузера набрать https://my.domain.name/.

Также стоит заметить, что многие провайдеры фильтруют порты до 1024 от внешних обращений, тогда надо порт на котором будет слушать сервер, сдвинуть вверх, например 12443 и при указании адреса в строке указывать и порт: https://my.domain.name:12443/
На время тестирования к серверу можно обращаться по localhost,ip-адресу и пр.



# Виртуальный сервер "Персональное облако"
# сервер: микросервер
# дата: 29.05.2014
server {
       listen 443 ssl;
       listen 80 default_server;
       server_name default 'my.domain.name' '192.168.1.11';
       

       # Корень сайта - корень облака
       root /var/www/owncloud;

#       if ($http_host != "my.domain.name") {
#                 rewrite ^ http://my.domain.name$request_uri permanent;
#       }

       index index.php index.html;


       # Иконка сайта, отображаемая в адресной строке
       location = /favicon.ico {
                log_not_found off;
                access_log off;
       }

       location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
       }

       # Запрет доступа к скрытым файлам .htaccess, .htpasswd.
       location ~ /\. {
                deny all;
                access_log off;
                log_not_found off;
       }
       

       # Самоподписанный сертификат и частный незапароленный ключ сервера
       ssl_certificate /etc/ssl/certs/microserver.crt;
       ssl_certificate_key /etc/ssl/private/
microserver.key;


        client_max_body_size 16G; # set max upload size

        rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
        rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
        rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
        rewrite ^/apps/calendar/caldav.php /remote.php/caldav/ last;
        rewrite ^/apps/contacts/carddav.php /remote.php/carddav/ last;
        rewrite ^/apps/([^/]*)/(.*\.(css|php))$ /index.php?app=$1&getfile=$2 last;
        rewrite ^/remote/(.*) /remote.php last;

        
        # Страницы ошибок
        error_page 403 = /core/templates/403.php;
        error_page 404 = /core/templates/404.php;





        # Запрет доступа к системным файлам облака ownCloud
        location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
                        deny all;
        }

        location / {
                        rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
                        rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

                        rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
                        rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

                        rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

                        try_files $uri $uri/ /index.php$is_args$args;
        }

        location ~ ^(.+?\.php)(/.*)?$ {
                        try_files $1 =404;
                        include fastcgi_params;
                        fastcgi_param SCRIPT_FILENAME $document_root$1;
                        fastcgi_param PATH_INFO $2;
                        fastcgi_param HTTPS $https;
                        # fastcgi_pass unix:/var/run/php5-fpm.sock;
                        fastcgi_pass 127.0.0.1:9000;
                        fastcgi_intercept_errors on;
                        fastcgi_index index.php;
                        fastcgi_buffers 64 4K;
        }

        location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
                        expires 30d;
                        access_log off;
        }
}

Этим файлом можно (либо надо) заменить файл default расположенный в /etc/nginx/site-available/.

Также этот файл (и другие) включается в общую конфигурацию сервера nginx посредством директивы include в файле: /etc/nginx/nginx.conf .



У облака ownCloud есть конфигурационный файл, которые тоже требует внимания пользователя на момент установки.
Располагается в ownCloud/config/config.php

На начальном этапе установки, нас в нём будет интересовать опция trusted_domain - которая укажет какие домены облака доверенные. Будет это полное имя т.н. FQDN, либо просто внутренний ip-адрес, либо и то и другое.

Выглядит он так:

$ cat /var/www/owncloud/config/config.php

<?php
$CONFIG = array (
  'instanceid' => 'oc2344a23abc',
  'passwordsalt' => 'ab1137423168fd7c2a6223a6b520b',
  'trusted_domain' =>
  array (
    0 => 'localhost:443', 1 => 'mir.local:443', 2 => 'my.domain.name:443'
  ),

  'datadirectory' => '/mnt/oblako',
  'dbtype' => 'sqlite3',
  'version' => '6.0.3.1',
  'installed' => true,
  'allowZipDownload' => false,
);

Тут видно и точку монтирования заданную при установке облака - /mnt/oblako. Это отдельный том, общим объёмом около 50Гб.

По идее виртуальных сайтов, можно сделать несколько установок owncloud, каждую в свой отдельный каталог, для различных целей. Например, одно облако для просмотра коллекций, а другое только для загрузки или обмена с пользователями.
Либо один сайт с облаком для предварительного тестирования всяких возможностей, чтобы затем перенести в работающее облако.




Из недостатков системы (точнее интеграции её в систему) - это то, что хранение данных, ведётся из под пользователя www-data и сложно пополнять базу документов и пр., с помощью простого файлового менеджера. После загрузки файлов с помощью файлового менеджера, из консоли, надо обязательно изменить права владельца, со своих на www-data, либо использовать webdav подключение, либо монтировать файловую систему webdav. В этих случаях, действия с файлами, практически не отличаются от обычных, за исключением временных задержек. Со временем, тут главное терпение и ожидание завершения предыдущих операций.


※※※

Pydio и Nginx


Pydio - Put your data in orbit - ещё одна облачная система, которая может быть использована для целей домашнего облака.

Устанавливается тоже с некоторыми сложностями, но в части раздела PHP5 (уже установленного) почти совпадает с ownCloud.

Надо скачать установочный архив [6] и развернуть (разархивировать) его в каталог который будет использоваться под этот проект (сам проект, не данные). Настроить первоначальные права.
Пусть это будет /var/www/pydio

У меня это происходит так, под суперпользователем (root):

# unzip /home/gimmor/Загрузки/pydio-core-5.2.3.zip
# mv pydio-core-5.2.3 /var/www/pydio
# chown -R www-data /var/www/pydio



Далее, настройка конфигурации сервере nginx для использования pydio
За основу возьмём файл с ресурса [7] и подправим для своих условий.

server {
    Сервер pydio временно будет сервером по-умолчанию
    listen 80 default_server;

    Сервер будет принимать безопасные соединения на 443 порту.
    listen 443 ssl;
    # Доменное имя, под которым сервер будет доступен
    server_name localhost 'pydio.local' '192.168.5.37';


    # Самоподписанный сертификат для виртуального сервера pydio и частный ключ
    ssl_certificate     /etc/ssl/certs/pydio-server.crt;
    ssl_certificate_key /etc/ssl/private/pydio-server.key;
    # Корень сервера, его месторасположение
    root /var/www/pydio;
    # Кодировка сервера по-умолчанию
    charset utf-8;
    # Главный индексный файл корня сервера
    index index.php;

    
    # Если мы пытаемся зайти по 80 порту, то будем перенаправлены
    # Это заглушка временна, пока сервера окончательно не будут настроены
    # Вполне возможно, что на 80 порту будет висеть какая-либо страница
    if ($server_port = 80) {
        rewrite ^ https://$host$request_uri permanent;
    }

    client_max_body_size 1G;

    # Журнал доступа
    access_log /var/log/nginx/pydio.access.log;
    # Журнал ошибок

    error_log /var/log/nginx/pydio.error.log;




    # Месторасположение
    location / {
    }


    location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
        expires max;
        add_header Pragma public;
        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    }

    location = /conf/       { deny all; }
    location = /data/       { deny all; }

    # robots.txt определяет права для роботов индексаторов
    location = /robots.txt  { access_log off; log_not_found off; }

    # brj
    location = /favicon.ico { access_log off; log_not_found off; }
    location ~ /\.          { access_log off; log_not_found off; deny all; }
    location ~ ~$           { access_log off; log_not_found off; deny all; }


    # Некоторые настройки fastcgi для обработки php-файлов
    location ~ \.php {
        try_files $uri =404;
        fastcgi_param  QUERY_STRING       $query_string;
        fastcgi_param  REQUEST_METHOD     $request_method;
        fastcgi_param  CONTENT_TYPE       $content_type;
        fastcgi_param  CONTENT_LENGTH     $content_length;
        fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME    $request_filename;
        fastcgi_param  REQUEST_URI        $request_uri;
        fastcgi_param  DOCUMENT_URI       $document_uri;
        fastcgi_param  DOCUMENT_ROOT      $document_root;
        fastcgi_param  SERVER_PROTOCOL    $server_protocol;
        fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
        fastcgi_param  SERVER_SOFTWARE    nginx;
        fastcgi_param  REMOTE_ADDR        $remote_addr;
        fastcgi_param  REMOTE_PORT        $remote_port;
        fastcgi_param  SERVER_ADDR        $server_addr;
        fastcgi_param  SERVER_PORT        $server_port;
        fastcgi_param  SERVER_NAME        $server_name;
        #fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_pass 127.0.0.1:9000;
    }
}




При первом запуске, Pydio выведет страницу теста, на которой отобразит возможные проблемы, будь то недоустановленный пакет php, неверная его версия и пр., проблемы безопасности данных (доступность частных файлов всему миру), проблемы с сертификатами и пр.


Существует противоречивое требование к php5-fpm от pydio и от ownCloud.
Pydio требует выключенной опции output_buffering = Off , ownCloud - включенной.


Исправление бага php5 ubuntu с отключенным модулем mcrypt:

ln -s /etc/php5/mods-available/mcrypt.ini  /etc/php5/fpm/conf.d/20-mcrypt.ini


Исправление проблем безопасности файлов. Разграничение доступа

Здесь надо помнить, что при копировании файлов на веб-сервер, потом требуется задать владельца, т.к. часто владельцем оказывается root, что запрещает доступ к файлам.

Nginx обеспечивает запрещение доступа к отдельным каталогам (месторасположениям, location) веб-сервера, посредством директивы deny all в настройках конкретного виртуального сервера.
Например:

location /onlymyfiles {
 deny all;
}




Peertracker - bittorrent tracker


Peertracker - простейший трекер торрентов, который может быть установлен на собственный домашний компьютер и выступать в виде персонального трекера, посредством которого распространяются авторские (собственные) материалы. Т.е. статьи, изображения, скрипты, какие-то иные данные.

Устанавливается, как и любое веб-приложение, с некоторыми ручными операциями.

Для простейшего случая, домашнего трекера для небольшого количества файлов подойдет база данных sqllite3. Так что всех делов - это скопировать дистрибутив в папку сервера, создать конфигурацию nginx для этого сервера.

Это приложение, вообще ничего не показываеть пользователю веб-сервера, а тольк лишь принимает и отправляет информацию по определённому url адресу.
Т.е. можно этому трекеру выделить какой-то порт, и потом при создании торрент-файла, указывать url-адрес до этого трекера на домашнем компьютере, в качестве трекера и торрент клиент подключиться по url-адресу трекера, заполнит нужную информацию.

С технологической точки зрения, Трекер это сервисная программа обслуживающая специфические HTTP/HTTPS GET-запросы, которые
определены спецификацией протокола Bittorrent.


Для распространения собственных материалов, можно использовать посредника OpenBittorrent и его открытый (без регистрации и пр.) url.

http://tracker.openbittorrent.com:80/announce

При создании своего публично доступного торрент-файла, надо в списке трекеров указать http://tracker.openbittorrent.com:80/announce . Всё остальное сделает торрент-клиент. Пользователь полученного торрент-файла также может начать загрузку по получении торрент-файла.
Иногда, этот трекер часто оказывается единственно доступным, в списке торрент-трекеров, указанных в файле.

Для улучшения передачи файлов, надо стремиться исключить трекер, как посредника. Вполне рабочим способом является magnet-ссылка, которая даёт возможность не использовать трекер. Но у неё возникает другой посредник - распределённая хэш-таблица DHT.
Магнет-ссылка хороша тем, что её содержимое может передаваться в текстовой форме и отпадает необходимость создания торрент-файла (хотя торрент-клиенты делают это неявно).

Однако есть невыявленные пока сложности скачивания материалов с собственного трекера, возможно из-за особенностей (сложности) конфигурации нескольких компонентов.

※※※

Ресурсы


1. Официальный сайт ownCloud. http://owncloud.org/
2. Официальный сайт nginx. http://nginx.org/ru/
3. Сайт по языку PHP5. http://www.php5.ru/
4. Официальный сайт Pydio. https://pydio.com/
5. Сайт сообщества Pydio. http://pyd.io/
6. Загрузка Pydio. http://pyd.io/download/

7. http://pyd.io/nginx/

8. Сертификаты: http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/certificates

9. Свободный трекер Openbittorrent: http://openbittorrent.com/
10. Установка ownCloud. http://doc.owncloud.org/server/6.0/admin_manual/installation/installation_source.html

11. Подготовленные репозитории для дистрибутивов Linux. http://software.opensuse.org/download/package?project=isv:ownCloud:community&package=owncloud

Ресурсы простым списком, использованные при поднятии сервера.
http://habrahabr.ru/post/208566/
http://habrahabr.ru/post/160237/
http://habrahabr.ru/post/154047/
http://habrahabr.ru/company/selectel/blog/213945/

http://www.php5.ru/study/webbasics
http://martin-denizet.com/nginx-configuration-for-pydio-with-ssl/

http://blackbe.lt/setting-up-utf-8-encoding-in-php-and-mysql/
Свой WebDAV сервер на nginx. http://xandroskin.ru/it/svoj-webdav-server-na-nginx/495
Обработка регулярок в nginx. http://xandroskin.ru/it/obrabotka-regulyarok-v-nginx/597

http://vds-admin.ru/nginx/nastroika-svyazki-nginx-apache-fastcgi


※※※

вторник, 10 сентября 2013 г.

Новый микросервер HP Proliant Microserver Gen8

В списке продуктов компании HP появился новый микросервер HP Proliant Microserver Gen8.
Более компактная и дизайнерская версия, хотя и на платформе Intel.
Исправлены мелкие аппаратные недочёты, так появилось 2 сетевых интерфейса Ethernet (можно объединить для увеличения скорости), USB 3.0, что несомненно хорошо.
Расписывать характеристики пока не буду, если появиться у меня, тогда и напишу.





Так же к этой серии будет и специальный 8-портовый l2 управляемый коммутатор HP PS1810-8G Switch, который включает специальную web-панель (dashboard) для мониторинга новых Gen8 серверов. Мониторинг HP iLo, как я понял встроен теперь в сервер, но надо покупать лицензию.



Похоже HP реализовала интересный комлект оборудования для домашнего наращиваемого хранилища, которое раньше делалось из компонентов разных производителей (моя заметка HP Proliant Microserver router VLAN + Cisco SG200-08).

Ресурсы

1. Спецификация HP Proliant Microserver Gen8.  http://www8.hp.com/uk/en/products/proliant-servers/product-detail.html?oid=5379860

2. Спецификация HP PS1810-8G. http://h17007.www1.hp.com/us/en/networking/products/switches/HP_PS1810_Switch_Series/

вторник, 17 июля 2012 г.

NFS для HP Proliant Microserver


Установка NFS сервера на HP Proliant Microserver, под ОС Ubuntu 12.04 LTS
$sudo apt-get install nfs-kernel-server nfs-common
После установки, сервер запуститься автоматически.

Настройка NFS сервера под свои нужды
Создадим папку fotobank под пользователем userserver и разрешим всем пользователям к ней доступ.
$ mkdir fotobank
$ chmod a+rw fotobank
Отредактируем файл /etc/exports, содержащий папки, которые NFS сервер будет предоставлять клиентам для работы.
$ sudo nano /etc/exports
Внесем строку вида:
/home/userserver/fotobank (rw)

или так:
/srv/iso    *(rw,sync,no_subtree_check,insecure,all_squash,anonuid=1000,anongid=1000)

Этим мы "экспортируем" папку (путь в локальной серверной системе) для клиентов.

Перезапустим NFS сервер.

Перезапуск NFS сервера
$sudo  /etc/init.d/nfs-kernel-server restart
и проверяем экспортируемые ресурсы:
$exportfs

/home/userserver/fotobank
<world>



Проверка доступности "экспортированной" папки на клиенте

Клиентская система Ubuntu 11.10.
Устанавливаем базовую поддержку NFS на клиенте
$sudo apt-get install nfs-common
После этого, команда присоединения "экспортированной" папки, на клиенте выглядит так:
$sudo mount -t nfs -o timeo=30 192.168.3.1:/home/userserver/fotobank /home/userclient/fotobank

userserver - имя пользователя на сервере
userclient - имя пользователя на клиенте

Размонтирование на клиенте:
$sudo umount /home/userclient/fotobank

Просмотр всех экспортированных папок: showmount -e "имя сервера или его ip-адрес"
$showmount -e microserver.local


Стоит заметить, что и на сервере и на клиенте у меня одинаковое имя пользователя.

Порты используемые NFS
$grep nfs /etc/services 

nfs 2049/tcp # Network File System
nfs 2049/udp # Network File System

Проверка безопасности микросервера извне
На любом публичном сервисе сканирования портов, произведем операцию проверки портов NFS. Порты, по умолчанию, окажутся открытыми. Надо закрывать. Закроем порты только на внешних интерфейсах, т.к. они нужны в локальной сети. Интерфейсы имеют имена beeline (локальная сеть), ppp8(интернет).
Закрывать будем с помощью встроенного файрвола iptables.
Итак, для внешнего интерфейса Интернет (ppp8):
$sudo iptables -A INPUT -i ppp8 -p tcp --dport 2049 -j DROP
$sudo iptables -A INPUT -i ppp8 -p udp --dport 2049 -j DROP
Чтобы убрать эти правила из файрвола, если нужно надо выполнить:
$sudo iptables -D INPUT -i ppp8 -p tcp --dport 2049 -j DROP
$sudo iptables -D INPUT -i ppp8 -p udp --dport 2049 -j DROP

Тоже самое и для интерфейса локальной сети
$sudo iptables -A INPUT -i beeline -p tcp --dport 2049 -j DROP
$sudo iptables -A INPUT -i beeline -p udp --dport 2049 -j DROP


Для сохранения вновь добавленных правила после перезагрузки надо что-то типа выполнить:
$iptables-save > /etc/default/iptables
У кого как сохраняются настройки, так что гарантии, что у вас сработает нет.

Ресурсы
. https://help.ubuntu.com/community/NFSv4Howto
. https://help.ubuntu.com/12.04/serverguide/network-file-system.html
. http://www.k-max.name/linux/network-file-system-nfs/
http://www.ibm.com/developerworks/ru/library/l-network-filesystems/index.html
http://nix-sa.blogspot.com/2012/07/nfs-linux.html
. http://www.bog.pp.ru/work/NFS.html

суббота, 17 марта 2012 г.

Samba сервер на HP Proliant Microserver

Старая добрая Samba.  С ней постоянного какие-то проблемы. Что-то да забудешь.
Samba требуется в Linux, чтобы "расшарить папку".

Что нужно учесть при настройке Samba сервиса на сервере Ubuntu 12.04.

SMB/CIFS - протокол прикладного уровня фирмы Microsoft, известный как "Сеть Windows" (Microsoft Windows Network).
SAMBA - свободная реализация этого протокола в семействе Linux и пр.

В Ubuntu server 12.04 и ранее, SAMBA устанавливается просто, а настраивается сложно.
$ sudo apt-get install smbd smb-common
Samba идет в поставке практически не настроенная на нормальное использование "из коробки".

Главный конфигурационный файл Samba - /etc/samba/smb.conf
Длинное руководство по Samba man smb.conf

Сервис smbd - отвечает за доступ к файлам по протоколу SMB/CIFS, для клиентов Windows и Linux.
Сервис nmbd - отвечает за способ просмотра общих ресурсов и преобразование имен NETBIOS в IP-адрес. Без него можно будет обращаться только на прямую по IP адресу.

Устаревший способ управления сервисом Samba из командной строки.
$ sudo service smbd stop
$ sudo service nmbd stop
$ sudo service smbd start
$ sudo service nmbd start

Также более правильно использовать системные команды Upstart.
$ stop smbd
$ start smbd
$ status smbd
$ reload smbd

Немного о сети, в которой настраивается Samba.
home - ethernet интерфейс домашней сети на микросервере (быв. eth0). Сеть в "серых" адресах. 192.168.3.0/24. Клиенты сети настраиваются динамически, через DHCPd микросервера.
beeline - ethernet интерфейс локальной сети провайдера (быв. eth1).
192.168.3.1 - статический ip-адрес микросервера
microserver - имя хоста (как в hostname).
HOME - принятая домашняя группа samba в моей домашней сети.

Samba настраивается таким образом, чтобы общие ресурсы не были видны в сети провайдера, а были видны клиентам только домашней сети.

Сохраним оригинальный файл smb.conf
$mv /etc/samba/smb.conf /etc/samba/smb.conf.orig

$touch /etc/samba/smb.conf

Отредактируем файл
$sudo nano /etc/samba/smb.conf

# Основные параметры сервиса Samba на микросервере HP Proliant Microserver
# ОС Ubuntu 12.04
# сервер: микросервер
# 17 марта 2012
# Особенности:
# - минимальные настройки для обмена файлами
[global]
workgroup = HOME
server string = %h - hp proliant microserver

# Указываем интерфейсы, на которых будет работать сервис Samba. Этим мы отсекаем сервис от локальной сети провайдера и пользователей локальной сети провайдера от сервиса.

interfaces = 127.0.0.0/8 home
bind interfaces only = yes

# Выбираем самый простейший способ доступа к общим папкам на сервере 
security = user
client lanman auth = yes
guest account = iam

# Русские буквы в SAMBA
dos charset = cp866
unix charset = utf8
display charset = utf8

# Настройка папок общего доступа

# 1. Сделаем общую папку для обмена в домашней директории пользователя ( у кого какое)
# т.к. первый пользователь iam создается в системе при установке
# у него такая-же группа - iam


[avoska]
path = /home/iam/avoska
comment = авоська для обмена
public = yes
browseable = yes
read only = no
map archive = no


Для нормальной комфортной работы сервиса Samba в локальной сети, рекомендую почитать заметку - Настройка доменных имен в Ubuntu. Разрешение имен довольно сильно влияет на доступность ресурсов и возможность их просмотра из Windows Explorer, Nautilus.

Windows 7 & Ubuntu Samba
Для доступа из Windows 7 к общему ресурсу по протоколу Samba (SMB/CIFS) на микросервере.
Операционная система Windows 7 запрашивает имя пользователя и пароль при доступе к ресурсу на микросервере, через "Сеть".
Надо добавить существующего пользователя iam и задать ему пароль, который будет использоваться Windows 7 в диалоговом окне.
root@microserver :# smbpasswd -a iam
New SMB password:
Retype SMB password:
Added username iam.

Также вполне может потребоваться переключить в "Центре управления сетями и общим доступом" - "Дополнительные параметры общего доступа" - режим шифрования в 40-бит.


Диагностика
1. Тестирование корректного синтаксиса и опций конфигурационного файла
testparm -s /etc/samba/smb.conf

2. nmblookup microserver - широковещательно запрашивает сеть на предмет преобразования NETBIOS имени samba сервера в IP.
querying MICROSERVER on 192.168.3.255
192.168.3.1 MICROSERVER<00>

3. smbtree - выводит дерево общих ресурсов на samba-серверах. Полезна для быстрого просмотра из консоли.

4. smbstatus - выводит подключения машин и пользователей к ресурсам микросервера.

Основные трудности
- Новый файлы создаются с битом исполнения. Эта особенность сохранения архивного бита файла Windows в бите исполнения Unix, отключается опцией в секции ресурса: map archive = no
- В процессе эксплуатации выяснился глюк с длинными именами файлов, при доступе к ресурсу сервера с домашнего компьютера Ubuntu 11.10, средой Gnome, Nautilus. Это работа опции name mangling (переименование в DOS-совместимые имена формата 8.3). Теперь задача - отключить эту опцию: mangled names = no . После этого имена с русскими буквами пропали из ресурса. Это было из-за символа ":" в именах файлов (время указывалось). В принципе можно опцию вернуть, чтобы знать, что есть проблемы.


Ресурсы

. Главный сайт Samba. http://www.samba.org/
. Книга по Samba, на главном сайте. http://www.samba.org/samba/docs/using_samba/ch00.html
. Все о самба. http://smb-conf.ru
. Статья о SMB в Википедии. http://ru.wikipedia.org/wiki/Server_Message_Block
. Изучаем Linux, 302 (смешанные среды): Роли Samba. http://www.ibm.com/developerworks/ru/library/l-lpic3-310-2/index.html


пятница, 16 марта 2012 г.

Ubuntu микросервер ssh приветствие /etc/motd

Обустройство входного приветствия в Ubuntu 12/04.

При доступе к серверу через SSH, часто выдается своеобразное приветствие, сообщающее пользователю какую-либо системную информацию. По умолчанию, все блекло и на английском языке. Кстати, называется это banner, message of the day.
Исправим.
Итак.
Текущий автоматически созданное приветствие содержится в файле:
/etc/motd
Его не надо редактировать.
Для настройки надо использовать файлы в папке /etc/update-motd.d

Можно создать свой собственный файл /etc/update-motd.d/10-myinfo, это обычный исполняемый shell скрипт. Как пример, есть исполняемый python-скрипт /etc/update-motd.d/50-landscape-info, созданный Canonical для своей платной системы удаленного управления и мониторинга Landscape, который выводит информацию о нагрузке сервера и пр.

/etc/motd.tail
Статическую информацию, которую администратор посчитает нужными опубликовать для входа, надо создать в файле /etc/motd.tail. Это простой текстовый файл, который выводится командой cat, в файле /etc/update-motd.d/99-footer.
Сюда я помещу список часто используемых команд управления сервером, с их синтаксисом, чтобы каждый раз не вспоминать, что где запущено и как им управлять. Сюда можно поместить ссылки на документацию по настройке частей сервера.
Пока просто выведем сообщения о справочной системе
cat /etc/motd.tail
Руководство по микросерверу: man microserver

Кстати, создание и размещение man-страницы по микросерверу, для того чтобы работала команда man microserver - хорошая идея. Размещать файл надо в /usr/share/man/man7/ т.к. эта информация относится к 7 разделу.
Вот небольшой шаблон man-страницы (обычный текстовый файл).
#cat microserver.7


.\" Для локального просмотра файла man-страницы: man -l microserver.7
.\" Имя файла должно состоять как "registration.ru.7"
.\" Кодировка файла: UTF-8
.\" Для просмотра всех опций форматирования: man groff_man
.\" Также можно ознакомиться с man groff
.TH "microserver" 7 "Руководство по микросерверу" "gimmor.blogspot.com" "Руководство по микросерверу"
.SH ИМЯ microserver 
 microserver - справочная информация по конфигурации микросервера. Более расширенные руководства на сайте: http://gimmor.blogspot.com/search/label/микросервер
.SH СИНТАКСИС
.TP
.B man microserver
.TP
.B man -l microserver.7 

.SH ОПИСАНИЕ
.TP

.SH ОПЦИИ
.TP

.SH ФАЙЛЫ
.TP

.SH АВТОРСКИЕ ПРАВА
.TP
Copyright (c) 2012. http://gimmor.blogspot.com/



Файл /etc/motd обновляется по расписанию cron, каждые 10 минут. Сам файл - это текстовый файл.




Обычно при заходе в ssh, администратора интересует состояние сервера и сервисов запущенных на нем. Для сбора этой информации администратор может подготовить несколько скриптов.

Установлю средство мониторинга smart аттрибутов жестких дисков
$sudo apt-get install smartmontools

Для примера, я хочу видеть:
1. Поднятые интерфейсы
2. Доступность Интернета
3. Доступность локального районного шлюза
4. Краткую подсказку как поднимать и опускать соединения с Интернетом.
5. Состояние жестких дисков, процессора

Небольшой информационный скрипт

#! /bin/sh
date +"%d.%m.%Y %Z"
echo "Список контейнеров LXC:"
lxc-list
echo "Температура диска"
smartctl -x  /dev/sda | grep "Current Temperature"






Замеченное
- При входе через ssh, не отрабатывается цветовая информация



четверг, 15 марта 2012 г.

Динамическое конфигурирование клиентов сети (DHCP), настройка в Ubuntu 12.04 Server

Настраивается dhcp-сервер на шлюзовом микросервере Ubuntu 12.04.

Подключение к Интернет - требуется. Настройка в одной из предыдущих заметок.

Устанавливаем пакет dhcp-сервера. Сам сервер производства Internet System Consortium (ISC).
$sudo apt-get install dhcp3-server

После установки, конфигурация  DHCP-сервера находится в файле /etc/dhcp/dhcpd.conf
В Ubuntu сервер запускается автоматически при старте системы, но после первоначальной установки не работает нормально, надо конфигурировать и перезапускать.

Остановка dchp сервера: $ sudo service isc-dhcp-server stop
Запуск dchp сервера: $ sudo service isc-dhcp-server start


Выделим для нашей небольшой домашней сети диапазон неподключенных IPv4-адресов, вида: 192.168.3.x.  Маска сети 255.255.255.0.
Микросервер с адресом 192.168.3.1 на интерфейсе eth0, является шлюзом (gateway) в Интернет, через интерфейс ppp0, который в свою очередь поднимается через интерфейс eth1.
DHCP-сервер будет работать на интерфейсе eth0. Клиенты "арендуют" ip-адреса, на определенный срок.

Редактируем /etc/default/isc-dhcp-server
$ sudo nano /etc/default/isc-dhcp-server

INTERFACES="eth0"
# dchp - сервер будет работать только на интерфейсе eth0, eth1 используется для локальной сети провайдера и Интернет, там есть свой dhcp сервер


Редактируем конфигурацию:
$sudo nano /etc/dhcp/dhcpd.conf

default-lease-time 600;
max-lease-time 7200;
subnet 192.168.3.0 netmask 255.255.255.0 {
 range 192.168.3.3 192.168.3.200; # Диапазон выделяемых ip-адресов
 option routers 192.168.3.1;     #getway
 option subnet-mask 255.255.255.0; #маска нашей подсети
 option domain-name "example.com";
 option domain-name-servers 85.21.192.5, 213.234.192.7; #DNS-сервера провайдера, получаемые через PPP DHCP.
 option broadcast-address  192.168.3.255;
}
# Выдаваемые DNS-адреса через PPP, отличаются от DNS адресов, выдаваемых локальной сетью.
# Для различных устройств - ip-телефонов, ip-камер, часто более удобным является выделение постоянного IP-адреса, ориентируясь на MAC-адрес
host phone {
   option host-name "phone";
   hardware ethernet 00:FF:FF:FF:FF:00;
   fixed-address 192.168.3.6;
}
host camera {
   option host-name "camera";
   hardware ethernet 00:FF:FF:FF:FF:01;
   fixed-address 192.168.3.16;
}


# Также все устройства (не компьютеры), можно вынести в отдельную подсеть и использовать классы для группирования
# Полезным свойством является опция выделения статических маршрутов к различным подсетям.

истории выделенных ip-адресов см. в файле /var/lib/dhcp/dhcpd.leases

Вот пример
lease 192.168.3.3 {
  starts 4 2012/03/15 22:49:33;
  ends 4 2012/03/15 22:59:33;
  cltt 4 2012/03/15 22:49:33;
  binding state active;
  next binding state free;
  hardware ethernet 00:19:d1:7d:28:3f;
  client-hostname "mir";
}

Справочно. Доступ в Интернет для домашней сети eth0, через интерфейс ppp0, поднятый с провайдером.

echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -I POSTROUTING -o ppp0 -j MASQUERADE
iptables -t filter -A FORWARD -i eth0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

Замеченные неполадки и особенности
-. Часто менятеся IP-адрес. Решение увеличить время аренды IP-адреса default-lease-time = 86400 (На сутки, в секундах) и max max-lease-time 172800;