Настраиваем сервер для своего облачного хранилища
hard

Настраиваем сервер для своего облачного хранилища

Готовимся к переезду в личное облако

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

Общий вид проекта

Общая картина такая: 

  1. У нас будет удалённый виртуальный сервер, который мы купим у российского провайдера.
  2. По желанию на сервере можно настроить доступ без пароля, по специальному ключу безопасности.
  3. На сервере будет работать программа Nextcloud, которая будет принимать наши файлы на сервере.
  4. На компьютере установим клиентскую часть Nextcloud, которая будет отправлять наши файлы на сервер.

В итоге это будет похоже на Dropbox или Яндекс-диск, только будет строго нашим. Как и в упомянутых сервисах, можно будет открывать доступ к файлам для других людей, делиться ссылками и даже генерировать QR-коды для скачивания файлов.

В этой статье мы пройдём два первых шага: купим и включим виртуальный сервер и настроим для него ключи. 

Что такое Nextcloud

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

  • Синхронизация и обмен файлами.
  • Почтовый сервер.
  • Календарь.
  • Планировщик задач.
  • Корпоративный мессенджер и видеозвонки.

Также есть интеграции со множеством внешних сервисов, в т. ч. разными онлайновыми офисными пакетами. 

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

Смысл приложения в том, чтобы создать альтернативу закрытым решениям от многочисленных вендоров — например Atlassian или Intuit. Если ты крупная американская компания, то тебе не страшно покупать подобные системы у американских вендоров. А вот в России с этим теперь проблемы. Поэтому нужна альтернатива. 

Выбор сервера

Есть два условных вида виртуальных серверов: под приложения и под хранение. 

  • Сервер для приложений будет иметь быстрый процессор, много оперативной памяти и чуть-чуть хранилища (около 50 Гб).
  • Сервер для хранения — наоборот: много места на жёстком диске, но слабенький проц и немного оперативной памяти. 

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

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

Мы нашли две компании, которые могут предоставить такой сервер: RUVDS и FirstVDS. На момент написания статьи у RUVDS закончились диски (обещали это исправить в ближайшее время), поэтому мы остановились на FirstVDS. 

Регистрация и покупка

Заходим к провайдеру, начинаем заказывать сервер. Выбираем сервер для хранения (VDS Storage), указываем нужный объём диска. В качестве операционной системы можно выбрать Ubuntu. В графе «Выбор предустановленного ПО» обязательно отмечаем Nextcloud, это существенно упростит нам задачу в будущем. 

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

После нажатия «Оплатить» сервис попросит нас зарегистрироваться. Лучше вводить свои настоящие данные, чтобы в спорных ситуациях вы могли подтвердить, что это именно ваш сервер и на нём ваши данные. 

После оплаты сервису понадобится несколько минут, чтобы запустить ваш сервер и поставить на него нужный софт. В это время пользоваться сервером пока не получится, а в состоянии в личном кабинете будет стоять статус «Обрабатывается». 

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

Настраиваем сервер для своего облачного хранилища
Настраиваем сервер для своего облачного хранилища

⚠️ В этом письме есть два ключевых параметра: IP-адрес вашего сервера и пароль от него. Запишите их и держите где-то рядом, они нам понадобятся.

Настройка доступа

Когда сервер запустится, в личном кабинете (Товары → Виртуальные серверы) в колонке «Состояние» появится статус «Активен». Это значит, что с ним теперь можно работать и настраивать, как нам нужно. Там же можно перезагрузить сервер, поменять пароль или изменить параметры железа, например добавить больше памяти.

Чтобы удалённо заходить на сервер, мы будем использовать SSH — так мы не будем привязаны к браузеру и сможем пользоваться всей мощью и возможностями командной строки. Сначала просто проверим доступ к серверу — откроем терминал и выполним такую команду:

ssh username@82.146.34.72

Username и IP-адрес нужно взять из письма, которое пришло после активации сервера. Если оно потерялось, можно посмотреть эти данные в панели управления в меню «Инструкция»:

Настраиваем сервер для своего облачного хранилища

