Cubietruck. Уютный, домашний сервер

в 19:58, , рубрики: cubietruck, cubrieboard3, linux, Гаджеты. Устройства для гиков, мини-компьютер, настройка, настройка сервера, сервер, метки: , , , , ,

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.
Характеристики уже проскакивали на хабре habrahabr.ru/post/186576/
В дополнение я купил 1Тб SATA HDD Hitachi 7K1000
Т.к. на хабре не видел полного руководства по настройке данного девайса, решил сделать свой гайд с го и гейшами.

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

Для CubieTruck'а существует несколько вариантов установки системы.
Я сегодня буду рассматривать установку и настройку Cubian.

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

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

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

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

$ ~/Bin/LiveSuit/LiveSuit.sh

скрин

Cubietruck. Уютный, домашний сервер

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

скрин

Cubietruck. Уютный, домашний сервер

Переводите устройство в режим EFL
1. Зажимаете кнопку EFL

скрин

Cubietruck. Уютный, домашний сервер

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

скрин

Cubietruck. Уютный, домашний сервер

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

скрин

Cubietruck. Уютный, домашний сервер

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

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

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

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

скрин

Cubietruck. Уютный, домашний сервер

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

скрин

Cubietruck. Уютный, домашний сервер

Переводите устройство в режим EFL
1. Зажимаете кнопку EFL

скрин

Cubietruck. Уютный, домашний сервер

скрин

Cubietruck. Уютный, домашний сервер

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: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.
Вы можете воспользоватся скриптом 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.

Автор: yadem

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js