cusdeb

cusdeb

На Пикабу
поставил 24 плюса и 0 минусов
отредактировал 0 постов
проголосовал за 0 редактирований
Награды:
5 лет на Пикабу
1883 рейтинг 86 подписчиков 6 подписок 21 пост 11 в горячем

CusDeb Beta 2

Всем привет. Не так давно мы писали на Пикабу о последних достижениях нашего конструктора образов для Raspberry Pi. Статья оказалась в меру популярной и нам удалось собрать достаточное количество отзывов. С тех пор мы сделали сборку еще более стабильной и учли некоторые пожелания. К примеру, добавили поддержку 64-битных сборок, а также первой версии Raspberry Pi. Сейчас CusDeb позволяет кастомизировать Raspbian Stretch, Ubuntu Xenial и Ubuntu Artful. Читайте более подробно о новинках в нашем пресс-релизе. Приглашаем всех протестировать CusDeb Beta 2.

Еще один скрипт для подготовки образов для Raspberry Pi

Всем привет! В этой статье я хочу рассказать о ключевом компоненте сервиса CusDeb под названием Pieman, который мы недавно опубликовали на GitHub под лицензией GPLv3. Pieman представляет собой скрипт для подготовки образов для нескольких моделей Raspberry Pi. С самого начала этот проект задумывался как универсальное решение, которое должно поддерживать более одного устройства, более одной операционной системы и более одной архитектуры. На данный момент нам удалось частично этого добиться: скрипт готовит как 32-битные, так и 64-битные образы на базе Raspbian 9 «Stretch» и разных выпусков Ubuntu, но пока только для Raspberry Pi. В данный момент мы работаем над добавлением Alpine, в качестве новой операционной системы, и Orange Pi PC Plus, в качестве нового устройства.

Еще один скрипт для подготовки образов для Raspberry Pi Raspberry pi, Open Source, Debian, Ubuntu, Raspbian, Длиннопост

Когда мы только начали работать над CusDeb, сервисом для кастомизации образов ОС для одноплатных компьютеров, мы постоянно откладывали работу над компонентом, который должен был непосредственно заниматься сборкой. Затем мы приняли решение использовать в качестве сборщика скрипт rpi23-gen-image, который предлагал кастомизировать образы для Raspberry Pi 2 или 3 на базе Debian Jessie или Stretch. Ограничения этого решения были очевидны, но на первых порах нас все устраивало. Однако сразу после публикации нескольких посвященных CusDeb'у постов на популярных ресурсах (в том числе Пикабу), нас стали просить расширить список устройств платами Orange Pi и Banana Pi, и добавить поддержку архитектуры ARM64. Это можно было сделать как минимум тремя разными способами:

* найти еще пару сторонних скриптов, к примеру, для сборки образов для устройств, отличных от Raspberry Pi, и задействовать их в CusDeb;

* добавить поддержку новых устройств в rpi23-gen-image, значительно переработав проект;

* разработать собственный скрипт «с нуля», в котором с самого начала был бы задел на масштабирование в области новых устройств, операционных систем и архитектур.


Несмотря на изобилие скриптов-сборщиков образов, в разработке которых мы могли бы принять участие, мы решили написать свое решение, которое с самого начала не было бы привязано к какой-то конкретной плате или операционной системе. Более того, мы постарались упростить добавление новых операционных систем и устройств в наш скрипт. Идея очень близка к дистрибутивам GNU/Linux, все программное обеспечение которых расфасовано по так называемым пакетам. У каждого пакета есть свой сопровождающий. Когда вам нужно какое-то конкретное ПО, вы устанавливаете соответствующий пакет, если он есть в дистрибутиве. Если по какой-то причине его там нет, вы пакетируете это ПО и становитесь сопровождающим этого пакета в дистрибутиве, оказывая таким образом неоценимую пользу сообществу. Pieman предлагает примерно тот же самый подход: если скрипт по какой-то причине еще не поддерживает нужную вам плату или не готовит образы на базе вашей любимой операционной системы, у вас есть возможность добавить поддержку целевой ОС или платы в Pieman без переработки всей кодовой базы проекта. Но чтобы стать сопровождающим, сначала нужно стать пользователем, поэтому в следующем разделе я расскажу как установить Pieman.


