Давно хотел поднять собственный облачный сервер для хранения каких то личных моментов (фото, видео и тд…), т.к. хранить на смартфоне всю информацию не очень хорошо (забивает драгоценную память на моем iPhone), а так же хотелось бы всегда иметь под рукой доступ к часто используемым файлам.

Наткнулся на Nextcloud (open source программа, с помощью которой можно организовать собственное облачное хранилище). Выглядит все это дело так:

Внешний вид страницы с виджетами, она же главная. Тут можно настроить отображение различных виджетов для своего удобства.
Внешний вид страницы с виджетами, она же главная. Тут можно настроить отображение различных виджетов для своего удобства.
Хранилище файлов
Хранилище файлов
Галерея с имеющимися изображениями
Галерея с имеющимися изображениями
Мобильное приложение. Для подключения к серверу достаточно скачать Nextcloud из PlayMarket или AppStore, запустить и указать адрес сервера, где установлен Nextcloud
Мобильное приложение. Для подключения к серверу достаточно скачать Nextcloud из PlayMarket или AppStore, запустить и указать адрес сервера, где установлен Nextcloud
Так выглядит приложение для Windows. Скрывается оно в трее. Минус в том, что при загрузке файлов оно должно быть открыто, но надеюсь, в будущем это исправят.
Так выглядит приложение для Windows. Скрывается оно в трее. Минус в том, что при загрузке файлов оно должно быть открыто, но надеюсь, в будущем это исправят.
В настройках системы имеются ссылки для скачивания клиентов, доступных под разные операционки, а так же огромное количество других параметров, которые можно настроить под себя, например внешний вид.
В настройках системы имеются ссылки для скачивания клиентов, доступных под разные операционки, а так же огромное количество других параметров, которые можно настроить под себя, например внешний вид.
В системе можно завести пользователя и выделить ему определенное кол-во места на сервере под файлы.
В системе можно завести пользователя и выделить ему определенное кол-во места на сервере под файлы.

а так же разделы: События, контакты, почта, календарь, заметки и многое другое . Кстати, присутствует поддержка офисных документов… Еще в nextcloud имеется центр приложений, откуда можно скачать полезные для себя скрипты.

В этой статье я распишу установку пакета на сервере. 

В моем случае параметры сервера такие:

CPU: Intel(R) Xeon(R) CPU E5-2643 0 @ 3.30GHz (1 core)

HDD: 512GB

ОЗУ: 4GB

OS: UBUNTU 22.04

Нагрузка:

Ресурсов процессора кушает мало, использование памяти ~1,5Гб
Ресурсов процессора кушает мало, использование памяти ~1,5Гб

Установку операционной системы на сервер или какие либо настройки виртуальной тачки (своей или арендованной), я описывать не буду, мануалов по этому делу полно в интернете.

Итак установка NextCloud:

Подготовка к установке

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

Веб-сервер Apache, базу данных MariaDB и различные модули для PHP:

sudo apt update sudo apt install apache2 mariadb-server libapache2-mod-php php-gd php-mysql php-curl php-mbstring php-intl php-gmp php-bcmath php-xml php-imagick php-zip unzip

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

Большинство настроек Nextcloud сохраняет в базе данных. Поэтому перед первым запуском мы создадим базу данных и пользователя, а сам Nextcloud автоматически сформирует необходимые таблицы, индексы и представления. Для доступа к нашему локальному серверу мы воспользуемся простой консольной утилитой mysql.

sudo mysql

Создадим пользователя и БД. Введите следующие команды, и не забудьте установить пароль! Также можно указать другое имя пользователя и БД при необходимости.

CREATE USER 'nextcloud_user'@'localhost">localhost' IDENTIFIED BY 'ВАШ__ПАРОЛЬ';  CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud_user'@'localhost">localhost';FLUSH PRIVILEGES;

База настроена, выходим из командной строки SQL:

quit;

Установка и настройка Nextcloud

Теперь мы готовы к установке Nextcloud. Скачиваем самую последнюю версию и распаковываем ее:

Затем переместим распакованное приложение директорию /var/www:

sudo cp -r nextcloud /var/www

И сменим владельца каталога, чтобы Apache мог корректно обрабатывать все вложенные файлы:

sudo chown -R www-data:www-data /var/www/nextcloud

