Свой облачный диск на VPS: делаем альтернативу Google Drive за час
Зачем платить за облако, если можно сделать своё? Пошаговая инструкция, как развернуть Nextcloud и получить личный Google Drive — только лучше.
Облачный диск — это место в интернете, где можно хранить свои файлы: документы, фотографии, видео и многое другое. Вы копируете файлы на некий облачный ресурс и обращаетесь к ним из любой точки и с любого вашего устройства. Это работает приблизительно так же, как флешка, только онлайн: вы подключаете такой диск к своему устройству и можете открывать и редактировать файлы, размещённые на нём. Главное условие — доступ в интернет.
Google Drive, Яндекс Диск — это как раз и есть облачные диски. Можно зарегистрироваться в Google или Яндекс и использовать для хранения своих данных ресурсы этих уважаемых компаний.
Но мы-то с вами знаем, что существует такая технология, как VPS (англ. Virtual Private Server – виртуальный выделенный сервер), и одним из сценариев его использования является организация файлового хранилища. При этом существует много приложений, которые позволяют организовать не просто свой собственный файловый ресурс, а полноценный облачный диск. Другими словами, с помощью виртуальной машины у нас появляется возможность настроить хранилище файлов, которым можно пользоваться через интернет, как Яндекс Диском или Google Drive, но на своём сервере.
Одним из приложений, позволяющих это реализовать через веб-сайт или мобильное приложение, является Nextcloud – бесплатная программа с открытым исходным кодом. В Nextcloud всё синхронизируется: фото с телефона могут автоматически загружаться в облако, документы можно редактировать прямо в браузере, есть календарь, заметки, почта, чат. Короче говоря, Nextcloud — это целая экосистема.
Самое крутое в Nextcloud – это контроль: никто за нами не следит, не удаляет наши файлы и не требует денег за то, что этих файлов слишком много. Правда, придётся самостоятельно настроить сервер и принять меры, чтобы сделать его более безопасным. Ну, так что ж, давайте попробуем превратить наш VPS в облачный диск при помощи Nextcloud.
Заказываем VPS
Итак, во-первых, заказываем виртуальный сервер, на котором в качестве операционной системы выбираем Ubuntu 24.04.
Как только сервер готов, находим его во вкладке «Мои серверы» и фиксируем там данные, необходимые для подключения к нему. В частности, нас интересуют IP-адрес сервера, а также имя пользователя и пароль для авторизации.
Интерфейс Nextcloud представляет собой веб-сайт, для подключения к которому нужен будет указанный на скриншоте IP-адрес. Но удобнее и целесообразнее вместо него использовать доменное имя, которое будет привязано к виртуальному серверу. Доменное имя привязываем во вкладке «Домены». Там нажимаем «Добавить домен», указываем его имя и выбираем сервер для привязки.
Затем открываем на своём компьютере терминал или командную строку и подключаемся к серверу с использованием протокола SSH. Для такого подключения также можно использовать SSH-клиент, наиболее популярным из которых является PuTTY. Пример команды для подключения к серверу из командной строки выглядит как ssh root@193.124.114.215, где как раз и используются имя пользователя и IP-адрес из скриншота выше. Для подключения нужно будет ввести пароль.
Подготовка системы
Nextcloud написан на PHP, информацию сохраняет в определённого вида базе данных, а для доступа при помощи веб-сервера предоставляет веб-интерфейс. Поэтому предварительно на сервере необходимо установить стек серверных программ, который принято называть LAMP.
LAMP – это аббревиатура, буквы в которой означают следующее:
☑ L значит Linux – семейство операционных систем, к которому относится и Ubuntu.
☑ A значит Apache – веб-сервер, который мы будем использовать для поддержки веб-интерфейса Nextcloud.
☑ M значит MySQL – система управления базами данных, которую мы применим в Nextcloud.
☑ P значит PHP — язык, на котором написан Nextcloud.
Исходя из этого, подключившись к серверу сначала устанавливаем Apache командой:
apt install apache2
После чего устанавливаем MySQL:
apt install mysql-server
И затем — PHP:
apt install php libapache2-mod-php php-mysql
А потом ещё устанавливаем набор PHP-расширений, требуемых для работы Nextcloud:
apt install php8.3-xml php8.3-zip php8.3-mbstring php8.3-gd php8.3-curl
Теперь подключаемся к MySQL:
mysql
Здесь создаём для Nextcloud базу данных:
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Создаём для Nextcloud учётную запись:
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY '1234Qwer';
Обратите внимание на команду выше, где nextclouduser — это имя пользователя, а 1234Qwer — это его пароль. Можете придумать и использовать вместо них свои. Они понадобятся позже при подключении к Nextcloud.
Затем предоставляем созданному пользователю права на созданную базу данных:
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
После чего применяем внесённые изменения:
FLUSH PRIVILEGES;
И отключаемся от интерфейса MySQL:
EXIT;
На этом подготовка закончена, переходим к установке Nextcloud.
Установка Nextcloud
Для установки Nextcloud переходим в каталог, в котором обычно веб-сервер ищет размещённые на сервере сайты:
cd /var/www/
Туда загружаем архив последней на данный момент версии Nextcloud:
wget https://download.nextcloud.com/server/releases/latest.zip
Стоп! Кажется, мы кое-что забыли)
По умолчанию в Ubuntu нет ZIP-архиватора, который сможет распаковать загруженный архив. По-хорошему нужно было проинсталлировать его в самом начале, но сейчас ещё не поздно. Поэтому устанавливаем ZIP-архиватор:
apt install unzip
И распаковываем загруженный архив:
unzip latest.zip
В результате у нас появился каталог nextcloud, которому присваиваем необходимые права:
chown -R www-data:www-data nextcloud
chmod -R 755 nextcloud
А загруженный ранее архив больше не нужен, его удаляем:
rm latest.zip
Теперь создаём конфигурацию Nextcloud:
nano /etc/apache2/sites-available/nextcloud.conf
Данной командой мы открыли новый конфигурационный файл. В него надо скопировать следующие строки:
<VirtualHost *:80>
DocumentRoot /var/www/nextcloud
ServerName vash-domain.ru
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined
</VirtualHost>
В данной конфигурации в качестве значения параметра ServerName указано vash-domain.ru, которое является доменным именем, привязанным к нашему виртуальному серверу. Если вы следуете шагам, описанным в нашей инструкции, то вместо vash-domain.ru вам нужно прописать аналогичное своё.
Далее нажимаем Ctrl O, чтобы сохранить изменения, а потом Ctrl X, чтобы закрыть файл.
Теперь активируем новую конфигурацию:
a2ensite nextcloud.conf
Активируем необходимые для работы Nextcloud модули Apache:
a2enmod rewrite headers env dir mime
Затем проверяем корректность синтаксиса в настройках веб-сервера:
apache2ctl configtest
При отсутствии ошибок вывод команды должен заканчиваться фразой Syntax OK.
Если это так, перезапускаем службу Apache:
systemctl restart apache2
И проверяем её статус:
systemctl status apache2
Вывод команды не должен содержать сообщений о каких-либо ошибках.
Чтобы из просмотра статуса вернуться обратно в командную строку, нажмите Ctrl C.
Проверка подключения к Nextcloud
Открываем браузер и переходим на сайт, имя которого привязано к нашему серверу. У нас это http://vash-domain.ru. Вместо доменного имени на данном этапе можно использовать IP-адрес сервера.
При первом подключении открывается окно создания учётной записи администратора нашего экземпляра Nextcloud.
В этой форме заполняем следующие поля:
☑ В самую верхнюю строку придумываем и вводим название пользователя, который будет администратором системы.
☑ В следующую строку — пароль для этого пользователя.
☑ В поле «Учётная запись базы данных» вводим имя пользователя, которого мы создавали ранее командами MySQL.
☑ В поле «Пароль базы данных» вводим пароль, который был указан в той же команде MySQL.
☑ В поле «Имя базы данных» — название базы данных, также ранее созданной в MySQL.
Когда всё ввели, нажимаем «Установить».
Какое-то время будет происходить первоначальная настройка системы, после чего откроется следующее окно.
Здесь жмём либо «Установить рекомендуемые приложения», либо «Пропустить», чтобы запустить Nextcloud сразу, а установку приложений отложить на потом.
Таким образом, мы попадаем в веб-интерфейс Nextcloud и можем приступать к его использованию.
Пользоваться установленной системой уже, конечно, можно, но…
Когда мы заходим на сайт и вводим туда какие-либо чувствительные данные, типа логинов, паролей или, например, номеров банковских карт, то возникает вероятность перехвата такой информации. Поэтому давайте разберём, как такую вероятность сократить, настроив защиту нашего сайта при помощи протокола HTTPS. На текущий момент мы подключаемся к веб-интерфейсу с использованием менее защищённого протокола HTTP. Преимуществом HTTPS является то, что он будет шифровать трафик между нашим виртуальным сервером и браузером, через который пользователи подключаются к нему. Более того, использование HTTPS даёт клиентам нашего сайта уверенность в том, что он действительно подключился к настоящему, а не к поддельному, сайту, который кто-то сделал, чтобы украсть данные этого клиента. Таким образом мы обеспечим своего рода проверку подлинности.
Настройка защиты сайта при помощи HTTPS
Реализация защиты веб-сайта при помощи протокола HTTPS заключается в установке на веб-сервере SSL-сертификата. SSL (англ. Secure Sockets Layer — уровень защищённых сокетов) — это криптографический протокол, который как раз и защищает передачу данных между браузером и сервером, а HTTPS является его расширением. Наибольшей популярностью среди SSL-сертификатов пользуются сертификаты компании Let's Encrypt, благодаря которым любой человек или компания могут настроить HTTPS-подключение к своему ресурсу, причём абсолютно бесплатно.
Чтобы помочь пользователям в установке SSL-сертификатов на веб-ресурсы, Let's Encrypt выпустила специальную программу, которая позволяет автоматически получать и устанавливать бесплатные SSL-сертификаты. Эта программа называется Certbot — её мы и применим.
Итак, возвращаемся к командной строке, подключаемся к виртуальному серверу и устанавливаем сам Certbot, а также его плагин для интеграции с веб-сервером Apache:
apt install certbot python3-certbot-apache
По окончании установки запускаем процесс запроса сертификата и установки его на наш Nextcloud. В команде замените vash-domain.ru на имя вашего сайта:
certbot --apache -d vash-domain.ru
В процессе программа попросит вас указать адрес электронной почты для уведомлений о проблемах с сертификатами. Затем нужно будет согласиться с условиями лицензионного соглашения и подпиской на новости EFF — некоммерческой организации и партнёра-основателя проекта Let’s Encrypt. Далее Certbot проверит домен, чтобы подтвердить, что вы действительно являетесь его владельцем, запросит сертификат для вашего сайта и после успешной установки настроит на сервере задание для автоматического обновления сертификата, которое будет выполняться в фоновом режиме. При каждом вопросе подтверждайте согласие символом y и нажатием Enter.
По завершении процесса проверяем наличие HTTPS. Для чего переходим в браузере на наш Nextcloud и видим, что подключение к сайту теперь шифруется.
А теперь попробуем подключиться к Nextcloud с мобильного телефона.
Подключение с мобильного приложения
И для iOS, и для Android есть мобильный клиент Nextcloud. Его легко найти в соответствующем магазине приложений.
Находим, устанавливаем, открываем и в стартовом окне нажимаем «Войти».
В следующем окне вводим имя сайта в формате https://vash-domain.ru и кликаем по стрелочке в конце строки.
После чего приложение перебрасывает нас в браузер, где нажимаем «Войти».
Затем вводим имя пользователя и пароль учётной записи Nextcloud, после чего нажимаем «Разрешить доступ», чтобы приложение подключилось к нашему серверу.
После синхронизации аккаунта с приложением окно браузера можно закрыть.
Возвращаемся в приложение, в котором теперь есть доступ к данным, размещённым на нашем сервере Nextcloud.
Кажется, что это всё. Но не совсем. Надо будет повысить уровень безопасности нашего сервера. Это включает в себя добавление в систему административного пользователя, чтобы использовать его вместо root-а, самому root-у закрыть доступ на удалённое подключение. Нужно будет закрыть в брандмауэре неиспользуемые порты, чтобы ограничить возможность несанкционированного подключения к серверу извне, и настроить аутентификацию на сервере с использованием SSH-ключей вместо паролей…
Впрочем, это уже в следующий раз.
💻 Если хотите быстро развернуть свой VPS для облачного диска, рекомендуем обратить внимание на предложения RUVDS — стабильные виртуальные серверы с поддержкой 24/7 и удобным управлением. Подробнее — на нашем сайте.
💻 Виртуальные серверы по цене от 139 рублей в месяц заказывайте на сайте RUVDS. Первые 3 дня пользуйтесь VPS бесплатно!