С чего вдруг? Давно в душе тлело подозрение, что для дома проще собрать NAS на бубунте, а по надежности и производительности будет не хуже, чем на FreeBSD. Дождался, в журнале BSD эту догадку высказал товарисч Билл Харрис. Статью я специально притырил на сайте, можете ознакомиться. Слово сказано, осталось лишь проверить на деле.
Установка сервера.
Установка немного отличается от процесса на FreBSD, в целом установка сервера Ubuntu проще, но судите сами. Качаем дистрибутив, и начинаем установку.
Язык я выбрал русский, далее, установка сервера.
Далее по порядку отвечаем на несколько вопросов установщика: регион,
раскладку лучше не определять,
а выбрать из списка,
настройка часового пояса
Разметку диска выполним вручную
Выбираем свободный раздел,
если такого нет, сначала удаляем все имеющиеся, затем создаем новые разделы,
указываем размер,
тип,
местоположение,
метка.
Можно указать все необходимые разделы, причем на Ubuntuв отличие от FreeBSD Вас будут сопровождать подсказки в процессе разметки диска. Я выбрал один раздел по систему в 10 Гб,
один раздел подкачки в 1 Гб,
и два раздела под данные с точкой монитрования /sharedata
и /privatedata.
Сверьте с итоговой таблицей
и поехали далее. Руту по умолчанию вход в систему воспрещен, поэтому требуется создать пользователя – судоера, который сможет использовать административные привилегии с помощью команды sudo.
От шифрования домашнего каталога откажемся.
Обновления безопасности будем устанавливать автоматически.
Так как эта система единственная, ставим её загрузкчик в MBR.
Во время установки мы можем выбрать дополнительные пакеты – очень удобная штука.
Мы выбираем OpenSSH, LAMP (Linux-Apache-Mysql-Php), Samba, во время установки не забываем указать администраторский пароль для MySQL. После установки перезагружаемся
и входим в систему с указанием имени и пароля того пользователя, которого мы придумали во время установки.
После установки.
Парадокс в том, что несмотря на UTF-8 кодировку системы по умолчанию русские шрифты в консоли не работают, вместо букв – квадратики. Правда, в репозитории Ubuntuимеется средство для решения этой проблемы. Набираем в командной строке:
$sudoapt-getinstallconsole-cyrillic
После установки можно попробовать инициализировать эти шрифты командой
$setupcon
Но для корректной работы дополнения необходимо его сконфигурировать
$sudodpkg-reconfigureconsole-cyrillic
Проблема в том, что конфигуратор разговаривает по-русски, а русского языка в консоли еще правильного нет. Так или иначе, выбираем Unicode везде, чтоб «быть на переднем крае интернета». После перезагрузки и запуска команды
$setupcon
мы теперь имеем красивый Unicode в консоли. Установим mc
$sudo apt-get install mc
Теперь мы можем использовать удобный файловый менеджер для дальнейшей настройки. Сначала установим включение кириллицы при загрузке. Для этого в файл /etc/rc.localДО строки exit 0 добавим строку setupcon.
После перезагрузки кириллица будет включаться автоматически.
Настроим сеть. В файле /etc/network/interfacesукажем статические адреса для сетевого интерфейса (Вы, конечно, укажете свои):
auto eth0
iface eth0 inet static
address 10.0.0.100
netmask 255.255.255.0
gateway 10.0.0.1
Установка phpmyadmin
$sudoapt-getinstallphpmyadmin
Настраиваем для использования апача.
Настраиваем подключение к базе данных.
Далее от Вас потребуется только правильно ввести пароль для подключения к MySQL.
Настройка Samba.
#======================= Global Settings =====================================
log file = /var/log/samba/log.%m
#============================ Share Definitions ==============================
Установка mediatomb.
$sudo apt-get install mediatomb
Редактируем файл /etc/config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<config version="2" xmlns="http://mediatomb.cc/config/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mediatomb.cc/config/2 http://mediatomb.cc/config/2.xsd">
<server>
<ui enabled="yes" show-tooltips="yes">
<accounts enabled="no" session-timeout="30">
<account user="mediatomb" password="mediatomb"/>
</accounts>
</ui>
<name>UbuMedia</name>
<udn>uuid:3536604f-8189-49a7-b3ad-9c6d091bc5dc</udn>
<home>/var/mediatomb</home>
<webroot>/usr/local/share/mediatomb/web</webroot>
<storage caching="yes">
<sqlite3 enabled="no">
<database-file>mediatomb.db</database-file>
</sqlite3>
<mysql enabled="yes">
<host>localhost</host>
<username>mediatomb</username>
<database>meto</database>
</mysql>
</storage>
<protocolInfo extend="yes"/>
<!-- For PS3 support change to "yes" -->
<!--
Uncomment the lines below to get rid of jerky avi playback on the
DSM320 or to enable subtitles support on the DSM units
-->
<custom-http-headers>
<add header="transferMode.dlna.org: Streaming"/>
<add header="contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=0170000000000000000" />
</custom-http-headers>
<manufacturerURL>redsonic.com</manufacturerURL>
<modelNumber>105</modelNumber>
<!-- Uncomment the line below if you have a Telegent TG100 -->
<!--
<upnp-string-limit>101</upnp-string-limit>
-->
<extended-runtime-options>
<ffmpegthumbnailer enabled="yes">
<thumbnail-size>128</thumbnail-size>
<seek-percentage>5</seek-percentage>
<filmstrip-overlay>yes</filmstrip-overlay>
<workaround-bugs>no</workaround-bugs>
</ffmpegthumbnailer>
<mark-played-items enabled="no" suppress-cds-updates="yes">
<string mode="prepend">*</string>
</mark-played-items>
</extended-runtime-options>
</server>
<import hidden-files="no">
<filesystem-charset>UTF-8</filesystem-charset>
<metadata-charset>UTF-8</metadata-charset>
<scripting script-charset="UTF-8">
<common-script>/usr/local/share/mediatomb/js/common.js</common-script>
<playlist-script>/usr/local/share/mediatomb/js/playlists.js</playlist-script>
<virtual-layout type="builtin">
<import-script>/usr/local/share/mediatomb/js/import.js</import-script>
</virtual-layout>
</scripting>
<mappings>
<extension-mimetype ignore-unknown="no">
<map from="mp3" to="audio/mpeg"/>
<map from="ogg" to="application/ogg"/>
<map from="asf" to="video/x-ms-asf"/>
<map from="asx" to="video/x-ms-asf"/>
<map from="wma" to="audio/x-ms-wma"/>
<map from="wax" to="audio/x-ms-wax"/>
<map from="wmv" to="video/x-ms-wmv"/>
<map from="wvx" to="video/x-ms-wvx"/>
<map from="wm" to="video/x-ms-wm"/>
<map from="wmx" to="video/x-ms-wmx"/>
<map from="m3u" to="audio/x-mpegurl"/>
<map from="pls" to="audio/x-scpls"/>
<map from="flv" to="video/x-flv"/>
<!-- <map from="vob" to="video/x-vob"/> -->
<map from="mkv" to="video/x-mkv"/>
<!-- Uncomment the line below for PS3 divx support -->
<map from="avi" to="video/divx"/>
<!-- Uncomment the line below for D-Link DSM / ZyXEL DMA-1000 -->
<map from="avi" to="video/avi"/>
<map from="avi" to="video/mpeg"/>
<!-- Uncomment the line below for PS3 divx support -->
<map from="mpg" to="video/mpeg"/>
<map from="vob" to="video/mpeg"/>
<map from="mp4" to="video/avc"/>
<!-- ORIGINAL <map from="mp4" to="video/mp4"/> -->
<map from="m4v" to="video/mp4"/>
<map from="m4a" to="audio/mp4"/>
</extension-mimetype>
<mimetype-upnpclass>
<map from="audio/*" to="object.item.audioItem.musicTrack"/>
<map from="video/*" to="object.item.videoItem"/>
<map from="image/*" to="object.item.imageItem"/>
</mimetype-upnpclass>
<mimetype-contenttype>
<treat mimetype="audio/mpeg" as="mp3"/>
<treat mimetype="video/mpeg" as="avi" />
<treat mimetype="video/x-divx" as="avi"/>
<treat mimetype="application/ogg" as="ogg"/>
<treat mimetype="audio/x-flac" as="flac"/>
<treat mimetype="image/jpeg" as="jpg"/>
<treat mimetype="audio/x-mpegurl" as="playlist"/>
<treat mimetype="audio/x-scpls" as="playlist"/>
<treat mimetype="audio/x-wav" as="pcm"/>
<treat mimetype="audio/L16" as="pcm"/>
<treat mimetype="video/x-msvideo" as="avi"/>
<treat mimetype="video/mp4" as="mp4"/>
<treat mimetype="audio/mp4" as="mp4"/>
<!-- <treat mimetype="application/x-iso9660" as="dvd"/>
<treat mimetype="application/x-iso9660-image" as="dvd"/>-->
</mimetype-contenttype>
</mappings>
<online-content>
<!-- Make sure to setup a transcoding profile for flv -->
<YouTube enabled="no" refresh="28800" update-at-start="no" purge-after="604800" racy-content="exclude" format="flv" hd="no">
<favorites user="mediatomb"/>
<standardfeed feed="most_viewed" time-range="today"/>
<playlists user="mediatomb"/>
<uploads user="mediatomb"/>
<standardfeed feed="recently_featured" time-range="today"/>
</YouTube>
<Weborama enabled="no" refresh="28800" update-at-start="no">
<playlist name="Active" type="playlist" mood="active"/>
<playlist name="Metal" type="playlist">
<filter>
<genres>metal</genres>
</filter>
</playlist>
</Weborama>
<AppleTrailers enabled="no" refresh="43200" update-at-start="no" resolution="640"/>
</online-content>
</import>
<transcoding enabled="no">
<mimetype-profile-mappings>
<transcode mimetype="video/x-flv" using="vlcmpeg"/>
<transcode mimetype="application/ogg" using="vlcmpeg"/>
<transcode mimetype="application/ogg" using="oggflac2raw"/>
<transcode mimetype="audio/x-flac" using="oggflac2raw"/>
</mimetype-profile-mappings>
<profiles>
<profile name="oggflac2raw" enabled="no" type="external">
<mimetype>audio/L16</mimetype>
<accept-url>no</accept-url>
<first-resource>yes</first-resource>
<accept-ogg-theora>no</accept-ogg-theora>
<agent command="ogg123" arguments="-d raw -o byteorder:big -f %out %in"/>
<buffer size="1048576" chunk-size="131072" fill-size="262144"/>
</profile>
<profile name="vlcmpeg" enabled="no" type="external">
<mimetype>video/mpeg</mimetype>
<accept-url>yes</accept-url>
<first-resource>yes</first-resource>
<accept-ogg-theora>yes</accept-ogg-theora>
<agent command="vlc" arguments="-I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mp1v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit"/>
<!-- ORIGINAL <buffer size="14400000" chunk-size="512000" fill-size="120000"/> -->
<buffer size="2978728105" chunk-size="512000" fill-size="120000"/>
</profile>
</profiles>
</transcoding>
</config>
Создание таблиц в базе:
$mysql --user=root --password=<вашпароль> mediatomb < /usr/local/share/mediatomb/mysql.sql.
Примечание: неожиданно наступил на грабли с порядком запуска сервисов. Mediatomb стартует раньше, чем mysqld. И падает. Во избежание такой коллизии редактируем файл /etc/init/mediatomb.conf. В строке starton (…) в скобочках первым условием добавим так:
start on (started mysql and …)
Перезапуск ($sudoreboot) и можем заходить через веб-интерфейс на порт 49152.
Установка transmission.
$sudo apt-get install transmission-daemon
После установки сервис сразу запускается. Остановим
$sudo service transmission-daemon stop.
Файл /etc/transmission-daemon/settings.json приводим к надлежащему виду:
{
"alt-speed-down": 50,
"alt-speed-enabled": false,
"alt-speed-time-begin": 540,
"alt-speed-time-day": 127,
"alt-speed-time-enabled": false,
"alt-speed-time-end": 1020,
"alt-speed-up": 50,
"bind-address-ipv4": "0.0.0.0",
"bind-address-ipv6": "::",
"blocklist-enabled": false,
"blocklist-url": "http://www.example.com/blocklist",
"cache-size-mb": 2,
"dht-enabled": true,
"download-dir": "/datapoint/downloads",
"encryption": 1,
"idle-seeding-limit": 30,
"idle-seeding-limit-enabled": false,
"incomplete-dir": "//Downloads",
"incomplete-dir-enabled": false,
"lazy-bitfield-enabled": true,
"lpd-enabled": false,
"message-level": 2,
"open-file-limit": 32,
"peer-limit-global": 240,
"peer-limit-per-torrent": 60,
"peer-port": 51413,
"peer-port-random-high": 65535,
"peer-port-random-low": 49152,
"peer-port-random-on-start": false,
"peer-socket-tos": 0,
"pex-enabled": true,
"port-forwarding-enabled": true,
"preallocation": 1,
"ratio-limit": 2,
"ratio-limit-enabled": false,
"rename-partial-files": true,
"rpc-authentication-required": false,
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-password": "{f68a77e053fea43ec04d233424524b941ff67d8eyOz0gZyV",
"rpc-port": 9091,
"rpc-username": "",
"rpc-whitelist": "192.168.1.0",
"rpc-whitelist-enabled": false,
"script-torrent-done-enabled": false,
"script-torrent-done-filename": "",
"speed-limit-down": 50,
"speed-limit-down-enabled": false,
"speed-limit-up": 40,
"speed-limit-up-enabled": true,
"start-added-torrents": true,
"trash-original-torrent-files": false,
"umask": 18,
"upload-slots-per-torrent": 14,
"watch-dir": "/datapoint/torrents",
"watch-dir-enabled": true
}
Запускаем сервис.
$sudo service transmission-daemon start.
Вот и всё!!! Как мы видим, все гораздо проще, чем на FreeBSD. Здесь мы использовали не компиляцию из исходников, а установку пакетов, это еще сэкономило нам порядочно времени. На FreeBSD тоже можно было использовать пакеты, но тут дело в философии. FreeBSD – компиляция из исходников, Ubuntu – установка пакетов из репозитория. FreeBSD – «серьезная система для красноглазых админов», Ubuntu– дружественный интерфейс для чайников. Я немного преувеличиваю для наглядности. На наших двух примерах ясно видно, какая из систем более дружественная. А какая более надежная? А какая быстрее загружается? На последние два вопроса однозначного ответа нет. Так что при выборе системы именно для домашнего использования и именно для не очень опытного админа (а очень опытному наши рекомендации не очень-то и нужны) однозначно выбираем ubuntu.