Cubietruck. Уютный, домашний сервер
Недавно купил вот такую красоту.
Поигрался с 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
Выбирате образ для заливки
Переводите устройство в режим 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, 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
монтируем NAND раздел
mount /dev/nandb /tmp/1
форматируем SATA раздел в ext4
mkfs.ext4 /dev/sda1
монтируем SATA раздел
mount /dev/sda1 /tmp/target
Перемещаем систему
(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
У меня три раздела на 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:
Если видим приглашение ввести логин и пароль, значит 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:
Браузер ругается и предлагает покинуть сайт, но мы добавляем сайт в доверенную зону и входим.
Пробуем сначала войти пользователем cubie, если не получается, то рутом.
Можно отключить шифрование (https):
Открываем файл конфигурации webmin
sudo nano /etc/webmin/miniserv.conf
находим строчку
ssl=1
1 меняем на 0
Перезапускаем webmin
sudo /etc/init.d/webmin restart
Теперь webmin работает по адресу
http:
Если вас не устраивает webmin, можете попробовать ajenti. Тем более, что никаких дополнительных движений делать не нужно, ajenti уже установлен в Cubian, нужно лишь обновить систему и он заработает.
После обновления системы будет доступен по адресу
http:
***В планах разобраться с возможностями GPIO, т.к. на малинке был организован небольшой логгер данных с датчиков DHT22 и DS18B20.
http://habrahabr.ru/post/225371/
|