Домашний медиацентр (HTTP, NFS, FTP, Torrent, MiniDLNA и Firebird server) на основе Raspberry Pi
Больше всего я не люблю шум. Даже минимальный шум от внешнего винчестера долго не дает мне заснуть.
Поэтому я решил оборудовать свой домашний медиацентр только бесшумными (в крайнем случае, малошумными) составляющими.
В наличии был ПК (в кабинете), внешний винчестер WD MyBook 1TB, подключенный к ТВ, звуковой проектор Yamaha YSP-900, куда по toslink выводился звук (это добро в комнате для просмотра фильмов, то есть в спальной).
Телевизор Samsung B550, 2009 года, хотя и показывает фильмы с USB (после шаманства с настройками), но далеко не все, также не умеет битстримить DTS на проектор. Для просмотра фильмов был выбран дешевый WDTV Live Streaming 2012 года, славящийся своей всеядностью. Однако, винчестер продолжал шуметь и мешать как просмотру, так и сну.
Поэтому, винчестер был перенесен в кабинет, и подключен к новокупленному Raspberry Pi, после чего был переформатирован в ext4.
Сам Raspberry Pi питается от USB порта компьютера (такая схема работает в том числе и при глубоком сне).
Далее туториал по настройке Raspberry Pi
1. Устанавливаем последнюю версию Raspbian www.raspberrypi.org/downloads на карточку
2. Меняем настройки загрузки (для fullHd экрана)
disable_overscan=1
hdmi_group=1
hdmi_mode=16
arm_freq=800
Установка частоты больше 800 требует дополнительного охлаждения, иначе система будет нестабильна и на сложных задачах будет намертво зависать.
3. Меняем wheezy на jessie в /etc/apt/sources.list, переименовываем /etc/apt/sources.list.d/collabora.list и /etc/apt/sources.list/raspi.list с ~
4. Обновляемся sudo apt-get dist-update &&sudo rpi-update
5. Настраиваем вход по SSH по ключам (http://www.howtoforge.com/set-up-ssh-with-public-key-authentication-debian-etch и www.howtoforge.com /ssh_key_based_logins_putty), отключаем вход по паролю
6. Теперь нужно иметь постоянно примонтированный USB
Делается это так
sudo blkid -c /dev/null
/etc/fstab
UUID=ae614151-2654-4ca0-88ee-4fc97a62c048 /media/WD_MyBook_1 ext4 relatime,errors=remount-ro 0 1
UUID=17f5c5ce-6fde-48ce-98c7-b78d42205e9c /media/WD_MyBook_2 ext4 relatime,errors=remount-ro 0 1
8. На jessie есть проблема с локалями. Исправляем perlgeek.de/en/article/set-up-a-clean-utf8-environment
9. Устанавливам torrent-клиент transmission
sudo apt-get install transmission-daemon
sudo adduser --disabled-password transmission
sudo su transmission
transmission-daemon -f
Меняем настройки
sudo chown -R transmission:transmission ./WD_MyBook_1
sudo chown -R transmission:transmission ./WD_MyBook_2
habrahabr.ru/post/87287 trac.transmissionbt.com/wiki/Scripts/initd
Скорость скачивания в 100 MBit сети провайдера — около 4.5 MB/s
10. Устанавливаем NFS
sudo apt-get install nfs-kernel-server portmap nfs-common
www.cyberciti.biz/faq/how-to-ubuntu-nfs-server-configuration-howto
На WDTV Live Streaming нужно включить поддержку Linux Shares
11. Устанавливаем Lighthpd server и PHP www.penguintutor.com/linux/light-webserver
12. Устанавливаем FTP, настраиваем анонимный доступ внутри локальной сети.
sudo apt-get install vsftpd
Правим vsftpd.conf
anonymous_enable=YES
write_enable=YES
anon_root=/media/
anon_umask=0000
chown_upload_mode=0644
anon_other_write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
use_localtime=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=transmission
ftp_username=transmission
async_abor_enable=YES
Скорость скачивания по FTP в локальной 100 MBit сети — около 7 MB/s
13. Следующие шаги требуют сборки из исходников, потому устанавливаем git и checkinstall
sudo apt-get install git-core checkinstall
14. Собираем последнюю версию MiniDLNA
собираем x264 ./configure --enable-shared --prefix=/shared && make && sudo checkinstall --pkgname=x264 --pkgversion «1:0.git`date +%Y%m%d`+`git rev-list HEAD -n 1 | head -c 7`» --backup=no --default --fstrans=no
собираем ffmpeg
sudo apt-get install build-essential libfaac-dev libfaad-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev texi2html yasm zlib1g-dev libsqlite3-dev libflac-dev
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-x11grab --extra-cflags="-I/shared/include" --extra-ldflags="-L/shared/lib" --extra-libs=-ldl --enable-shared --disable-static
make
sudo checkinstall -fstrans=no -install=yes -pkgname=ffmpeg -pkgversion «1:0.svn`date +%Y%m%d`« -default
собираем MiniDLNA
./configure
make
sudo checkinstall -fstrans=no -install=yes -pkgname=MiniDLNA -pkgversion «1:0.svn`date +%Y%m%d`« -default
Меняем настройки MiniDLNA
media_dir=V,/media
friendly_name=Raspberry DLNA Server
db_dir=/home/pi/.minidlna
log_dir=/home/pi/.minidlna/log
На Android смотрю фильмы через BubbleUPNP
15. Устанавливаем Firebird 2.5 mapopa.blogspot.com/2012/11/debian-and-raspberry-pi-love-small-arm.html
16. Дополнительные плюшки:
15.1. я установил etherwake, и по необходимости вывожу основной компьютер из спячки удаленно по SSH
15.2. написал на PHP скрипт для автоматического переключения на резервный ADSL канал, если основной провайдер умрёт (роутер ASUS DSL-N10 B1 не делает это автоматически), поместил в сron
15.3. Как оказалось, WDTV Live Streaming не умеет показывать BD Remux, но прекрасно показывает BD-ISO. Потому ремуксы перегоняем в ISO genisoimage -allow-limited-size -o .iso
15.4. Отключил лишние tty
15.5. Собрал elinks2
15.6. Написал консольную версию игры 2048 github.com/AndriiZ/2048
Планы:
1. Подключить mono как fastcgi, поднять ASP.NET MVC сайт
2. Подключить датчик температуры и влажности. Сделано github.com/AndriiZ/RaspberryPI/tree/master/SmartHouse
3. Поднять интернет-радио на Raspberry
Итого: Raspberry Pi скачивает и раздает контент, WDTV Live Streaming и планшет его показывает. И тишина, потому что компьютер, съемный винчестер и Raspberry Pi стоят в отдельном кабинете.
Raspberry Pi — прекрасная штука для экспериментов.