Как сделать из raspberry pi облачное хранилище
Цель данного проекта - создать компактное бесшумное устройство для домашнего использования в качестве файлового обменника локальной сети, хранилища фильмов, медиасервера 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
Я покупал плату в составе стартового набора в магазине Амперкот в сентябре 2021 за 9990 рублей.
Блок питания USB Type-C 5V 3A
Так как блок питания из стартового набора, указанного выше, не соответствовал заявленным характеристикам, а именно не давал нужного тока для питания всех устройств: платы, жесткого диска, WiFi-адаптера и клавиатуры, то пришлось заказать другой блок питания. В октябре 2021 года я брал его за 375 рублей.
Корпус Geekworm NASPi с кулером и SATA разъемом
Очень качественный корпус из крашенного алюминия, в комплекте с корпусом идут 2 платы расширения (SATA и разветвитель портов), вентилятор, а так же необходимые шлейфы и крепеж. В сентябре 2021 года я брал его за 4300 рублей.
Жесткий диск от ноутбука с SATA интерфейсом
Жесткий диск я взял от старого ноутбука, в котором заменил HDD на SSD. То есть сам старый диск HDD 2.5 на 750 ГБ мне достался бесплатно, хотя такой же новый стоил бы около 2500 рублей, а вот новый диск SSD для ноутбука на 500 ГБ в декабре 2021 года мне стоил 5300 рублей.
Адаптер SATA-USB или корпус для жесткого диска
Внешний WiFi-адаптер с USB разъемом
Внешний WiFi адаптер нужен для усиления приема WiFi сигнала, так как встроенная на плату антенна очень маленькая и ловит в очень ограниченном радиусе. В добавок к этому, корпус из алюминия экранирует встроенную антенну, в результате чего в собранном виде устройство не может найти никакой WiFi сигнал. В октябре 2021 года я брал этот адаптер с антенной за 370 рублей.
Беспроводная мини-клавиатура
Беспроводная клавиатура с тачпэдом позволяет управлять устройством без проводов, расположившись на диване перед телевизором, к которому подключен медиасервер по HDMI кабелю. В сентябре 2021 года я брал его за 480 рублей.
Короткий HDMI-miniHDMI кабель
Очень важно использовать переходник HDMI-microHDMI на мягком коротком кабеле, а не жесткий адаптер, так как это предотвратит выламывание microHDMI портов из платы. В октябре 2021 года я брал его за 250 рублей.
Длинный HDMI-HDMI кабель
Длинный кабель HDMI-HDMI версии 2.0 нужен для подключения медиасервера к монитору или телевизору. Я не рекомендую покупать готовый кабель HDMI-microHDMI, так как разъемы microHDMI не очень прочные, а качественные кабели дорогие - в случае поломки дешевле заменить короткий переходник, чем длинный кабель или плату Raspberry PI. В октябре 2021 года я брал кабель за 650 рублей.
USB-разветвитель с внешним питанием
Опционально можно приобрести разветвитель USB портов с внешним питанием, чтобы иметь возможность подключать к микрокомпьютеру дополнительные устройства, например геймпеды или USB-флэшки. Внешнее питание для разветвителя рекомендуется, чтобы не перегружать блок питания самого микрокомпьютера, который и так уже должен питать плату, жесткий диск, WiFi адаптер и клавиатуру. В октябре 2021 года я брал его за 620 рублей.
Краткое описание платы Raspberry PI 4 Model B
Сборка корпуса Geekworm NASPi
В комплекте корпуса от Geekworm есть все необходимое для "упаковывания" платы Raspberry PI и SATA диска в "коробку".
Сначала нужно навернуть на плату X823 ножки-проставки, а потом подключить 2.5-дюймовый жесткий диск к SATA-разъему платы. Диск можно жестко закрепить на плате с помощью винтов, но я не стал это делать, так как в будущем, если потребуется сделать какие-то операции с диском (сменить ОС или просто подключить к другому устройству), то потребуется разбирать всё устройство, чтобы добраться до крепежа диска.
Потом нужно подключить плату Raspberry Pi 4B к плате X-C1 через порты microHDMI и Jack 3.5, а в разъемы платы X-C1 вставить шлейфы вентилятора и питания.
Шлейф питания провести под платой Raspberry PI, поставить сборку плат на плату X325 и закрепить всю конструкцию проставками и винтами.
Установить вентилятор, а шлейф питания воткнуть в шину ввода-вывода платы Raspberry PI. Закрепить всё винтами.
Вставить собранную конструкцию в алюминиевый корпус и закрепить винтами внизу корпуса.
Установить торцевую панель корпуса, зафиксировав её винтами, и 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
Вывод: всё же 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 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, поэтому вам больше не нужно подключать его к клавиатуре, мыши или монитору.
Читайте также: