Поделюсь своим опытом настройки Ubuntu на домашнем сервере до примерно соответствующего привычному уровню комфорта - Samba, torrent, мониторинг температуры, корректная работа с UPS, удаленное управление. Статья ориентирована больше для тех, кто не знаком с Linux (или знаком поверхностно), но хочет попробовать развернуть домашний сервер на базе Ubuntu.

Поводом заняться переводом моего домашнего сервера на Linux стали проблемы с жестким диском, который начал еле-еле шевелиться. Разумеется, я сначала подумал, что сдох именно винчестер, тем более что это был "ветеранский" WD2500JS, который я гоняю в хвост и в гриву еще с 2007 года. Поэтому был приобретен новенький WD Caviar Black на 500 гигов, как я считаю, по неплохой цене - около 2500 рублей, с учетом того, что курс рубля в это время (а именно 1 ноября 2014 года) уже начал падать. Однако и новый винчестер выдавал кучу ошибок при загрузке уже установленной к тому времени Ubuntu (да и Windows не сказать, чтобы гладко устанавливался), я даже попробовал резервный блок питания - но и это не помогло, так же как и замена SATA-кабеля. Пришлось констатировать, что начала накрываться материнская плата ("чипсетный" SATA-контроллер). К счастью, на материнской плате был дополнительный контроллер, который, к тому же, уже поддерживал режим AHCI, рекомендуемый для "файлопомоек", так что винчестеры были подключены к нему. Проблем с загрузкой в Ubuntu не возникло, чего не скажешь о Windows - пришлось загружаться в него с "чипсетного" контроллера, устанавливать драйвера "внешнего" контроллера, и только после этого Windows тоже стал загружаться.

Таким образом, мне нужно задуматься о том, чтобы обновить платформу моего "сервера", ну а пока что речь пойдет о программной составляющей. Хочу сказать, в первый раз доведение системы до ума у меня заняло много времени - где-то недели две в свободное от работы и прочих забот время. Так что теперь даже если и придется переустанавливать Ubuntu, то я открою эту статью и быстренько все настройки повторю smile. Кстати сказать, очень рекомендую при установке и, возможно, настройке (особенно без GUI) пользоваться рядом стоящим ноутбуком с доступом в интернет, чтобы можно было оперативно прояснять какие-то вопросы (а у меня их был вагон и маленькая тележка, что и сподвигло к написанию данного опуса).

Коротко об установке Ubuntu

Но для начала - почему именно Ubuntu Server 14.04.1. Собственно говоря, *.04 - версии с длительным сроком поддержки, поэтому вроде как более надежны, и обновления для таких версий выпускаются долго. Так что, в идеальном случае - установил, настроил и на несколько лет забыл. Ubuntu - потому что она вроде как дружелюбная к пользователю, к тому же, некоторое "шапочное" знакомство с десктопной Ubuntu у меня было. А вот выбор серверной редакции в моем случае вопрос спорный, поскольку я все-таки установил GUI - примерно с тем же успехом можно было бы накатить всякие сервисы на десктопную. Разве что десктопная идет со всякими офисами и прочей мультимедией, и тогда это все желательно было бы удалить (а получилось бы?). Тем не менее, что сделано, то сделано, а мои читатели, возможно, и не будут добавлять графическую оболочку.

Перед установкой также надо определиться с разрядностью и разделом подкачки. У меня на сервере получается пограничная ситуация - процессор уже 64-битный, но оперативки только 2 гигабайта. Так что выбор между 32 битами и 64, а равно создавать ли раздел подкачки или не создавать, в такой ситуации 50/50. Лично я выбрал 64-битную архитектуру и раздел подкачки, равный объему оперативной памяти (т.е. 2 гигабайта). Впрочем, как показала практика, раздел подкачки практически не используется, а время загрузки операционной системы несколько увеличивается из-за инициализации этого раздела. Ну да пусть живет, не жалко.

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

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

Для себя я разделы подготовил заранее, с помощью загрузочного диска Gnome Partition Editor, с учетом того, что я на всякий случай сначала хотел установить Windows. Поэтому я создал в соответствии с некими рекомендациями загрузочный раздел FAT32 на 1 гигабайт, первичный раздел NTFS - системный для Windows, далее, во вторичном разделе, несколько логических дисков - раздел подкачки (linux-swap), системный раздел для Linux (Ext4) и, наконец, общий раздел NTFS для "шары". Получилось немного по-чудному, конечно, но зато это позволяет работать в обоих системах.

Скриншот уже из установленного мной графического интерфейса.

Надо сказать, на логический раздел Windows как-то не очень захотел устанавливаться, поэтому у меня получилось целых два первичных раздела. Собственно, формально их может быть до четырех (так что линуксовый Ext4 тоже можно было бы сделать первичным), просто лично для меня видеть более одного первичного раздела немного странно (сказывается опыт работы еще с MS DOS/Windows 95).

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

Возможно, стоило бы сопоставить точку монтирования /boot с загрузочным разделом FAT32 (к сожалению, не догадался проверить такую возможность при установке, так что оставлю выяснение допустимости такого варианта и при этом работоспособности Windows на потом). Также, если не планируется двойная загрузка с Windows, я бы рекомендовал выделить точку монтирования /home в отдельный раздел, а возможно еще и /var (особенно если планируется более-менее полноценный web-сервер и/или общая папка где-то внутри /var).

