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

створюємо папки для монтування розділів
 
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.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.