Настройка веб-сервера Apache

Теперь настроим Apache. Создайте файл /etc/apache2/sites-available/nextcloud.conf с настройками виртуального хоста.

В качестве доменного имени мы будем использовать cloud.YOU_DOMAIN.com, а вам необходимо указать свой домен:

<VirtualHost *:80> DocumentRoot /var/www/nextcloud/ ServerName cloud.YOU_DOMAIN.com 
<Directory /var/www/nextcloud/> 
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
</VirtualHost>

Чтобы Apache начал использовать этот файл конфигурации, выполните в shell-консоли команду:

a2ensite nextcloud.conf

Далее активируем несколько модулей Apache, которые необходимы Nextcloud для корректной работы:

a2enmod rewritea2enmod headers
a2enmod env
a2enmod dir
a2enmod mime

Перезапустим Apache, чтобы применить все выполненные настройки:

service apache2 restart

Получение TLS-сертификата

Nextcloud в настоящее время готов к использованию, однако работает по протоколу HTTP и не обеспечивает шифрование трафика. Для увеличения безопасности сервера мы планируем выдать и настроить бесплатный TLS-сертификат от Let’s Encrypt. Первым шагом будет установка утилиты certbot, которая автоматически генерирует и обновляет TLS-сертификаты.

sudo apt-get install -y certbot

Запросим сертификат с помощью команды (не забудьте в параметре указать свое доменное имя):

sudo certbot --nginx -d cloud.my-domain.com  

Затем Certbot запросит указать адрес электронной почты и согласиться с условиями использования. На этот адрес будут приходить уведомления о скором истечении срока сертификата. Сертификаты Let’s Encrypt действительны 90 дней. Для автоматического обновления сертификата добавьте задание cron или таймер systemd, который будет запускать следующую команду.:

sudo certbot renew --quiet

Теперь необходимо включить соответствующие модули в Apache, чтобы он начал использовать SSL-сертификаты:

a2enmod ssl a2ensite default-ssl

И еще раз перезапустим Apache, чтобы он применил новые настройки:

service apache2 reload

Инициализация облака Nextcloud и начальный интерфейс

Откроем в браузере страницу https://cloud.YOUR_DOMAIN.com и увидим окно первоначальной настройки Nextcloud. Создадим учетную запись администратора, а также укажите название БД, пользователя и пароль, которые мы заводили на этапе настройки MariaDB. При необходимости также можете поменять каталог, где будут размещаться пользовательские данные.

Имя пользователя и пароль - это данные, под которыми Вы будете авторизовываться в системе, как администратор. Пользователь базы данных, пароль и название мы создавали выше (В разделе «Подготовка к установке)
Имя пользователя и пароль - это данные, под которыми Вы будете авторизовываться в системе, как администратор. Пользователь базы данных, пароль и название мы создавали выше (В разделе «Подготовка к установке)

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

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

Ссылки

Заключение

Мы успешно развернули и сконфигурировали облачное хранилище Nextcloud на нашем собственном сервере. Все требуемые зависимости были установлены, MariaDB и Apache были предварительно настроены для развертывания, а сервер был защищен бесплатным SSL-сертификатом от Let’s Encrypt для обеспечения шифрования трафика.

После установки настоятельно рекомендую заглянуть в раздел «Параметры сервера - Общие сведения» и убедиться в отсутствии ошибок сервиса. (В моем случае были ошибки с SSL сертификатом, а так же некоторые системные ошибки, решил гугля, а так же читая документацию)

Собственный облачный сервер
Собственный облачный сервер

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

Немного поигрался с шаблоном, установил меню по центру и добавил анимированный фон, который благополучно стащил с оформления почты в Яндекс.
Немного поигрался с шаблоном, установил меню по центру и добавил анимированный фон, который благополучно стащил с оформления почты в Яндекс.
Центр приложений выглядит так. Слева, в меню, можно выбрать интересующую категорию скриптов.
Центр приложений выглядит так. Слева, в меню, можно выбрать интересующую категорию скриптов.
В разделе с файлами можно выдать общий доступ для пользователей (если такие имеются) или отдать файл ссылкой для скачивания.
В разделе с файлами можно выдать общий доступ для пользователей (если такие имеются) или отдать файл ссылкой для скачивания.

Наш облачный сервер готов, приятного пользования!