Превращаем старенький компьютер в домашний медиасервер с помощью samba, minidlna и transmission. У Вас есть компьютер десятилетней давности и его жалко выбросить. Сделаем из него небольшой медиасервер. Pentium-4 2GHz, 1GB RAM вполне подойдет. Вам понадобится большой харддиск, скажем на 1TB, мне, правда, понадобился еще SATA контроллер, так как на материнке его не было.
Установим на компьютер CentOS 6 Minimal. Я устанавливал 32-bit’ную версию, так как железо не поддерживает 64-bit’ную. В процессе установки под партиции /, /boot, swap был отведен старенький PATA харддиск на 60GB. Новый 1TB диск — партиция /home. Подключаем нужные нам репозитории.
Репозиторий EPEL (тут находится transmission-daemon — торрент сервер, который будет скачивать нам медиаконтент):
yum install epel-release
Репозиторий NUX (здесь minidlna — сервер, транслирующий скаченный контент в локальную сеть):
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/i386/nux-dextop-release-0-3.el6.nux.noarch.rpm
Проверим, что все нужные репозитории подключены.
yum repolist
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Loaded plugins: fastestmirror Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.corbina.net * epel: mirror.awanti.com * extras: mirror.corbina.net * nux-dextop: mirror.li.nux.ro * updates: mirror.corbina.net repo id repo name status base CentOS-6 - Base 5,079 epel Extra Packages for Enterprise Linux 6 - i386 10,084 extras CentOS-6 - Extras 20 nux-dextop Nux.Ro RPMs for general desktop use 1,546 updates CentOS-6 - Updates 593 repolist: 22,114 |
Так как сервер будет у нас в локальной сети, то для простоты можно отключить встроенный файрвол. Если Вы не хотите его отключать, тут можно ознакомиться с примерами iptables для нижеописанных сервисов.
service iptables stop
service ip6tables stop
chkconfig --level 2345 iptables off
chkconfig --level 2345 ip6tables off
Теперь установим и настроим нужные нам пакеты: Samba, minidlna, transmission.
Установка и настройка Samba
yum -y install samba
Создадим директорию на разделе /home для нашего медиасервера и сделаем её доступной для записи всем.
mkdir /home/store
chmod a+w /home/store
Поскольку конфигурационный файл Samba огромен и задачи описать его тут не стоит, я привожу минимальный набор параметров, который небходим для работы. Вы можете скопировать эти параметры в Ваш чистый конфигурационный файл, предварительно сделав копию оригинального.
cp /etc/samba/smb.conf /etc/samba/smb.conf.ORIG
Далее очистим файл
cat /dev/null > /etc/samba/smb.conf
Редактиреум его
vi /etc/samba/smb.conf, вставив следующие строки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[global] load printers = no show add printer wizard = no printing = bsd printcap name = /dev/null disable spoolss = yes workgroup = HOME server string = Samba Linux Server for files hosts allow = 192.168.1. 127. log file = /var/log/samba/%m.log max log size = 50 security = share socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 dns proxy = no [files] path = /home/store public = yes writable = yes printable = no create mask = 0777 |
Разберем некоторые параметры:
2-6 строки убирают ошибку CUPS сервера описанную здесь.
7 строка определяет рабочую группу, в которой будут взаимодействовать все Ваши домашние компьютеры. Её можно посмотреть в настройках сети Вашего компьютера или ноутбука с Windows.
9 строка — сети, которым предоставлен доступ к ресурсам Samba. Пропишите тут свой адрес, если он отличается от 192.168.1.
12 — не вдаваясь в подробности, это режим работы Samba. В данном случае расшаривается директория без запроса логинов и паролей.
15 — имя нашей «шары». В данном случае files, можно задать любое, например media или MOIFILMY.
16 — путь к открываемой директории.
Теперь запустим Samba.
service smb start
service nmb start
Проверим с другого компьютера, что «шара» видна и есть возможность создавать и удалять файлы и папки. Например, в проводнике Windows откроем сеть -> имя медиасервера -> files.
Установка и настройка minidlna
Приступим к установке и настройке медиасервера. Следующая команда установит пакет minidlna со всеми зависимостями.
yum -y install minidlna
Рассматривать весь конфигурационный файл
/etc/minidlna.conf тоже особого смысла нет. Отмечу необходимые минимальные параметры. Следующая команда покажет нам включенные параметры конфигурации minidlna.
cat /etc/minidlna.conf |grep -v ^#|tr -s "\n"
1 2 3 4 5 6 7 8 9 10 11 |
port=8200 media_dir=/home/store db_dir=/var/cache/minidlna log_dir=/var/log album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg inotify=yes enable_tivo=no strict_dlna=no notify_interval=60 serial=12345678 model_number=1 |
Пройдемся по некоторым параметрам.
1 строка — TCP-порт встроенного веб-сервера.
2 строка — самая главная настройка: директория содержащая медиаконтент. По умолчанию там /opt, тут уже прописана наша /home/store.
3 — директория для файла базы данных sqlite, используемой minidlna.
5 — имена файлов, используемых в качестве обложек. Можно добавить свои.
6 — параметр, овечающий за отслеживание новых и удаленных папок.
Если глубже покопаться в конфигурационном файле, можно найти дополнительные интересные параметры. Например классификация медиа контента. Указывается определенный префикс для сканирования файлов разного типа.
1 2 3 4 |
# A - аудио: media_dir=A,/home/store/Music # V - видео: media_dir=V,/home/store/Videos # P - изображения: media_dir=P,/home/store/Pictures # PV - изображения и видео: media_dir=РV,/home/store/digital_camera |
Теперь запустим медиасервер.
service minidlna start. В качестве проверки посмотрим log-файл.
cat /var/log/minidlna/minidlna.log Сервер сканирует все папки и записывает в базу данных. На это требуется время, которое зависит от количества Ваших медиафайлов.
1 2 3 4 5 6 7 |
[2017/10/26 17:22:45] minidlna.c:1030: warn: Starting MiniDLNA version 1.1.5. [2017/10/26 17:22:45] minidlna.c:355: warn: Creating new database at /var/cache/minidlna/files.db [2017/10/26 17:22:45] minidlna.c:1070: warn: HTTP listening on port 8200 [2017/10/26 17:22:45] scanner.c:726: warn: Scanning /home/store [2017/10/26 17:22:45] scanner.c:815: warn: Scanning /home/store finished (0 files)! [2017/10/26 17:22:45] playlist.c:125: warn: Parsing playlists... [2017/10/26 17:22:45] playlist.c:259: warn: Finished parsing playlists. |
Все работает! Идем дальше.
Установка и настройка transmission-daemon
Transmission-daemon — торрент сервер, который будет скачивать нам медиаконтент и не только.
yum -y install transmission-daemon
Устанавливает торрент сервер, а также все нужные ему зависимости. Теперь создадим конфигурационный файл. Для этого запустим и остановим transmission-daemon.
service transmission-daemon start && service transmission-daemon stop
Изменим права доступа к директории и конфигурационному файлу.
chmod -R 755 /var/lib/transmission/.config/transmission
chmod 644 /var/lib/transmission/.config/transmission/settings.json
chown root:root /var/lib/transmission/.config/transmission
chown root:root /var/lib/transmission/.config/transmission/settings.json
Далее по сложившейся традиции разберем важные параметры конфигурационного файла торрент сервера /var/lib/transmission/.config/transmission/settings.json.
Директория для скаченных файлов.
"download-dir": "/home/store/files/new",
Директория для скачиваемых файлов и её активация true или false.
"incomplete-dir": "/home/store/files/running",
"incomplete-dir-enabled": true,
Активация авторизации для доступа к веб-интерфейсу, true или false.
"rpc-authentication-required": false,
Активация web-интерфейса.
"rpc-enabled": true,
Имя пользователя.
"rpc-username": "user_name",
Пароль пользователя (прописывается прямым текстом, но после перезапуска демона будет зашифрован).
"rpc-password": "password",
Порт для доступа к web-интерфейсу.
"rpc-port": 9091,
Список разрешенных ip адресов для доступа к web-интерфейсу.
"rpc-whitelist": "192.168.1.*,127.0.0.1",
"rpc-whitelist-enabled": false,
Директория для поключения торрент-файлов и её активация true или false
"watch-dir": "/home/store/files/torrent",
"watch-dir-enabled": true
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
{ "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": true, "blocklist-url": "http://www.example.com/blocklist", "cache-size-mb": 2, "dht-enabled": true, "download-dir": "/home/store/files/new", "encryption": 1, "idle-seeding-limit": 30, "idle-seeding-limit-enabled": false, "incomplete-dir": "/home/store/files/running", "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": "{36f3779447a9c5f08a25bfeba052f372f7fa4515AUAHIFBn", "rpc-port": 9091, "rpc-username": "", "rpc-whitelist": "127.0.0.1,192.168.33.*", "rpc-whitelist-enabled": false, "script-torrent-done-enabled": false, "script-torrent-done-filename": "", "speed-limit-down": 100, "speed-limit-down-enabled": false, "speed-limit-up": 100, "speed-limit-up-enabled": false, "start-added-torrents": true, "trash-original-torrent-files": false, "umask": 18, "upload-slots-per-torrent": 14, "watch-dir": "/home/store/files/torrent", "watch-dir-enabled": true } |
Создаем прописанные нами директории и меняем им права доступа.
mkdir -p /home/store/files/{running,torrent,new}
chmod -R 755 /home/store/files
chown -R transmission:transmission /home/store/files
(Директория /home/store/files/ никак не относится к «шаре» в настройках Samba, так получилось 🙂 )
Запускаем торрент сервер.
service transmission-daemon start
Использование
При скачивании торрент-файла на другом компьютере с какого-либо ресурса выбираем через сеть папку для сохранения files/torrent.
Так это выглядит в Windows.
Так в Linux.
Торрент сервер автоматически подхватывает скаченный файл. Меняя ему расширение на added, добавляет его в список закачек. Этим можно управлять как обычным торрент-клиентом, набрав в браузере IP-адрес медиасервера с портом 9091 или тем, что Вы прописале в конфиге. Например 192.168.33.130:9091. Подождём завершения загрузки.
Далее запустив на своем телевизоре, подключенном к локальной сети, службу воспроизведения с медиасервера, увидим примерно такую картину.
Не забудьте включить установленные и настроенные сервисы в автозагрузку сервера.
chkconfig --level 3 nmb on
chkconfig --level 3 smb on
chkconfig --level 3 minidlna on
chkconfig --level 3 transmission-daemon on
Добавление про minidlna
Следующая команда позволит пересканировать Вашу медиатеку вручную
minidlnad -R
Не забудьте
service minidlna restart
Добавление про transmission
Если в конфиругационный файл
/var/lib/transmission/.config/transmission/settings.json
прописать следующие параметры
"dht-enabled": true,
"utp-enabled": true,
"pex-enabled": true,
"port-forwarding-enabled": true,
то торрент клиенты будут активней общаться между собой без запросов к трекеру.
Очень полезно, если провайдер блокирует трекер 😉