Если всё прошло успешно, мы увидим приветствие сервера, его короткое описание и командную строку суперпользователя root:

Настраиваем сервер для своего облачного хранилища
Когда сервер спросит при первом подключении, доверяем ли мы этому соединению, нужно написать yes

Если у вас Windows 10, то для SSH-подключения можно использовать PowerShell, установив OpenSSH-клиент. Для этого запустите PowerShell и выполните команды:

Add-WindowsCapability -Online -Name OpenSSH.Client*

Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Client*'

Первая команда устанавливает OpenSSH-клиент, а вторая проверяет его статус. Если всё в порядке, в статусе будет написано Installed (установлен).

Для отключения от сервера нужно набрать команду logout. Связь по SSH прекратится, и терминал будет выполнять команды не на сервере, а на вашем компьютере.

Настраиваем сервер для своего облачного хранилища
Настраиваем сервер для своего облачного хранилища
Проверяем, установлен ли SSH-клиент
Настраиваем сервер для своего облачного хранилища
Теперь мы можем в Windows работать на нашем сервере по SSH

Чтобы не вводить каждый раз пароль, повысить уровень безопасности при подключении и в дальнейшем автоматизировать разные процессы, мы можем сделать SSH-ключ. 

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

В общих чертах всё работает так:

  1. Мы у себя на компьютере генерируем пару ключей для шифрования — публичный и приватный. Если интересно, зачем нужны эти ключи, почитайте статью про асимметричное шифрование. Сами ключи будут храниться каждый в своём файле.
  2. Публичный мы отправим на сервер, им можно делиться с кем угодно, а приватный никому показывать нельзя.
  3. Мы настроим компьютер и сервер так, чтобы при SSH-подключении вместо пароля сервер брал наш приватный ключ и смотрел, подходит он в пару к публичному или нет. Если да (а мы настроим, чтобы было да), то соединение установится.

Чтобы создать новую пару ключей в Linux или Mac OS, выполните команду ssh-keygen. Нас попросят указать имя файла, где будут храниться ключи, и кодовую фразу (пароль для ключа). Кодовую фразу можно не вводить и нажать Enter. По умолчанию все ключи хранятся в каталоге пользователя в папке /.ssh/id_rsa:

Настраиваем сервер для своего облачного хранилища
Создание ключа в Windows

Настраиваем сервер для своего облачного хранилища
Server-key – это имя файла с ключами

Чтобы сервер мог пускать нас по ключу, нужно скопировать на него наш публичный ключ. Для этого в Linux и Mac OS выполним команду (подставьте свой адрес сервера):

ssh-copy-id -i /Users/mike/.ssh/server-ssh.pub root@82.146.34.72

Если у вас Windows, выполните такую команду в PowerShell (не забудьте свой адрес сервера):

type C:\Users\Mike/.ssh/server-ssh.pub | ssh root@82.146.34.72 "cat >> .ssh/authorized_keys"

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

Ещё в Windows нужно выполнить такие команды, чтобы система запомнила ключ и использовала его для подключения к серверу:

Get-Service -Name ssh-agent | Set-Service -StartupType Manual
Start-Service ssh-agent
ssh-add "C:\Users\Mike/.ssh/server-ssh"

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

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

пишем в Linux и MacOS: ssh -i /Users/mike/.ssh/server-ssh root@82.146.34.72 

пишем в Windows: ssh -i "C:\Users\Mike/.ssh/server-ssh" root@82.146.34.72

и смотрим, какой пароль спросит сервер — если ключа, то всё отлично:

Настраиваем сервер для своего облачного хранилища
Сервер спросил пароль от ключа, значит, всё работает

Что дальше

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

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Алина Грызлова

Асинхронное программирование на Python
Если понимаете, что это значит, посмотрите на программу курса «Яндекс Практикума». Понятная теория, тренажеры, поддержка ревьюеров и обучение в группе, всё как надо.
Посмотреть
Асинхронное программирование на Python Асинхронное программирование на Python Асинхронное программирование на Python Асинхронное программирование на Python
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
hard