Пожалуй, сделаю еще небольшое отступление по поводу именования дисков, которое отличается от принятого в Windows (а на самом деле еще со времен MS DOS) С:, D: и так далее (интересно, кто-то помнит, зачем нужны были A: и B:? wink). Итак, жесткие диски перечисляются по порядку буквами английского алфавита с префиксом sd (можно расшифровать как SATA Device, хотя на самом деле SCSI, но не будем углубляться, кстати "старые" IDE/PATA диски будут называться hd) - sda, sdb и т.д., а разделы на самих дисках обозначаются цифрами. Соответственно первые 4 отведены под первичные разделы, а логические диски во вторичном разделе нумеруются с 5. Таким образом, можно сказать, что вместо диска C: будет sda1, а вот если диск D: у нас является логическим диском во вторичном разделе, то он получится уже sda5.

На скриншоте можно увидеть не просто sda1, а даже /dev/sda1. Это объясняется просто - для устройств есть своя в некотором роде "виртуальная" точка монтирования /dev (там помимо жестких дисков много чего еще есть). Забегая вперед - в файловых менеджерах немного непривычно без дисков, как они использовались в DOS/Windows, поскольку куда их примонтируешь, по той папке к ним доступ и осуществляется (такая вот интересная файловая система в unix). А руки так и тянутся к Alt+F1 и Alt+F2...

Что ж, вернемся к установке. Преимуществом именно серверной Убунты является возможность сразу выбрать наиболее востребованное программное обеспечение, а точнее серверы (с программной точки зрения) для установки. OpenSSH понадобится наверняка для удаленного доступа к машине (хотя бы консольного), а Samba (или SMB/CIFS) - для совместимой с Windows "шары". Web-разработчиков наверняка заинтересует так называемый LAMP (Linux - Apache - MySQL - PHP), также можно выбрать еще некоторые сервера, но для домашнего сервера они вряд-ли будут востребованы (хотя, может быть, сервер печати кто-то захочет установить). Можно отметить и ручную установку пакетов, но интерфейс этой утилиты показался каким-то не слишком удобным, поэтому я советую на данном этапе не заморачиваться и все, что вам потребуется помимо перечисленного в этом окошке, накатить уже после установки ОС.

И еще. Почему я акцентировал внимание на точках монтирования /home и /var? В /home хранятся данные пользователя - частично настройки, файлы с рабочего стола и т.д. /var в первую очередь интересен при установки LAMP, поскольку именно там предлагается размещать веб-сайты (/var/www/html) и базы данных MySQL (/var/lib/mysql). Так что выделение отдельных точек монтирования в отдельные разделы жесткого диска может помочь при переустановке системы, если эти разделы принудительно не переформатировать.

Н-да, хотел про установку кратенько рассказать, а получилось "многабукф", да еще и без картинок blush. В общем-то, на начальном этапе я вдохновлялся статьей Домашний медиа-сервер на основе Ubuntu Server 12.04 LTS. Несмотря на то, что версия Ubuntu там была постарше, принципиальных отличий я не заметил, к тому же, автор сопровождает процесс установки скриншотами и при этом рассказывает еще и про настройку программного RAID (для моей, с позволения сказать, информации я не счел RAID-массив актуальным, да и на существующем железе я его уже и не поднял бы). Засим предлагаю разговор об установке завершить и перейти уже к делу.

Работа в консоли

Итак, после установки Ubuntu Server мы попадаем в консоль, поскольку графический интерфейс вместе с серверной редакцией не поставляется (зато дистрибутив занимает всего около 580 мегабайт). С непривычки это вызывает некоторое недоумение, но в принципе жить можно, тем более, что по SSH мы заходим в абсолютно такую же консоль. А по протоколу sFTP мы имеем доступ к файловой системе. Если OpenSSH был выбран при установке ОС, то, можно сказать, из коробки мы имеем удаленный доступ по IP-адресу сервера. При использовании роутера (а в случае домашней сети это скорее всего так) имеет смысл присвоить серверу статический IP в настройках DHCP этого самого роутера. Я присвоил 192.168.1.2, поэтому далее я буду использовать именно этот адрес, так что если ваш сервер имеет другой IP, делайте поправку.

Основным клиентом SSH для Windows является PuTTY. Для подключения к серверу вводим его IP...

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

Стоит сказать, что при вводе пароля на экране не отображается ничего (даже звездочки), такая вот особенность linux. В качестве имени пользователя и пароля, пока не создано ничего нового, используются те, что были указаны на этапе установки Убунты.

Для работы по sFTP можно использовать FTP-клиент с поддержкой данного протокола, например я использую FileZilla. Хост - sftp://192.168.1.2, имя пользователя и пароль - как и в случае SSH, созданные при установке ОС (по крайней мере на начальном этапе). Впрочем, проблема с sFTP в том, что большая часть папок и файлов доступна для записи только суперпользователю, так что кроме домашнего каталога изначально развернуться особо и негде, пока не будут внесены изменения в права доступа. Например, через ту же консоль (терминал).

Супер-краткий справочник по консольным командам.

sudo - выполнить от имени суперпользователя. Если не хочется практически каждую команду предварять этим "волшебным словом", можно однократно перейти в режим суперпользователя: sudo -i

cd <path> - сменить директорию (например, очень часто требуется cd /etc, или cd ~ - перейти в домашний каталог).
dir - вывести содержимое директории (она же каталог или папка), правда в выводе непонятно, где файл, а где вложенная папка, ну да ладно
cat <file> - вывести содержимое файла
mkdir <path> - создать папку (например mkdir test)
nano <file> - консольный редактор (обычно в виде sudo nano config.conf, т.е. от имени суперпользователя отредактировать указанный файл)
wget <URL> - скачать файл по ссылке из интернета
apt-get install <package> - установить пакет (требует прав суперпользователя)
reboot - перезагрузка (требует прав суперпользователя)
exit - выход (больше актуально для SSH)
<команда> --help или man <команда> - получение справки по команде.

Чуть подробнее, но тоже коротко про команды изменения прав доступа, это chmod (режим доступа) и chown (сменить владельца). В основном будут требовать права суперпользователя. Установка полного доступа к файлу: [sudo] chmod 777 <file>. Что-такое 777? Первая цифра - права владельца, вторая цифра - права группы, третья цифра - права всех остальных. 7 - чтение, запись, выполнение, 6 - чтение и запись, 4 - только чтение, 0 - недоступно. Изменение владельца: [sudo] chown <userid>[:<groupid>] &ltfile>. Соответственно, пользователи могут объединяться в группы (хотя более часто встречается, что каждому пользователю соответствует своя собственная группа), так что за счет комбинации владельца, группы пользователей и "всех остальных" можно достаточно гибко управлять доступом к файлам и папкам (впрочем потенциально NTFS в этом плане предоставляет больше возможностей).

Для копирования файлов можно воспользоваться командой cp, но есть способ лучше - установить консольный файловый менеджер, в частности Midnight Commander (а другие-то есть вообще?). Работает по SSH, а запустив его под суперпользователем получим отличную возможность править многочисленные конфиги. Только в настройках, как по мне, лучше включить использование встроенного редактора вместо вышеупомянутого nano, иначе смысл пропадает.

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

sudo apt-get install mc

И запускаем: mc или sudo mc (если нужны права суперпользователя).

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

По сравнению с используемым мной в Windows FAR Manager непривычны две вещи - как я упоминал выше, отсутствие "дисков", а также двойной Esc вместо одинарного (это, как я понял, сделано для совместимости с различными терминалами).

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

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2EE7EF82

И, на всякий случай, буквально на пальцах, что такое репозиторий - это суть хранилище, в данном случае программ для Ubuntu, и расположен он где-то там на серверах в интернете. В графическом интерфейсе это все дело обозначается как "Центр приложений", ну а в консоли - apt-get.

Ну и пара заключительных штрихов по работе в консоли. Сразу или почти сразу после установки лучше всего выполнить обновление системы:

sudo apt-get update - синхронизировать список пакетов с репозиторием,
sudo apt-get upgrade - собственно выполнить обновление.

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

sudo update-grub

Если при загрузке системы проскакивают строки, мол, рекомендуется использовать acpi-драйвер, то можно рискнуть установить соответствующий пакет (что я и сделал):

sudo apt-get install acpi

Веб-интерфейс

В упомянутой статье предлагается установить Webmin для удаленного управления системой. Честно скажу, поначалу я немножко недооценил возможности этой системы, но в процессе, как говорится, втянулся. Наиболее востребованными для меня оказались функции по настройке сервисов (в Windows - служб, а в linux они называются демонами), тем более что в этом же разделе можно отправить команду перезагрузки или выключения системы; а также настройка Apache и MySQL, файловый менеджер, системная информация.

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

wget http://prdownloads.sourceforge.net/webadmin/webmin_1.710_all.deb

Инициируем установку пакета:

sudo dpkg --install webmin_1.710_all.deb

С первого раза, скорее всего, не получится, потому что в системе будут отсутствовать пакеты, которые требуются для работы веб-интерфейса. Список этих пакетов будет выведен в консоль. Перечисляем все эти пакеты в команде sudo apt-get install через пробелы. Например, в статье указана такая команда:

sudo apt-get install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl apt-show-versions

А в инструкции на сайте - такая:

sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python

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

Заходить в веб-интерфейс можно по IP-адресу, порт 10000, а можно и по имени компьютера (тот же порт). У меня - https://servpc:10000/ или https://192.168.1.2:10000/ (с сопутствующей руганью на недостоверное соединение, ну да что поделаешь). Логин и пароль - все те же наши любимые, указанные при установке ОС. Если все в порядке, то изначально открывается страница с информацией о системе.

Поскольку Webmin штука весьма мощная, отдельные ее аспекты будут рассматриваться при решении той или иной конкретной задачи. Сейчас же я хотел бы немного рассказать про менеджер файлов (Others - File Manager). Основные его минусы заключаются в том, что он написан на Java (не путать с JavaScript!), и при этом выглядит довольно-таки неказисто на мой взгляд. Да еще я так и не понял, как там сделать, чтобы папки отображались сверху, а не вперемешку. Тем не менее, поскольку "внутри" это все выполняется от имени суперпользователя, править конфиги можно и данным файловым менеджером, да и все основные функции реализованы (права доступа, копирование, извлечение архивов и т.д.).

58992306.jpg
93529767.jpg

 

Примечание от 12.02.2017 - в более поздних версиях File Manager стал вполне себе javascript'ным, однако менеджер на Яве остался отдельным пунктом Java File Manager.

GUI - графический интерфейс пользователя

Итак, у нас есть терминал, и у нас есть веб-интерфейс. В принципе, для "канонического" сервера этого достаточно, но лично я в такой обстановке все равно ощущаю себя как-то не слишком уютно. Посему я таки решил установить какую-нибудь графическую оболочку. "Классический" сценарий в таком случае - sudo apt-get install ubuntu-desktop, однако Unity (стандартная оболочка Ubuntu) мне не нравится. Первоначально я хотел установить xfce4, понравившийся мне со времен экспериментов с Xubuntu на древнем ноутбуке. Пришедшая на ум команда sudo apt-get install xfce4 хоть и сработала, но результат оказался неудовлетворительным. То, что оболочка не запускалась автоматически, это даже где-то хорошо (на всякий случай скажу, что запускать ее надо было командой startx). А вот то, что половины значков не было, а в меню была куча ссылок на неустановленные программы, да и выглядело это все далеко не так красиво, как в самой Xubuntu (загружался с флешки), меня никак не устроило.

В результате я наткнулся на заметку Install GUI on Ubuntu server 14.04 Trusty Tahr, автор которой предложил установить Gnome, правда предупредил, что он, мол, может показаться скучноватым. А по мне так очень даже неплохо - уж отсутствующих значков точно нет, а даже есть некие спецэффекты, да и выглядит вполне опрятно. Также стоит иметь в виду, что займет этот самый гуй по линуксовым меркам порядочно места - гига полтора, что ли. Команда на установку такова:

sudo apt-get install xorg gnome-core gnome-system-tools gnome-app-install

Кстати, исходя из текста статьи, устанавливать xfce4 надо было как-то так:

sudo apt-get install --no-install-recommends xubuntu-desktop

Но "минималистичный" Гном меня вполне устроил, поэтому на дальнейшие эксперименты я не решился, так что оставляю простор для творчества читателю. smile

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

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

Тут уже многое доустановлено мной

Вот еще пара примеров внешнего вида Gnome:

Аналог панели управления

Встроенный файловый менеджер

Чего мне не хватило сразу же после установки графического интерфейса, так это графического же текстового редактора. В статьях упоминается gedit, но я почему-то установил leafpad - в свое время на работе такой был установлен, т.е. вроде как из-за знакомого названия. Кстати благодаря графическому интерфейсу, вместо заклинания трах-тибидох-тибидох, т.е. sudo apt-get install, можно пользоваться центром приложений (Ubuntu Software Center) smile. Заодно можно описание почитать, скриншот посмотреть, перейти на сайт разработчика, в конце концов, благо браузер (Firefox) входит даже в "минималистичный" набор (вот только я не понял, зачем туда входит какой-то мессенжер - Empathy, который к тому же еще и удалить нельзя без сноса всего Гнома).

17725826.png
73241411.png

 

Вот для чего графический интерфейс оказался не очень хорошо приспособленным, так это к пресловутой правке конфигурационных файлов. Так что открываем терминал, cd /etc и sudo leafpad <file>… Н-да, как говорится, за что боролись.

Еще мне не хватало двухпанельного файлового менеджера (хотя я оценил команды Move to и Copy to в контекстном меню встроенного, их бы в Виндовый проводник). Midnight Commander я установил хронологически позже, да и консольный он. А вот, скажем, Gnome Commander вполне себе графический. По внешнему виду напоминает Total, при этом, что мне понравилось, есть аналог дисков - туда выводятся файловые системы, подмонтированные в /media (о чем мы поговорим чуть позже). Комбинация клавиш, правда, Alt+1 и Alt+2, а не функциональные.

При загрузке Гнома (это скорее всего относится и к другим графическим оболочкам - в Xubuntu на ноуте было то же самое), поскольку локалкой заведует роутер, появляется уведомление о том, что текущая сеть имеет локальный домен (.local), который не рекомендуется и не совместим с сервисом поиска сетевых ресурсов Avahi и служба была отключена. На сей раз в решении проблемы помогла заметка Avahi. Отключение поиска домена .local, в которой предложено подправить парочку конфигурационных файлов (выше я уже приводил несколько способов правки конфигурационных файлов, поэтому не буду заострять на этом внимание). Для удобства, повторяю рецепт здесь.

  1. В файле /etc/nsswitch.conf в строчке hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 удаляем [NOTFOUND=return].
  2. В файле /etc/default/avahi-daemon изменяем значение параметра AVAHI_DAEMON_DETECT_LOCAL на 0.
  3. Перезагружаемся. Навязчивое уведомление больше не должно появляться.

Монтируем разделы NTFS

Поскольку NTFS не является "родной" файловой системой linux, при работе с ней могут возникнуть различные проблемы, например доступ только для чтения, или проблемы с расшариванием папок по SMB. Заодно немного расскажу о монтировании разделов вообще.

Собственно говоря, за монтирование дисков на этапе загрузки отвечает файл /etc/fstab, каждая строчка которого имеет следующий формат:

<file system> <mount point> <type> <options> <dump> <pass>

Напоминание об этом размещено в комментарии в начале файла. Файловую систему можно идентифицировать по метке, UUID тома (вероятно, является предпочтительным, поскольку именно по UUID были примонтированы системный и swap разделы) или по устройству (например, /dev/sdb1 - быстрее написать и проще для восприятия). Точка монтирования - это та "папка", по которой будет осуществляться доступ к данной файловой системе. Далее указывается тип файловой системы и параметры монтирования. Параметры dump и pass относятся к программам dump (резервное копирование) и fsck (проверка файловой системы). Для ntfs в обычной ситуации оба параметра по нулям, к тому же маловероятно, что fsck работает с ntfs.

Как я упоминал выше, дополнительный сервис предоставляется, если монтировать файловые системы в /media по метке тома. Во встроенном файловом менеджере Гнома появляются соответствующие значки напротив устройств, а в Gnome Commander - кнопки и список быстрого выбора для панелей.

Кроме редактирования файла вручную, в веб-интерфейсе управлять монтированием файловых систем можно из раздела System - Disk and Network Filesystems, а в Гноме - с помощью программы Disks (диски). Пример монтирования NTFS-раздела sda7 с меткой SHARED через Webmin и Disks:

12006651.jpg
62347828.png

 

Это будет соответствовать такой строчке в fstab:

/dev/sda7 /media/SHARED ntfs defaults 0 0

Однако, стоит сказать, что второй винчестер на 2 терабайта с разделом NTFS на весь диск (метка GREEN) таким же способом монтироваться не захотел. При "динамическом" монтировании через Nautilus (встроенный файловый менеджер Гнома), т.е. когда просто через "устройства" зашел на диск, файловая система обозначилась как FUSEBLK (посмотрел в Webmin). Как такую штуку подмонтировать через fstab - непонятно. Выход нашелся крайне элегантный - а пусть файловая система определяется автоматически:

/dev/sdb1 /media/GREEN auto defaults 0 0

Впрочем, у этого способа есть недостаток - нельзя отредактировать параметры монтирования такой файловой системы через Webmin.

Народ, помимо стандартного "драйвера", пользуется некоей альтернативой под названием ntfs-3g (пакет и "файловая система"), хотя наверное это имеет смысл для более ранних версий Ubuntu. Я себе его хоть и ставил, но в конечном итоге остановился на стандартном. Впрочем, у ntfs-3g есть некоторое преимущество в виде мастера подключения NTFS-раздела. Также открытым является вопрос с нагрузкой на процессор (справедливости ради, процесс ntfs отнимает заметное время процессора - 1-2% на каждый раздел).

Проблем с русскими именами файлов у меня даже с настройками по умолчанию (ntfs defaults и auto defaults) вроде бы не возникает. Впрочем, на всякий пожарный можно в опциях подписать русскую локаль, например:

/dev/sda7 /media/SHARED ntfs defaults,locale=ru_RU.UTF-8 0 0

При монтировании с настройками по умолчанию владельцем файлов считается root. Возможно, при разграничении прав доступа, вы захотите использовать другого пользователя и/или группу. Для этого можно их указать в настройках монтирования в Webmin или подписать вручную в опциях:

/dev/sda7 /media/SHARED ntfs defaults,uid=1000 0 0

Где 1000 - uid (идентификатор) пользователя, созданного при установке Ubuntu. Узнать uid пользователя, на мой взгляд, быстрее всего опять же через Webmin в разделе System - Users and group. В Гноме - дольше, надо зайти в "Пользователи и группы", выделить пользователя, нажать "Дополнительные параметры", подтвердить действие паролем, и только на закладке "Дополнительно" он будет указан. Соответственно, для указания id группы используется параметр gid.

С NTFS может быть связан такой нюанс, что доступ к файлам или папке ограничен на уровне файловой системы, т.е. если отсутствует полный доступ для специального пользователя "Все" (Everyone в английских версиях). Для снятия подобных ограничений понадобится Windows, чтобы в свойствах папки (или файла), на закладке "Безопасность" добавить полный доступ для этого самого пользователя "Все".

Резюмируя вышесказанное, по возможности все же не стоит пользоваться NTFS под linux - тут проблемы и с доступом, и с производительностью. К сожалению, простого способа конвертации NTFS в Ext4 (по аналогии FAT32 -> NTFS) не существует, есть только автоматизация алгоритма: уменьшить существующий раздел NTFS, в освободившемся месте создать раздел Ext4 (или увеличить его размер), перенести часть файлов, повторить до полного замещения.

Настройка Samba

Итак, мы наконец-то добрались до настройки "шары". Хотя сделать это можно и через Webmin, в данном случае мне больше понравилась графическая утилита system-config-samba - интерфейс у нее явно проще и элегантнее. Если понадобится ограничить доступ к каким-нибудь папкам, целесообразно заранее добавить пользователя в систему. Лично я создавал пользователей тоже через графический интерфейс, однако в таком варианте контролируется сложность пароля (во всяком случае длина). Поэтому приведу скриншот Webmin:

Я отметил стрелками те настройки, на которые хотел бы обратить ваше внимание. Это установка пароля, флаг Login temporarily disabled - чтобы пользователь не "светился" на экране входа в систему при установленном GUI, а также создание группы, совпадающей с именем пользователя (New group with the same name as user).

На моей системе возникала ошибка (при работе в терминале), таинственным образом связанная с Самбой - несмотря на то, что описание ошибки никак на эту самую Самбу не указывает:

no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory

Есть два решения проблемы - либо удаление пакета libpam-smbpass, либо отключение синхронизации паролей пользователей системы и Самбы без удаления указанного пакета.

Для удаления пакета служит команда:

sudo apt-get remove libpam-smbpass

Для отключения синхронизации вызываем команду:

sudo pam-auth-update

Сначала появляется окно с информационным сообщением, по его закрытии появляется основное окно настройки, в котором надо снять флаг напротив SMB Password synchronization (если на мышь не реагирует - работаем стрелками, пробелом, Tab и Enter).

Итак, с помощью графической утилиты system-config-samba шара настраивается легко и просто.

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

53132996.jpg
97454293.jpg

 

Если планируются ограничения доступа, сопоставляем пользователя unix с пользователем Samba (Windows). Впрочем, пользователь, созданный при установке системы, должен быть уже сопоставлен. Если не отключена синхронизация паролей как описано выше, то введенный пароль будет проигнорирован.

Ну и добавляем ресурс:

49644134.jpg
22213100.jpg

 

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

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

sudo restart smbd
sudo restart nmbd

Настройка через Webmin сделана довольно мудреной - судите сами, это только основной экран:

Хотя вроде бы достаточно ограничиться конвертацией нужных пользователей Unix в пользователей Samba, бегло просмотреть настройки Windows Networking, и можно добавлять ресурсы (Create a new file share в верхней таблице).

Опять же, указываем имя сетевого ресурса, далее указываем путь (можно по ходу дела создать от имени указанного пользователя и группы с заданными правами), доступность и "видимость" (browseable). По желанию можно еще и описание дать.

Затем, при необходимости, можно отредактировать разрешения (войти в сетевой ресурс из таблицы на главной, далее Security and Access Control), например как-то так:

Смысл в том, что гостевой доступ запрещаем (Guest Access - None), и указываем в Valid Users тех, кому, собственно, должен быть предоставлен доступ.

Проблема, с которой я столкнулся, как ни странно все-таки исходила со стороны Windows. Точнее их было даже две. Во-первых, оказалось, что невозможно из Windows ресурсы одного и того же компьютера (сервера) подключать от имени разных пользователей, т.е. нельзя, скажем, папку Shared подключать пользователем serv, а Local - private. Во-вторых, после всех перенастроек шары очень желательно очистить сохраненные пароли в Windows, иначе может получиться ситуация из предыдущей проблемы ("гостевые" ресурсы неявно подключаются каким-то одним пользователем, в результате чего "запароленные" ресурсы уже не подключаются другим). Итак, очистка сохраненных паролей на сетевые ресурсы в Windows 7 осуществляется с помощью Диспетчера учетных данных панели управления, в разделе "Учетные данные Windows" в разрезе "серверов".

На этом, пожалуй, рассказ про настройку "шары" я закончу.

Торренты

Еще одна "классическая" задача для домашнего сервера, и классический же вариант - transmission-daemon. Не путать с "просто" transmission - это GUI-программа, в отличие от "демона". Установка стандартная:

sudo apt-get install transmission-daemon

А вот с настройкой здесь тоже все нетривиально - необходимо изменить пользователя, от имени которого запускается демон, перенести настройки в домашний каталог этого пользователя (чтобы они были доступны для записи) и как минимум включить удаленное управление, чтобы можно было выполнить дальнейшую настройку через одну из GUI-утилит. Инструкция есть аж на самом help.ubuntu.ru, но, поскольку у нас есть Webmin, кое-что вместо консоли можно выполнить с его помощью. Итак, пересказываю инструкцию:

  1. Останавливаем сервис (демон): sudo service transmission-daemon stop (или через Webmin)
  2. Переносим папку настроек /etc/transmission-daemon в каталог пользователя (предположим, мы зашли под нашим любимым пользователем UID=1000) и меняем владельца на себя:
    sudo cp -r /etc/transmission-daemon ~/.config/
    sudo chown -R user_name ~/.config/transmission-daemon

    где user_name - ваш логин
  3. Редактируем конфиг /etc/default/transmission-daemon: параметру CONFIG_DIR присваиваем значение "/home/user_name/.config/transmission-daemon"
  4. Наконец, редактируем /etc/init/transmission-daemon.conf - а удобнее через webmin в свойствах сервиса - указываем в строках setuid debian-transmission и setgid debian-transmission имя своего пользователя вместо этого вашего debian-transmission.

Там же заодно желательно исправить косяк с неправильным параметром start on (прямо первая строчка), иначе демон, насколько я помню, вообще сам не загружается:

start on (filesystem and net-device-up IFACE!=lo)

Хм, я вот так подумал - а не проще было бы похимичить с правами доступа прямо в /etc/transmission-daemon? Ну ладно, смысл в том, что теперь наконец-то сами настройки торрента доступны для редактирования. Разработчики немного "выпендрились" - файл настроек ~/.config/transmission-daemon/settings.json содержит, соответственно, JSON-массив. Такая штука хорошо знакома web-разработчикам, но обычно конфиги в linux выглядят немного по-другому. Впрочем, разобраться несложно (пары параметр: значение, разделенные запятыми, и все вместе ограничиваются фигурными скобками. Имена параметров и строковые значения заключены в кавычки). Итак, включаем удаленное управление и отключаем аутентификацию (чтобы не запрашивал пароль, который как-то и не вполне известен):

"rpc-enabled": true,
"rpc-authentication-required": false

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

"rpc-whitelist": "127.0.0.1, 192.168.1.*",
"rpc-whitelist-enabled": true 

Почему-то ни в одной из двух GUI-утилит, представленных в центре приложений, нет возможности указать папку автозагрузки торрентов. Вероятно, логика в этом такая, что торрент можно просто взять и открыть в самой утилите, но лично мне удобнее сбросить торрент-файл в папку "по шаре". Для этого предназначены параметры (возможно, их придется добавить самим) watch-dir и watch-dir-enabled, например:

"watch-dir": "/media/SHARED/SHARED/Torrent autoload",
"watch-dir-enabled": true

В общем-то, можно заодно и папки настроить:

"download-dir": "/media/SHARED/SHARED/DOWNLOADS",
"incomplete-dir": "/media/SHARED/INCOMPLETE",
"incomplete-dir-enabled": true

Собственно, наверное после этого в общих чертах торрент настроен, можно запускать демона и пользоваться web-интерфейсом (порт 9091). Правда мне он не понравился - больше похож на менеджер загрузок, чем на торрент-клиент.

Остальную всякого рода тонкую настройку вроде бы вполне благополучно можно "вылизать" утилитами удаленного управления, из которых мне больше понравился transmisson-remote-gui, хорошо работающий и в Windows. Была небольшая проблема в том, чтобы запускать его при загрузке Windows, свернутым в трей. Не беда - создадим ярлык в папке "Автозагрузка", добавив параметр -hidden:

При первом запуске, насколько я помню, предлагалось указать параметры подключения к "демону", но в любом случае это можно сделать из меню Инструменты - Параметры приложения, закладка Transmission. Также мне очень понравилось сопоставление путей (закладка "Пути") - можно указать, как путь на сервере преобразовывается в путь на локальном компьютере - тогда файлы и папки будут открываться прямо из Remote GUI. Очень удобно, особенно если сетевой диск подключается автоматически.

86231632.jpg
47163664.jpg

 

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

Мониторинг температуры

За мониторинг температуры отвечают lm-sensors и hddtemp (последняя, соответственно, берет температуру жесткого диска, а первая - процессор, чипсет, скорости вентиляторов и т.д.). Узнал я об этом, и как все это настраивать, видимо, отсюда, правда заметка написана давно, так что сейчас все делается чуть-чуть не так, да и conky нам не нужен (для консоли-то).

Итак, устанавливаем:

sudo apt-get install lm-sensors hddtemp

Затем запускаем утилиту поиска средств мониторинга, на все вопросы отвечаем yes:

sudo sensors-detect

Можно перезагрузить всю систему, но вроде бы указанная в заметке команда работоспособна:

sudo /etc/init.d/module-init-tools, или, в более современном написании,
sudo service module-init-tools start

Теперь настроим hddtemp. Для этого предварительно остановим сервис, если он вдруг запущен:

sudo service hddtemp stop (или через webmin)

Далее необходимо отредактировать /etc/default/hddtemp: в статье предложено поменять значение параметра RUN_DAEMON="true" (хотя судя по описанию это скорее относится к удаленному мониторингу температуры по сети), и, конечно же, в параметре DISKS перечислить диски для мониторинга, например DISKS="/dev/sda /dev/sdb". Не забудьте убрать знак комментария (#).

Можно запускать демона. Теперь, чтобы посмотреть температуру из консоли, можно пользоваться командами sensors (без параметров) и sudo hddtemp <disk>, например:

sudo hddtemp /dev/sda

Кроме консоли, температура процессора и жестких дисков выводится в разделе System information веб-интерфейса. Также можно установить GUI-приложение psensors, и даже некий psensor-server, который реализует свой веб-доступ к показаниям датчиков (порт 3131):

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

Вообще была еще небольшая проблема с температурой видеокарты - я ее видел только в GUI-приложении, однако при написании этого раздела наконец-то нашел, как посмотреть ее в консоли - для этого служит команда nvidia-smi. Напомню, у меня в сервере установлена видеокарта NVidia GeForce 7600 с пассивным охлаждением, и после установки GUI я установил проприетарный драйвер. Хотя, справедливости ради, температура видеокарты наверное только в графическом режиме и актуальна, ведь по идее в текстовом режиме нагрузки на нее практически никакой нет.

Управление источником бесперебойного питания

Что интересно, графический интерфейс в каком-то виде подхватил UPS и так, но настройки оказались довольно скудными и не совсем понятными (например, что такое "низкий уровень заряда"). Немного подумав, я все же не стал полагаться на подобный функционал, и решил настроить nut. В основном помогала мне в этом другая статья с Хабра, хоть и речь там идет немного о другом.

Итак, первым делом нужно проверить, поддерживается ли вообще ваш UPS этим программным комплексом, делается это в разделе Compatibility официального сайта проекта. К счастью, мой Powercom BNT-600AP имеет наивысший уровень совместимости, а что касается испугавшей меня в инструкции информации о необходимости компилировать с определенными ключами этот самый nut, то все уже было украдено скомпилировано до меня.

Итак, чтобы это все "взлетело", было, пожалуй, самой сложной частью "обустройства" сервера. Во-первых, придется править сразу несколько конфигов. К счастью, все они расположены в /etc/nut. Первым делом, в nut.conf устанавливаем локальный режим работы: MODE=standalone. Дело в том, что можно настроить и сетевой режим, т.е. мониторинг и управление не только локальным бесперебойником (подключенного к данному компьютеру), но и других по сети.

Следующим шагом необходимо добавить в ups.conf информацию о "подконтрольном" UPS. Делается это в стиле виндовых .inf-файлов - именем секции определяем идентификатор устройства (в рамках nut - я указал BNT600AP). В качестве параметров обязательно нужно оказать драйвер и порт. Драйвер определяем по таблице совместимости - в моем случае это usbhid-ups, а в качестве порта я не мудрствуя лукаво прописал auto. Также для пущей важности добавил описание. Получилось вот что:

[BNT600AP]
driver=usbhid-ups
port=auto
desc="Powercom BNT-600AP"

upsd.conf пропускаем, а в файле upsd.users добавляем администратора nut:

[admin]
password = mypass
upsmon master
actions = SET
instcmds = ALL

Пароль, естественно, у меня другой. Для первичной настройки осталось отредактировать параметр MONITOR в файле upsmon.conf, где как раз потребуются все введенные ранее настройки (идентификатор UPS, пользователь и пароль), в моем случае:

MONITOR BNT600AP@localhost 1 admin mypass master

Последний параметр означает, что компьютер выключается последним, давая возможность сперва отключиться "подчиненным" устройствам (slave), а 1 - то, что всего подключен 1 бесперебойник. Остальные параметры я вроде бы оставил по умолчанию.

Остался невыясненным вопрос, что такое "низкий уровень заряда батарей". Для просмотра информации об UPS из терминала служит команда upsc <name>, в моем случае upsc BNT600AP. Среди прочего, меня заинтересовал параметр battery.charge.low, равный 10 (процентов). Мне показалось это не слишком надежным. Чтобы переопределить этот параметр, в ups.conf в секции, посвященной нашему UPS, добавим строчку:

override.battery.charge.low=20

Тем самым урвень разряда батареи установим в 20%.

Кстати сказать, за все это "хозяйство" отвечают целых три демона - nut-client, nut-server и ups-monitor, которые на время правки конфигурационных файлов скорее всего надо бы отключать.

Что ж, UPS завели, но мониторить его параметры из консоли как-то не очень удобно. Web-интерфейс предоставляет пакет nut-cgi, и это будет "во-вторых". Основная проблема связана с тем, что настройки веб-сервера Apache по умолчанию не подходят для работы мониторинга. Мне потребовалось как минимум две вещи - включить mod-cgi и разрешить исполнение cgi-программ из usr/lib. Делал через Webmin - модуль включаем в Servers - Apache Webserver - Global Configuration - Configure Apache Modules:

А вот что касается cgi-программ из usr/lib, то сейчас перерыл весь Webmin и так и не понял, как я это сделал blush Единственное, что я нашел, это файл /etc/apache2/conf-available/serve-cgi-bin.conf со следующим содержанием:

 <IfModule mod_alias.c>
  <IfModule mod_cgi.c>
    Define ENABLE_USR_LIB_CGI_BIN
  </IfModule>

  <IfModule mod_cgid.c>
    Define ENABLE_USR_LIB_CGI_BIN
  </IfModule>

  <IfDefine ENABLE_USR_LIB_CGI_BIN>
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
      AllowOverride None
      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
      Require all granted
  </Directory>
  </IfDefine>
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet 

Для вступления изменений в силу перезапускаем Apache (быстрее всего в Webmin - в разделе Apache Webserver есть ссылки "Apply changes", либо "Stop / Start Apache"). Далее необходимо отредактировать еще пару конфигурационных файлов. В /etc/nut/hosts.conf добавляем мониторинг нашего UPS:

MONITOR BNT600AP@localhost "BNT600AP"

В файле /etc/nut/upsset.conf раскомментируем строчку (убираем знак #) I_HAVE_SECURED_MY_CGI_DIRECTORY

Наконец, создадим символическую ссылку внутри /var/www/html на папку /usr/share/nut/www, например из консоли:

ln -s /usr/share/nut/www /var/www/html/nut

Убедимся, что Apache следует символическим ссылкам, для этого в файле /etc/apache2/apache2.conf в блоке <Directory /var/www/> должны быть указаны следующие опции:

Options Indexes FollowSymLinks

Скорее всего, так и есть по умолчанию, так что теперь, если я ничего не упустил, наконец-то можно посмотреть состояние UPS в браузере: http://192.168.1.2/nut/

93585941.jpg
81625481.jpg
43186291.jpg

 

Также имеется возможность кое-что поднастроить, воспользовавшись пользователем в соответствии с upsd.users, правда в моем случае доступна всего лишь одна настройка - тайм-аут перед выключением UPS после завершения работы системы:

Зато можно послать несколько команд, среди которых управление пищалкой, отключение и самотестирование:

Заключение

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

Примечание от 25.02.2019: увы, 5 лет вряд ли можно так охарактеризовать. Посему "1-ю часть" из заголовка я убрал, а новая статья относится уже к более актуальной версии ОС: Настройка Ubuntu Server 18.04 на домашнем сервере


Категория: Обзоры софта | Опубликовано 21.11.2014 | Редакция от 25.02.2019

Похожие материалы:


Комментарии, обсуждение

комментарии простроенны на платформе Disqus