Установка


Несмотря на то, что родной платформой для Pieman является GNU/Linux, скрипт может быть также запущен на Windows 10 и macOS благодаря подготовленному нами образу Docker-контейнера.

Сначала загрузите образ с Docker Hub'а


$ docker pull cusdeb/pieman


Затем скачайте скрипт https://raw.githubusercontent.com/tolstoyevsky/pieman/master....


После этого не забудьте сделать его исполняемым


$ chmod +x docker-pieman.sh


Теперь для того чтобы собрать первый образ операционной системы с помощью Pieman, просто запустите docker-pieman.sh


$ ./docker-pieman.sh


По умолчанию будет собран образ на базе Raspbian Stretch (32bit) для Raspberry Pi 3. Если вам нужен образ, к примеру, для Raspberry Pi 2 на базе Ubuntu 16.04 «Xenial Xerus», то воспользуйтесь параметрами DEVICE и OS:


$ ./docker-pieman.sh -e DEVICE=rpi-2-b -e OS=ubuntu-xenial-armhf


Смотрите список всех поддерживаемых параметров, а также их возможных значений, в соответствующем разделе README проекта.


Мы призываем всех владельцев машин под управлением Windows 10 и macOS протестировать Pieman и оставить фидбек. Нам очень важно обеспечить работу проекта как можно на большем количестве платформ.


О сопровождении образов


Сопровождающий в Pieman отвечает за работоспособность той или иной операционной системы на каком-то конкретном устройстве. Так как нашему проекту меньше трех недель от роду, все операционные системы, на базе которых вы можете собрать образы для различных моделей Raspberry Pi, поддерживаются одним человеком, поэтому мы призываем всех неравнодушных к теме кастомизации образов ОС для одноплатных компьютеров присоединиться к нашему начинанию. Нашей основной целью является создание универсального решения, которое объединит как можно большее количество разношерстных устройств под одним интерфейсом. Я не вижу смысла раздувать итак достаточно длинную статью руководством сопровождающего, поэтому, если вам интересна эта тема, предлагаю ознакомиться с этим руководством в нашем блоге.


Заключение


Основная задача этой статьи заключалась в том, чтобы познакомить сообщество с новым проектом как можно раньше. На эту тему есть отличная поговорка: «Если вы опубликовали проект и вам за него не стыдно, значит вы опубликовали его слишком поздно.». Мы хотим, чтобы в первую очередь сообщество Raspberry Pi и других одноплатных компьютеров задавало направление развития этого проекта, поэтому мы ждем ваших замечаний и пожеланий.

Показать полностью 1

Веб-интерфейс для создания образов для Raspberry Pi

Введение


Всем привет. Наконец наша небольшая команда снова дает о себе знать. На этот раз речь пойдет о системе кастомизации образов для Raspberry Pi онлайн под названием CusDeb. Последнее время, когда я пытаюсь рассказать как это работает, мне в голову в качестве аналогии приходит Subway. Когда я первый раз купил саб, меня поразила возможность еще до покупки продукта, указать те компоненты, из которых он будет состоять. Мне всегда казалось, что у нас должно быть в Debian и Ubuntu что-то похожее на «кастомизированные сэндвичи». Спустя несколько лет мы вернулись с друзьями к этой идеи и реализовали ее. Тем не менее, по какой-то причине люди до сих пор берут Raspbian и затачивают его под конкретную задачу уже на самой RPi, редактируя конфигурационные файлы, удаляя и устанавливая пакеты, как если бы они покупали универсальный саб и перед едой заменяли кетчуп на горчицу, тунец на бекон и добавляли красный лук и халапеньо.

Конечно, идея кастомизации Linux-подобных систем не нова. Существенная порция вдохновения к нам пришла от SUSE Studio, который появился аж в 2009.

Веб-интерфейс для создания образов для Raspberry Pi Raspberry pi, Начинающий, Устройство, Своими руками, Linux, Debian, Длиннопост

Этот сервис в основном ориентируется на виртуальные окружения, позволяя генерировать образы кастомизированных openSUSE и SUSE Linux Enterprise для различных систем виртуализации, хотя и не ограничивается этим. Мы, в свою очередь, решили сосредоточиться на одноплатных компьютерах и Debian-подобных дистрибутивах. В идеале я вижу CusDeb системой, которая предоставляет единый интерфейс для приготовления проблемно-ориентированной операционной системы для широкого круга одноплатных компьютеров. На данный момент у нас есть поддержка пока только двух моделей RPi (2 и 3) и двух выпусков Debian (Jessie и Stretch).


Первое знакомство с CusDeb


После регистрации вы попадете в панель управления, откуда сразу можно начать сборку образа. В будущем здесь можно будет найти все собранные образы. Также здесь в качестве эксперимента находится образ с уже готовым приложением – Nextcloud, которое позволяет создать домашнее облачное хранилище на базе Raspberry Pi 2 или 3. Этому приложению была посвящена другая статья на Пикабу.

Веб-интерфейс для создания образов для Raspberry Pi Raspberry pi, Начинающий, Устройство, Своими руками, Linux, Debian, Длиннопост

Основная движуха начинается после нажатия на «СОЗДАТЬ НОВЫЙ».

Веб-интерфейс для создания образов для Raspberry Pi Raspberry pi, Начинающий, Устройство, Своими руками, Linux, Debian, Длиннопост

На этом этапе нужно выбрать устройство, для которого необходим кастомизированный образ операционной системы, и дистрибутив, на базе которого этот образ будет построен. Наша задача в ближайшее время расширять эти два списка, чтобы сделать CusDeb более привлекательным для конечных пользователей. Как уже говорилось выше, CusDeb пока поддерживает только Debian Jessie и Debian Stretch, причем последний доступен только по подписке. После нажатия на кнопку «Далее» придется немного подождать, т.к. лично для вас необходимо создать персональное окружение, в рамках которого вы будете работать над своим будущим образом.

Кастомизация начинается с выбора пакетов. В основу будущего образа закладывается минимальная версия операционной системы, поэтому в ней нет ничего лишнего. Примечательно, что минимальная (или базовая) версия Debian Jessie состоит аж из 121 пакета, что не мало. Для сравнения, минимальная версия Debian Stretch состоит всего из 76 пакетов.

Веб-интерфейс для создания образов для Raspberry Pi Raspberry pi, Начинающий, Устройство, Своими руками, Linux, Debian, Длиннопост

Здесь мы явно заимствовали одну из крутейших фич SUSE Studio – список пакетов всего дистрибутива с возможностью разрешения зависимостей в реальном времени. Если вы выберите тот или иной пакет, то сразу увидите, какие пакеты добавятся в ваш образ в качестве зависимых, а также общее количество пакетов.

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

Веб-интерфейс для создания образов для Raspberry Pi Raspberry pi, Начинающий, Устройство, Своими руками, Linux, Debian, Длиннопост

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

Веб-интерфейс для создания образов для Raspberry Pi Raspberry pi, Начинающий, Устройство, Своими руками, Linux, Debian, Длиннопост

После того как вы убедились в том, что вы сделали все, что хотели на каждом шаге, нажмите кнопку «Собрать». После этого запустится достаточно долгий процесс сборки, который будет сильно зависеть от тех пакетов, которые вы добавили в свой образ. Кстати, лог сборки вы можете также наблюдать в реальном времени.

Веб-интерфейс для создания образов для Raspberry Pi Raspberry pi, Начинающий, Устройство, Своими руками, Linux, Debian, Длиннопост

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


Как помочь проекту


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

* какой фичи лично вам не хватает в CusDeb и почему не хватает именно ее;

* какие одноплатники вы бы хотели видеть в списке целевых устройств;

* в каких проектах (коммерческих и некоммерческих) вы используете одноплатники и какими вы пользуетесь инструментами.


Покупка Pro-подписки может считаться материальной поддержкой проекта.

Показать полностью 7

Как сделать Raspberry Pi доступным из любой точки мира

Введение


В прошлой статье я рассказал о том, как развернуть домашнее облачное хранилище на базе подготовленного командой cusdeb.com образа для Raspberry Pi 2 и 3 с предустановленным Nextcloud 11 (кстати, совсем недавно мы обновили образ до 12-й версии), а прямо сейчас я расскажу о том, как делать сервисы наподобие Nextcloud доступными извне. Несмотря на то, что на протяжении всей статьи упоминается Raspberry Pi, ничего из сказанного здесь не ограничивает вас в использовании любого другого устройства.


«Белые» динамические и статические IP-адреса


Все IP-адреса протокола IPv4 делятся на «белые» (более формально – публичные, глобальные или внешние) и «серые» (более формально – частные, локальные или внутренние). К устройству с «белым» IP-адресом можно получить доступ из любой точки мира, т.к. «белые» IP-адреса маршрутизируются в Интернете, в отличие от «серых» IP-адресов.

«Белые» IP-адреса, в свою очередь, делятся на динамические и статические. Динамические «белые» IP-адреса являются сегодня большой редкостью, но если вам все-таки повезло, то у вас есть возможность с небольшими трудозатратами абсолютно бесплатно сделать свой RPi (или любую другую машину) доступным через Интернет. Дело в том, что сервис NO-IP позволяет зарегистрировать домен третьего уровня и посредством специального клиентского ПО в фоновом режиме отслеживать изменение вашего динамического IP-адреса и при необходимости обновлять DNS, чтобы ваша машина была всегда доступна по зарегистрированному вами домену.

Если у вас по той или иной причине нет динамического «белого» IP-адреса, то почти наверняка у вас есть возможность купить у вашего провайдера «белый» статический IP-адрес. На самом деле это является наиболее надежным и наименее трудозатратным решением. Вот расценки трех провайдеров, которые у меня всегда на слуху.

* ТТК – 250 руб. в месяц

* Ростелеком – 50 руб. активация и 100 руб. в месяц

* Дом.ru – 450 руб. активация и 20 руб. в месяц


Если вы являетесь клиентом провайдера Дом.ru, то не спешите покупать у него статический «белый» IP-адрес, т.к. у вас определенно есть возможность получить динамический «белый» IP-адрес абсолютно бесплатно. Для этого убедитесь в своем личном кабинете, что у вас выключен NAT.


Проброс портов


Этот этап необходимо пройти в том случае, если у вас есть «белый» IP-адрес (вне зависимости от того, динамический он или статический). Основная идея здесь заключается в том, чтобы маршрутизатор, который стоит перед вашим RPi, принимал все запросы, а затем передавал их одноплатнику. Для каждого маршрутизатора эта процедура выглядит по-разному, и в Сети можно легко найти описание той, которая будет применима именно для вашего маршрутизатора. Вот как она выглядит для моего ZyXEL Keenetic DSL.

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

Как сделать Raspberry Pi доступным из любой точки мира Raspberry pi, Своими руками, Длиннопост, Начинающий
Теперь можно выполнить сам проброс портов. Для этого переходим на страницу «Безопасность» и на вкладке «Трансляция сетевых адресов (NAT)» добавляем новое правило. В появившемся диалоговом окне указываем «Broadband connection (ISP)» в качестве «Интерфейса». Теперь все зависит от того, какой сервис нужно сделать доступным извне. В данном конкретном примере я рассмотрю Nextcloud, до которого в моей локальной сети можно дотянуться по адресу http://192.168.1.37:8001/nc. Таким образом, указываем «TCP» в качестве «Протокола» и говорим, что все запросы, которые приходят на 80-й порт маршрутизатора, нужно передавать на http://192.168.1.37:8001.
Как сделать Raspberry Pi доступным из любой точки мира Raspberry pi, Своими руками, Длиннопост, Начинающий
После этого сервис будет доступен через <белый IP-адрес>/nc без указания номера порта 8001. Если используется «белый» статический IP-адрес, то на этом можно остановиться. В данном случае последним штрихом может стать только регистрация домена, к примеру, на domain.com. Если же используется «белый» динамический IP-адрес, то сервис будет доступен до тех пор, пока не поменяется этот IP-адрес. Таким образом, необходимо воспользоваться услугами сервиса, предоставляющего услуги динамического DNS. В данной статье я предлагаю воспользоваться NO-IP.


NO-IP


Для начала работы с NO-IP перейдите на страницу регистрации, создайте Free'шную учетную запись, зарегистрируйте там же домен третьего уровня и активируйте вашу учетную запись. В качестве доменного имени я выбрал denismosolov.ddns.net. Также рассмотрите апгрейд вашего аккаунта с Free до Enhanced, иначе вам потребуется подтверждать ваш домен каждый месяц. (Тем не менее, лично мне цена $24.95 в год за эту услугу показалась слегка завышенной.) После этого я могу получать доступ к сервису, который крутится на моем устройстве, через denismosolov.ddns.net, но проблема с динамическим IP-адресом все еще остается актуальной. Для того чтобы RPi всегда был доступен по зарегистрированному домену, на него необходимо поставить специальное клиентское ПО. Если вы используете Raspbian, Debian, Ubuntu или любой другой дистрибутив GNU/Linux на своем одноплатнике, то я не рекомендую тратить время на официальный клиент от NO-IP под названием DUC (DNS Update Client). Во-первых, он не обновлялся с 2008-го года, а во-вторых, есть универсальное решение – inadyn, которое на данный момент поддерживает 25 сервисов, предоставляющих услуги динамического DNS, в числе которых NO-IP. К сожалению, несмотря на то, что пакет с inadyn есть в Debian и Ubuntu, он недостаточно актуален, хотя и поддерживает NO-IP в полной мере. Я предлагаю воспользоваться подготовленным мною Docker-контейнером с самой свежей версией inadyn или собрать контейнер самостоятельно, воспользовавшись проектом cusdeb-services.

Для того чтобы воспользоваться готовым контейнером, клонируйте проект, перейдите в поддиректорию inadyn этого проекта, раскомментируйте блок default@no-ip.com в конфигурационном файле inadyn.conf, добавьте в него параметры своей учетной записи и выполните docker-compose up.

$ git clone https://github.com/tolstoyevsky/cusdeb-services.git

$ cd cusdeb-services/inadyn

$ nano inadyn.conf

$ docker-compose up


После того как вы убедитесь в том, что клиент нормально стартовал и не жалуется на конфигурационный файл, который вы ему подсунули, убейте текущий интерактивный процесс и перезапустите контейнер командой docker-compose up -d. Теперь ваше устройство будет доступно из любой точки мира через Интернет.


IPv6-туннель


Я попытался сделать статью как можно более универсальной и на любой вкус, поэтому решил не останавливаться на паре описанных выше способах решить проблему доступности устройства через Интернет. Дело в том, что есть еще один способ – сделать свой сервер IPv6-only, но в этом случае у клиентов почти наверняка возникнут проблемы с доступом к нему, т. к. их провайдер до сих пор не сделал и шагу в сторону IPv6. Тем не менее, я расскажу об этом подходе, т. к. считаю, что в некоторых случаях он может оказаться очень полезным. К примеру, если вы поднимаете не массовый сервер и знаете своих клиентов в лицо. В этом случае вы можете раздать им простую инструкцию, которая бы рассказывала, как (бесплатно) воспользоваться услугами туннельного брокера для доступа к вашему и другим IPv6-only сервисам.

Для начала предлагаю убедиться в том, что вы все-таки не можете обращаться к IPv6-only сервисам, иначе все описанное далее будет для вас абсолютно бесполезным. Выполните на своем устройстве ping6 ipv6.test-ipv6.com. Если ответом стало «connect: Network is unreachable», то придется читать дальше. Если ipv6.test-ipv6.com все-таки пингуется, то поздравляю – или ваш провайдер поддерживает IPv6, или вы уже настроили работу с IPv6-only сервисами через туннельного брокера.

Teredo – это один из способов настройки поддержки IPv6 на компьютере, имеющем адрес IPv4. Teredo позволяет получить IPv6-туннель даже тем клиентам, которые выходят в Интернет через провайдерский NAT (т. е. имеют «серый» IP-адрес). Несмотря на то, что Teredo разрабатывался Microsoft только для Windows, существует реализация клиента под названием Miredo для Linux и других Unix-подобных операционных систем. Если вы используете на своем одноплатнике Raspbian, Ubuntu или любой другой Debian-подобный дистрибутив GNU/Linux, то установите Miredo следующей командой.

$ sudo apt-get install miredo

Теперь ping6 ipv6.test-ipv6.com должен возвращать ожидаемый результат. Вот так все просто. IP-адрес, который вы получили, является по определению «белым». Теперь вместо проброса портов нужно только открыть UDP-порт 3544. Дело в том, что Teredo инкапсулирует пакеты IPv6 в заголовках IPv4 и использует UDP-порт 3544 для передачи этих пакетов. Процедура открытия того или иного порта варьируется от маршрутизатора к маршрутизаторы. Вот как она выглядит для моего ZyXEL Keenetic DSL. Сначала переходим на страницу «Безопасность», а затем на вкладке «Межсетевой экран» добавляем новое правило, открывающее UDP-порт 3544.

Как сделать Raspberry Pi доступным из любой точки мира Raspberry pi, Своими руками, Длиннопост, Начинающий

Для того чтобы достучаться до вашего устройства, ваши клиенты могут также установить Miredo в любой Unix-подобной операционной системе (включая macOS) или настроить Teredo в Windows, но сейчас остаются нерешенными две проблемы:

* в данном конкретном случае IPv6-адрес зависит от IPv4-адреса, поэтому является динамическим (если конечно IPv4-адрес динамический)

* IPv6-адреса достаточно трудно запоминать.

Эти две проблемы легко решить посредством сервиса, предоставляющего услуги динамического DNS. Для этих целей предлагаю в этот раз воспользоваться dynv6, который, как и NO-IP, позволяет зарегистрировать домен третьего уровня и привязать его к динамическому IP-адресу. В качестве клиента, который в фоновом режиме будет отслеживать изменение вашего динамического IP-адреса и при необходимости обновлять DNS, предлагаю использовать inadyn, который также упомянуть упомянался в предыдущем разделе. Для того чтобы воспользоваться готовым контейнером с клиентом, клонируйте проект cusdeb-services, перейдите в поддиректорию inadyn этого проекта, раскомментируйте блок default@dynv6.com в конфигурационном файле inadyn.conf и измените в нем параметры username и hostname. Обратите внимание, что в качестве значения username необходимо использовать токен, который можно найти в настройках вашего домена на вкладке Instructions. Для параметра password нужно оставить значение «n/a».

$ git clone https://github.com/tolstoyevsky/cusdeb-services.git

$ cd cusdeb-services/inadyn

$ nano inadyn.conf

$ docker-compose up


Теперь ваше устройство будет доступно из любой точки мира, но для клиентов, у которых настроен IPv6.


Заключение


В этой статье я рассказал как сделать свое устройство, будь то одноплатник, ноутбук или стационарный компьютер, доступным из любой точки мира через Интернет. Также я рассмотрел как решить эту задачу посредством «белого» статического и динамического IP-адреса, и рассказал как сделать сервисы на своем устройстве IPv6-only через туннельного брокера. Не прошли незамеченными и сервисы, предоставляющие услуги динамического DNS, которые предлагаю абсолютно бесплатно регистрировать домены третьего уровня, привязывать их к своему IP-адресу и сохранять устройство доступным по этому домену несмотря на то, что IP-адрес может в любое время измениться.

К сожалению, за бортом осталась важная тема получения сертификата через сервис Let's Encrypt для того, чтобы устанавливать защищенное соединение между вашим сервером и клиентами. Дайте знать в комментариях, если эта тема нуждается в том, чтобы я о ней также написал на Пикабу.

Спасибо!

Показать полностью 3

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud

Введение


Я расскажу о простом способе создания домашнего облачного хранилища на основе Raspberry Pi и Nextcloud Server, покажу интерфейс Nextcloud и расскажу о его клиентах и приложениях. В рунете есть несколько хороших постов на эту тему, но они больше про установку и настройку Nextcloud. Благодаря стараниям команды разработчиков cusdeb.com, вся установка Nextcloud свелась к записи RAW-образа на карту памяти MicroSD.


Nextcloud начинался как проект ownCloud, который, в свою очередь, был инициирован разработчиками KDE с целью создания платформы для развертывания Dropbox-подобного хранилища данных на своих мощностях. Проект оказался настолько успешным, что сначала вышел из под патронажа KDE, а затем перешел под крыло компании, названной в свою же честь – ownCloud, Inc. К сожалению, ключевые разработчики ownCloud не смогли договориться со своими инвесторами, что стало причиной форка под названием Nextcloud (читайте подробности здесь). Несмотря на то, что ownCloud продолжает свое существование, Nextcloud развивается ключевыми разработчиками ownCloud. Тем не менее, клиентское программное обеспечение ownCloud все еще совместимо с Nextcloud и будет оставаться совместимым так долго, насколько это возможно.


Подготовка


Вот список компонентов, из которых состоит мое домашнее облако:

1. Raspberry Pi 3

2. Блок питания

3. Карта памяти MicroSD

4. Внешний жесткий диск

5. Маршрутизатор.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Я использую маршрутизатор для того, чтобы открыть доступ к облаку извне. Если вы не хотите подключаться к хранилищу через Интернет, то маршрутизатор не обязателен.

Вместо жесткого диска можно использовать простую флешку в качестве хранилища данных. Главное, чтобы первый раздел был отформатирован в NTFS. Можно не подключать внешнее хранилище вообще, тогда файлы будут сохраняться на SD-карту на которой находится вся система с Nextcloud. Настоятельно рекомендую использовать внешнее хранилище, иначе SD-карта быстро придет в негодность.


Установка Nextcloud Server


Скачайте образ для Raspberry Pi 2 или Raspberry Pi 3 и запишите его на SD-карту. Образ содержит операционную систему Ubuntu 16.04, все необходимое серверное программное обеспечение для работы Nextcloud и сам Nextcloud.


Запуск


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


Узнайте IP-адрес сервера в локальной сети. Это можно сделать как минимум тремя разными способами:

1. из админки роутера

2. программой Angry IP Scanner (для Windows и различных Unix-подобных ОС)

3. командой sudo ifconfig, авторизовавшись в только что загруженной системе (используйте ubuntu в качестве логина и пароля)


Например, адресом устройства оказался 192.168.0.8, тогда в строке браузера наберите http://192.168.0.8:8001/nc и вы увидите страницу завершения установки Nextcloud.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Придумайте логин и пароль администратора и нажмите кнопку «Завершить установку». Через несколько секунд вы увидите корневой каталог файлов вашего домашнего хранилища.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Пользователи и группы


Nextcloud – это многопользовательская система. Учетные записи пользователей можно создавать как вручную, так и давать пользователям возможность регистрироваться самостоятельно. Для того чтобы создать учетную запись вручную, перейдите на страницу «Пользователи» из выпадающего списка в правом верхнем углу экрана прямо под вашим логином.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Впишите логин и пароль нового пользователя в соответствующие поля. Если вы после этого нажмите кнопку «Создать», то пользователь попадет в безымянную группу. Однако прямо здесь вы можете выбрать одну из существующих групп или создать новую.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Управлять группами можно через панель, которая находится слева.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

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

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Загрузка файлов через веб интерфейс


Откройте корневой каталог файлов и создайте папку для загрузки файлов, например «Красная Поляна 2017».

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Затем, перейдите в папку и загрузите несколько фотографий.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Права доступа к файлам


Кликните на иконке «Поделиться» рядом с названием папки и справа появится панель, в которой можно настроить правила доступа к папке. Я вбил в строку поиска название группы «Лыжники» и установил галочки «можно создавать» и «можно изменить», чтобы члены группы могли загружать свои фотографии в папку «Красная Поляна 2017».

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Нажмите на иконке с домиком вверху и вернитесь в корневой каталог файлов. Создайте новую папку и загрузите в неё несколько файлов. Нажмите на иконку «Поделиться» рядом с именем одного из файлов и поставьте галочку «Поделиться ссылкой». Теперь файл доступен по ссылке на любом устройстве в локальной сети.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

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


Клиенты


Nextcloud предлагает клиенты под Windows, Linux, macOS, Android и iOS, что позволяет настроить синхронизацию почти на всех своих устройствах. К примеру, клиент для синхронизации файлов под Android можно абсолютно бесплатно загрузить из Play Market, а пользователям iOS придется заплатить символическую цену в виде $0.99. С каким бы клиентом вам не пришлось иметь дело, его настройка предельно проста. Сначала вводится адрес сервера, а затем логин и пароль пользователя.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

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

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Работа с клиентами для настольных операционных систем не сложнее, чем в этом примере, поэтому не думаю, что на них стоит останавливаться отдельно. Кстати, клиенты можно загрузить здесь.


Приложения


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

Разработчики cusdeb.com поместили в образ для Raspberry Pi 2 и Raspberry Pi 3 множество приложений, которые нужно только активировать. Для этого откройте выпадающий список со всеми вашими приложениями и нажмите плюсик.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

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


В качестве первого примера рассмотрим Calendar, которое является отличной альтернативой Google Calendar.


Calendar


Для того чтобы установить это приложение, перейдите в раздел «Организация» каталога приложений, найдите Calendar и нажмите кнопку «Включить» и через несколько секунд новое приложение появится в списке.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Вам сразу будет доступен один календарь под названием «Личное», с которого можно начать работу. Добавьте при необходимости столько календарей, сколько вам нужно. Их количество не ограничено. Запланируйте какое-нибудь событие на один из дней в календаре «Личное» для того, чтобы позднее его синхронизировать со своим мобильным устройством и получать от него напоминания о том, что событие приближается.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Рассмотрим в качестве примера синхронизацию календаря «Личное» с устройством на базе Android. Для этого нужно клиентское приложение, которое работает по протоколу DAV. Одним из таких приложений, которое я настоятельно рекомендую, является DAVdroid. Его можно получить как минимум двумя способами: купить в Play Market за 249 руб. или загрузить бесплатно из каталога приложений F-Droid, т.к. DAVdroid является полностью свободным программным обеспечением. Нет никакой разницы, каким именно способом вы воспользуетесь, но помните, что в первом случае вы поддержите разработчиков хорошего ПО.


После первой загрузки клиента вам необходимо настроить подключение к вашему серверу. Используйте в качестве адреса что-то вроде домен-или-ip-адрес-сервера/remote.php/dav/ и логин и пароль вашего текущего пользователя.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Обратите внимание на то, что необходимо явно указать календари, изменения в которых вы хотите отслеживать. В данном случае мой выбор невелик: мне остается только указать DAVdroid, что ему нужно отслеживать изменения в календаре «Личное».

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Теперь после пары нажатий на Next клиент может считаться сконфигурированным, и в штатном календаре Android появится запланированное выше мероприятие.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Синхронизация работает в двустороннем режиме. Запланируйте какое-нибудь событие в штатном календаре Android, но не забудьте выбрать календарь «Личное» или любой другой, созданный в приложении Calendar.


Только одна проблема на данный момент остается нерешенной: по умолчанию DAVdroid синхронизирует календари только в ручном режиме. Для того чтобы автоматизировать этот процесс, откройте настройки клиента.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

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

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Теперь все готово для использования приложения Calendar в полную силу.


Default encryption module


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


Для того чтобы установить «Default encryption module» откройте каталог приложений, перейдите в раздел «Не включено» и найдите там это приложение. Затем нажмите «Включить». В отличии от других рассмотренных здесь приложений, «Default encryption module» не появится в вашем списке, т. к. оно не предоставляет никакого пользовательского интерфейса.


После активации приложения необходимо включить шифрование на странице администратора. Для этого перейдите на страницу «Администрирование». Затем в разделе «Шифрование» поставьте галочку напротив «Включить шифрование на стороне сервера». После этого необходимо перезайти в систему под текущим пользователем. Теперь все ваши файлы будут шифроваться перед сохранением в вашем облаке.

Домашнее облачное хранилище данных на Raspberry Pi и Nextcloud Raspberry pi, Начинающий, Устройство, Nextcloud, Своими руками, Длиннопост, Android

Заключение


В этом посте я рассказал о своём домашнем облачном хранилище данных, из каких компонентов я сделал сервер и о простом способе установки программного обеспечения Nextcloud. Я на примерах показал как управлять файлами и правами доступа через веб-интерфейс Nextcloud, как синхронизировать файлы с телефона и как пользоваться календарем. Наконец, я написал о том, как включить шифрование файлов в хранилище. Все это лишь малая часть того, на что способен Nextcloud. Рекомендую ознакомиться с руководством пользователя на официальном сайте, чтобы узнать обо всех возможностях.


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


Жду ваших комментариев!

Показать полностью 22
Отличная работа, все прочитано!