Эта статья о создании личного облачного хранилища на базе этого микрокомпьютера.
Nextcloud — надежная система, использующаяся как в корпоративной среде, так и частными лицами. Она позволяет развернуть свое личное облако на своем собственном железе, не теряя физического доступа к своей информации и не становясь заложником компании, осуществляющей управление облаком. Сразу хочу отметить — я не программист и не кулхацкер. Все написаное тут было найдено в гугле и воплощено на практике. Но это работает, и работает стабильно, что мне, собственно говоря, и надо. Итак…
Что умеет Nextcloud:
Доступ через веб-интерфейс
— Клиентские приложения под Windows, Linux, Mac OS, Android, iOS, Windows 10 Mobile
— «Календарь» и «Контакты» с поддержкой синхронизации по протоколу CalDAV/CardDAV
— Поддержка протокола WebDAV для доступа к хранящимся в облаке файлам
— Возможность шифрования хранящейся информации
— Встроенный аудиоплеер, видеоплеер, просмотрщики текстовых и PDF-файлов
— Галерея и просмотр изображения
— Интернет радио
— Фотосервис Memories
— Dicom просмотрщик через web интерфейс — ценно для врачей!
— Возможность добавления тегов и комментариев к файлам
— Онлайн-редактор Nextcloud office
— Корзина, хранящая в себе удаленные файлы с возможностью их восстановления в течение некоторого времени
— Возможность расшаривания общего доступа к файлам и папкам
— Возможность работы как на сервере в интернете, так и в локальной сети без доступа к интернету вообще
Для развертывания своего собственного облака на базе Raspberry Pi понадобится: Raspberry Pi 5, желательно с оперативкой 8 ГБ и внешний жесткий диск с SATA 3 интерфейсом.
На Raspberry необходимо установить OS Raspian 64 бит, при помощи установщика с официального сайта. Микрокомпьютер должен иметь нормальное питание мощностью 5А и проводное подключение к интернету, IP адрес «малины» должен быть статическим.
Если Вы хотите иметь подключение к облаку через интернет — нужно:
— белый IP адрес,
— на роутере нужно настроить переадресацию: от внешний_белый_IP_адрес_роутера:443 на внутренний_IP_RaspberryPi:443 (443 — это порт)
Также надо будет настроить в Apache2 и Nextcloud протокол SSL.
С учетом объемов современного мультимедийного контента, жесткий диск лучше приобрести достаточно большого объема. Я например приобрел диск 2 ТБ.
Подключение и монтирование НDD.
Сначала подключаем жесткий диск к компьютеру с Windows и форматируем его в NTFS.
Если в Вашей OS Raspbian нет поддержки NTFS «из коробки», нужно установить соответствующий пакет.
После этого можно приступить непосредственно к монтированию HDD.
Подключите диск в USB порт Raspberry. Настроим монтирование USB HDD через fstab — конфигурационный файл, в котором описывается каждое из подключенных к компьютеру устройств хранения информации. Структура записей fstab выглядит так:
# <file system> <dir> <type> <options> <dump> <pass> /dev/cdrom /mnt/cd iso9660 ro,user,noauto,unhide 0 0
Найдем нужное нам значение <file system> для жесткого диска
ls -l /dev/disk/by-uuid
мы увидим:
Строка с /sda2 (или sda1) — наш жесткий диск. А написанное сине-зеленым шрифтом — это номер диска, который нам нужен, это наше будущее значение UUID. Если не уверены в номере — выключите малину, отключите диск, запустите систему, опять вводите ls -l /dev/disk/by-uuid, смотрите, какой диск пропал, затем подключайтесь заново и находите правильный номер.
Теперь создадим точку монтирования:
sudo mkdir /mnt/data2
смонтированный жесткий диск будет доступен по пути /mnt/data2 (можете указать свой путь). Путь /mnt/data2 — это наше будущее значение <dir> в структуре записи fstab
Теперь мы должны открыть в терминале файл fstab для редактирования
sudo nano /etc/fstab
Нужно добавить в таблицу новую строку:
UUID=4A9CD3139CD2F901 /mnt/data2 ntfs nofail,uid=www-data,gid=www-data,dmask=0007 0 0
Набор символов после UUID= нужно вставить свой, путь /mnt/data2 — также вставляем свой, остальную часть строки нужно использовать в таком виде без изменений.
uid=www-data,gid=www-data — владелец и группа диска, в данном случае это будет www-data, т.е. пользовать диск будет сервер Apache2. Так будет проще.
Итак, если все сделали, то сохраняем исправленный файл fstab: нажимаем ctrl X, потом Y, потом Enter.
Потом, чтобы Вы могли открыть диск в проводнике — добавьте своего пользователя в группу пользователей www-data. Добавление пользователя в группу:
sudo adduser user www-data
(поменяйте user на своего пользователя).
На этом процесс монтирования можно считать завершенным и остается только перезагрузить систему:
sudo reboot
Если Вы все сделали правильно, то система перезапустится. Ошибки в редактировании файла ftab могут привести к тому, что Raspbian перестанет загружаться до конца, выдавая в процессе сообщение об ошибке — придется переустанавливать систему и начинать все заново.
Подготовка к установке
Для развертывания Nextcloud необходимо поднять на «малине» веб-сервер, интерпретатор PHP и СУБД с базой данных для облачного хранилища + некоторые манипуляции с системой для оптимизации ее работы (номер PHP может отличаться — 8.3 и т.д.).
sudo apt update sudo apt upgrade sudo apt install apache2 sudo apt install php8.2 php8.2-gd php8.2-sqlite3 php8.2-curl php8.2-zip php8.2-xml php8.2-mbstring php8.2-mysql php8.2-bz2 php8.2-intl php8.2-smbclient php8.2-imap php8.2-gmp php8.2-bcmath libapache2-mod-php8.2 php8.2-imagick sudo service apache2 restart
Проверить версию работающего интерпретатора можно при помощи консольной команды:
php -v
Если установка PHP 8 выполнена корректно, то мы увидим примерно следующее:
PHP 8.2.18 (cli) (built: Apr 11 2024 22:07:45) (NTS) Copyright (c) The PHP Group Zend Engine v4.2.18, Copyright (c) Zend Technologies with Zend OPcache v8.2.18, Copyright (c), by Zend Technologies
Можно включить интерпретатор PHP 8.2 в Apache:
sudo a2enmod php8.2
Теперь увеличим стандартные лимиты загрузки файлов в PHP. Это делается через редактирование файла настроек php.ini:
sudo nano /etc/php/7.0/apache2/php.ini
В нем нужно найти строки:
memory_limit = 128M upload_max_filesize = 2M
И заменить их на:
memory_limit = 1024M upload_max_filesize = 1024M
После чего перезагрузить веб-сервер для применения изменений.
sudo service apache2 restart
Перенос /tmp на RAM-диск
Теперь сделаем так, чтобы содержимое папки /tmp писалось не на системный раздел Raspbian, а в оперативную память, т.е. на RAM-диск.
Это нужно для того, чтобы снизить износ microSD-карточки от многочисленных операций по созданию и изменению файлов.
Дело в том, что /tmp выступает временным хранилищем при загрузке файлов через PHP. Т.е. каждый раз, когда мы загружаем что-то в свое облако, эти файлы будут записываться в /tmp и уже оттуда перемещаться в Nextcloud-хранилище на подключенном к «малине» жестком диске. Зачем нагружать microSD кучей бессмысленных операций чтения-записи, если эти операции могут спокойно совершаться в оперативной памяти?
RAM-диск в Raspbian и других Linux-системах присутствует по умолчанию и прописан в качестве файловой системы tmpfs.
Перенос папки /tmp на tmpfs осуществляется путем правки fstab:
sudo nano /etc/fstab
Путем сложных поисков мной были скорфигурированы вот такие строки:
tmpfs /tmp tmpfs rw,nosuid,nodev,mode=0777,noatime,nodiratime 0 0
tmpfs /var/tmp tmpfs rw,nosuid,nodev,mode=0777,noatime,nodiratime 0 0
Перезагружаем Raspberry Pi для применения изменений:
sudo reboot
Можно проверить, примонтировалась ли папка /tmp на RAM-диск выполнением команды «df»:
Файловая система 1K-блоков Использовано Доступно Использовано% Cмонтировано в tmpfs 524288 15808 508480 4% /tmp tmpfs 30720 0 30720 0% /var/tmp
Установка MySQL на Raspberry Pi
sudo apt install mariadb-server php-mysql
Программное обеспечение сервера MySQL установлено на Raspberry Pi, нам нужно будет защитить его, установив пароль для root и пользователя. По умолчанию MySQL устанавливается без какого-либо пароля. Выполните следующую команду, чтобы начать процесс защиты MySQL
sudo mysql_secure_installation
Для более безопасной установки вам следует отвечать « Y» на все запросы, когда вас попросят ответить Y или N. Эти запросы удалят функции, которые позволяют кому-либо упростить доступ к серверу. Обязательно запишите пароль, который вы установили во время этого процесса, поскольку нам нужно будет использовать его для доступа к серверу MySQL и создания баз данных и пользователей для Nextcloud.
Во время установки сервера будет предложено ввести пароль для пользователя root:
Вводим пароль и запоминаем его, в дальнейшем он понадобится.
Существует два разных способа выхода из командной строки MYSQL. Первый из них — это «quit» или «exit» в интерфейс MySQL, другой способ выйти из командной строки MYSQL — нажать CTRL+ D.
Прежде чем мы приступим к созданию пользователя и базы данных MySQL на нашем Raspberry Pi, мы должны снова войти в инструмент командной строки MySQL
sudo mysql -u root -p
Вводим пароль root. Как и в большинстве случаев ввода пароля в Linux, текст не будет отображаться по мере ввода.
Теперь создадим базу данных nextcloud:
CREATE DATABASE nextcloud;
Cоздадим пользователя MySQL
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'password';
nextcloud — новый пользователь, в качестве ‘password’ задается пароль для доступа к БД
Создав пользователя, мы можем продолжить и предоставить ему все привилегии, чтобы он мог взаимодействовать с базой данных.
GRANT ALL PRIVILEGES ON nextcloud.* TO nextcloud@localhost; FLUSH PRIVILEGES; exit
Установка Nextcloud
Перейдем в наш каталог html с помощью следующей команды изменения каталога
cd /var/www/html/
Скачаем последнюю версию облака:
sudo wget https://download.nextcloud.com/server/releases/latest.tar.bz2
Разархивируем
sudo tar -xvf latest.tar.bz2
Другой вариант:
sudo wget https://download.nextcloud.com/server/releases/latest.zip sudo mkdir /var/www/html/nextcloud sudo mv latest.zip /var/www/html/ cd /var/www/html/ sudo unzip -q latest.zip
Создаем папку для облачного хранилища и назначаем права всем папкам:
sudo mkdir -p /mnt/data2/Nextcloud sudo chown www-data:www-data /mnt/data2/Nextcloud sudo chmod 750 /var/www/html/nextcloud/ sudo chown -R www-data:www-data /var/www/html/nextcloud/
И на всякий случай:
sudo chown www-data:www-data /var/www/html/nextcloud/config sudo chown www-data:www-data /var/www/html/nextcloud/apps
На этом подготовка к запуску Nextcloud завершена.
Настройка Apache для Nextcloud
Нужно разобраться с файлом .htaccess для Nextcloud. Поскольку мы установили Nextcloud в каталог Apache2 по умолчанию /var/www/html, нам нужно будет изменить некоторые настройки в Apache2, чтобы .htaccess файл мог переопределять настройки.
Создадим файл, в котором будут храниться изменения конфигурации Nextcloud
sudo nano /etc/apache2/sites-available/nextcloud.conf
В файле создаем следующее:
Alias /nextcloud "/var/www/html/nextcloud/" <Directory /var/www/html/nextcloud/> Require all granted Allow Override All Options FollowSymLinks MultiViews <IfModule mod_dav.c> Dav off </IfModule> </Directory>
Эти изменения позволят Apache2 читать и использовать .htaccess файлы в каталоге Nextcloud. Сохраняем файл. Затем в терминале «включаем» сайт Nextcloud:
sudo a2ensite nextcloud.conf
Перезапускаем апач:
sudo service apache2 restart
Теперь всякий раз, когда кто-то заходит на IP-адрес_вашего_Pi/nextcloud», он будет встречен его интерфейсом.
Запуск Nextcloud
Для начала перейдите на http://ip-адрес-raspberry-pi/nextcloud/
Если все сделано правильно, то появится экран, на котором нужно создать нового пользователя и указать каталог с данными:
Имя пользователя и пароль может быть любым, а каталог указываем тот, что создавали, и к которому прописывали права доступа пользователя www-data консольными командами чуть выше по тексту. В данном примере он располагается на внешнем жестком диске /mnt/data2/Nextcloud
Чуть ниже будет предложено ввести данные для доступа к БД:
Вводим те данные, что указали при создании БД MySQL и жмем «Завершить установку».
Открывается приветственное окно с предложением загрузить мобильные и десктопные клиенты:
На этом установка Nextcloud окончательно завершена, облачный сервис работает, можно устанавливать клиенты на свой компьютер и мобильные устройства и спокойно пользоваться облаком из локальной сети.
Для доступа через интернет есть ряд дополнительных, обязательных условий:
- наличие сертификатов SSL на сайте малины для доступа по протоколу https. Это можно сделать платно (купить доменное имя, сертификат на домен и привязать их к вашему Ip адресу), а можно бесплатно;
- наличие белого (статического) внешнего IP адреса у вашего доступа в интернет;
- правильная настройка роутера.
Да, и еще…
Вам предстоит долгая мучительная увлекательная настройка Nextcloud. Кеширование, индексирование файлов, расписание cron, добавление дополнительных модулей — мессенджер Talk, фотомодуль Memories, музыка, радио, контакты, календарь, пароли, общие папки, офисный онлайн-редактор и т.д.
Зато когда все будет настроено и Вы увидите, что все работает, это даст массу положительных эмоций Вам и всем, кто будет пользоваться Вашим Личным Облаком.
Ссылки:
https://pimylifeup.com/raspberry-pi-nextcloud-server
https://dmitrysnotes.ru/raspberry-pi-3-sozdanie-sobstvennogo-oblachnogo-xranilishha-nextcloud