Продукты
Услуги
Цены Документация
Servercore
Блог
Вычисления
Хранение и обработка данных
Сетевые сервисы
Безопасность
Машинное обучение и искусственный интеллект
О компании
Кейсы
Клиентам
Юридическая информация
Для клиентских запросов
PR-служба
Техническая поддержка
Главная/Блог/Статьи/Как создать свое облачное хранилище на NextCloud: пошаговое руководство

Как создать свое облачное хранилище на NextCloud: пошаговое руководство

15 мин. чтения   /   Статьи
1
Что такое облачное хранилище данных
2
Зачем нужно персональное облачное хранилище: плюсы и минусы
3
Как выбрать сервер для облачного хранилища
4
Как создать персональное облачное хранилище NextCloud
5
Как сделать облачный сервер NextCloud быстрее на слабом железе

Если бесплатного места на Google Drive или Яндекс-диске вам не хватает или вы по каким-то причинам не хотите хранить бэкапы на серверах корпораций, вам нужно персональное облачное хранилище. В статье расскажем, как поднять собственный сервер с полным контролем доступа. Инструкция пошаговая, так что вам хватит даже базовых навыков.

Что такое облачное хранилище данных

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

Однако это относится только к готовым сервисам вроде Google Drive, Облако Mail.Ru, Google Диск, Dropbox, OneDrive, Яндекс-диск и так далее. В этой статье мы поговорим о персональных облачных хранилищах, архитектуру которых сможете создать самостоятельно.

Зачем нужно персональное облачное хранилище: плюсы и минусы

Главная причина — это конфиденциальность и полный контроль над файлами. Да, можно хранить бэкапы и важные файлы на Dropbox, Google Drive, iCloud или Яндекс-диске. Однако если вы не доверяете сторонним сервисам, то эти варианты не годятся. Нужно что-то собственное. У такого решения масса плюсов, но есть и минусы. Разберемся.

Плюсы

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

  1. Экономия. Если вы просто храните семейные фотографии, то вам скорее всего будет достаточно бесплатного облачного хранилища на 5 или 10 Гб от Google или Dropbox. Однако хранение сотен гигабайт в этих облаках может стоить довольно дорого. Так что на дистанции собственный сервер окупится и позволит сэкономить. 
  2. Полный контроль доступа. Пространство на облачном сервере можно дробить и распределять как угодно: можно создать отдельные каталоги для каждого члена семьи или поделить между друзьями.
  3. Независимость. Вы больше не будете зависеть от политики конфиденциальности и цен провайдера. Вы платите только за интернет и электричество и не зависите от факторов, на которые не можете повлиять.
  4. Данные всегда рядом. Если вы настроите сервер, который физически находится у вас дома, то для получения физического доступа к нему злоумышленникам пришлось бы проникнуть в вашу квартиру. Это намного менее вероятно, чем взлом iCloud, например.

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

Минусы

Было бы нечестно не предупредить о минусах.

  1. Относительная сложность. Создать собственный облачный сервер не так же просто, как зарегистрироваться и начать пользоваться, например, Google Drive. Мы подготовили пошаговую инструкцию по тому, как создать свой облачный сервис, но она предполагает, что у вас уже есть базовые знания и опыт в работе с базами данных и серверами.
  2. Вы сами отвечаете за безопасность. Ваш сервер — ваша ответственность. Разумеется, тот факт, что никакая корпорация не получит доступа к вашим личным файлам, это плюс, но у медали есть и обратная сторона — вам самостоятельно придется обеспечивать безопасность своего хранилища и сохранность данных.
  3. Скорость работы. Если вы используете в качестве машины собственный домашний физический сервер, его мощности может быть недостаточно, чтобы так же быстро загружать и выгружать файлы, как на облачный сервис Google или Dropbox. 
  4. Трудно делиться файлами. Если вы создаете персональный облачный сервис, чтобы делиться большими объемами файлов, вам потребуется мощное железо. Чтобы множество пользователей могли без проблем получать доступ к вашему каталогу, придется раскошелиться на производительный сервер. 

Если для вас плюсы перевешивают минусы, переходим к руководству.

Как выбрать сервер для облачного хранилища

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

Если зайти на сайт NextCloud и заглянуть в инструкцию по ручной установке, она покажется сложным процессом: придется предварительно установить Apache, PHP, PostgreSQL/MariaDB, Redis и так далее. 

Не пугайтесь. Мы расскажем про упрощенный путь, все будет легче, чем можно представить. 

По поводу выбора сервера с нужными характеристиками для вашего облака: все зависит от ваших потребностей и будущих нагрузок. Единственный действительно важный критерий — объем памяти. Вам потребуется сервер минимум с 1 Гб памяти. Если вы не можете себе такой позволить, мы расскажем, как обойтись машиной с 512 Мб на борту, но это не оптимальный вариант.

Готовые облачные серверы для NextCloud

От 1 ГБ RAM, SSD-диски, установка за 60 секунд

Узнать больше

Как создать персональное облачное хранилище NextCloud

В рамках подготовки к установке пройдемся по списку того, что нам потребуется по ходу:

  • Собственный физический сервер, если вы хотите создать облачное хранилище дома, или VPS. 
  • Инструкция написана для Ubuntu версии 20.04, но вы можете использовать и другой дистрибутив Linux. Главное, чтобы у вас были права на суперпользователя. 
  • Если хотите настроить безопасное подключение по TLS/SSL через бесплатный сертификат, вам потребуется домен. Без него можно обойтись, но тогда вы будете постоянно видеть в браузере предупреждение. 

В установке будем использовать доступную в Ubuntu по умолчанию систему управления пакетами Snap. Но сперва проведем небольшую подготовку.

Подключаемся к серверу:

ssh username@1.2.3.4

Здесь username — это имя пользователя, а 1.2.3.4 это IP-адрес.

И обновим кое-какой софт:

sudo apt update
sudo apt upgrade
sudo apt install nano curl git

Установка NextCloud на Ubuntu

Скачайте и установите Snap:

sudo snap install nextcloud

Если все пройдет успешно, вы увидите сообщение:

nextcloud 24.0.1snap1 from Nextcloud✓ installed

Настройка учетной записи администратора

Будем использовать командную строку, чтобы не попадать на окно регистрации в веб-интерфейсе.

Команда:

sudo nextcloud.manual-install name pass

Вместо name и pass указываем логин и пароль соответственно.

Если все пройдет успешно, вы увидите сообщение:

Nextcloud was successfully installed

Настройка домена

По умолчанию для доступа к хранилищу можно использовать только localhost, так что прочие доверенные домены нужно добавить вручную:

sudo nextcloud.occ config:system:set trusted_domains 1 --value=domain

Где domain — домен, по которому хотите получать доступ к хранилищу. 

Если все хорошо, вы увидите:

System config value trusted_domains => 1 set to string domain

По умолчанию в серверной версии Ubuntu фаервол выключен, но ради безопасности его все-таки лучше включить. После включения фаервола надо открыть порты для веб-интерфейса.

С помощью firewalld:

sudo firewall-cmd --add-service=http --permanent sudo firewall-cmd --add-service=https --permanent sudo firewall-cmd --reload

Или через ufw:

sudo ufw allow 80,443/tcp

Готово. Можете подключаться к хранилищу, но пока только через небезопасный протокол HTTP.

Настройка сертификата Let’s Encrypt

Получаем сертификат:

sudo nextcloud.enable-https lets-encrypt

На вопрос отвечаем YES. 

Указываем электронную почту для восстановления и домен.

Please enter your domain name(s) (space-separated): domain

В случае успеха вы увидите:

Attempting to obtain certificates... done
Restarting apache... done

Настройка самоподписанного сертификата

Если домена у вас нет, тогда используйте SSL-сертификат с собственной подписью: NextCloud позволяет защитить веб-интерфейс и без доменного имени. 

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

Генерируем сертификат:

sudo nextcloud.enable-https self-signed

Если вернутся эти строки, значит все прошло успешно:

Generating key and self-signed certificate... done
Restarting apache... done

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

Настройка базы данных

Будем использовать MariaDB. 

Устанавливаем:

sudo apt install mariadb-server

Включаем автозапуск и запускаем:

sudo systemctl enable mariadb
sudo systemctl start mariadb

Задаем пароль:

mysqladmin -u root password

Подключаемся, создаем новую базу данных и пользователя:

mysql -uroot -p
> CREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON nextcloud.* TO nextcloud@localhost IDENTIFIED BY 'nextcloud';
> \q

Настройка шифрования

В NextCloud поддерживается шифрование на стороне сервера. Прежде, чем рассказать, как его настроить, обратим внимание на несколько важных нюансов.

Дисклеймер:

  • Файлы в зашифрованном виде занимают примерно на 30% больше места.
  • На сервере со слабым процессором или при большом количестве пользователей из-за шифрования все будет тормозить при загрузке и выгрузке файлов. 
  • После включения шифрования его уже нельзя будет просто выключить в веб-интерфейсе — придется делать это в консоли. 

Включаем шифрование:

  1. Переходим в меню «Приложения» и включаем там Default encryption module. 
  2. Переходим в «Настройки» → «Параметры сервера» → «Безопасность» и включаем там «Шифрование на стороне сервера». 

Как все работает:

На стороне сервера создается ключ, для разблокировки которого используется пользовательский пароль. Важно: шифруется только содержимое файлов, названия и структура каталогов — нет. 

Где найти ключи шифрования:

./data/<username>/files_encryption
./data/files_encryption

Как сделать облачный сервер NextCloud быстрее на слабом железе

Не ставьте NextCloud на сервер с 512 Мб памяти. Для нормальной работы нужен минимум 1 Гб. Иначе с производительностью будет беда. Кроме того, если бы мы не поставили swap, то на машине с 512 Мб системный out-of-memory-killer периодически завершал бы процесс базы данных.

Если все-таки сэкономили и поставили NextCloud на сервер с 512 Мб памяти, придется заняться оптимизацией. Она не решит проблему полностью, но позволит серверу работать. 

Приступим.

Установка NextCloud с SQLite

Для установки NextCloud с SQLite можно обойтись без Docker и использовать те же инструменты, что и в предыдущих разделах (Apache, PHP и модули для работы с файлами и БД). 

Достаточно скачать и распаковать дистрибутив NextCloud в каталог веб-сервера, убедиться, что в системе установлены пакеты php-sqlite3 и sqlite3, и в процессе веб-инсталляции выбрать тип БД «SQLite». 

В итоге файл базы (owncloud.db) будет автоматически создан в директории data, а все права по умолчанию будут назначены веб-серверам (например, www-data), как это делается в настройке snap-установки. Таким образом вы получите полностью работающее облако на SQLite, без каких-либо контейнеров.

Если же вам потребуется запустить NextCloud в контейнере Docker (например, для отработки навыков контейнеризации или чтобы легко переносить окружение), это тоже возможно: достаточно взять официальный образ NextCloud и задать параметры для SQLite (либо в docker-compose.yml, либо через переменные окружения), однако основная логика работы останется той же.

При первом открытии NextCloud после всех манипуляций появится предупреждение об использовании SQLite — это нормально.

Теперь NextCloud будет работать на сервере с 512 Мб памяти. Медленно, но все-таки работать и не падать.

Включение Zswap

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

  1. Проверьте, активирован ли Zswap:
cat /sys/module/zswap/parameters/enabled

Если в ответ получили N, переходите к шагу 2. Если получили Y, то Zswap у вас уже активирован.  

  1. Включите Zswap:
echo Y | tee /sys/module/zswap/parameters/enabled
echo z3fold | tee /sys/module/zswap/parameters/zpool
  1. Настройте автоматический запуск Zswap после перезагрузки:

Откройте файл /etc/rc.local для редактирования:

sudo nano /etc/rc.local

Вставьте следующие строки между #!/bin/bash и exit 0:

echo Y | tee /sys/module/zswap/parameters/enabled
echo z3fold | tee /sys/module/zswap/parameters/zpool

Сохраните файл и закройте редактор. 

  1. Если файла /etc/rc.local не было:

Сделайте файл исполняемым:

sudo chmod +x /etc/rc.local

Перезагрузите службы:

sudo systemctl daemon-reload
sudo systemctl start rc-local

Настройка хранения логов на диске

Хранение логов на диске предотвращает их накопление в памяти. 

  1. Откройте файл конфигурации journald:
sudo nano /etc/systemd/journald.conf
  1. Найдите строку #Storage=auto и замените её на:
Storage=persistent
  1. Перезапустите службу journald:
sudo systemctl restart systemd-journald

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

Была ли эта статья полезной для вас?
Главная/Блог/Статьи/Как создать свое облачное хранилище на NextCloud: пошаговое руководство
Подпишитесь на нашу рассылку
Мы будем держать вас в курсе всего, что происходит в облаках и на серверах.
Протестируйте облачную платформу Servercore бесплатно
Оставьте заявку, и мы начислим вам до 230 USD на баланс панели управления.
Оставьте заявку, и мы начислим вам до 210 EUR на баланс панели управления.
Оставьте заявку, и мы начислим вам до 100 000 KZT на баланс панели управления.
Оставьте заявку, и мы начислим вам до 30 000 KES на баланс панели управления.
Оставьте заявку, и мы начислим вам до 1 500 000 UZS на баланс панели управления.
Спасибо за заявку!
Наш менеджер свяжется с вами в течение 1 рабочего дня. 
А пока вы можете зарегистрироваться в панели управления
и посмотреть демо от CTO Servercore.
После просмотра вы сможете: