Как сделать из raspberry pi облачное хранилище

Обновлено: 08.07.2024

Цель данного проекта - создать компактное бесшумное устройство для домашнего использования в качестве файлового обменника локальной сети, хранилища фильмов, медиасервера DNLA, проигрывателя фильмов для телевизора без функции подключения к интернету, торрент клиента и игровой консоли. Программное обеспечение должно иметь открытую лицензию, а оборудование распространено, поддерживаться производителем или сообществом, а так же иметь перспективу для расширения функций.

Оборудование и программы

Для реализации проекта я выбрал Raspbery Pi - полноценный бесшумный компьютер размером с банковскую карту с интегрированными интерфейсами.

Полный список оборудования, который понадобится для сборки сервера:

  • Мини-компьютер Raspberry Pi 4 model B (4 или 8 ГБ ОЗУ)
  • Блок питания USB Type-C 5V 3A
  • Корпус с вентилятором и SATA разъемом
  • Жесткий диск от ноутбука с SATA интерфейсом
  • Адаптер SATA-USB или корпус для жесткого диска (только для начального этапа)
  • Внешний WiFi-адаптер с USB разъемом
  • Беспроводная мини-клавиатура
  • Короткий HDMI-miniHDMI кабель
  • Длинный HDMI-HDMI кабель
  • USB-разветвитель с внешним питанием (опционально)

Пpограммы, которые используются в проекте:

  • Raspberry Pi OS Imager
  • Raspberry Pi OS Lite
  • Драйвер X-C1 for Raspbian
  • Драйвер RTL8811CU for Raspbian
  • Пакет Samba Common Bin
  • Пакет VSFTPD
  • Пакет WebAdmin
  • Пакет Kodi

Стоимость описанного комплекта на декабрь 2021 года составляет около 20 тысяч рублей.

Готовых устройств с похожим функционалом (SMB-сервер, FTP-сервер, DNLA-сервер, Torrent-клиент, HDMI-выход) в одном корпусе я не нашел, хотя похожий функционал без прямого подключения к телевизору по HDMI-кабелю можно получить от сетевого хранилища NAS QNAP D1 (около 15 тысяч рублей без дисков). А если подключить к сетевому хранилищу и телевизору медиаплеер Blaupunkt B-Stream Box (около 6.5 тысячи рублей), то получится полный функционал, описанный во вступлении к статье.

Так же на рынке было устройство QNAP HS-251+, которое полностью покрывало необходимый функционал, но оно снято с производства, а все современные устройства не комплектуются HDMI выходом, так как предполагается использование только технологии DNLA.

Мини-компьютер Raspberry Pi 4 model B

NAS and Media server at Raspberry PI - 01

Я покупал плату в составе стартового набора в магазине Амперкот в сентябре 2021 за 9990 рублей.

Блок питания USB Type-C 5V 3A

NAS and Media server at Raspberry PI - 02

Так как блок питания из стартового набора, указанного выше, не соответствовал заявленным характеристикам, а именно не давал нужного тока для питания всех устройств: платы, жесткого диска, WiFi-адаптера и клавиатуры, то пришлось заказать другой блок питания. В октябре 2021 года я брал его за 375 рублей.

Корпус Geekworm NASPi с кулером и SATA разъемом

NAS and Media server at Raspberry PI - 03

Очень качественный корпус из крашенного алюминия, в комплекте с корпусом идут 2 платы расширения (SATA и разветвитель портов), вентилятор, а так же необходимые шлейфы и крепеж. В сентябре 2021 года я брал его за 4300 рублей.

Жесткий диск от ноутбука с SATA интерфейсом

NAS and Media server at Raspberry PI - 04

Жесткий диск я взял от старого ноутбука, в котором заменил HDD на SSD. То есть сам старый диск HDD 2.5 на 750 ГБ мне достался бесплатно, хотя такой же новый стоил бы около 2500 рублей, а вот новый диск SSD для ноутбука на 500 ГБ в декабре 2021 года мне стоил 5300 рублей.

Адаптер SATA-USB или корпус для жесткого диска

NAS and Media server at Raspberry PI - 05

Внешний WiFi-адаптер с USB разъемом

NAS and Media server at Raspberry PI - 06

Внешний WiFi адаптер нужен для усиления приема WiFi сигнала, так как встроенная на плату антенна очень маленькая и ловит в очень ограниченном радиусе. В добавок к этому, корпус из алюминия экранирует встроенную антенну, в результате чего в собранном виде устройство не может найти никакой WiFi сигнал. В октябре 2021 года я брал этот адаптер с антенной за 370 рублей.

Беспроводная мини-клавиатура

NAS and Media server at Raspberry PI - 07

Беспроводная клавиатура с тачпэдом позволяет управлять устройством без проводов, расположившись на диване перед телевизором, к которому подключен медиасервер по HDMI кабелю. В сентябре 2021 года я брал его за 480 рублей.

Короткий HDMI-miniHDMI кабель

NAS and Media server at Raspberry PI - 08

Очень важно использовать переходник HDMI-microHDMI на мягком коротком кабеле, а не жесткий адаптер, так как это предотвратит выламывание microHDMI портов из платы. В октябре 2021 года я брал его за 250 рублей.

Длинный HDMI-HDMI кабель

NAS and Media server at Raspberry PI - 09

Длинный кабель HDMI-HDMI версии 2.0 нужен для подключения медиасервера к монитору или телевизору. Я не рекомендую покупать готовый кабель HDMI-microHDMI, так как разъемы microHDMI не очень прочные, а качественные кабели дорогие - в случае поломки дешевле заменить короткий переходник, чем длинный кабель или плату Raspberry PI. В октябре 2021 года я брал кабель за 650 рублей.

USB-разветвитель с внешним питанием

NAS and Media server at Raspberry PI - 10

Опционально можно приобрести разветвитель USB портов с внешним питанием, чтобы иметь возможность подключать к микрокомпьютеру дополнительные устройства, например геймпеды или USB-флэшки. Внешнее питание для разветвителя рекомендуется, чтобы не перегружать блок питания самого микрокомпьютера, который и так уже должен питать плату, жесткий диск, WiFi адаптер и клавиатуру. В октябре 2021 года я брал его за 620 рублей.

Краткое описание платы Raspberry PI 4 Model B

NAS and Media server at Raspberry PI - 11

Сборка корпуса Geekworm NASPi

В комплекте корпуса от Geekworm есть все необходимое для "упаковывания" платы Raspberry PI и SATA диска в "коробку".

NAS and Media server at Raspberry PI - 12a
NAS and Media server at Raspberry PI - 12

Сначала нужно навернуть на плату X823 ножки-проставки, а потом подключить 2.5-дюймовый жесткий диск к SATA-разъему платы. Диск можно жестко закрепить на плате с помощью винтов, но я не стал это делать, так как в будущем, если потребуется сделать какие-то операции с диском (сменить ОС или просто подключить к другому устройству), то потребуется разбирать всё устройство, чтобы добраться до крепежа диска.

NAS and Media server at Raspberry PI - 13

Потом нужно подключить плату Raspberry Pi 4B к плате X-C1 через порты microHDMI и Jack 3.5, а в разъемы платы X-C1 вставить шлейфы вентилятора и питания.

NAS and Media server at Raspberry PI - 14

Шлейф питания провести под платой Raspberry PI, поставить сборку плат на плату X325 и закрепить всю конструкцию проставками и винтами.

NAS and Media server at Raspberry PI - 15

Установить вентилятор, а шлейф питания воткнуть в шину ввода-вывода платы Raspberry PI. Закрепить всё винтами.

NAS and Media server at Raspberry PI - 16

Вставить собранную конструкцию в алюминиевый корпус и закрепить винтами внизу корпуса.

NAS and Media server at Raspberry PI - 17

Установить торцевую панель корпуса, зафиксировав её винтами, и USB-мост между платами Raspberry PI и X823.

Порой все что я делал на Ubuntu Trusty на работе и дома я хотел бы повторить, но ориентировавшись на купленный в этом году миникомпьютер Raspberry Pi 3 Model B+. Мне просто интересно, как он себя поведет, справлюсь ли я с той ответственной задачей. Вот недавно я для домашнего использования разобрал шаги, как заставить работать персональное облако под файлы на Raspberry Pi 3. Я все задокумментировал, если вдруг мне понадобится переустанавливать или разворачивать знакомым, потому как я уже убедился и не раз, что если ты даешь инструкцию со всеми необходимыми действия, то для тебя это кажется легко, а вот для некоторых нет. И не важно какая это инструкция, столь подробная как это или какая-либо другая. Просто подготовка каждого человека отличается. Чего же я добился данной задачей, а то что теперь мой сервис для хранения заметок располагается на маленькой плате с подключенным к ней либо внешним жестким диском, либо домашним хранилищем WD My Book Live Duo.

Вся работа была проделана на связке дистрибутива jessie + owncloud + nginx

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

на свой миникомпьютер Raspberry Pi 3 Model B+

Итак, моя система:

pi@raspberrypi:~ $ uname -a && lsb_release -a

No LSB modules are available.

Distributor ID: Raspbian

Description: Raspbian GNU/Linux 8.0 (jessie)

pi@raspberrypi:~ $ sudo usermod -a -G www-data www-data

Начинаю заметку с установки необходимых пакетов для выполнения задачи:

pi@raspberrypi:~ $ sudo apt-get install nginx openssl ssl-cert php5-cli php5-mysql php5-gd php5-common php5-cgi php-pear php-apc curl libapr1 libtool curl libcurl4-openssl-dev php-xml-parser php5 php5-dev php5-curl php5-gd php5-fpm memcached php5-memcache varnish -y

pi@raspberrypi:~ $ sudo openssl req $@ -new -x509 -days 3650 -nodes -out /etc/nginx/server.pem -keyout /etc/nginx/server.key

Common Name (e.g. server FQDN or YOUR name) []: 10.7.8.53

На заметку: указываю либо IP адрес, либо полное DNS имя с суффиксом, к примеру: raspberry.polygon.local, но т. к. данный сервис owncloud будет внутри локальной сети, а доступ к нему из вне посредством проброса порта, то правильнее будет указать IP адрес текущей системы как сделал Я.

pi@raspberrypi:~ $ sudo chmod 600 /etc/nginx/server.pem

pi@raspberrypi:~ $ sudo chmod 600 /etc/nginx/server.key

pi@raspberrypi:~ $ cat /proc/cpuinfo | grep processor

pi@raspberrypi:~ $ sudo nano /etc/nginx/nginx.conf

pi@raspberrypi:~ $ sudo su root bash -c "cat > /etc/nginx/sites-available/default"

^C (Нажимаю сочетание клавиш Ctrl + C )

pi@raspberrypi:~ $

pi@raspberrypi:~ $ sudo unlink /etc/nginx/sites-available/default

pi@raspberrypi:~ $ sudo nano /etc/nginx/conf.d/owncloud.conf

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; ";

fastcgi_buffers 64 4K;

rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;

rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;

rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

error_page 403 /core/templates/403.php;

error_page 404 /core/templates/404.php;

rewrite ^/.well-known/host-meta /public.php?service=host-meta last;

rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;

rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

try_files $uri $uri/ index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param PATH_INFO $fastcgi_path_info;

>
pi@raspberrypi:~ $ sudo vi /etc/php5/fpm/php.ini

Увеличиваем размер swap файла со 100Мб до 512Мб:

pi@raspberrypi:~ $ sudo nano /etc/dphys-swapfile

pi@raspberrypi:~ $ sudo reboot

Теперь разворачиваем программное обеспечение owncloud на подготовленную систему Raspbian:

pi@raspberrypi:~ $ sudo mkdir -p /var/www/owncloud

pi@raspberrypi:~ $ bzip2 -d owncloud-9.1.4.tar.bz2

pi@raspberrypi:~ $ tar xf owncloud-9.1.4.tar

pi@raspberrypi:~ $ sudo mv owncloud/ /var/www/

pi@raspberrypi:~ $ sudo chown -R www-data:www-data /var/www

pi@raspberrypi:~ $ rm owncloud-9.1.4.tar

pi@raspberrypi:~ $ sudo nano /var/www/owncloud/.htaccess

php_value upload_max_filesize 2000M

php_value post_max_size 2000M

php_value memory_limit 2000M

После не забываем сохранить внесенные изменения.

Теперь нужно установить MySQL, т. к. для работы OwnCloud нужна база:

pi@raspberrypi:~ $ sudo apt-get install mysql-server -y

New password for the MySQL "root" user: 712mbddr@

Repeat password for the MySQL "root" user: 712mbddr@

pi@raspberrypi:~ $ sudo mysql_secure_installation

pi@raspberrypi:~ $ mysql -u root -p712mbddr@

mysql> create database db_owncloud character set utf8;

mysql> create user 'us_own'@'localhost' identified by '612mbddr@';

mysql> grant all on db_owncloud.* to 'us_own'@'localhost';

mysql> flush privileges;

mysql> exit;

Далее проверяю что Web— сервис nginx работоспособен с текущими настройками которые я проделал выше:

pi@raspberrypi:~ $ sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

pi@raspberrypi:~ $ sudo service php5-fpm restart

pi@raspberrypi:~ $ sudo service nginx stop && sudo service nginx start

pi@raspberrypi:~ $ sudo netstat -tulpn | grep nginx

tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 7843/nginx -g daemon

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7843/nginx -g daemon

И указываю параметры настройки:

Create an admin account:

Т.к. у меня только MySQL установлена, то и установщик говорит мне об этом: Only MySQL/MariaDB is available.

localhost

и нажимаю Finish Setup, ожидаю:

Ожидаю покуда процесс установки завершится

Да не быстро происходит установка, но это же не ноутбук и не компьютер, а все таки миникомпьютер Raspberry Pi 3 Model B+

Но спустя несколько минут, я успешно провалился в Web-интерфейс управления развернутого сервиса по организации персонального облака файлов/наработок, по сути это аналог Dropbox,Yandex-диск,Mail-диск, за исключение что все Ваше и платить не нужно. Ваше железо, бесплатный софт и Ваша квалификация на поддержку всего и вся.

Текущее облако занимает ничтожно малое место

Проверяю, каково использование системы после разворачивания программного обеспечения owncloud на Raspberry Pi 3 Model B+ операционной системе Raspbian:

pi@raspberrypi:~ $ free -m

Одного гигабайта памяти для OwnCloud маловато на Raspberry Pi 3 Model B+

Вывод: всё же 1Gb оперативной памяти для собственного хранилища как-то маловато, да и насилие над картой памяти MicroSD не внушает доверие по размещению важной информации в собственном облаке. Все же лучше использовать либо собранный под эту задачу компьютер с возможностью организации RAID. Ведь не столь ценно железо, как информация хранимая на нем. Если хочется просто поэкспериментировать, то такой вариант использования Owncloud на Raspberry Pi 3 Model B+ может сгодится.

Вообще задумка данной заметки была в том, чтобы через USB подключить к миникомпьютеру внешний жесткий диск и все файлы хранить на нем. Плюс к этому раз в день делать резервную копию каталога data на внешнее хранилище.
Отлично, задача выполнена. Вот собственно и всё, с уважением Олло Александр aka ekzorchik.

Облачное хранилище – неотъемлемая часть современной жизни. Обратной стороной является то, что ваши данные хранятся на удаленных серверах безликой корпорацией, которой вы должны доверять конфиденциальность и безопасность ваших ценных документов и фотографий.

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

Мы покажем вам, как установить Nextcloud на Raspberry Pi, подключить внешнее хранилище и выбрать подходящий чехол.

Nextcloud против ownCloud для Raspberry Pi: что лучше?

Другой вариант для вашего домашнего облачного сервера Raspberry Pi – ownCloud. Фактически, Nextcloud – это независимое продолжение ownCloud, созданное некоторыми из основных участников последнего.

Хотя основные функции очень похожи для обоих, есть некоторые ключевые различия. Некоторые из более продвинутых функций ownCloud доступны только для премиум-подписчиков, тогда как все функции в Nextcloud бесплатны. Пользователи, не обладающие техническими знаниями, также могут посчитать пользовательский интерфейс Nextcloud немного проще в использовании.

1. Установите Nextcloud.

Есть два основных метода установки Nextcloud на Raspberry Pi. Первый – использовать Nextcloud Ubuntu Appliance для Raspberry Pi. Для этого вам потребуется открыть учетную запись SSO Ubuntu, а также сгенерировать ключи SSH для удаленного доступа и запуска вашего нового сервера Nextcloud.

В качестве альтернативы NextCloudPi – это специальная версия Nextcloud, разработанная для работы на Raspberry Pi 3 или 4. Это метод, который мы здесь используем.

Сначала загрузите последний файл образа ОС NextCloudPi с веб-сайта OwnYourBits . Откройте папку с пометкой RPi, за которой следует дата (не версия Berryboot). Загрузите файл BZ2 или используйте торрент для его загрузки (рекомендуется).

Распакуйте файл с помощью инструмента архивирования (например, WinRAR или 7-Zip для Windows) на вашем компьютере; Теперь у вас будет папка, содержащая файл IMG.

Используйте приложение Raspberry Pi Imager, чтобы записать этот файл (образ ОС) на вставленную карту microSD – рекомендуется карта емкостью 8 ГБ или больше. Чтобы использовать это:

2. Загрузите Nextcloud на Raspberry Pi.

Вставьте карту microSD в Raspberry Pi и включите питание. Через несколько секунд, показывающих последовательность загрузки (много прокручиваемого текста), вам будет предложено войти в систему. Имя пользователя по умолчанию – pi, а пароль – raspberry . По соображениям безопасности рекомендуется впоследствии изменить пароль Raspberry Pi .

3. Подключитесь к Wi-Fi.

Введите sudo raspi-config и выберите 2 параметра сети , затем N2 Wireless LAN . Выберите свою страну, а затем SSID (имя) и пароль вашего маршрутизатора. Нажмите Готово, чтобы вернуться в командную строку.

Чтобы узнать IP-адрес Raspberry Pi, введите:

Запишите inet- адрес под wlan0 : это IP-адрес Raspberry Pi. Некоторые маршрутизаторы резервируют для него один и тот же адрес при каждой загрузке; в противном случае вы захотите настроить статический IP-адрес для своего Raspberry Pi .

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

Затем из командной строки или терминала другого компьютера вы можете ввести ssh pi @ [IP-адрес вашего Pi], чтобы получить доступ к командной строке Raspberry Pi.

4. Включите веб-интерфейс Nextcloud.

Введите sudo ncp-config и выберите Да, если будет предложено обновить. В следующем меню выберите КОНФИГУРАЦИЯ и используйте стрелку вниз для прокрутки до конца списка.

5. Активируйте и настройте Nextcloud.

Вам будет предложено войти в систему. Имя пользователя по умолчанию – ncp , а пароль – ownyourbits .

На экране активации NextCloudPi отображаются два пароля, которые вам нужно скопировать и вставить в документ для безопасного хранения. Первый – это пароль для веб-панели NextCloudPi, которая позволяет вам настраивать параметры сервера. Второй – для самого веб-интерфейса Nextcloud. Вы можете изменить эти пароли позже, если захотите.

Записав эти пароли, выберите Активировать . Через несколько секунд вам будет предложено войти в веб-панель NextCloudPi. Однако давайте пока пропустим это и войдем в веб-интерфейс Nextcloud.

6. Доступ к веб-интерфейсу Nextcloud.

После прохождения экрана приветствия вы увидите главную веб-панель управления. Это ваш собственный облачный сервер, работающий на Raspberry Pi!

Нажмите N в правом верхнем углу, чтобы получить доступ к раскрывающемуся меню с параметрами для настроек (целая группа – личные и административные), пользователей (вы можете добавлять пользователей и управлять ими) и приложений для установки (например, офисного пакета Collabora Online. и сервер ARM64).

На верхней панели инструментов находятся значки для таких разделов, как Файлы, Фотографии, Контакты, Календарь и Задачи. Также есть значок NextCloudPi, который переносит вас на веб-панель. Щелкните его, и вам будет предложено войти в систему с именем пользователя ncp и первым записанным паролем. Появится мастер с параметрами настройки USB-накопителя и внешнего доступа через Интернет.

7. Добавьте внешний USB-накопитель.

Емкость вашей карты microSD будет ограничена, поэтому для сервера Nextcloud лучше всего добавить USB-накопитель. Подключите запоминающее устройство к одному из USB-портов Raspberry Pi.

Прежде чем идти дальше, вам необходимо создать для него каталог в командной строке Raspberry Pi (или через SSH). Введите следующую команду:

8. Добавьте внешний доступ через Интернет.

Пока что вы можете получить доступ к серверу Nextcloud только из своей локальной сети, что немного ограничивает. Чтобы получить доступ к серверу Nextcloud через Интернет из любого места, необходимо использовать переадресацию портов и службу динамического DNS.

9. Выберите вариант для вашего сервера Nextcloud.

Запускать сервер Nextcloud на голой плате Raspberry Pi – не лучшая идея, поскольку со временем на нем будет накапливаться пыль. Для моделей Raspberry Pi 3 и 4 стандартного размера доступно множество корпусов.

Вместо дешевого пластикового корпуса мы бы порекомендовали что-нибудь более прочное, например DeskPi Pro . Внутри корпуса достаточно места для накопителя SATA, и он поставляется с адаптером M.2-SATA. Чтобы предотвратить перегрев Raspberry Pi, он также оснащен системой охлаждения ICE Tower и радиатором.

Еще один хороший вариант – корпус Argon ONE M.2 , который позволяет использовать диск M.2 SATA любого размера. В качестве альтернативы вы можете выбрать прочный корпус только для Raspberry Pi и подключить стандартный внешний USB-накопитель.

Создайте свой собственный облачный сервер Raspberry Pi: успех

Поздравляем, теперь вы настроили облачный сервер на Raspberry Pi с помощью NextCloudPi. Вы можете посетить его панель управления с помощью веб-браузера на другом устройстве. Есть даже приложение Nextcloud для iOS и Android, которое вы можете использовать.

Медиацентр Raspberry Pi

Прос­нись, самурай, вре­мя делать бэкапы баз дан­ных! Но что­бы не разорить­ся на плат­ных сер­висах, я покажу, как прев­ратить Raspberry Pi Zero W за условные $10 в лич­ную бэкап‑машину, которая будет заливать фай­лы в бес­плат­ный Google Drive.

Вот что нам сегод­ня понадо­бит­ся:

  • Raspberry Pi Zero W (при­дет­ся купить);
  • ка­бель micro USB (у тебя он уже валя­ется где‑то);
  • порт USB, выда­ющий минимум 1 А (в любом ком­пе такой есть, да и кир­пичик‑заряд­ка от ста­рого телефо­на у тебя тоже где‑то валя­ется);
  • кар­точка microSD (опять же, при­берись на пол­ках, там валя­ется минимум 4 Гбай­та памяти).

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

Готовим Raspberry Pi

Сна­чала ска­чай прог­рамму Etcher и образ Raspberry Pi OS lite без рабоче­го сто­ла. Рабочие сто­лы?! Там, куда мы нап­равля­емся, не нуж­ны рабочие сто­лы!

Я все это запус­каю на macOS, но дей­ствия, опи­сан­ные в этом руководс­тве, при­мени­мы и на дру­гих опе­раци­онных сис­темах.

Вставь microSD-кар­точку в компь­ютер, запус­ти Etcher и залей ска­чан­ный образ Raspberry Pi OS на кар­точку.



Дос­тань кар­точку и вставь обратно. Она дол­жна появить­ся дис­ком под име­нем boot .

Пе­ред тем как запихи­вать кар­точку в малину, нам нуж­но нем­ного нас­тро­ить опе­раци­онку. Давай нас­тро­им под­клю­чение к бес­про­вод­ному интерне­ту.

Фай­лы обя­затель­но редак­тируй какой‑нибудь тул­зой типа nano или vim , что­бы не накося­чить с тек­сто­вой кодиров­кой условным встро­енным в ОС блок­нотом. Соз­дай файл с наз­вани­ем wpa_supplicant . wbr / > conf пря­мо в кор­не кар­точки. Содер­жание это­го фай­ла дол­жно быть сле­дующим.



Ко­неч­но, замени мой _ вайфай и пароль _ от _ вайфая на наз­вание и пароль от сво­ей сети WiFi. Нас­коль­ко я понял, эта вер­сия малины работа­ет толь­ко с бес­про­вод­ными сетями 2,4 ГГц.

Да­лее вклю­чи SSH на малине, так как управлять мы ей будем имен­но по SSH. Соз­дай пус­той файл в кор­не кар­точки с име­нем ssh . Можешь исполь­зовать коман­ду $ wbr / > touch wbr / > ssh .


Вот и все! Малина нас­тро­ена. Вставь кар­точку в малину и под­клю­чи ее к питанию! Убе­дись, что питание ты под­клю­чаешь в разъ­ем с помет­кой PWR . Пер­вый запуск малины зай­мет при­мер­но 90 секунд, ей нуж­но про­вес­ти пер­воначаль­ную нас­трой­ку.

Подключаемся к малине

Те­перь тебе нуж­но узнать IP-адрес малины. Можешь вос­поль­зовать­ся бес­плат­ной прог­раммой LanScan на macOS или любым ана­логом типа nmap на дру­гих плат­формах. Най­ди адрес с име­нем девай­са типа raspberry pi.


Те­перь ты можешь под­клю­чить­ся пря­мо к малине! И все по воз­духу! Под­клю­чись к поль­зовате­лю pi со стан­дар­тным паролем raspberry . Можешь вос­поль­зовать­ся коман­дой $ wbr / > ssh wbr / > pi @ < wbr / >IP_ малины > .


Для безопас­ности поменяй стан­дар­тный пароль коман­дой $ wbr / > sudo wbr / > raspi - config . Пос­ле переза­пус­ти малину коман­дой $ wbr / > sudo wbr / > shutdown wbr / > - r wbr / > now .



В прин­ципе, можешь не вык­лючать вход на малину по паролю, если малина никог­да не будет дос­тупна из интерне­та. Но если хочешь на 100 % обе­зопа­сить свои бэкапы, то вклю­чи вход по SSH толь­ко по клю­чам, соз­дав файл ~ / . wbr / > ssh / wbr / > authorized_keys на малине с SSH-клю­чом, а пос­ле перезаг­рузи малину.

Ну и не забудь выс­тавить PasswordAuthentication wbr / > no в фай­ле нас­трой­ки SSH — / wbr / > etc / wbr / > ssh / wbr / > ssh_config !



Те­перь ты офи­циаль­но в малине. Вре­мя писать скрип­ты бэкапа!

Зависимости бэкап-скрипта

Скрипт будет край­не прос­тым. Будем исполь­зовать тул­зу mongodump, что­бы заб­рать всю информа­цию из базы дан­ных в одну папоч­ку, а потом тул­зу drive, что­бы залить всю пре­лесть на Google Drive. Про­ще пареной репы!

За­пус­ти сле­дующие коман­ды на малине для уста­нов­ки drive .

За­меть, что мы уста­нав­лива­ем тул­зу имен­но для архи­тек­туры ARMv6. Теперь можешь написать $ wbr / > gdrive wbr / > version на малине, что­бы убе­дить­ся, что все сра­бота­ло.




Те­перь тебе нуж­но нас­тро­ить drive , что­бы он смог работать с опре­делен­ной пап­кой. Соз­дай пап­ку для бэкапов коман­дой $ wbr / > mkdir wbr / > ~ / wbr / > backups и пос­ле запус­ти коман­ду $ wbr / > gdrive wbr / > init wbr / > ~ / wbr / > backups , что­бы зас­тавить drive син­хро­низи­ровать эту пап­ку. Скрипт выдаст тебе ссыл­ку, нуж­но будет авто­ризо­вать­ся в сер­висе через бра­узер (уже на сво­ем ком­пе, отку­да под­клю­чал­ся к малине).






Мо­жешь про­верить нас­трой­ку, про­писав коман­ду $ wbr / > cat wbr / > ~ / . wbr / > gd / wbr / > credentials . wbr / > json . Дол­жно выдать твои клю­чи авто­риза­ции.


Да, в этом руководс­тве я рас­ска­жу тебе толь­ко о Mongo. Ради крат­кости изло­жения и для показа­тель­нос­ти при­мера я решил выб­рать имен­но эту базу дан­ных.

Но и тут у нас будут неболь­шие проб­лемы из‑за огра­ничен­ности выб­ранно­го железа. На Raspberry Pi Zero далеко не уехать — про­цес­сор в нашей малине 32-бит­ный, а пос­ледняя Mongo запус­кает­ся лишь на 64-бит­ных сис­темах. Что же делать?

Пос­тупим очень хит­ро: за неиме­нием луч­шего решения вос­поль­зуем­ся прос­тым кос­тылем. Мы зас­тавим наш сер­вер, на котором уже уста­нов­лена Mongo, собирать дамп базы дан­ных — а потом будем его заг­ружать к себе в Google Drive.

По­чему бы нам прос­то тог­да не запус­кать все на сер­вере, раз уж на то пош­ло? Да потому что малина — это кибер­панк, который мы зас­лужили, а бэкапы всег­да дол­жны быть внеш­ними.

Создаем на сервере и качаем на малину дамп базы данных

Мы вос­поль­зуем­ся коман­дой mongodump пря­мо по SSH, что­бы сге­нери­ровать дамп, а потом коман­дой scp , что­бы этот дамп ска­чать.

Иг­норируй эту сек­цию, если исполь­зуешь не Mongo, а какую‑либо дру­гую базу дан­ных: тебе при­дет­ся написать свой собс­твен­ный скрипт получе­ния дам­па.

Сге­нери­руй на малине SSH-ключ коман­дой $ wbr / > ssh - keygen wbr / > - t wbr / > rsa .


Возь­ми внут­реннос­ти ~ / . wbr / > ssh / wbr / > id_rsa . wbr / > pub с малины и добавь их в файл ~ / . wbr / > ssh / wbr / > authorized_keys на сер­вере, где у тебя запуще­на Mongo.

От­лично! Теперь малина может под­клю­чать­ся к сер­веру по SSH! Поп­робуй зай­ти на сер­вер пря­мо с малины такой коман­дой:

Те­перь вый­ди из сер­вера коман­дой exit . Ты дол­жен быть все еще под­клю­чен к малине, но не к сво­ему сер­веру.

Поп­робуй запус­тить вот эту коман­ду пря­мо на малине:

Не забудь заменить перемен­ные на нуж­ные для тебя в этой коман­де!


Чу­дес­но! База дам­панулась так, что аж стой­ки зат­рещали где‑нибудь в амстер­дам­ском датацен­тре! Теперь поп­робуй ска­чать этот дамп сле­дующей коман­дой:


Кру­тота! Теперь у тебя есть дамп тво­ей базы дан­ных локаль­но на малине. Тех­ничес­ки можешь пря­мо тут и хра­нить свои дам­пы — но я бы посове­товал тебе запуль­нуть их все‑таки куда‑то в обла­ко. Сегод­ня ты научишь­ся заг­ружать фай­лы в Google Drive авто­мати­чес­ки!

Загружаем дамп базы данных в облако

Так как мы уже нас­тро­или drive выше, все, что нам нуж­но сде­лать — это про­верить, заг­ружа­ется ли наша пап­ка в Google Drive сле­дующей коман­дой.


Вмес­то Google Drive мож­но исполь­зовать любое хра­нили­ще дан­ных в обла­ке. Можешь вмес­то drive вооб­ще вос­поль­зовать­ся rclone, что­бы гру­зить фай­лы куда угод­но: эта тул­за под­держи­вает боль­ше 40 раз­ных облачных хра­нилищ пря­мо из короб­ки.

Пишем скрипт

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

Соз­дай файл ~ / wbr / > backup . wbr / > sh на малине со сле­дующим содер­жани­ем, заменяя все перемен­ные на нуж­ные.

scp -r юзер_на_сервере@ip_адрес_сервера: / home/ юзер_на_сервере/ backups/ * «/ home/ pi/ backups/ $timestamp « & &

Не забудь запус­тить коман­ду $ wbr / > sudo wbr / > chmod wbr / > + x wbr / > ~ / wbr / > backup . wbr / > sh , что­бы дать поль­зовате­лю пра­ва запус­кать этот скрипт. Рас­ска­жу нем­ного о самом фай­ле.

Пер­вая стро­ка это­го фай­ла прос­то говорит раз­ным тек­сто­вым редак­торам, что перед нами файл на bash.

Мо­жешь поп­робовать запус­тить этот скрипт вруч­ную коман­дой ~ / . wbr / > backup . wbr / > sh . Дол­жно получить­ся! А Telegram дол­жен начать при­сылать сооб­щения при­мер­но как ниже на скрин­шоте.


Автоматизируем запуск скрипта

В интерне­те пол­но руководств по с ron . Им мы и вос­поль­зуем­ся! Вкрат­це, это шту­ка в Linux, которая может с опре­делен­ной пери­одич­ностью запус­кать скрип­ты. В нашем слу­чае мы будем запус­кать скрипт ~ / . wbr / > backup . wbr / > sh каж­дый час.

Син­таксис опи­сания интерва­лов понача­лу может казать­ся необыч­ным. Советую поль­зовать­ся конс­трук­торами типа Crontab Generator, что­бы соз­давать крон­табы.

От­крой спи­сок пери­оди­чес­ких задач при помощи коман­ды crontab wbr / > - e и добавь туда сле­дующую стро­ку.

Заключение

Вот и все, самурай! Ты пот­ратил все­го где‑то час‑два вре­мени, а на выходе у тебя хакер­ская при­бам­баса, которую ты можешь сме­ло вты­кать у себя дома где‑нибудь око­ло роуте­ра.

При желании ты можешь заменить любой эле­мент на дру­гую тул­зу, которая тебе боль­ше нра­вит­ся. Не хочешь исполь­зовать малину? Можешь то же самое запус­тить на любой машине с Linux, в том чис­ле уда­лен­ной. Не поль­зуешь­ся Mongo? Исполь­зуй любую дру­гую базу дан­ных. Не нра­вит­ся Google Drive? Заливай бэкапы куда угод­но, хоть на флеш­ку или хард локаль­но.

И не забудь добавить еще каких‑нибудь полез­ных скрип­тов во имя авто­мати­зации все­го и вся!

Сетевое хранилище (NAS) — отличный способ сделать файлы доступными в любой точке вашей домашней сети. Это могут быть документы, изображения или даже мультимедиа, которые вы хотите передавать в несколько комнат одновременно. Сервер NAS действует как обычный жесткий диск, поэтому возможности действительно безграничны.

Существует множество готовых NAS-продуктов, но большинство из них смехотворно дороги. Вы можете создать простой NAS для своей домашней сети с помощью Raspberry Pi и внешнего жесткого диска и воспользоваться всеми преимуществами NAS без сумасшедшего ценника.

Что вам нужно

  • Что вам нужно
  • Примечание о скорости
  • Прошить свой MicroSD
  • Подключите все
  • Настроить Распбиана
    • Конфигурация Raspberry Pi
    • Подключиться к WiFi
    • Подключение через SSH
    • Жесткий диск
    • NFS
    • самба
      • Windows
      • Linux

      Прежде чем начать, необходимо кое-что сделать для настройки NAS.

      • Raspberry Pi 3
      • Карта MicroSD класса 10 (предпочтительно 16 ГБ +)
      • Raspberry Pi чехол
      • Зарядное устройство Micro USB с адаптером переменного тока
      • Мышь, клавиатура и монитор (только для настройки)
      • Кардридер SD / MicroSD с адаптером, если это необходимо
      • USB внешний жесткий диск
      • Корпус жесткого диска USB и внутренний жесткий диск (и)

      Примечание о скорости

      Помните, что это Raspberry Pi. Это крошечный одноплатный компьютер с процессором ARM. Он никогда не был предназначен для обработки большого объема или функций в качестве вашего бизнес-сервера. Это простая мелочь, которая поддерживает только USB 2.0 и имеет порт Ethernet 10 / 100Mb / s. Это означает, что вы достигнете узкого места, если попытаетесь загрузить его слишком большим количеством.

      Значит ли это, что ваш NAS будет работать как мусор? Нет. USB 2.0 поддерживает скорость передачи данных до 480 Мбит / с, а Ethernet — 100 Мбит / с. Практически говоря, передача огромного файла обойдется примерно в 5-7 МБ / с (это мегабайты, а не мегабиты). Это не слишком быстро, но для вашего дома и семьи, это будет хорошо выполнено. Вы также можете без проблем передавать потоковое видео с NAS Raspberry Pi. Просто будьте реалистами с вашими ожиданиями здесь. Это не локальный диск, и у него есть ограничения.

      Прошить свой MicroSD

      Системы NAS являются серверами, поэтому Linux, вероятно, является лучшей операционной системой. Не повредит, что Linux и Raspberry Pi также идут рука об руку с самого первого дня.

      Образ операционной системы по умолчанию для Raspberry Pi называется Raspbian. По сути, это дистрибутив Debian Linux, портированный и предварительно настроенный для Pi.

      Загрузите последнюю версию Raspbian Lite. Изображение поставляется в довольно большом Zip-архиве, поэтому это займет несколько минут. Разархивировать архив, однако, наиболее удобно после завершения загрузки.

      После распаковки у вас остается образ диска. Вам нужно будет перенести это изображение на карту MicroSD. Подключите устройство для чтения карт памяти к компьютеру и вставьте карту. Убедитесь, что ваш компьютер распознает это.

      Если вы уже используете Linux и хотите использовать dd для прошивки образа, вы можете.

      Для всех остальных загрузите Etcher и установите его на свой компьютер. Etcher доступен для Windows, Mac и Linux.

      После завершения Etcher вы можете удалить свой MicroSD.

      Подключите все

      Когда образ настроен и готов к загрузке, вы можете подключить ваше оборудование. Положите Pi в его чехол и вставьте SD-карту. Подключите его к мыши, клавиатуре и монитору. Подключите жесткий диск к одному из USB-портов Pi.

      После того, как все остальное подключено, вы можете подключить Raspberry Pi. У Pi по умолчанию нет переключателя питания, поэтому вам потребуется подключить его, чтобы включить.

      Настроить Распбиана

      Как только ваш Rasberry Pi загрузится, он будет готов к использованию. Образ Raspbian — это полная установка Debian без головы. Нет, безголовый не значит неполный, или то, что вы будете бегать, как курица без головы, пытаясь понять это. Это просто означает, что нет графического рабочего стола. Вам это не нужно. В конце концов, ваш NAS — это сервер.

      Конфигурация Raspberry Pi

      Первое, что вы должны сделать на Raspberry Pi, это изменить некоторые настройки по умолчанию, такие как пароль пользователя и часовой пояс. Чтобы получить к ним доступ, Raspberry Pi имеет специальное меню. Откройте его с помощью следующей команды.

      Подключиться к WiFi

      Итак, проводное соединение лучше. Это быстрее и надежнее. Если вы настаиваете на WiFi, вам нужно будет настроить его.

      Начните с поиска вашего беспроводного интерфейса. Запустите ip a для просмотра списка доступных сетевых интерфейсов. Ваш беспроводной, вероятно, wlan0.

      Затем вам нужно будет добавить информацию о вашей сети в конфигурацию wpa_supplicant. Не волнуйся, это будет легко.

      Вы можете вручную дважды проверить, что это сработало.

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

      Проверьте, что это работает, запустив ip a снова. Если вы не видите IP-адрес рядом с вашим беспроводным интерфейсом, перезапустите Pi с помощью $ sudo shutdown -r сейчас. Иногда сеть просто не перезагружается должным образом.

      Подключение через SSH

      Вам не обязательно выполнять эту часть, но это гораздо удобнее, чем сидеть за временной установкой. Вы можете получить удаленный доступ к Raspberry Pi через SSH со своего обычного компьютера. Если вы используете Linux или Mac, вы можете подключиться к:

      Используйте IP-адрес, который был назначен вашему Pi.

      Пользователям Windows понадобится другой способ подключения. Существует клиент SSH для Windows под названием PuTTY, который вы можете скачать для подключения. Вставьте информацию для своего Pi в PuTTY и подключите как в системе Unix.

      Жесткий диск

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

      Сначала выясните, где находится ваш жесткий диск на Пи.

      Найдите свой жесткий диск в выводе. Каждому диску назначается определенное место, например / dev / sda. Каждый раздел на диске обозначается номером после, например / dev / sda1. Не беспокойтесь, если ваш диск не разбит на разделы. Следующий раздел расскажет об этом.

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

      $ sudo cfdisk / dev / sdb

      Теперь, если вы создали только один раздел в / dev / sdb, Debian распознает его в / dev / sdb1. Вы всегда можете перепроверить с помощью fdisk -l.

      Далее отформатируйте раздел. Пользователи Linux должны использовать EXT4. Если у вас есть Windows в вашей сети, выберите NTFS.

      После завершения форматирования вам нужно найти UUID раздела. UUID — это уникальный идентификатор раздела, отдельный от / dev /, и он не меняется. UUID — лучший способ идентифицировать раздел при его монтировании.

      Авто-монтирование жестких дисков обрабатывается файлом / etc / fstab. Он уже содержит конфигурацию по умолчанию для системных разделов. Откройте файл и добавьте строку, похожую на приведенную ниже.

      Подключите UUID вашего диска и замените ntfs на ext4, если это то, что вы используете.

      Наконец, создайте папку / media / storage и подключите диск.

      Чтобы предотвратить странные проблемы с разрешениями, поменяйте владельца каталога на никто.

      Настроить NFS

      NFS — это способ для систем Unix обмениваться сетевыми файлами. В некоторых случаях он поддерживается в Windows, но в основном для Mac, Linux и BSD. Если остальная часть вашей сети только для Windows, не беспокойтесь об этой части. Пройдите к Самбе.

      Для всех остальных NFS намного проще в использовании и настройке, чем Samba. Это обеспечивает и отличный способ для систем на основе Unix взаимодействовать с NAS.

      Установите пакеты NFS на Pi.

      После его завершения откройте / etc / exports в вашем текстовом редакторе.

      В этом файле вы можете перечислить каталоги, которые вы хотите сделать доступными по сети, и для каких компьютеров вы хотите сделать их доступными. Если вы не хотите тратить на это много времени, добавьте строку ниже, чтобы сделать внешний накопитель доступным для всех компьютеров в сети.

      Сохраните файл и выйдите. Затем перезапустите сервер NFS.

      Настроить Samba

      Начните с установки Samba на Raspberry Pi.

      Установка предоставит вам конфигурацию Samba по умолчанию в /etc/samba/smb.conf.

      Файл будет выглядеть пугающим, когда вы впервые откроете его. Не беспокойся Вам не нужно трогать большую часть этого. Единственное, что вам нужно изменить в основной конфигурации — это рабочая группа. Найдите строку ниже и установите ее равной вашей фактической группе ворга Windows.

      Самба обрабатывает акции в блоках. Вы можете увидеть некоторые блоки по умолчанию в конце файла конфигурации. Вам нужно создать новый блок для своей папки Samba.

      Установите это так:

      У вас есть два основных варианта доступа к общим ресурсам Samba. Вы можете разрешить гостям, которые предоставляют доступ кому-либо в сети, или вы можете ограничить доступ людям, которые имеют учетную запись на сервере. Поскольку этот сервер является просто сетевым хранилищем, размещение гостей является самым простым.

      Перезапустите службу Samba, чтобы загрузить изменения.

      Подключитесь к своему NAS

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

      Процесс подключения отличается для разных компьютеров. Это также отличается для NFS и Samba, поэтому используйте правильную конфигурацию для вашего компьютера.

      Во-первых, убедитесь, что у вас установлена ​​поддержка NFS. В Debian и Ubuntu пакет является общим для nfs. Затем вы можете смонтировать диск NFS в любом месте с привилегиями root.

      Если вы хотите сделать это постоянным, вы можете выполнить шаги для / etc / fstab выше, но использовать сетевой адрес общего ресурса вместо UUID. В некоторых системах вам также необходимо указать nfs в качестве типа filsystem вместо ext4.

      самба

      Samba довольно просто обрабатывать графически как в Windows, так и в Linux. В любом случае вы можете получить доступ к своей папке через обычный файловый менеджер.

      Windows

      Linux

      Прежде чем пытаться подключиться к Samba в Linux, вы должны убедиться, что в вашей системе установлен клиент Samba. Многие дистрибутивы Linux поставляют его по умолчанию, но если вы хотите убедиться, установив его, пакет является samba-client в Debian и Ubuntu.

      Заключительные мысли

      Это оно! У вас есть собственное сетевое хранилище по цене от коммерческих решений. Вы можете добавить больше памяти в любое время по своему усмотрению, когда вы переросли свой текущий жесткий диск.

      Debian очень стабилен, поэтому вам не придется беспокоиться о перезапуске NAS или его сбое. Однако вы можете запускать обновления время от времени. Теперь вы можете делать это и через SSH, поэтому вам больше не нужно подключать его к клавиатуре, мыши или монитору.

      Читайте также: