...

воскресенье, 8 июня 2014 г.

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



Недавно купил вот такую красоту.

Поигрался с Android на ней и решил сделать домашний сервер на замену RaspberryPI.



*Картинка не моя… если разберу хлам — сделаю свою.


От автора, т.е. меня:

Не судите строго, это мой первая статья.

Буду рад конструктивной критике и помощи от более скиллованых пользователей!

Заранее Спасибо!




Ну чтож, начнем пожалуй!


  1. Введение

  2. Установка Системы


    • Установка системы в NAND

    • Установка системы на SD

    • Перенос системы в SATA

    • Перенос системы в NAND



  3. Первое включение


    • Смена порта SSH

    • Настройка сети

    • Установка часового пояса

    • Автоматическое монтирование раздела HDD



  4. Настройка сервера


    • Установка Nginx + php5-fpm + mysql

    • Установка торрент клиента Transmission

    • Установка Samba



  5. Удаленное управление Ajenti/Webmin


1. Введение




Основной задачей была замена малинки на что-то более шустрое и с нормальной скоростью доступа к жесткому диску, т.к. основное предназначение сего сервера — это файлопомойка, медиасервер, торрентокачалка.

Остановался на Cubietruck, она-же Cubieboard3.

Характеристики уже проскакивали на хабре http://ift.tt/1aEfi5g

В дополнение я купил 1Тб SATA HDD Hitachi 7K1000

Т.к. на хабре не видел полного руководства по настройке данного девайса, решил сделать свой гайд с го и гейшами.

2. Установка системы




Для CubieTruck'а существует несколько вариантов установки системы.

Я сегодня буду рассматривать установку и настройку Cubian.

Установка системы в NAND




Мне лично такой вариант установки не очень нравится, т.к. NAND имеет ограниченное количество циклов записи/перезаписи, а если у вас будет стоять SQL сервер, то эти циклы очень быстро закончатся. ИМХО!

Скачиваете необходимый образ здесь

Если вы вользователь Linux, то:



Берете отсюда LinuxSuite (есть 32 и 64-битные версии)

Запускаете Livesuite

$ ~/Bin/LiveSuit/LiveSuit.sh




скрин




Выбирате образ для заливки

скрин


Переводите устройство в режим EFL

1. Зажимаете кнопку EFL


скрин




2. Втыкаете miniusb кабель в плату и ждете запрос от Livesuite.

ВНИМАНИЕ: многие USB порты не дадут нужного питания плате, поэтому перед тем как нажать «Да» — подключите плату к блоку питания (рекомендуется 5В не менее 3А)

3. Жмете «Да»

скрин


Дожидаетесь пока образ полностью зальется на ваше устройство.


скрин




Теперь можете отключать устройство от ПК и запускать отдельно ))
Если вы пользователь Windows, то:



— берете отсюда PhoenixSuite.

Запускаете PhoenixSuite:


скрин




Выбирате образ для заливки

скрин




Переводите устройство в режим EFL

1. Зажимаете кнопку EFL

скрин




скрин




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, http://ift.tt/TsczoU или http://ift.tt/1q7B05F;

— Разархивируйте полученный файл;

— Переименуйте файл из 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:1280x720p50 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: 0x673511d7

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.

Вы можете воспользоватся скриптом http://ift.tt/TsczoX

sudo apt-get -y install git
cd ~
git clone http://ift.tt/1q7B05N
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://ift.tt/RQvMJi sarge contrib
deb http://ift.tt/RQvMZy sarge contrib




Сохраняем, выходим из редактора.

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

Включаем суперюзера, переходим в домашнюю папку root, скачиваем ключ, устанавливаем.

sudo su
cd /root
wget http://ift.tt/RQvJNA
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.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий