Если у вас имеется Raspberry Pi и вы желаете организовать свое облако дома, на данное устройство можно установить NextCloud, мощности самой малинки хватит для данной задачи. Тем самым, можно будет организовать синхронизацию файлов на всех ваших устройствах. Так как NextCloud это кроссплатформенное приложение, и может работать как на Linux, Windows, так и на Android. А так же вы спокойно сможете работать со своими файлами прямо через браузер. А если вы еще и обладатель статического IP адреса, то вы сможете подключаться к вашему собственному облаку из любой точки света, главное, что бы был интернет. Преимуществ такого подхода много, во-первых, Raspberry Pi маленькое и компактное устройство, во-вторых, размер вашего облака будет зависеть только от вас. А именно, какой накопитель вы поставите в эту связку.
Подготовка к установке
Первым делом, необходимо скачать операционную систему для Raspberry Pi, для этого идем на официальный сайт по данной ссылке, и качаем дистрибутив под названием “Raspberry Pi OS with desktop and recommended software”.

Далее, необходимо распаковать скачанный архив, после чего записываем распакованный образ на MicroCD, рекомендованный объем флешки 16 гигабайт. Записать образ вы можете например утилитой “balenaEtcher”, которую можно взять с официального сайта. Либо, воспользоваться утилитой “dd”, которая имеется в Linux, как пользоваться данной утилитой, читайте в этой статье. После записи образа, система почти что готова к использованию, достаточно вставить флешку в Raspberry Pi, включить устройство, и произвести не большую настройку, которая в итоге сводиться к выбору языка системы, временной зоны и задать пароль для пользователя. Следующим шагом, необходимо настроить удаленный доступ к Raspberry Pi, как это сделать, читайте в этой статье, а так же задать статический IP адрес. Подключаемся к Raspberry Pi, обновляем систему, выполнив следующие команды:
sudo apt update && sudo apt upgrade

Для работы с накопителем нам понадобиться утилита GParted, для ее установки переходим в Меню, затем в пункт “Preferences” и в выпадающем списке выбираем “ADD / Remove Software”:

Откроется менеджер приложений, в поисковой строке которого набираем названием нужной нам программы, в данный момент это “GParted” и нажимаем на “Enter”. Устанавливаем “GNOME partition editor”, для установки отмечаем пакет и нажимаем на кнопку “Apply”:

Подготавливаем диск
Следующим шагом подключаем наш диск, который мы будем использовать для хранения нужной нам информации к Raspberry Pi, если вы этого еще не сделали. Запускаем GParted, найдя его в установленных приложениях в пункте “System Tools”. При запуске GPrarted вводим пароль и в появившемся окне программы выбираем в верхнем правом углу наш накопитель, подключенный к Raspberry Pi. У меня диск объемом 500 гигабайт, в GParted он отображается вторым по счету сверху и определяется как /dev/sda:

Форматируем наш накопитель, для этого переходим в пункт “Partition” и из выпадающего списка выбираем пункт “New”:

В появившемся окне программы оставляем все по умолчанию, при желании можно задать название в пункте “Label”, я же оставлю его пустым. Затем нажимаем на кнопку “Add”:

Теперь необходимо запустить форматирования, для этого нажимаем на зеленую галочку, которая находится под пунктом “Partition”:

Подтверждаем форматирования в появившемся окне программы нажав на пункт “Apply” и дожидаемся окончания процесса.
Отключаем IPv6
Данный пункт не обязателен, по этому, вы можете его пропустить, но, для удобства и ввиду того, что данная технология в домашних условиях явно не обязательна, мы отключим IPv6. Для этого необходимо отредактировать конфигурационный файл “sysctl.conf”, давайте откроем его текстовым редактором “Nano”, о котором подробно вы можете прочесть в данной статье. И так, для редактирования данного файла в терминале набираем команду:
sudo nano /etc/sysctl.conf
В открывшемся окне спускаемся и вставляем следующий параметр:
net.ipv6.conf.all.disable_ipv6 = 1
Затем сохраняем отредактированный файл сочетаем клавиш “ctrl + o” и выходим из редактора Nano “ctrl + x”:

Обновляем конфигурацию IP адресов командой:
sudo sysctl -p
Устанавливаем необходимое ПО
Давайте установим необходимое программное обеспечение, которое нам понадобиться для дальнейшей работы и установки NextClaud, переходим в терминал и вводим команду:
sudo apt install net-tools tree ncdu bash-completion curl dnsutils htop iftop pwgen screen wget

Подтверждаем установку и дожидаемся ее окончания, после чего имеет смысл перезагрузить Raspberry Pi, это можно сделать как из меню, так и выполнив команду:
sudo reboot
Монтируем накопитель в fstab
Что бы при каждой загрузки системы наш накопитель (Жесткий диск) каждый раз монтировался необходимо прописать данную команду в fstab. Переходим в терминал и сначала давайте смонтируем наш накопитель, для этого вводим команду:
sudo fdisk -l
Смотрим где находится наш накопитель, в моем случае это “/dev/sda1”, определить вы можете по размеру вашего накопителя:

Монтируем его ведя команду “mount”, а затем названия устройства, в моем же случае это “/dev/sda1”, затем указываем путь, куда хотим монтировать. Смонтировать устройство можно в любую директорию, для этого к примеру вы можете создать в домашнем каталоге пользователя папку, и прописав к ней путь, смонтировать накопитель в нее. Я же буду монтировать в каталог “mnt”:
sudo mount /dev/sda1 /mnt

Проверить примонтировался ли накопитель, можно командой “mount”, как видно на скриншоте ниже, накопитель примонтировался:
sudo mount

Теперь переходим к редактированию fstab, открываем его текстовым редактором Nano введя команду:
sudo nano /etc/fstab
Спускаемся в самый низ и в конце вписываем наш накопитель, в мем случае это – /dev/sda1, затем указываем куда он будет монтироваться, в моем случае это каталог /mnt, вы же можете указать любой каталог, который захотите. Далее указываем параметры “ext4 defaults”, это формат и параметр монтирования нашего накопителя. Далее вписываем “0 3”, после чего сохраняем и выходим из конфигурационного файла fstab:
/dev/sda1 /mnt ext4 defaults 0 3

Прежде чем продолжить, давайте убедимся, что мы все правильно вписали в fstab, и наш накопитель будет монтироваться автоматически при каждом запуске системы. Для проверки давайте его сначала размонтируем его командой “umount”, а затем укажем наш накопитель /dev/sda1:
sudo umount /dev/sda1
Смотрим, размонтировался ли наш накопитель, для этого вводим команду “mount”
sudo mount
Как видно на скриншоте, наш накопитель сейчас не смонтирован:

Теперь давайте смонтируем его при помощи fstab, для этого вводим все ту же команду “mount”, но, добавляем ключ “-a”:
sudo mount -a
А затем все так же проверяем, примонтировался ли наш накопитель, и как вы можете увидеть, он появился в списке. Что означает, что параметры в fstab заданы правильно:
sudo mount

Устанавливаем Apache2 php mysql
Переходим к установке так называемого LAMP, так как на нем будет работать веб-интерфейс NextCloud. Для начала необходимо установить необходимые пакеты, для этого отправляемся в терминал и вводим команду:
sudo apt install apache2 php7.3 php7.3-gd php7.3-curl php7.3-common php7.3-intl php-pear php-apcu php7.3-xml libapache2-mod-php7.3 php7.3-mbstring php7.3-zip php7.3-mysql mariadb-server-10.3 smbclient imagemagick php-imagick
Подтверждаем установку нажав на “Enter” и дожидаемся когда все пакеты установятся. Когда установка завершиться, давайте включим некоторые модули, которые могут пригодятся в работе с Nextcloud:
sudo a2enmod rewrite headers env dir mime

Затем необходимо перезапустить Apache2, вводим команду для перезапуска Apache2:
sudo systemctl restart apache2
Далее необходимо сконфигурировать базу данных, вводим для этого команду:
sudo mysql_secure_installation
Нас попросят ввести пароль от root пользователя, но так как мы его не задавали для базы данных, оставляем данное поле незаполненным и просто нажимаем на “Enter”:

Далее необходимо задать тот самый пароль, вводим букву “Y” и в появившейся строке “New password” вводим пароль, затем снова нажимаем на “Enter” и в строке “Re-enter new password” подтверждаем его:

На все остальные вопросы можно просто нажимать на “Enter”. Создаем базу данных для NextCloud, для этого вводим команду:
sudo mysql
Мы попадаем если можно так выразиться в настройки базы данных, первым делом создадим ту самую базу данных о которой говорилось выше, вводим команду для ее создания:
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

Создадим нового пользователя, замените имя “cyber_x” на имя вашего пользователя, а также вместо “password” придумайте пароль для вашего пользователя базы данных, вводим команду:
CREATE USER cyber_x@localhost identified by 'password';

Затем даем нашему пользователю привилегии, не забудьте заменить имя, считываем привилегии и выходим, для этого выполняем ряд следующих команд:
GRANT ALL PRIVILEGES on nextcloud.* to cyber_x@localhost; FLUSH privileges; quit;
Устанавливаем Nextcloud
Для того, что бы закачать свежую версию NextCloud, рекомендую скопировать ссылку с официального сайта, а затем продолжить устаовку. Для этого можно перейти на официальный сайт NextCloud и скопировать ссылку с кнопки, для этого нажимаем правой клавишей мышки и выбираем пункт “Копировать адрес ссылки”. Это на тот случай, если эту статью будут читать в то время, когда NextCloud выпустит свежую версию своего продукта:

После того как вы скопировали ссылку, переходим в директорию “/var/www” при помощи команды “cd”, и скачиваем архив с NextCloud в эту директорию, утилитой “wget”:
wget https://download.nextcloud.com/server/releases/nextcloud-20.0.1.zip

Мы скачали архив, который теперь необходимо распаковать, распаковывать будем утилитой “unzip”, но, для начала необходимо посмотреть на названием самого архива, вводим команду “ls -la”, а затем распаковываем введя команду “unzip” и название архива:
sudo unzip nextcloud-20.0.1.zip

Теперь можно удалить не нужный архив, это можно сделать командой “sudo rm -r nextcloud-20.0.1.zip”. Зададим права на директорию “nextcloud”, которую мы извлекли из архива, так как по умолчанию она будет принадлежать только root пользователю, а нам это не нужно. Что бы изменить права, выполним команду:
sudo chown -R www-data:www-data /var/www/nextcloud/

По умолчанию будет открываться страница Apache2, а нам нужно, что бы мы могли пользоваться веб-интерфейсом NextCloud. для этого необходимо создать новый конфигурационный файл для Apache2, тот кто поднимал веб-сервера, знакомы с данной процедурой. И так, создаем данный конфигурационный файл, введя команду:
sudo nano /etc/apache2/sites-available/nextcloud.conf
Вписываем в него следующую конфигурацию, заменив в ней только доменное имя “cloud-cyber-x.ru” на любое свое, по нему в будущем вы сможете подключаться к NextCloud через браузер:
<VirtualHost *:80> DocumentRoot /var/www/nextcloud ServerName cloud-cyber-x.ru <Directory /var/www/nextcloud/> Options +FollowSymlinks AllowOverride All Require all granted <IfModule mod_dav.c> Dav off </IfModule> </Directory> </VirtualHost>

Сохраняем данный конфигурационный файл и выходим. Теперь необходимо отключить виртуальный хост, который идет по умолчанию. А затем, необходимо включить наш хост, который мы только что создали и перезагрузить Apache2. Для этого выполняем команды:
sudo a2dissite 000-default.conf sudo a2ensite nextcloud.conf sudo systemctl reload apache2

Первичная настройка NextCloud
Пришло время к первичной настройке NextCloud. Открываем браузер и в адресной строке вводим IP адрес нашей Raspberry Pi, на которою мы и устанавливали Nextcloud, и мы попадаем на стандартную первичную страницу данного сетевого облака:

Первым делом давайте зададим логин и пароль для записи администратора, в соответствующих полях вписываем к примеру логин “admin” и пароль к нему пусть будет “password”. Я же настоятельно рекомендую для данной записи задать пароль как можно надежнее, и хранить его например в менеджере паролей KeePassXC, о котором вы можете прочесть в этой статье:

Далее указываем наш носитель, на который мы будем сохранять данные, для этого возвращаемся в терминал и давайте создадим на нашем носителе каталог под названием “Documents”, вы же можете задать любое имя. Для создания каталога мы воспользуемся утилитой “mkdir”, о которой читайте в этой статье. Как вы помните, наш носитель монтируется в каталог “/mnt”, переходим в него и создаем в нем каталог “Documents”
cd /mnt sudo mkdir Documents

Задаем права на только что созданный каталог, так как на данный момент права на этот каталог принадлежат root пользователю, а нам необходимо, что бы он принадлежал www-data. Для этого вводим команду:
sudo chown -R www-data:www-data Documents

Возвращаемся в браузер и в поле “Каталог с данными” вписываем путь, где и будут хранится данные, а именно тот самый каталог, который мы только что создали. В моем случае он находится по адресу “/mnt/Documents/”:

Далее необходимо задать пароль и логин от базы данных, которую мы создавали, заполняем соответствующие поля. В моем случае логин от базы данных был “cyber_x”, а пароль “password”, название базы данных было “nextcloud”, после чего нажимаем на кнопку “Завершить установку”:

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

Заключение
Все действия намеренно проводил в графическом интерфейсе, а можно было бы многое сделать и через SSH, но, не все любят работать без графики. Так же, старался упростить данный мануал по развертыванию NextCloud на Raspberry Pi, на сколько это вообще возможно. У вас может возникнуть вопрос по поводу старта и первоначальной настройки операционной системы на Raspberry Pi, почему я пропустил данный пункт. Отвечу, так как у меня нет возможности захвата видео с Raspberry Pi, по этому и не описал первоначальную настройку операционной системы. В целом, могу сказать, что данная связка NextCloud + Raspberry Pi показала себя довольно-таки не плохо, а с учетом того, что размеры данного облака получаются компактные, сервер можно хранить где угодно. Главное, что бы была флешка шустрая, рекомендуется для этого использовать MicroSD class 10. Подробнее про MicroSD можно прочесть на официальном сайте Raspberry Pi, перейдя по данной ссылке.
А на этом сегодня все. Надеюсь данная статья будет вам полезна.
Журнал Cyber-X
Добрый вечер. Большое спасибо за инструкцию. Все по ней настроил и облако заработало. Но столкнулся с проблемой, что после перезагрузки raspberry облако не работает. Подскажите, пожалуйста, как сделать так, чтобы после перезагрузки малинки облако запускалось автоматически?
Не помню если честно как я это делал, да и малинка сейчас занята, погуглите, где то находил инструкцию
Спасибо, поищу.
И по умолчанию облако работает на протоколе http. Подскажите, пожалуйста, как перевести на https?
как вариант можно задействовать Let’s Encrypt, у меня сайт на нем работает
Понял. Спасибо большое за столь оператиные ответы)
А для чего столько лишних телодвижений? Есть же образ на гитхабе готовый, постоянно обновляющийся и без этого всего что выше. https://github.com/nextcloud/nextcloudpi/releases
Сделал все по инструкции. При подключении пишет ошибку “страница не доступна, сайт 192.168.0.103 не отправил данные.