[Из песочницы] Cubietruck. Уютный, домашний сервер

1a9c3ae831419e5ed62b0c44e5c86a15.jpgНедавно купил вот такую красоту.Поигрался с Android на ней и решил сделать домашний сервер на замену RaspberryPI.*Картинка не моя… если разберу хлам — сделаю свою. От автора, т.е. меня: Не судите строго, это мой первая статья.Буду рад конструктивной критике и помощи от более скиллованых пользователей! Заранее Спасибо! Ну чтож, начнем пожалуй! Введение Установка СистемыУстановка системы в NAND Установка системы на SD Перенос системы в SATA Перенос системы в NAND Первое включениеСмена порта SSH Настройка сети Установка часового пояса Автоматическое монтирование раздела HDD Настройка сервераУстановка Nginx + php5-fpm + mysql Установка торрент клиента Transmission Установка Samba Удаленное управление Ajenti/Webmin 1. Введение Основной задачей была замена малинки на что-то более шустрое и с нормальной скоростью доступа к жесткому диску, т.к. основное предназначение сего сервера — это файлопомойка, медиасервер, торрентокачалка.Остановался на Cubietruck, она-же Cubieboard3.Характеристики уже проскакивали на хабре habrahabr.ru/post/186576/В дополнение я купил 1Тб SATA HDD Hitachi 7K1000Т.к. на хабре не видел полного руководства по настройке данного девайса, решил сделать свой гайд с го и гейшами.2. Установка системы Для CubieTruck’а существует несколько вариантов установки системы.Я сегодня буду рассматривать установку и настройку Cubian.Установка системы в NAND Мне лично такой вариант установки не очень нравится, т.к. NAND имеет ограниченное количество циклов записи/перезаписи, а если у вас будет стоять SQL сервер, то эти циклы очень быстро закончатся. ИМХО! Скачиваете необходимый образ здесьЕсли вы вользователь Linux, то: Берете отсюда LinuxSuite (есть 32 и 64-битные версии)Запускаете Livesuite $ ~/Bin/LiveSuit/LiveSuit.sh скрин 0729c5176e64d0685aae99cfa111ec1b.png Выбирате образ для заливкискрин 1a7f6b5801cba3b2e2c2dae888492262.png Переводите устройство в режим EFL1. Зажимаете кнопку EFL

скрин 62d7f5f7e759e715f257dc03b14cca01.png 2. Втыкаете miniusb кабель в плату и ждете запрос от Livesuite.ВНИМАНИЕ: многие USB порты не дадут нужного питания плате, поэтому перед тем как нажать «Да» — подключите плату к блоку питания (рекомендуется 5В не менее 3А)3. Жмете «Да«скрин 191cd68070296b0720f3f185e848ac03.png Дожидаетесь пока образ полностью зальется на ваше устройство.

скрин 2a36906715485219a4a1281c02dcd648.png Теперь можете отключать устройство от ПК и запускать отдельно))Если вы пользователь Windows, то:  — берете отсюда PhoenixSuite.Запускаете PhoenixSuite:

скрин 034ea99586345d5b486f2e6231bb36b3.png Выбирате образ для заливкискрин 93fdd2c96faeb030b4f0cd818d704502.png Переводите устройство в режим EFL1. Зажимаете кнопку EFLскрин 62d7f5f7e759e715f257dc03b14cca01.png скрин 217cb19e104dd8b2691b8aa628f05ff3.png 2. Втыкаете miniusb кабель в плату и ждете запрос от Livesuite.ВНИМАНИЕ: многие USB порты не дадут нужного питания плате, поэтому перед тем как нажать «Да» — подключите плату к блоку питания (рекомендуется 5В не менее 3А)3. Жмете «Да«Ждете пока образ полностью зальется на ваше устройство.Теперь можете отключать устройство от ПК и запускать отдельно.

Установка системы на SD карту Скачиваем необходимый образ отсюда: Я для примера буду пользоваться дистрибутивом Cubian.Если у вас Linux: Разархивируйте скачанный архив.Запишите образ на вашу SD карту dd if=путь_к_образу of=/dev/ваша_sd_карта bs=4096; sync Например: dd if=/home/pupkin/Cubian-base-r5-a20-ct.img of=/dev/sdb1 bs=4096; sync По окончании можете вытащить карту и установить её в ваш Cubietruck.Если вы пользователь Windows: — Скачиваете Image writer, github.com/downloads/openSUSE/kiwi/ImageWriter.exe или cubieplayer.github.io/Cubian/tools/; — Разархивируйте полученный файл; — Переименуйте файл из img в raw (программа находит только такое расширение).— Запишите образ на вашу SD карту:

Перенос системы на SATA диск Для переноса системы из NAND раздела на SATA диск вам потребуется выполнить несколько команд: sudo su — root логинимся под рутом mkdir /tmp/1 /tmp/target создаем папки для монтирования разделов mount /dev/nandb /tmp/1 монтируем NAND раздел mkfs.ext4 /dev/sda1 форматируем SATA раздел в ext4 mount /dev/sda1 /tmp/target монтируем SATA разделПеремещаем систему

(cd /tmp/1; tar --backup -c *) |tar -C /tmp/target -xv Изменяем настройки загрузки

mount /dev/nanda /mnt/ nano /mnt/uEnv.txt (Замените root=/dev/sda1)В итоге, файл должен выглёдеть так: cat /mnt/uEnv.txt root=/dev/sda1 extraargs=console=tty0 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:1280×720p50 rootwait panic=10 rootfstype=ext4 rootflags=discard sync Синхронизируем наши изменения umount /mnt Отмонтируем раздел reboot и ребут! Перенос системы с SD карты в NAND раздел После копирования образа и загрузки с SD карты вы можете перенести вашу систему в NAND раздел с помощью одной простой комманды: sudo ~/nandinstall/install.sh Если в вашем дистрибутиве нет такого скрипта вы можете его скачать и установить:

apt-get install cubian-nandinstall && sudo cubian-nandinstall 3. Первое включение Итак зайдя в свой домашний роутер, я увидел, что мой кубик получил адрес 192.168.0.108Подключаемся к нему. Если вы подключаетесь с Linux машины, то открываем терминал и пишем ssh -p 36000 192.168.0.108 -l cubie Где 36000, порт для SSH соединения. В целях безопасности выбран нестандартный порт, как его поменять написано здесь. cubie — это логин пользователя, пароль тоже cubieПосле чего должно пройти соединение и появиться сообщение о добавлении ключа SSH соединения в базу данных ключей. Оно появляется только один раз, при добавлении новой комбинации ключ+устройство. Пишем yes.Если подключаемся с Windows машины, то выбираем SSH клиент по вашему вкусу, в большинстве случаев это Putty.Подключаемся и первым делом меняем пароль пользователя:

sudo passwd cubie И создаем пользователя root, который по умолчанию отсутствовал в целях безопасности, но нам он потом будет нужен, так что создадим его сейчас: sudo passwd root Замена порта подключения SSH Если вас не устраивает порт 36000 для SSH доступа, можно сменить его на стандартный порт 22: Открываем файл /etc/ssh/sshd_config sudo nano /etc/ssh/sshd_config Находим строчку Port 36000 Меняем на Port 22 Теперь кубик доступен так: ssh cubie@192.168.0.108 Настройка сети По умолчанию настройки хранятся в файле /etc/network/interfaces.Посмотрим что у нас: sudo cat /etc/network/interfaces Видим конфигурацию сети по умолчанию auto eth0 allow-hotplug eth0 iface eth0 inet dhcp auto eth0 подразумевает автоконфигурирование интерфейса при загрузкеallow-hotplug eth0 и iface eth0 inet dhcp подразумевает, что когда ядро Linux определит физический интерфейс eth0, строка allow-hotplug поднимет его, а строка iface присвоит ему адрес по DHCP.Внимание! Такая конфигурация настраивает сетевой адрес по DHCP если кабель подключен при загрузке. Если же кабель при загрузке не был подключен, то загрузка блокируется на одну минуту для ожидания таймаута DHCP. Таким образом, если вам совершенно не нужна проводная сеть, то закомментируйте или удалите строчку auto eth0 в /etc/network/interfaces, это секоомит вам время при загрузке.Чтобы закомментировать просто добавьте # перед auto eth0, это выглядит так #auto eth0Вы все еще сможете поднять и настроить интерфейс вручную, выполнив команду ifup eth0 Если вам требуется прописать постоянный адрес кубику, то вот пример конфигурации allow-hotplug eth0 iface eth0 inet static address 192.168.1.110 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 192.168.1.1 Хотя я больше склоняюсь к автоматическому присвоению адреса от роутера.Настройка wi-fiЗагрузка модуля

modprobe bcmdhd Для того, чтобы wi-fi автомачтиески загружался при старте системы добавьте строку «bcmdhd» в конец файла /etc/modules.

Примеры команд для использования wi-fi:

iwlist scan iwconfig wlan0 essid «ssid» key xxxx iwconfig wlan0 ifconfig wlan0 up dhclient wlan0 Установка часового пояса Задаем часовой пояс dpkg-reconfigure tzdata Добавляем сервера: sudo nano /etc/ntp.conf server 0.debian.pool.ntp.org iburst server 1.debian.pool.ntp.org iburst server 0.ru.pool.ntp.org iburst server 1.ru.pool.ntp.org iburst  — ближайшие сервера можете взять отсюда — www.pool.ntp.org/

sudo /etc/init.d/ntp start Автоматическое монтирование раздела HDD Статей о монтировании разделов существует уже огромное количество, но т.к. мне это тоже понадобилось, добавлю для полноты картины.Создаем папку, куда будет смонтирован HDD

sudo mkdir /media/files Даем право доступа на чтение/запись для всех пользователей sudo chmod 777 /media/files Чтобы посмотреть какие разделы у нас на hdd пишем

sudo fdisk -l Смотрим в конец и видим примерно следующееfdsik -l Disk /dev/sda: 1000.2 GB, 1000204886016 bytes 255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors Units = sectors of 1×512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0×673511d7

Device Boot Start End Blocks Id System /dev/sda1 2048 33556479 16777216 83 Linux /dev/sda2 33556480 1953525167 959984344 5 Extended /dev/sda5 33558528 1953525167 959983320 83 Linux У меня три раздела на HDD, я буду монтировать третий (/dev/sda5)Узнаем UUID нашего раздела: sudo blkid Пример вывода: blkid /dev/nanda: SEC_TYPE=«msdos» LABEL=«Volumn» TYPE=«vfat» /dev/nandb: UUID=«fc870bf6-cf02–4f17-aab6-a2ee56137668» TYPE=«ext4» /dev/sda1: UUID=«df0f786f-4b74–4710-a128–412b81a6bece» TYPE=«ext4» /dev/sda5: UUID=»4dc5f707-d7fa-4a48-ad32-efddb23cbf97» TYPE=«ext4» Нам нужна строчка /dev/sda5, копируем все что в кавычках

4dc5f707-d7fa-4a48-ad32-efddb23cbf97 Помните у вас эта строчка будет иной! Далее открываем /etc/fstab: sudo nano /etc/fstab Добавляем в самый конец: UUID=4dc5f707-d7fa-4a48-ad32-efddb23cbf97 /media/files ext4 defaults, acl, user, user_xattr, errors=remount-ro * аттрибуты выставляете по своему вкусуЗаписи разделяем либо пробелом, либо табуляциейПерезагружаемся:

sudo reboot После перезагрузки проверяем mount mount /dev/root on / type ext4 (rw, relatime, discard, data=ordered)devtmpfs on /dev type devtmpfs (rw, relatime, size=934508k, nr_inodes=137526, mode=755)tmpfs on /run type tmpfs (rw, nosuid, noexec, relatime, size=186924k, mode=755)tmpfs on /run/lock type tmpfs (rw, nosuid, nodev, noexec, relatime, size=5120k)proc on /proc type proc (rw, nosuid, nodev, noexec, relatime)sysfs on /sys type sysfs (rw, nosuid, nodev, noexec, relatime)tmpfs on /run/shm type tmpfs (rw, nosuid, nodev, noexec, relatime, size=373840k)devpts on /dev/pts type devpts (rw, nosuid, noexec, relatime, gid=5, mode=620, ptmxmode=000)tmpfs on /tmp type tmpfs (rw, relatime)tmpfs on /var/tmp type tmpfs (rw, relatime)/dev/sda5 on /media/files type ext4 (rw, nosuid, nodev, noexec, relatime, errors=remount-ro, data=ordered)

Видим, что третий раздел смонтирован в нужную папку.4. Настройка сервера Ну и так как у меня кубик все-же это сервер — настраиваем samba, nginx, transmission.Вы можете воспользоватся скриптом github.com/igorpecovnik/Debian-micro-home-server sudo apt-get -y install git cd ~ git clone https://github.com/igorpecovnik/Debian-micro-home-server chmod +x ./Debian-micro-home-server/install.sh cd ./Debian-micro-home-server sudo ./install.sh Или установить только то что нужно

Установка Nginx + php5-fpm + mysql Устанавливаем nginx: sudo apt-get install nginx Запускаем sudo /etc/init.d/nginx start Открываем браузер, пишем адрес кубика.Видим следующую надписьWelcome to nginx!

Сервер запущенДля примера анши сайты будут хранится на уже примонтированном жестком диске.Для этого нужно поправить конфиг nginx

sudo nano /etc/nginx/sites-available/default Находим строчку root /usr/share/nginx/www Меняем на root /media/files/www Сохраняем, закрываем редкаторНе забываем дать доступ пользователю nginx’a к папке: sudo chown www-data -R /media/files/www/ sudo chmod 0755 -R /media/files/www/ Перезапускаем nginx

sudo /etc/init.d/nginx restart или sudo service nginx restart Для статичных сайтов этого, в принципе, достаточно.Если вам необходимо php скрипты — продолжаем редактировать /etc/nginx/sites-available/defaultНаходим в файле строку: index index.html index.htm Через пробел добавляем index.php Теперь включим возможность обработки php.

Находим блок # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # fastcgi_split_path_info ^(.+\.php)(/.+)$; # # NOTE: You should have «cgi.fix_pathinfo = 0;» in php.ini # # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php5-fpm: # fastcgi_pass unix:/var/run/php5-fpm.sock; # fastcgi_index index.php; # include fastcgi_params; #} Меняем на # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; # # NOTE: You should have «cgi.fix_pathinfo = 0;» in php.ini # # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } Устанавливаем mysql sudo apt-get -y install mysql-client mysql-server openssl libsasl2-modules Устанавливаем php5-fpm и модули sudo apt-get install -y php5-fpm sudo apt-get install -y php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-memcached php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached sudo apt-get install -y php-apc sudo apt-get install -y fcgiwrap Установка торрент клиента Transmission Установка Transmission-daemon sudo apt-get install transmission-daemon После завершения установки сервис автоматически запускается с настройками по умолчанию, остановим его

sudo /etc/init.d/transmission-daemon stop или service transmission-daemon stop Теперь отредактируем конфиг

sudo nano /etc/transmission-daemon/settings.json Все параметры рассматривать не будем, самые основные«download-dir»:»/var/lib/transmission-daemon/downloads«Путь к закачиваемым файламМеняем на свой, например:

«download-dir»:»/mnt/hdd» P.s. Надеюсь у вас по этому пути уже смонтирован жесткий дискРазрешаем форвардинг, не забывая включить UPnP в своем роутере

«port-forwarding-enabled»: false, Меняем на «port-forwarding-enabled»: true Если хотим заходить в веб интерфейс по паролю, оставляем:

«rpc-enabled»: true иначе меняем на: «rpc-enabled»: false Удаляем все, что в кавычках, пишем вместо этого желаемый пароль. Пароль при запуске демона зашифруется.

«rpc-password»:»{f40c259f547fb2b99f7faa1e27d6e9b31905e9c1DcVjhWHD» Например: «rpc-password»: «cubietruck» Порт, на который вешаем web интерфейс

«rpc-port»: 9091 Имя пользователя:

«rpc-username»: «transmission» меняем на свое понравившееся: «rpc-username»: «pupkin» Оставляем, если хотим, чтобы к веб интерфейсу был доступ только с локальной машины:

«rpc-whitelist-enabled»: true иначе меняем «rpc-whitelist-enabled»: false Сохраняем конфиг

Запускаем сервис

sudo /etc/init.d/transmission-daemon start или service transmission-daemon start Теперь проверим запустился ли сервис и веб интерфейс, открываем в браузере адрес

http://ip_вашего_кубика:9091 Если видим приглашение ввести логин и пароль, значит transmission работает.Установка Samba sudo apt-get install samba samba-common-bin Так как мой кубик находится в домашней сети, я решил не устанавливать пароль на доступ к папкам, а просто настроил публичный шаринг для всей сети.Для этого открываем файл smb.conf: sudo nano /etc/samba/smb.conf Вместо всего имеющегося содержимого пишем:

[global] workgroup = WORKGROUP guest ok = yes netbios name = cubieT security = share browseable = yes

[files] path = /media/files writeable = yes browseable = yes Сохраняем. Перезапускаем Samba:

sudo /etc/init.d/samba restart С этого момента в вашей сети появилось новое устройство cubieT, которое имеет папку files.В ней Вы можете создать любые файлы, которые будут доступны для просмотра во всей сети с помощью браузера.

5. Удаленное управление Ajenti/Webmin Webmin лидер на рынке свободного серверного ПО для администрирования, имеет множество подключаемых модулей на любой вкус.Рассмотрим его установкуДобавим репозиторий Webmin в список репозиториев sudo nano /etc/apt/sources.list Вставляем в конец списка следующие строки

deb http://download.webmin.com/download/repository sarge contrib deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib Сохраняем, выходим из редактора.Добавляем ключ репозитория в список ключей, для этого нужно быть под рутом.Включаем суперюзера, переходим в домашнюю папку root, скачиваем ключ, устанавливаем. sudo su cd /root wget http://www.webmin.com/jcameron-key.asc apt-key add jcameron-key.asc Обновляем список пакетов, устанавливаем webmin

sudo apt-get update && apt-get install webmin Все зависимости установятся автоматически.Открываем браузер, пишем

https://ip_вашего_кубика:10000 Браузер ругается и предлагает покинуть сайт, но мы добавляем сайт в доверенную зону и входим.Пробуем сначала войти пользователем cubie, если не получается, то рутом.Можно отключить шифрование (https): Открываем файл конфигурации webmin

sudo nano /etc/webmin/miniserv.conf находим строчку ssl=1 1 меняем на 0Перезапускаем webmin sudo /etc/init.d/webmin restart Теперь webmin работает по адресу http://ip_вашего_кубика:10000 Если вас не устраивает webmin, можете попробовать ajenti. Тем более, что никаких дополнительных движений делать не нужно, ajenti уже установлен в Cubian, нужно лишь обновить систему и он заработает.После обновления системы будет доступен по адресу

http://ip_вашего_кубика:8000 ***В планах разобраться с возможностями GPIO, т.к. на малинке был организован небольшой логгер данных с датчиков DHT22 и DS18B20.

© Habrahabr.ru