Доброго времени суток! С уходом компаний я задался вопросом: «что делать, если прикроют мой любимый Google Drive?». Понятно, что есть аналоги – Яндекс.Диск и Облако Mail.ru, но оба бесплатно предоставляют только 8 гб дискового пространства, а дальше жесткая тарификация, в то время как Google дает 15 и стоит дешево. «А так, чтобы бесплатно?». Выяснилось, что существует [достаточно много open-source решений]() для домашнего и корпоративного использования. Одним из самых популярных и навороченных является система NextCloud, представляющая собой набор программ и модулей для развертывания своего полноценного облачного хранилища. NextCloud Server даже предлагается для скачивания во время установки Ubuntu Server.
Почитал документацию и решил попробовать поставить на домашнем компьютере в своей локальной сети. Прежде чем описывать поэтапную настройку, изложу те проблемы и технические решения, которые нужны для их обхода, чтобы Вы могли понять, подходит ли NextCloud лично Вам.
Что полезного содержит эта статья.
-
Запуск NextCloud в докере на Windows и Linux.
-
Запуск NextCloud на домашнем компьютере. Проблемы, ограничения.
-
Запуск NextCloud для тестирования. Приобретение понимания, нужен ли этот продукт.
-
Анализ целесообразности развертывания облака дома.
-
Подробный разбор параметров контейнера NextCloud AIO.
-
VPN-тоннель домой с использованием сервиса Hamachi. Обход проблемы отсутствия белого ip.
-
Настройка reverse-proxy на базе Nginx, Apache или Caddy.
-
Запуск HTTPS-сервера на домашнем компьютере.
-
Получение SSL-сертификата с помощью сервиса letsencrypt.
-
Краткий разбор форматов SSL-сертификатов.
-
Настройка файервола в Windows.
Стэк.
Домашняя машина, на которой запущен NextCloud: Windows 10, Docker, образ NextCloud AIO, Hamachi-клиент для Windows, PuTTy.
Reverse-proxy-сервер: Ubuntu Server, certbot, Nginx, или Apache, или Caddy, консольный Hamachi-клиент для debian.
Ключевые слова.
NextCloud, NextCloud-AIO, reverse-proxy, Nginx, Apache, Certbot, Hamachi, localhost, Windows, Defender, SSL, HTTPS дома.
Содержание.
-
Целесообразность
-
Об образе NextCloud AIO
-
Этап 1. Настройка VPN
-
Этап 2. Получение SSL-сертификата
-
Покупка
-
Самописные сертификаты certbot
-
-
Этап 3. Настройка reverse-proxy
-
Apache
-
Nginx
-
Caddy
-
Тестирование
-
-
Этап 4. Запуск NextCloud AIO в Docker
-
Переменные окружения
-
Volumes
-
Порты
-
Пояснения к опциям docker run
-
Запуск
-
Первичная настройка
-
Не работает domaincheck
-
-
Этап 5. Фаервол
-
Инструменты Windows для диагностики сетевых интерфейсов
-
Заключение
Целесообразность.
Зададимся вопросом: а надо ли оно нам? Когда я приступал к настройке в первый раз, не зная особенностей этого программного комплекса, я бы однозначно ответил «да». Собственно, проблема стояла четко, и ее надо было преодолеть. У меня была техническая возможность и пометка в документации, что это развернуть NextCloud дома возможно. Но действительность оказалась, как всегда, скажем, другой. Сравним ожидание и реальность:
Ожидание:
-
Использование своего железа: большие объем диска и ОП, быстрый процессор.
-
Сервер установлен на той же машине, с которой осуществляется подключение loopback (localhost), следовательно, доступ к файлам мгновенный, как при использовании средств просмотра.
-
Быстрый доступ (до 100 Мбит/с) со всех устройств в квартире, находящихся в локальной Wi-Fi- или Ethernet-сети: ПК, ноутбука, планшета, смартфона,
часов, холодильника– для всей семьи. -
Быстрое добавление файлов и внесение изменений на диск с помощью домашнего компьютера, минуя сетевые операции, например, копирование с флэшки или переносного диска.
-
Доступ к файлам на ПК из любой точки мира с шифрованием.
-
Авторизация подключений путем добавления пользователей в сеть VPN.
-
Гибкая настройка доступа с помощью дополнительных модулей NextCloud для авторизации.
-
Клевые расширения: сервис авторизации через соцсети, аналоги Google Meets, Google-карт и Google-календаря, таск-трекеры и т.д. — все в одном месте — прямо как у «корпорации добра».
-
OpenSource, а значит, поддержка на форумах, постоянные обновления.
-
Все бесплатно, исключая затрат на железо: нет платы за ПО и аренду диска в облаке.
-
Не надо настраивать файервол, т. к. vpn — это частная сеть.
Реальность:
-
Отсутствие дистрибутива сервера NextCloud под Windows. Придется разворачивать на VM или в Docker. Но есть Windows-клиент. Однако, основным является браузерный клиент, а он кроссплатформенный.
-
NextCloud обязывает завести домен несмотря на то, что часто достаточно было бы подключаться по VPN. Его нельзя запустить на localhost (127.0.0.1) или другом IP без домена.
-
SSL. В принципе на этом можно было бы закончить. В репозитории NextCloud прямым текстом говорится о том, что концепция этой утилиты состоит в работе только с прокси по HTTPS. К сожалению, обязательная привязка к SSL перечеркивает все преимущества, основанные на быстром доступе по следующим причинам:
-
SSL-сертификат работать будет только на домене. IP-адрес, на который ведет домен, должен вести к конечной точке, которая может принимать внешние соединения, для того, чтобы стала возможной процедура верификации домена, а значит, нужен белый IP или внешний сервер, который будет выступать шлюзом в нашу локальную сеть, то есть проксировать запросы, а также само доменное имя.
-
Белый IP требует денежных вложений, чего изначально я пытался избежать. За внешний сервер даже самый слабый так же нужно платить аренду. Кроме того, согласно документации NextCloud’а не желательно, чтобы само облачное хранилище работало на том же хосте, на котором хранятся SSL-сертификаты, так что придется настраивать reverse-proxy. Я арендовал самый дешевый сервер: за 400 рублей в месяц, 1 ядро, 1 Гб, 32 Гб – супер-невыгодное предложение (об этом далее). Это уже дороже, чем подписка Google Drive (от 140 рублей за 30 Гб до 700 за 2 Тб). В идеале, стоило бы разместиться у друга или на выделенном сотрудникам сервере в офисе компании, в которой Вы работаете (обязательно проконсультируйтесь у сисадмина по устранению уязвимостей, связанных с работой VPN).
-
Сервер с 1 ГБ виртуальной ОЗУ тормозит (утилита top показывает загрузку 70-90%), и не может скомпилировать даже небольшой проект, а в режиме reverse-proxy с трудом способен обеспечить доступ 2-м клиентам одновременно, хотя значительную задержку вносят операции на моем HDD (чтение HDD происходит со скоростью около 30 Мбит/с).
-
Большая задержка по сети: трафик идет от клиента в датацентр, где развернут прокси, а оттуда ко мне домой, при этом пропускная способность датацентра, как водится, отличная, а ADSL-линия (старая технология доступа в интернет по телефонным проводам), протянутая ко мне провайдером, обеспечивает скорость входящих пакетов (на скачивание) всего 40 Мбит/с, и если я не ошибся в определении технологии, используемой провайдером, скорость исходящих пакетов (выгрузка в интернет, т.е. максимальная скорость доступа к моему «облаку») ограничена где-то 10 Мбит/с, когда обычная jpeg-картинка весит 4.2 Мб.
-
SSL-сертификат иногда выписывается при оплате домена, но в других случаях требует отдельной покупки. Однако его можно выписать себе самому. Самописные сертификаты не принимаются современными браузерами или принимаются ограниченно. Преимущество NextCloud состоит в том, что он умеет самостоятельно решать эту проблему, но только если не используется свой reverse-proxy.
-
-
Использование виртуальной машины накладывает ограничение на работу с облачным хранилищем напрямую через диск: все изменения в хостовой ФС NTFS должны быть проиндексированы (продублированы) в гостевой ФС Ext4. Хорошая новость состоит в том, что это не препятствие: перемещаем папку с ДЗ 30 Гб в папку NextCloud/data/<user>/files и создаем директорию с таким же названием через веб-клиент (в документации называется UI-client); однако иногда выскакивают предупреждения о невозможности выполнения операции особенно при удалении. На деле, мы всегда знаем, что ничего никуда не удаляется, а файлы просто перемещаются по диску в т. ч. в корзину.
-
Нужно не забыть настроить файервол как на домашнем компьютере, так и на reverse-proxy сервере.
-
Прежде чем приступать к настройке облака через веб-панель администратора, надо обязательно обеспечить доступ на сервер по порту 443. Этого требует NextCloud. Главная проблема при работе сервера на домашнем компьютере связана с этим. В Windows и Linux открыть для входящих соединений зарезервированные порты 0-1024 можно только лишь с правами администратора через настройки файервола. 443 порт может быть также заблокирован роутером. В Windows придется еще повозиться с политиками безопасности, в т. ч. групповыми. Прокси сервер и Docker тут кстати: можно настроить проброс портов и обойти эти трудности.
-
Когда я запустил сервер и установил клиент, я понял, что создатели NextCloud не предполагали использование их утилиты именно таким образом: клиент первым делом предлагает настроить синхронизацию с облаком, но ведь диск с файлами уже находится в этой же системе.
-
Установка программного комплекса NextCloud только для пользования в ЛВС нецелесообразна, т. к. локальная сеть — это изолированная система без возможности принимать входящие подключения, а значит, смысл облака теряется. В таких случаях требуется настроить шлюз с белым IP-адресом. Для работы чисто в ЛВС, возможно, достаточно настроить совместный доступ к папкам на диске NTFS и включить сервер RPC (стандартная возможность в Windows).
О преимуществах и недостатках различных решений обеспечения функционирования своего собственного сервера в виде аренды облака, аренды сервера и использования своего компьютера коротко и ясно говорится в этом ролике на Youtube.
Теперь, когда стал понятен фронт проблем, возможно стоит посмотреть другие решения по развертыванию облачных хранилищ.
Если Вам важно наличие именно функций NextCloud’а, некоторые люди на форумах предлагают поднять локальный DNS-сервер. Я пытался сделать и это, но такое решение не избавляет от необходимости подтверждать SSL-сертификат и разворачивать reverse-proxy, зато добавляет еще одну задачу по конфигурированию DNS в ЛВС. Если Вы решитесь пойти этом путем, посмотрите на bind9.
Итак, поставим задачу.
Задача
Хостинг NextCloud в локальной сети на Windows. Берем образ NextCloud AIO (all-in-one – англ. все в одном) – образ со всеми необходимыми утилитами.
Ресурсы
Наша библия для этого гайда – документация в репозитории.
Есть и другие варианты установки (листать до DOWNLOAD SERVER).
Также у NextCloud есть форум, где люди делятся своими проблемами и решениями. Возможно, Вы найдете здесь решение Вашей проблемы.
Мне очень помог этот гайд на youtube. Автор подробно объясняет, как будет работать итоговая система с точки зрения сисадмина. Он прошел через все этапы, настройки, которые затрагиваются в этом гайде. Единственное, он не рассказывает, как он установил сам NextCloud Server на свою машину. Кроме того, он использует Apache вместо Nginx и OpenVPN вместо Hamachi, не затрагивает тему Docker-контейнера NextCloud AIO.
На youtube, я не нашел гайдов, как запустить Docker-образ NextCloud AOI на локальной машине. А жаль, ведь есть много камней вроде выбора портов. Все развертывают NextCloud на внешнем арендованном сервере. Тем не менее, эти гайды демонстрируют, как правильно настроенный сайт выглядит в браузере.
Если Вы не знакомы с Docker, то для этого гайда это не критично. Но я все же посоветую посмотреть какой-нибудь гайд по запуску сервера в docker-контейнере. Бегло ознакомится стоит также с docker-compose.
Об образе NextCloud AIO.
Чтобы понять, что и для чего делается дальше, нужно пояснить, что входит в поставку образа NextCloud AIO. Если запустить этот контейнер, как сказано в документации, получим несколько дополнительных:
-
nextcloud-aio-mastercontainer – главный контейнер, в который превращается с образ NextCloud AI при запуске.
-
nextcloud-aio – основное приложение и веб-клиент к нему.
-
nextcloud-aio-redis – кто бы мог подумать, редис.
-
nextcloud-aio-database – контейнер, обеспечивающий соединение с БД. После установки будет предложено подключить свою: postgres, mysql или создать sqlite.
-
nextcloud-aio-apache – контейнер, обеспечивающий подключение ssl-сертификатов. Работает как reverse-proxy. Принимает HTTPS-запросы на порту 443 и передает их HTTP-версию на обработку в контейнер с основным приложением. Также, генерирует ssl- сертификаты. Самое интересное, что внутри контейнера, который называется nextcloud-aio-apache используется еще и готовый reverse-proxy Caddy. Caddy позволяет запустить HTTPS-сервер с самописными сертификатами с помощью однострочного конфига. Внутри себя запускает утилиту certbot, о которая также затрагивается в этом гайде (этап 2). Функционал этого контейнера не используется целиком, если подключаем внешний прокси-сервер. В этом гайде расписано, как это работает в этапе 2 и этапе 3.
-
nextcloud-aio-domaincheck – в этом контейнере обрабатываются ACME DNS Challenge-запросы для подтверждения самописанных ssl-сертификатов, если не используется внешний прокси. См. этап 2 вариант 2.
-
nextcloud-aio-callabora и nextcloud-aio-talk – дополнительные модули NextCloud. Их будет предложено подключить по окончании настройки.
На reverse-proxy не стоит обращать внимания. Это «имя проекта» — имя директории, где лежит docker-compose.yml.
Этап 1. Настройка VPN.
VPN позволит принимать соединения на домашнем компьютере без приобретения белого ip-адреса у провайдера.
Буду использовать Hamachi. У него хороший десктоп-клиент на Windows и есть консольный на Linux. Можно использовать любой другой VPN: например, в этом гайде используется аналог — OpenVPN.
Ставим клиент на Windows. Создаем сеть, даем ей имя и пароль.
Переходим в Настройки -> безопасность. Ставим: Шифрование – включено, Сжатие – любой. Переходим в Дополнительные -> Соединения с одноранговым узлом -> фильтрация трафика — разрешить все.
Фильтрация трафика – это по сути файервол. Hamachi добавит новую (виртуальную) сеть, которая для ОС аналогична полноценному сетевому интерфейсу, т.е. в компьютере как бы появится новая сетевая карта. Посмотреть на нее можно в панели управления: Панель управления -> Сеть и Интернет -> Центр управления сетями и общим доступом:
Также можно увидеть этот интерфейс, введя в консоль или powershell, запущенную от имени администратора (Win+X -> Windows PowerShell от имени администратора) команду ipconfig
:
На этой сети может работать встроенный файервол Windows (Defender). Его настроим в конце.
Перейдем на Ubuntu-сервер. Я для этого использую клиент PuTTy.
На reverse-proxy-сервере достаточно подключиться к нашей сети как клиент (показано для Debian/Ubuntu (Про установку в CentOS):
wget http://www.vpn.net/installers/logmein-hamachi_2.1.0.165-1_amd64.deb
sudo dpkg -i logmein-hamachi_2.1.0.165-1_amd64.deb
# подключение к сети > в графическом клиенте появится новый участник
hamachi join <network id> <password>
# включение автозагрузки сервиса
sudo systemctl enable logmein-hamachi
Теперь можно проверить работу VPN-тоннеля. Либо на сервере, либо на домашнем ПК наберите ping <ip домашнего ПК или ip сервера, который выдал Hamachi>
. Также это можно сделать в графическом клиенте Hamachi: ПКМ по участнику сети -> Проверить доступность.
Этап 2. Получение SSL-сертификата.
Если хотите использовать Caddy в качестве reverse-proxy, этот этап можно пропустить. Главное, чтобы Ваш сервер был доступен в интернете (имел белый ip), т. к. Caddy внутри себя использует certbot (см Этап 2. Вариант 2 ниже). Более того, при использовании образа NextCloud AIO на той же машине, где развернут сам NextCloud Вам не требуется его настраивать, т.к. он входит в образ.
Вариант 1. Покупка сертификата.
Покупаем сертификат. Получаем 2 файла: fullchain-сертификат и приватный ключ, переводим их в формат .pem. Тут и далее будем называть их fullchain.pem
и privkey.pem
. Для Apache еще нужен будетpublic.pem
с публичным ключом.
Примечание. В основном встречаются 3 типа форматов ключей: .pem, .crt, .cer, .key. Расширение файла не имеет значения. Имеют значение блоки в них. Подробнее тут. Центр выдачи сертификатов, например, reg.ru, даст Вам 5 файлов следующего вида:
Публичный сертификат
——BEGIN CERTIFICATE——
<много букв и цифр>
——END CERTIFICATE——
Корневой сертификат
——BEGIN CERTIFICATE——
<много букв и цифр>
——END CERTIFICATE——
Промежуточный сертификат
——BEGIN CERTIFICATE——
<много букв и цифр>
——END CERTIFICATE——
Запрос на получение сертификата
——BEGIN CERTIFICATE REQUEST——
<много букв и цифр>
——END CERTIFICATE——
И приватный ключ
——BEGIN RSA PRIVATE KEY——
<много букв и цифр>
——END RSA PRIVATE KEY——
Из конечного, промежуточного, корневого сертификатов в обычном блокноте нужно собрать fullchain, а приватный ключ записать отдельно. Если используете Apache, вынесете также отдельно публичный сертификат в файл public.pem. Если чего-то для fullchain не хватает, вставляйте то, что есть, главное, чтобы был корневой или промежуточный.
Корневые сертификаты. Выпущены специальными удостоверяющими центрами, имеют наивысшую доверительность. Могут удостоверять собой любые другие виды сертификатов.
Промежуточные сертификаты. Любые виды цепочек сертификатов. Тоже имеют право удостоверять (подписывать) другие сертификаты.
Сохраняем 2 файла в папку /certificates
на сервере. В PuTTy вставка текста осуществляется через ПКМ.
Вариант 2. Генерация самописного сертификата с помощью сервиса letsencrypt и утилиты certbot.
apt update
apt install -y software-properties-common
apt update
apt install -y certbot
certbot certonly -d www.<Ваш домен>,<Ваш домен> --agree-tos –n
certbot certificates
certbot renew --dry-run
Первые 4 команды обновляют репозитории для скачивания и устанавливают утилиту certbot
. Команда на пятой строке говорит сгенерировать или обновить сертификат (certbot certonly
) для доменов <Ваше доменное имя> с доменом верхнего уровня www
и без него (вводить домены через запятую) (-d www.<Ваш домен>,<Ваш домен>
) в неинтерактивном режиме для пропуска всех вопросов (certbot -n
), соглашаясь с лицензионным соглашением ACME DNS Challenge (certbot --agree-tos
). Предпоследняя покажет, в какую директорию certbot записал сертификаты. Последняя команда просит автоматически обновлять сертификаты по их истечению. Сами по себе сертификаты действительны 3 месяца.
Возможно, Вам также пригодятся следующие флаги команды certbot:
-m <email>
— сюда будут приходить уведомления о состоянии сертификата, например, напоминания о том, что его надо продлить.
--webroot <путь>
— certbot положит сертификаты в эту папку. Удобно, если уже есть развернутый сервер.
ACME DNS Challenge – это специальный стандарт проверки доменов, которые использует letsencrypt. Это накладывает дополнительные ограничения. Например, эти сертификаты не будут работать на собственном DNS, ведь для их подтверждения на Ваш сервер будет приходить запрос от letsencrypt по url, начинающимся на _acme-challenge или .well-known/acme-challenge. Надо научить сервер правильно на него отвечать. Это для нашей задачи вообще не понадобится, но кому интересно, подробнее тут. В Nginx-конфиге, например, поддержку ACME через HTTP можно осуществить, добавив что-то вроде
location ~ .well-known/acme-challenge {
allow all;
root /usr/share/nginx/html;
}
От выбора способа получения сертификата в нашем случае зависит не только положение ключей на диске (будем считать, что они лежат в /certificates). В случае с certbot’ом, если Вы используете Nginx, надо будет немного изменить конфиг (об этом в конфиге ниже).
Этап 3. Настройка reverse-proxy.
Образ NextCloud AIO поддерживает внешний reverse-proxy как опцию и требует, связать его и порт машины, где развернут контейнер Apache, входящий в поставку NextCloud AIO, а для этого надо указать переменную среды для контейнера APACHE_PORT с номером этого порта. В конфиге прокси-сервера требуется все внешние HTTPS-запросы перенаправлять на этот порт. Он может быть любым, но в документации используется 11000. Его и укажем. Итак, перенаправляем HTTP-запросы (порт 80) на HTTPS (443), а HTTPS 443 на HTTP11000. Таким образом, любой запрос в браузере к нашему домену, где явно не указан порт, будет приходить на порт 11000 машины, где развернут контейнер NextCloud AIO.
Вариант 1. Reverse-proxy на базе Apache
Наглядно процесс настройки показан в том ролике, на который я ссылался ранее. Конфиг ниже взят из него.
# файл apache.conf – конфиг, как в видеоролике
<VirtualHost *:80>
ServerName www.<домен>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
RequestHeader set X-Forwaded-Proto "https"
SSLCertificateFile /certificates /public.pem
SSLCertificateKeyFile /certificates /privkey.key
SSLCertificateChainFile /certificates /fullchain.crt
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5:!3DES
SSLHonorCipherOrder on
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
ServerName www.<домен>
ProxyPreserveHost On
ProxyPass / http://<ip домашнего компьютера в сети hamachi>:11000/
ProxyPassReverse / http://<ip домашнего компьютера в сети hamachi >:11000/
</VirtualHost>
Можно попробовать альтернативный конфиг, представленный в документации.
Установим сам Apache и активируем конфиг.
apt update
apt install apache2
# Создаем или перемещаем конфигурационный файл в правильную директорию
mv <домен>.apache.conf /etc/apache2/sites-available/<домен>.conf
# Подключаем модули для работы с https в режиме проксирования
a2enmod proxy rewrite ssl headers proxy_http
# По умолчанию Apache уже имеет конфиг с базовым сайтом-пустышкой.
#Отключаем. И подключаем свой.
a2dissite 000-default.conf
a2ensite <домен>.apache.conf
# Проверка конфига
apachectl configtest
# Если выскочит предупреждение о том, что apache не знает имени сервера,
# выполним следующие 3 команды (необязательно):
chmod 777 /etc/apache2/apache2.conf
echo -e "$(cat /etc/apache2/apache2.conf)\nServerName <любое имя>" > /etc/apache2/apache2.conf
chmod 644 /etc/apache2/apache2.conf
# Обязательно перезапускаем apache
service apache2 restart # или systemctl restart apache2
Развернуть Apache сервер для теста с NextCloud можно, например, в докере, воспользовавшись docker-compose.
# docker-compose-apache.yml
services:
apache-reverse-proxy:
image: php:7.4-apache
restart: unless-stopped
container_name: apache
volumes:
- ./certificates:/certificates
- ./apache.conf:/etc/apache2/sites-available/apache.conf
ports:
- "80:80"
- “443:443”
- "11000:11000"
network_mode: 'host'
tty: true
command: bash -c "
chmod 777 /etc/apache2/apache2.conf
&& echo -e \"$$(cat /etc/apache2/apache2.conf)\\nServerName www.sabernews.ru\" > /etc/apache2/apache2.conf
&& chmod 644 /etc/apache2/apache2.conf
&& a2enmod proxy rewrite ssl headers proxy_http
&& a2dissite 000-default.conf
&& a2ensite sabernews-nexcloud.apache.conf
&& service apache2 restart
&& apachectl configtest
&& apt update
&& apt install -y net-tools
&& tail -f /dev/null
"
nextcloud:
image: nextcloud/all-in-one:latest
restart: unless-stopped
container_name: nextcloud-aio-mastercontainer
ports:
# про порты для nextcloud далее
- "8080:8080"
- "80:80"
- "11000:11000"
- "8443:8443"
environment:
- NEXTCLOUD_DATADIR=nextcloud_aio_nextcloud_datadir
volumes:
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config
- //var/run/docker.sock:/var/run/docker.sock:ro
depends_on:
- apache-reverse-proxy
volumes:
nextcloud_aio_mastercontainer:
Вариант 2. Reverse-proxy на базе Nginx
Лично я использовал сервер, на котором был запущен другой веб-сайт, работающий на Nginx, а значит порты 443 и 80 уже были заняты. Как уже отмечалось выше, NextCloud’у обязательно нужен 443 порт. Однако домены разные, а значит, надо просто дополнить конфиг Nginx следующими строчками, которые будут работать и как самостоятельный конфиг-файл:
# <домен>.nginx.conf
# -> нужно поместить в /etc/nginx/nginx.conf
http {
## reverse-proxy
server {
listen 80 default;
server_name www.<домен>;
access_log off;
error_log off;
return 301 https://$server_name$request_uri;
}
server {
server_name www.<домен>;
listen 443 http2 ssl;
access_log /root/reverse-proxy/access.log;
ssl_certificate /certificates/fullchain.pem;
ssl_certificate_key /certificates/privkey.pem;
# эти строчки требуются для правильной работы сертификатов сертбота
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY13305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
location / {
add_header Cache-Control "public, must-revalidate";
add_header Front-End-Https on;
add_header Strict-Transport-Security "max-age=2592000; includeSubdomains";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://<ip>:11000; }
}
#server ## reverse-proxy
} # http
В документации написано, что конфиг, представленный там, может не работать. Он действительно не работает из-за строчки proxy_set_header Host $host;
, которая сохраняет заголовок Host HTTP, содержащий ip-адрес клиента. Это стандартное решение для прокси-серверов, иначе бекенд не сможет отличать клиентов по этому заголовку, если требуется. Однако в режиме reverse-proxy, когда прокси сервер перенаправляет через себя как запросы клиентов, так и ответы бекенда: и то, и то для прокси сервера является входящими сообщениями, которые подлежат обработке. Nginx опирается на Host, чтобы их различать. Если подменить хост, то это приводит к бесконечному перенаправлению запросов.
Запустим Nginx:
mv <домен>.nginx.conf /etc/nginx/nginx.conf
# тестируем конфиг
nginx –t
# Обязательно перезапускаем nginx
service nginx restart # или systemctl restart nginx
Вариант 3. Caddy reverse-proxy
Посмотрим так же на Caddy. На мой взгляд, это самый простой сервер, который будет обеспечивать нужный нам функционал подключения сертификата. Этот конфиг есть в документации.
# Caddyfile
https://<домен>:443 {
reverse_proxy <ip>:11000
}
Проверка работы
Остается протестировать. Я написал простой сервер на NodeJS для этого. Для запуска Вам понадобится установить node.
// server.js
const http = require("http");
const host = '0.0.0.0';
const ports = [80, 443, 8443, 11000, 8080];
const servers = ports.map((port) => {
try {
return [http.createServer((req, res) => {
console.log(`[${port}]`, req.url, ' |', req.headers['user-agent'].slice(0, 20), '| ', req.headers['x-forwarded-for']);
req.on('error', (err) => {
console.error(err);
});
res.writeHead(200);
res.end(`served by ${port}\n${req.headers["user-agent"]}\n`);
}), port];
}
catch (err) {
console.error(err);
}
});
servers.forEach(([server, port]) => {
try {
server.listen(port, host, () => {
console.log(`Server is running on ${host}:${port}`);
});
}
catch (err) {
console.error(err);
}
});
Здесь запускается прослушка 5 портов (они перечислены в массиве на строке 5). Запустим на домашнем компьютере:
node server.js
Перейдем в браузер и вобьем: http://localhost:80
, http://localhost:443
и т.д. – будет отображаться надпись с тем портом, на который мы подключились и Ваши текущие user-agent, и ip-адрес в заголовке Host. Обратите внимание, что протокол здесь только HTTP, и значка с замочком в браузере при таком подключении не появится.
Теперь заменим строку 4 const host = '0.0.0.0';
на const host = '<ip-адрес ПК в сети Hamachi>'
. Перезапустим: Ctrl+C и снова node server.js
. Подключиться теперь можно только по портам 80 и 443, т.к. наш конфиг прокси сервера (любой из 3-х представленных выше) указывает ему перенаправлять запросы с порта 80 на порт на 443, а к запросам с порта 443 подключать сертификат и перенаправлять его на порт 11000 по протоколу HTTP, поэтому вбив <ip>:80
, http://<ip>
, <ip>:443
или https://<ip>
(ip — это ip-reverse-proxy-сервера), или www.<домен>, увидим что-то вроде:
Хоть мы и не подключались явно к порту 11000, сервер принял запросы на нем, что отображено в ответе. Обратите внимание на замочек – установлено HTTPS-соединение.
Этап 4. Запуск NextCloud AIO в Docker.
Переменные окружения
У данного образа есть две основные опции, которые передаются как переменные окружения:
-
NEXTCLOUD_DATADIR
– абсолютный путь до директории, а в случае с Windows, константная строка “nextcloud_aio_nextcloud_datadir” – это имя того docker-volume, в которой будут записаны все файлы пользователей и системные файлы, необходимые для функционирования NextCloud. Соответственно, надо будет предварительно создать этот volume.Документация предупреждает нас перед запуском основного контейнера предварительно создать этот volume с именем и убедиться, что путь абсолютный, и путь существует.
Обратите внимание на простые правила преобразования пути. Абсолютный путь в Windows
C:\NextCloudData
превращается вhost_mnt/c/NextCloudData
. -
APACHE_PORT
– переменная уже затрагивалась выше. Это номер порта, на который пересылает запросы Ваш reverse-proxy. -
SKIP_DOMAIN_VALIDATION=true
– выставить, если есть неразрешимые проблемы с тем, что NextCloud неправильно определяет домен, на котором запущен. Это будет понятно после первой настройки. В документации указано, что пользоваться этим надо только в крайнем случае, если Вы уверены, что всё остальное было сделано правильно. В этом гайде пользоваться этим флагом не нужно. Ниже приведены советы, что делать, если не получается запустить NextCloud.
Volumes
Есть 2 фиксированных имени вольюмов, которые нам понадобятся.
-
nextcloud_aio_nextcloud_datadir
– директория, где будут содержаться все файлы в облаке NextCloud. См пояснения выше к переменнойNEXTCLOUD_DATADIR
. -
nextcloud_aio_backupdir
– директория, куда будут помещаться архивы с копиями состояния облака, если Вы захотите использовать эту функцию. История точно такая же как сnextcloud_aio_nextcloud_datadir
: проверить, что путь существует, и соблюсти формат преобразования.
Их надо будет только создать. Подключать к контейнерам ничего не нужно. NextCloud сам умеет ими пользоваться.
Порты контейнера
Контейнер на образе NextCloud AIO использует 3 порта, которые согласно документации, нужно указать при запуске контейнера:
-
8080
порт используется для первичной настройки NextCloud. Там будет панель администратора. -
80
порт – единственный, который предназначается для взаимодействия с веб-приложением непосредственно. Соответственно, это протокол HTTP. Напомню, что все сторонние запросы к системе переводятся на HTTPS нашим прокси и поступают на 11000 порт контейнеров, которые уже внутри, неявно для нас, переведут их на 80 порт на обработку приложением. -
8443
порт должен использоваться для обновления самописного сертификата. Лично я с этим не работал, и не могу ничего сказать.
Как говорилось выше, на домашней машине будет непросто открыть порт 80. Да это и не нужно, когда докер представляет нам простой механизм переадресации портов. Я просто использовал порт 9090 вместо 80. Также я подменил порт 8080 в мастер-контейнере на 9880, т.к. иногда использую порт 8080 моего ПК при разработке своих серверов, и подменил 8443 портом 9443 просто за компанию.
Другие порты, такие как 11000 (наш APACHE_PORT) и 3478, используемые дополнительными модулями, будут подключаться автоматически. При запуске master-контейнера, их не нужно привязывать явно. После запуска будет автоматически созданы контейнеры nextcloud-aio-domaincheck и nextcloud-aio-apache, которые свяжутся с портом APACHE_PORT, а после настройки системы в панели администратора, появятся и другие контейнеры, например, nextcloud-aio-talk, которые займут свои порты.
Опции Docker
Очень важно не передавать настоящий сетевой интерфейс операционной системы хостовой машины как внутренний сетевой интерфейс контейнера. Это делается с помощью передачи опции --net=host
в команде docker run
или network_mode: 'host'
в docker-compose. Можно встретить некоторые гайды в интернете, которые предписывают делать именно так. Но это не соответствует документации! Единственное, когда это может быть оправдано, — запуск контейнера на выделенном Linux-сервере, когда докер применяется как IaC средство в задаче оркестрирования. В нашем же случае, контейнер просто не сможет открыть порты 80, 443, т.к. у него нет прав.
-
--sig-proxy=false
– отключает проксирование сигналов ОС. -
--name=<имя>
— задает имя контейнеру -
--restart=<always | no | unless-stopped>
— регулирует, что делать в случае критической ошибки или иных случаях, когда контейнер может завершить работу. Соответственно: всегда, никогда и до тех пор, пока пользователь вручную пошлет SIGTERM/SIGBRK. Облако должно быть доступно всегда. Ставим always. -
-e <имя>:<значение>
– передача переменной окружения -
-v (--volume) <директория хост>:<директория в ОС контейнера>, либо <имя volume>
— передача volume или директорий хостовой машины в пользование контейнеру. Что передавать берем из документации:nextcloud_aio_mastercontainer:/mnt/docker-aio-config
,//var/run/docker.sock:/var/run/docker.sock:ro
. -
-p (--port) <порт хост>:<порт в интерфейсе контейнера>
— соединение порта сетевого интерфейса хостовой машины и сетевого интерфейса контейнера.
Запуск
Сначала надо создать volume’ы.На Windows nextcloud_aio_nextcloud_datadir обязательный, nextcloud_aio_backupdir — опциональный.
Тут последовательность из пробела и обратной кавычки ( ` ) используется для ввода многострочной команды.
В Unix-системах аналогом выступает пробел и обратный слэш ( \).
# Backup dir
docker volume create `
--driver local `
--name nextcloud_aio_backupdir `
-o device="/host_mnt/c/NextCloudBackups" `
-o type="none" `
-o o="bind"
# Datadir
docker volume create `
--driver local `
--name nextcloud_aio_nextcloud_datadir `
-o device="/host_mnt/c/NextCloudData" `
-o type="none" `
-o o="bind"
Запускаем контейнер ровно так, как предписывает документация, но подменяем порты:
docker run `
-e NEXTCLOUD_DATADIR="nextcloud_aio_nextcloud_datadir" `
-e APACHE_PORT=11000 `
--sig-proxy=false `
--name nextcloud-aio-mastercontainer `
--restart always `
-p 9090:80 `
-p 9880:8080 `
-p 9443:8443 `
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config `
--volume //var/run/docker.sock:/var/run/docker.sock:ro `
nextcloud/all-in-one:latest
Либо через docker-compose:
# docker-compose.yml
services:
nextcloud:
image: nextcloud/all-in-one:latest
restart: "always"
container_name: nextcloud-aio-mastercontainer
environment:
- NEXTCLOUD_DATADIR=nextcloud_aio_nextcloud_datadir
- APACHE_PORT=11000
volumes:
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config
- //var/run/docker.sock:/var/run/docker.sock:ro
ports:
- "9080:80"
- "9090:8080"
- "8443:8443"
volumes:
nextcloud_aio_mastercontainer:
docker-compose up
После запуска панель docker станет выглядеть так:
Тут видно все то, о чем было написано выше: появились новые контейнеры, которые заняли нужные ими порты. Master-container появляется первым и занял порты 9090, 9880 и 9443.
Остается настроить само облако
Переходим в браузер. Нужно подключиться к 8080 порту контейнера, т.е. для нас это адрес, оканчивающийся на :9880. Какой ip вводить? Любой, чтобы не попасть на прокси, ведь тот не знает о том, что что-то нужно пересылать на порт 9880
. Можно вбить localhost:9880
, <ip в локальной сети домашнего маршрутизатора 192. …>:9880
или <ip ПК в сети Hamachi>:9880
– все эти адреса ведут на порт 9880 одной и той же машины. Подключаться нужно по HTTPS (обязательно вбейте https://
перед адресом и портом, потому что браузер скорее всего сам подставит http, и тогда появится Bad Request от Apache с просьбой перейти на HTTPS). Далее выскачет предупреждение, что соединение небезопасно, но мы ведь знаем, что все безопасно, верно ;). Нажимаем «все равно подключиться» (на разных браузерах эта кнопочка может называться по-разному и быть скрыта за другой кнопкой, например, в Opera надо сначала нажать “help me understand”).
В NextCloud всё сделано именно так, потому что все внешние соединения должны быть зашифрованы и поэтому осуществляются через прокси по HTTPS. Считается, что раз до контейнера доходят HTTP-сообщения, значит, они либо защищены протоколом ssl на уровень выше, либо у оператора есть прямой доступ к машине.
Скопируем и сохраним в блокнот мнемоническую фразу для восстановления системы.
Далее на следующей странице надо будет ввести домен, который пользователь вбивает в браузере, чтобы подключиться, т.е. тот, по которому он попадает на reverse-proxy. В нашем случае www.<домен>. Форма ниже, связанная с бекапом понадобится не сейчас, а во время восстановления бекапа.
Если все успешно, Вас пробросит дальше на страницу, где будет создана учетная запись администратора. Сохраняем куда-нибудь выданный нам пароль. Тут же можно установить некоторые дополнительные модули (их намного больше). Знайте, что каждый модуль – это отдельный докер-образ, а значит весит он много, и его контейнер строится долго. Запустите все контейнеры и дождитесь, когда индикаторы загорятся зеленым.
Скриншоты к вышеописанному процессу не прилагаю. Все есть в обилии на youtube.
Что делать, если проверка домена не выполняется?
Для начала, это значит, что NextCloud попробовал найти сам себя по запросу https://<домен, который Вы ввели на панели администратора>
и не смог.
Проверьте, что на домене, который Вы приобрели, есть А-запись с правильным ip-адресом прокси-сервера. Если вы только что обновили эту запись, DNS-сервера провайдера распространяют её иерархически на магистральные роутеры, и на это может потребоваться время (по моим оценкам, до получаса). Можно, например, воспользоваться командой windows powershell ping <домен>
. В Widows она хороша тем, что вместо домена нам будет показан ip-адрес, ассоциированный, как считает домашний роутер, с введенным доменом. Другие утилиты, такие как tracert
могут не помочь в случае с арендованными серверами или vpn — все зависит от того, какие запросы пропускает к себе в датацентр хостинг.
Также стоит проверить, что прокси сервер работает, доступен в сети по собственному ip-адресу и на нем запущен Apache/Nginx/Caddy. Не пренебрегайте тестированием конфигов. Узнать, работает ли сервер можно, вбив systemctl status <apache2 | nginx | caddy>
.
Не забудем проверить и vpn-тонель со стороны сервера на домашний компьютер.
Для остальных случаев есть флаг SKIP_DOMAIN_VALIDATION
.
В конце есть список сетевых утилит Windows, которые могут помочь с отладкой сетевого маршрута.
Этап 5. Фаервол
Финальная часть – предотвращение несанкционированных попыток подключения к домашнему компьютеру и спама до состояния DDOS – настроим файервол.
В Linux – воспользуйтесь утилитами ufw или iptables.
Вбиваем в поиск системы «Защита от вирусов и угроз», или «Безопасность Windows», или «Defender», переходим в Брандмауэер -> дополнительные параметры ->правила для входящих подключений.
Нажимаем справа «создать правило», выбираем фильтрацию по порту: специальные порты, 11000. Если накладываете какие-то другие опции фильтрации, помните, что Hamachi – это частная сеть в ОС Windows.
Если планируете использовать эту же сеть Hamachi для передачи еще какого-то трафика, обязательно откройте порт здесь. Правила Defender можно редактировать на лету.
Инструменты Windows для диагностики сетевых интерфейсов
Все перечисленные здесь утилиты работают в powershell и cmd. Лучше выполнять от имени администратора.
nslookup
– получение ip по доменному имени на DNS-сервере, сведения о ближайшем DNS-сервере. Будьте внимательны, лично я столкнулся с тем, что nslookup кеширует свои ответы, и если, например, Вы меняете А-запись к своему домену, браузер может видеть изменения, а nslookup – нет. На этот случай есть команда ipconfig/flushdns
, но мне она не помогала.
ipconfig/flushdns
– сброс dns-кеша в ОС. Работает только в cmd.
Работу DNS можно сымитировать, добавив запись в системный файл C:\Windows\System32\drivers\etc\hosts
.
netstat -na | findstr ":8080"
— просмотр установленных соединений. Просто netstat -na
покажет все соединения.
ipconfig
— просмотр сетевых интерфейсов. Тут можно наблюдать сеть докера docker0 или WSL — она нужна, когда контейнер общается с сервером на хосте (почитайте про внешний адрес host.docker.internal).
Посмотреть, куда и как (редиректы, HTTP-заголовки) идут запросы в браузере можно через инструменты разработчика. Ctrl+Shift+I или ПКМ по пустому пространству в браузере -> network
Заключение
Итак, у меня получилось запустить NextCloud дома, однако потребовался внешний прокси-сервер. Это оказалось дороже, чем аренда места на Google Disk, но потенциально может быть дешевле, если исключить аренду прокси сервера, и найти какое-то другое решение. К тому же я неограничен в объемах хранимой информации и имею с одной машины в доме быстрый доступ через обычный проводник.
Тем не менее, опыт, я считаю, интересный. Пользоваться дома вполне можно. Все еще остается возможность переноса хранилища на какой-то тихий компьютер, такой который бы не жужжал при постоянной эксплуатации 24/7. Прекрасно подойдет старый системный блок или ноутбук с утилитой управления скоростью вращения вентиляторов.
Если планируете использовать NextCloud ровно так, как описано в этом гайде, то главное не забыть поставить Docker и Homachi на автозапуск. Так будет достигнута неплохая отказоустойчивость.
Надеюсь, материал был полезен. Спасибо, что читаете. Увидимся в другом гайде.
Продолжаем цикл об информационной суверенности. Мы уже говорили о том, как сделать бэкап файлов вручную и по скрипту, но всё это было в пределах одного компьютера. Сегодня сделаем следующий шаг — создадим и настроим свой удалённый облачный сервер для хранения важных данных.
Общий вид проекта
Общая картина такая:
- У нас будет удалённый виртуальный сервер, который мы купим у российского провайдера.
- По желанию на сервере можно настроить доступ без пароля, по специальному ключу безопасности.
- На сервере будет работать программа Nextcloud, которая будет принимать наши файлы на сервере.
- На компьютере установим клиентскую часть 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:
Если у вас Windows 10, то для SSH-подключения можно использовать PowerShell, установив OpenSSH-клиент. Для этого запустите PowerShell и выполните команды:
Add-WindowsCapability -Online -Name OpenSSH.Client*
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Client*'
Первая команда устанавливает OpenSSH-клиент, а вторая проверяет его статус. Если всё в порядке, в статусе будет написано Installed (установлен).
Для отключения от сервера нужно набрать команду logout. Связь по SSH прекратится, и терминал будет выполнять команды не на сервере, а на вашем компьютере.
Чтобы не вводить каждый раз пароль, повысить уровень безопасности при подключении и в дальнейшем автоматизировать разные процессы, мы можем сделать SSH-ключ.
Если не хотите этим заморачиваться сейчас, можно на этом остановиться и дождаться следующей статьи, где мы настроим связку между сервером и вашим компьютером. Ну или оставайтесь, заморочимся вместе.
В общих чертах всё работает так:
- Мы у себя на компьютере генерируем пару ключей для шифрования — публичный и приватный. Если интересно, зачем нужны эти ключи, почитайте статью про асимметричное шифрование. Сами ключи будут храниться каждый в своём файле.
- Публичный мы отправим на сервер, им можно делиться с кем угодно, а приватный никому показывать нельзя.
- Мы настроим компьютер и сервер так, чтобы при SSH-подключении вместо пароля сервер брал наш приватный ключ и смотрел, подходит он в пару к публичному или нет. Если да (а мы настроим, чтобы было да), то соединение установится.
Чтобы создать новую пару ключей в Linux или Mac OS, выполните команду ssh-keygen
. Нас попросят указать имя файла, где будут храниться ключи, и кодовую фразу (пароль для ключа). Кодовую фразу можно не вводить и нажать Enter. По умолчанию все ключи хранятся в каталоге пользователя в папке /.ssh/id_rsa
:
Чтобы сервер мог пускать нас по ключу, нужно скопировать на него наш публичный ключ. Для этого в 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
и смотрим, какой пароль спросит сервер — если ключа, то всё отлично:
Что дальше
Сейчас у нас есть сервер, которым мы можем управлять по защищённому каналу. В следующих статьях будем настраивать резервное копирование в это облачное хранилище — скриптами и специальным софтом. Подпишитесь, чтобы не пропустить продолжение.
Художник:
Даня Берковский
Вёрстка:
Кирилл Климентьев
Папка с файлами будет доступна как для других компьютеров, так и для мобильных устройств. Получается возможность обмениваться разными файлами и другой информацией. Нужно учитывать, что компьютер должен быть подключен к интернету.
Для начала нужно перейти на сайт https://www.resilio.com/individuals/ и скачать бесплатное приложение, которое нужно установить для компьютера. Так же его можно установить на смартфон в любом сторе, оно называется «Resilio sync»
На сайте выбираем вкладку «Product», затем «Sync Home for Home Use».
Появляется страница с установкой. Нажимаем «Free download» и выбираем файл с программой.
Затем нажимаем «Запустить» . Нажимаем кнопку «Далее» и программа устанавливается.
После запуска приложения даем имя, которое будет отображаться при отправке и получении папок и ставим галочки на согласие использования приложения. После этого нажимаем кнопочку «Начать работу».
Появляется окно программы. Мы нажимаем «+» , после этого выбираем «Стандартная папка».
Сейчас нам нужно выбрать папку, которая будет являться облачным хранилищем . Например, «Доступ» .
Далее появляется меню настройки папки-хранилища. Выберите строку «Новые пиры» и замените на «Все пиры» , тем самым можно будет требовать повторного подтверждения для новых папок. Закрываем это окно
Теперь у вас отображаются папки, которые являются облачным хранилищем. Как же перенести в эту папку файлы? Все просто: нажимаем на данную папку и переносим, путем копирования, файлы. В нашем случае это простая картинка. Готово.
Теперь можно поделиться этой картинкой с другими устройствами. Для этого нажимаем кнопочку «Поделиться» . Выбираем вкладку «Ключ» . Ключ мы можем предоставить для чтения и записи или только для чтения . Ещё можем поделиться QR-кодом , тоже соответственно для чтения и записи или только для чтения. Делимся этими ключами с другим человеком, чтобы он мог просматривать файлы из этой папки.
Теперь рассмотрим, что нужно сделать для просмотра файлов в облаке с другого устройства.
Для этого нужно будет скопировать ключ и создать папку в которой эти файлы будут размещаться или просматриваться. Находим снова «+», вставляем ключ(как его найти описано выше) и нажимаем «Далее». Выбираем свою папку. Идёт синхронизация. После завершения синхронизации нажимаете на папку в программе и можно увидеть все файлы, которые были сохранены в облаке.
Можно также делиться файлами из облака со смартфоном
Для этого в Google Play Market находим приложение «Resilio Sync».
Скачиваем его и открываем.
Вводим имя пользователя и ждём.
Готово
Чтобы соединиться с облаком нажимаем на панельку в верхнем левом углу и переходим в настройки. Выбираем вкладку «Идентификатор». После нажимаем «Привязать устройство»
Появляется окно. В нем мы можем сканировать и показать QR-код и ключ. В нашем случае, сканируем QR-код.
Готово! Теперь можно просматривать файлы из папки-хранилища на своём смартфоне.
При желании, файлы могут быть загружены из смартфона и их точно так же можно просматривать в облаке.
0
Зачем нужен домашний сервер и как его собрать
Благодаря ему у вас будет безразмерное личное облако, библиотека любимых фильмов, хранилище резервных копий и не только.
Статью можно послушать. Если вам так удобнее, включайте подкаст.
Когда мы слышим слово «сервер», то представляем огромный суперкомпьютер, занимающий целый этаж. Но на самом деле позволить себе это устройство могут не только гигантские корпорации вроде Google и Microsoft. Сделать сервер из недорогих комплектующих, которые есть под рукой, способен каждый. Разбираемся, для чего он может пригодиться.
Зачем нужен домашний сервер
Сообщество любителей домашних серверов создало довольно внушительный список вещей, которые умеют их игрушки. Посмотреть этот перечень можно здесь, мы же упомянем самые распространённые варианты.
Централизованное хранение данных
Домашний сервер может использоваться для хранения и организации всех ваших данных, включая фотографии, видео и документы. И вы сможете получить доступ к ним с любого устройства в домашней сети.
В принципе, для этих же целей можно приобрести готовое решение — NAS (Network Attached Storage). Но новые устройства от Synology или QNAP стоят дорого, а собственный сервер можно собрать из комплектующих, которые есть под рукой.
Вдобавок доступ к нему можно обеспечить не только из домашней сети, но и из интернета. Даже находясь вдали от дома, вы сможете редактировать свои файлы. Это удобно — и не придётся носить с собой постоянно гору внешних жёстких дисков.
Резервное копирование
С помощью домашнего сервера вы можете создать систему резервного копирования данных, чтобы защитить ценные файлы от потери. Процесс можно запускать автоматически по расписанию — для этого подойдут как платные, так и бесплатные решения от тех же Acronis, Paragon или EaseUS.
Резервные копии будут храниться не на компьютере, с которого они были сделаны и где их может повредить сбой оборудования, а на вашем сервере — в полной безопасности.
Облачное хранилище
У облачных хранилищ вроде Dropbox есть две проблемы. Во‑первых, за мало‑мальски приличный объём памяти они просят денег, причём регулярно. Во‑вторых, если провайдер облачного хранилища решит закрыть его или ввести какие‑либо ограничения, вам придётся с этим безропотно смириться.
Собственный сервер лишён таких недостатков. Количество терабайтов на нём у вас будет практически безграничным — жёсткие диски относительно дёшевы, и вы сможете подсоединить их сколько угодно. Ну или сколько поместится в корпус устройства. Никаких подписок такой аппарат у вас не потребует — платить придётся только за электричество.
А в итоге вы получите собственное облако, которое позволит хранить любой объём данных и обеспечит возможность синхронизации файлов между различными устройствами.
Почтовый сервер
Многие домашние серверы создаются для получения и отправления электронных писем. Это полезно, если вы хотите вести конфиденциальную беседу и вам не нравится хранить свою корреспонденцию у сторонних провайдеров. Вдобавок устройство сможет организовывать рекламные или новостные рассылки для ваших клиентов или подписчиков.
Сервис продуктивности
Помимо прочего, домашний сервер способен заменить самые разные сервисы продуктивности. Вы можете хранить на нём свои заметки, чтобы стать независимым от Evernote, разместить там свой список дел (прощай, Todoist), установить календарь, ежедневник, напоминания — да что угодно! В конце концов, домашний сервер может принимать ленты новостей и синхронизировать их между вашими устройствами, заменяя тот же Feedly.
При этом вам не придётся тратиться на ежемесячные подписки, мириться с ограничениями бесплатных версий программ или терять данные, потому что любимый сервис в один прекрасный день решит закрыться.
Электронная библиотека
Если у вас большая коллекция электронных книг, домашний сервер может использоваться для хранения и организации личной библиотеки. Вы легко получите доступ к данным с разных устройств, используя специализированные программы для чтения.
Медиахранилище
Отдельно стоит упомянуть возможность использования домашнего сервера для хранения и потоковой передачи медиафайлов на все устройства в вашей домашней сети. Вы сможете смотреть кино и слушать музыку на любом гаджете — независимо от того, сколько в нём памяти.
Как вам идея запускать фильмы в 4K без лагов на старом телевизоре, который стоит где‑нибудь на кухне? Медиасервер даст возможность создать нечто вроде Spotify и Netflix в одном флаконе, только для себя.
Личный веб‑сервер
При желании на домашнем сервере вы сможете размещать собственные веб‑сайты, блоги или форумы. Это даст возможность полностью контролировать свои данные — не придётся переживать, что хостинг внезапно поднимет цены. Конечно, портал с миллионной ежедневной посещаемостью на маломощном железе завести не получится, но вот сайт‑визитку или портфолио — пожалуйста.
Управление умным домом
Если вы используете системы умного дома, домашний сервер может стать центром управления всеми вашими устройствами. С его помощью вы сможете контролировать освещение, термостаты, опрыскиватели и другие гаджеты.
Управление системами безопасности
Домашний сервер может объединять системы безопасности вашего дома, позволяя вам контролировать и мониторить видеонаблюдение, сигнализацию, умные замки и датчики движения. Особенно полезна возможность постоянно писать на подключённые к серверу жёсткие диски видео с камер.
Загрузчик файлов
Иногда для того, чтобы скачались данные из какого‑нибудь файлообменника, приходится ждать часами — например, если мало раздающих или сервис ограничивает скорость загрузки. На помощь придёт домашний сервер. Он работает круглые сутки, а значит, способен качать информацию всё время, позволяя вам не держать основной компьютер включённым.
Игровой сервер
Заядлые геймеры смогут использовать собранный ими компьютер в качестве сервера для многопользовательских игр. Туда можно будет пригласить своих друзей для совместного весёлого времяпрепровождения. Чаще всего собственные серверы собирают для игры в Minecraft, но, вообще, вы можете устанавливать на своё устройство что захотите — возможности безграничны.
Из чего можно собрать домашний сервер
Есть множество вариантов железа для сервера на любой вкус и кошелёк. Некоторые покупают готовые сетевые хранилища от Synology или QNAP — но их возможности по апгрейду и установке ПО ограничены. Другие энтузиасты выбирают мощные готовые серверы для небольших предприятий, вроде HP ProLiant или Dell PowerEdge. Но они слишком дорогие и мощные для домашнего использования. Собрать собственный сервер куда лучше — вот как это сделать.
Домашний сервер из одноплатного компьютера
Микрокомпьютеры на базе ARM‑процессоров, например Raspberry Pi, Orange Pi или Cubieboard3, являются популярными вариантами для создания домашних серверов. У них есть немало преимуществ.
Плюсы:
- Невысокая цена. Raspberry Pi 3 стоит около 35 долларов, Orange Pi — всего 15.
- Компактные размеры. Одноплатные компьютеры маленькие, их можно легко спрятать в столе или на полке, чтобы сервер на маячил перед глазами.
- Тишина. Одноплатники не имеют активного охлаждения, так что самыми громкими устройствами в вашей системе будут жёсткие диски.
- Низкое энергопотребление. Одноплатники потребляют мало энергии, поэтому их работа не сильно скажется на ваших ежемесячных расходах.
Минусы:
- Ограничения конструкции. Одноплатники обычно не имеют корпуса. А если имеют, то маленький, и ваши диски придётся просто складывать в стопку. У мини‑компьютера может не быть SATA‑адаптера — придётся подключать диски через переходники USB‑SATA, что ограничивает скорость работы с ними, и обеспечивать внешнее питание.
- Низкая производительность. ARM‑модели значительно медленнее даже бюджетных процессоров x86‑архитектуры. Сервер может тормозить и виснуть, если вы возложите на него слишком много функций.
- Архитектура ARM. Для этих процессоров доступно меньше программ, чем для стандартных x86, так что перед покупкой вам придётся тщательно выбирать, какие задачи должен выполнять домашний сервер.
В целом одноплатник — неплохой вариант, если вам нужно простенькое сетевое хранилище и вы не желаете тратить много денег.
Что купить
- Мини‑компьютер Raspberry Pi 4, 16 866 рублей →
- Мини‑компьютер Raspberry Pi 4B, от 7 046 рублей →
- Мини‑компьютер Banana Pi BPI‑R3, от 9 866 рублей →
Домашний сервер на базе неттопа
Мини‑ПК, также известные как неттопы, — это компактные компьютеры на базе архитектуры x86. Это могут быть как готовые устройства, которые можно подключить к питанию и использовать, так и комплекты для сборки, где процессор встроен в материнскую плату, а память и хранилище нужно устанавливать самостоятельно.
Плюсы:
- Большой выбор. Самые известные модели в таком формфакторе — это Intel NUC и Mac Mini, которые влетают в копеечку. Но на AliExpress продаётся изрядное количество более дешёвых неттопов. И их возможностей для домашнего сервера хватит с головой.
- Тишина. Неттопы либо не имеют активного охлаждения — тепло рассеивает корпус, либо обладают только одним тихим вентилятором. Такой сервер можно хоть на прикроватный столик ставить — он не помешает.
- Компактность. Хотя неттопы и больше одноплатников, они всё равно не займут много места.
- Приличная производительность. Даже маломощный неттоп на Intel будет быстрее Raspberry Pi 3, и процесс установки программ на него не в пример проще.
- Наличие антенн Wi‑Fi в некоторых моделях. Это значит, что неттоп можно будет использовать и для раздачи беспроводной сети. Некоторые умельцы умудряются превратить его в роутер, который ещё и торренты качает, и рекламу фильтрует.
Минусы:
- Мало места внутри корпуса. Как правило, мини‑ПК позволяет установить только один жёсткий диск, и тот формата 2,5 дюйма. Если же вы будете подключать внешние диски через USB‑SATA‑переходники, конструкция будет выглядеть неряшливо и скорость записи на диск пострадает.
- Сильное нагревание. Если неттоп имеет достаточно мощный процессор, он будет греться под нагрузкой. Проблему можно купировать, поменяв термопасту и установив вентилятор — если его нет в конструкции.
- Нет возможности апгрейда. Многие неттопы позволяют заменить плашку памяти (чаще всего ноутбучного формфактора) и SSD, но с процессором это сделать не получится. Если вам не будет хватать производительности, то придётся покупать неттоп подороже.
В общем, неттопы — это одноплатники на стероидах. Более дорогие, но при этом тихие и довольно производительные для сервера. Отличный вариант для нетребовательных пользователей.
Что купить
- Неттоп Intel NUC 12 Pro, 64 449 рублей →
- Неттоп XCY X30‑N4000, от 8 748 рублей →
- Неттоп XCY X30‑4LAN, от 7 947 рублей →
Домашний сервер из старого ПК
У вас завалялся старый компьютер, который уже не тянет даже новые версии Windows, не говоря уже об играх? Не спешите выбрасывать его: он тоже будет отличным сервером.
Плюсы:
- Дешевизна. У людей, которые любят компьютеры, часто скапливается изрядное количество ненужных комплектующих, из которых можно собрать сервер. Как правило, приходится докупать только диски побольше.
- Возможность апгрейда. Добавить памяти? Заменить процессор? Установить вентиляторы потише, SSD побыстрее, блок питания помощнее? Легко. Домашний сервер можно будет легко прокачать, когда у вас появятся новые потребности.
- Много места для жёстких дисков. Обычная материнская плата имеет от 4 до 6 SATA‑разъёмов, а ещё через SATA‑адаптеры можно подключить больше дисков к PCI‑E. Вы сможете установить в корпус хоть 10, хоть 20 жёстких дисков, если докупите дополнительные корзины для них.
Минусы:
- Большие размеры. Стандартный корпус формата Midi‑Tower и материнские платы mATX или ATX занимают много места. На полочку рядом с роутером такой ящик вряд ли получится поставить.
- Шум. Охладить старые комплектующие не так‑то просто — придётся устанавливать в корпус дополнительные вентиляторы, которые будут шуметь.
- Необходимость чистки. Это не неттоп, который можно поставить в шкаф и забыть, — периодически придётся чистить пылевые фильтры.
Старый ПК станет отличным домашним сервером, если у вас дома много места и вы сможете найти укромный уголок, чтобы спрятать его там. Это чрезвычайно практичное, мощное и дешёвое, но не очень эстетичное решение.
Домашний сервер в корпусе mini‑ITX
Сохранить преимущества предыдущего варианта и избавиться от его недостатков позволит корпус формата mini‑ITX. Он меньше, чем стандартные башни. И в нём можно размещать как игровые ПК, так и серверы.
Плюсы:
- Широкий выбор комплектующих. Существует много корпусов mini‑ITX на любой вкус и кошелёк. Совместимые с ними материнские платы тоже бывают как очень дорогие и навороченные, так и простые и дешёвые.
- Компактные размеры. Корпус mini‑ITX больше, чем неттоп, но в два-три раза меньше стандартной башни, так что его можно легко спрятать. Кроме того, такие коробки стильно выглядят.
- Наличие места для дисков. Если докупить кронштейны для жёстких дисков, то в mini‑ITX‑корпус можно спокойно воткнуть 8–10 HDD большой ёмкости. Учитывая, что многие модели рассчитаны на сборку игровых ПК, можно ещё и в слот для видеокарты один-два диска поместить.
- Возможность апгрейда. Это, в конце концов, настоящий ПК, и диски, процессоры, память можно подбирать любые.
Минусы:
- Потенциальные проблемы с охлаждением. Маленькие корпусы охладить сложнее, чем большие. Впрочем, это решаемая проблема: в современных mini‑ITX и горячие игровые системы собирают. Так что, если вы грамотно расположите вентиляторы, ваши комплектующие будут в порядке.
- Необходимость докупать материнскую плату и блок питания. В некоторые mini‑ITX-корпусы с помощью подручных средств можно установить полноразмерную материнскую плату. Но всё же может случиться, что вам придётся купить вариант поменьше. Кроме того, некоторые корпусы вмещают только маленькие блоки питания формата SFX.
- Необходимость чистки. Иногда ваш сервер mini‑ITX придётся прочищать от пыли. Например, раз в полгода‑год.
В общем, сервер в формате mini‑ITX — это прекрасный компромисс. Он может быть настолько мощным и прокачанным, насколько вы захотите. И при этом — занимать мало места, не издавать много шума и хорошо вентилироваться. Вдобавок большинство комплектующих для стандартных корпусов подходят и для компактного кейса.
Что купить
- Компьютерный корпус Cooler Master Elite 130, 4 741 рубль →
- Компьютерный корпус Jonsbo C2, 3 940 рублей →
- Компьютерный корпус Chieftec CI‑01B, 5 488 рублей →
Домашний сервер в готовом корпусе для NAS
Отдельно стоит упомянуть возможность сборки домашнего сервера в корпусе NAS — такие продаются на AliExpress и в других интернет‑магазинах. В него вставляется материнская плата формата mini‑ITX и компактный блок питания. В корпусе есть несколько салазок для жёстких дисков — обычно два, четыре или шесть, но бывают и монструозные коробки на 12 HDD.
Плюсы:
- Компактные размеры. Даже меньше, чем большинство корпусов mini‑ITX. Вдобавок такой кейс хорошо выглядит.
- Возможность горячей замены дисков. Для некоторых пользователей, например постоянно копирующих большие объёмы данных с одного компьютера на другой, это может быть очень важным преимуществом. Вставляете в корзину диск, заполняете его данными, нажимаете на кнопку, и он выскакивает обратно. Не придётся разбирать весь сервер, чтобы поменять HDD.
- Возможность апгрейда. Можно установить более дорогую материнскую плату, мощный процессор и большее количество памяти — главное, чтобы всё это поместилось в корпусе.
- Тихая работа. Устройство работает примерно так же тихо, как дорогие решения от Synology. Иногда производители устанавливают в свои корпусы дешёвые шумные вентиляторы, но их можно легко заменить.
Минусы:
- Цена. Готовый корпус для NAS заметно дороже, чем кейсы mini‑ITX, да и доставка влетает в копеечку.
- Ограниченное количество дисков. Если в корпусе четыре разъёма под HDD, то вы именно столько дисков и установите — не больше. В кейсах mini‑ITX можно добавить дополнительные корзины для HDD, а тут придётся пользоваться тем, что есть.
- Однозначно понадобится докупать материнскую плату и блок питания. Размеры NAS‑корпусов таковы, что большая материнка и блок питания туда просто не влезут. В некоторые mini‑ITX‑корпусы всё-таки можно установить комплектующие, не подходящие им по размеру, но не в этом случае.
Сервер в готовом корпусе для NAS можно выбрать, если вы собираетесь часто менять жёсткие диски. Например, вы видеомонтажёр или 3D‑генералист и вам приходится постоянно переносить HDD с большими объёмами данных. Ну или вам просто понравилось, как выглядит эта штука, и вы готовы немного переплатить.
Что купить
- Корпус для NAS от Toploong, 4 580 рублей →
- Корпус для NAS от Jonsbo, 9 068 рублей →
- Компактный корпус для NAS от Jonsbo, 9 099 рублей →
Что установить на домашний сервер
После того как вы выбрали и собрали комплектующие для своего сервера, подсоединили их к питанию и убедились, что всё работает, настало время установить операционную систему. Вот какие есть варианты.
Ubuntu Server
Ubuntu Server является одним из самых популярных дистрибутивов Linux для серверов. У него огромное сообщество пользователей и разработчиков, что облегчает получение поддержки и решение проблем.
Ubuntu Server предлагает множество возможностей и легко настраивается. Нетребователен к железу и хорошо работает даже на таких маломощных устройствах, как Raspberry Pi.
Загрузить Ubuntu Server →
Debian
Debian также является популярным вариантом. Он отличается стабильностью, безопасностью и долгосрочной поддержкой. Debian имеет обширный репозиторий пакетов, что облегчает установку и обновление программного обеспечения. Существует множество сборок под самые разные платформы, так что система способна запускаться буквально с любого устройства.
Загрузить Debian →
CentOS
CentOS (Community Enterprise Operating System) основан на исходных кодах коммерческого дистрибутива Red Hat Enterprise Linux, но, в отличие от последнего, полностью бесплатен. Он стабильный, безопасный, с большим сообществом пользователей. Если вы когда‑нибудь работали с Fedora, то без проблем разберётесь и тут.
Загрузить CentOS →
TrueNAS
Если ваш сервер в первую очередь предназначен для хранения файлов и обмена ими, то TrueNAS может быть хорошим выбором. Это ПО основано на операционной системе FreeBSD и предлагает продвинутые функции для NAS (сетевого хранилища). Например, тут можно в несколько кликов создать RAID‑массив, который будет дублировать ваши данные на несколько дисков, чтобы сохранить их даже при аппаратных сбоях.
Загрузить TrueNAS →
OpenMediaVault
Ещё одна ОС, специализирующаяся прежде всего на хранении файлов и обмене ими. Она аналогична по возможностям FreeNAS, но основана на Debian. Предоставляет простой в использовании интерфейс для удалённого управления NAS‑сервером.
Загрузить OpenMediaVault →
Windows
Тут поклонники Linux начнут смеяться, но Windows — отличная система для неискушённого владельца домашнего сервера. Конечно, она более требовательна к ресурсам, чем Linux или FreeBSD, но при этом намного проще в настройке.
Кроме того, если вы не гик, управлять сервером через Windows Remote Desktop намного приятнее, чем набирать команды в сетевом терминале по протоколу SSH. В общем, если сомневаетесь, что справитесь с настройкой Linux, — можете остаться на старых добрых «Окнах».
Некоторые фанаты домашних серверов устанавливают на свои машины вариацию Windows Server. Но она требует особой лицензии от Microsoft, которую обычно не предоставляют частным лицам. Впрочем, возможности Windows Server для дома явно избыточны: Windows Home или Pro подойдут ничуть не хуже.
Загрузить Windows →
После того как вы выберете и установите ОС, можно начинать работать. Сохраняйте бэкапы, стримьте фильмы, загружайте файлы — в общем, делайте со своим сервером что душе угодно. А если у вас есть необычные идеи, как использовать такую машину, обязательно поделитесь ими в комментариях.
Привет! Меня зовут Максим Кульгин, я основатель нескольких SaaS-проектов в РФ. Мы защищаем от скликивания рекламы, парсим данные для бизнеса и занимаемся мобильной разработкой. И сейчас я буду вдохновлять вас на создание собственного облачного сервиса. Бесплатного на 100%, без навязанных ограничений, под вашим полным контролем. У нас уже работает много лет. Стабильно.
Недавно мы опубликовали несколько статей на тему создания своего SaaS, а также поднятия почтового сервера. Теперь свой облачный сервис. Для чего это всё?
Своё облако не заблокирует никто. Серверы можно организовать так, что до них не дотянется ни одна заинтересованная сторона. Сегодня мы как раз и рассмотрим прекрасный способ это осуществить.
Почему облако?
Когда дело доходит до хранения данных, то всё чаще отдается предпочтение именно «облачным хранилищам», «облакам». Причин много: надежность, удобство, доступность, отсутствие необходимости заниматься поддержкой инфраструктуры.
Я веду свой телеграм-канал Русский ИТ бизнес, где без прикрас рассказываю о своем ежедневном негативном опыте по ведению нескольких бизнесов в России.
Подпишитесь, там интересно: )
Сейчас вряд ли найдется человек, который не слышал и не пользовался одним из многочисленных сервисов хранения данных. Наиболее известные платформы, которые у всех на слуху: Apple iCloud, Google Drive, Dropbox, Yandex Disk. Каждый из подобных сервисов имеет свои преимущества, свои уникальные предложения, свои удобства.
А как насчёт менее известных? Такие платформы заслуживают внимания?
Nextcloud — одна из таких малоизвестных платформ, популярность которой тем не менее неуклонно растет. В чём секрет? Что дает Nextcloud пользователям? Каковы ключевые преимущества?
В этой статье мы рассмотрим эти вопросы, а в практической части пройдем по всем шагам, чтобы установить и развернуть Nextcloud на Linux.
Справедливости ради надо отметить, что вам потребуется сервер. Мы его арендуем за 4000 р. в месяц с дисками на несколько ТБ. И если нужно — добавим еще дисков столько, сколько требуется. Причем на этом сервере работают и другие наши службы — mattermost, phabricator и т.п. Поэтому стоимость владения облаком резко сокращается.
Nextcloud — программное обеспечение с открытым исходным кодом. Позволяет пользователям запускать свои собственные персональные облачные хранилища — вот ключевая особенность!
Как и любое облако, Nextcloud схож с другими подобными сервисами, такими как Dropbox и Google Drive.
Разработка Nextcloud началась в 2016 году, а если учесть предысторию проекта, то годом рождения можно считать 2010-й.
Nextcloud — это ответвление проекта Owncloud, созданное членами одноименной команды. У этих проектов много общего (что неудивительно, поскольку один основан на другом) , однако помимо текущей кодовой базы они отличаются и интерфейсом и лицензионными соглашениями, что особенно существенно для корпоративных версий.
Если чуть коснуться истории, то увидим, что автор и главный разработчик у этих проектов один — Фрэнк Карлитшек. Сначала он создал Owncloud. Но затем обнаружились некоторые ограничения нетехнического характера, и он создал форк своего же проекта, возглавив его. Так появился Nextcloud.
Если говорить о популярности, то Nextcloud даже и близко не стоит рядом с такими титанами, как Google Drive и Dropbox. У Nextcloud — своя ниша, своя ценность, своя аудитория. Но зато везде, где обсуждаются облачные хранилища, то и дело появляются люди, которые хвастаются тем, что установили Nextcloud или Owncloud и с успехом им пользуются.
Nextcloud — относительно молодой проект — всего 6 лет, но он уже показал большие возможности. Самостоятельный поставщик облачных решений — это то, чего не хватает многим, а в свете недавних событий не хватает критически.
Несмотря на юный возраст, Nextcloud довольно стабилен (хотя случаются огрехи) , используется во многих проектах и про него слышно только хорошее. Сообщество очень живое, постоянно совершенствует существующие приложения и придумывает новые.
Если заглянуть в магазин приложений, то можно увидеть, что их количество скоро доберется до трехсот. Это и просмотрщики всякие, плееры, галереи, менеджеры задач и заметок, офисные программы, чаты и видеозвонки — чего там только нет!
Многие приложения являются как бы фронтендом к другим сервисам. К примеру, редактор документов Collabora тоже является клиентской частью к серверу, на котором крутится LibreOffice.
То же самое можно сказать и про почту. Имеющееся приложение Mail — это тоже фронтенд. Если нужен полноценный самостоятельный почтовый сервер, то его надо поднимать самостоятельно (можно воспользоваться инструкциями из нашей недавней статьи).
Предоставление доступа к файлам по внешней ссылке — это хоть и не уникальная возможность, но все-таки исключительно удобная и при этом не сильно распространенная. Посмотрим, станет ли Nextcloud крупным игроком в сфере облачного файлообмена?
Есть у приложений и обратная сторона. Не все они одинаково хороши по качеству. Мало того, что некоторые могут работать не идеально, так ещё и их установка может оказаться весьма непростой. Какие-то требуют определенной версии PHP, каким-то нужно ещё что-то вручную устанавливать на сервер. Но это уже такие дебри, в которые большинство пользователей и не заберется так просто.
И серверная и клиентская части бесплатны. Клиентская часть разработана под все основные платформы: MS Windows, MacOS X, Linux. Для Android и iOS разработаны приложения, которые позволяют также и мобильным пользователям безопасно хранить свои данные в Nextcloud. Серверная часть крутится на Linux.
Однако, следует сделать оговорку про бесплатность. Сервис нельзя назвать бесплатным абсолютно.
Во-первых, поддержка не может быть бесплатной: специалистам, круглосуточно готовым прийти на помощь, нужно что-то платить.
Во-вторых, развертывание серверов на ресурсах создателей Nextcloud (или их партнеров) тоже потребует денег, что не вызывает вопросов.
В-третьих, сборка безопасного и работоспособного облачного сервиса — непростая задача и подвластна не каждому. Надо не забывать, что свой сервис — это не только забота о технической стороне, это прежде всего ответственность перед пользователями.
Полностью собранная и настроенная в соответствии с конкретными требованиями система со множеством приложений потребует работы высококвалифицированного специалиста. Неужели это будет дешевле готового решения?
Ну, и наконец, в-четвертых. Приложения, которые интегрируются с Nextcloud, бесплатны не все.
Какова будет стоимость решения, которое мы воплотим в данной статье? Ноль!
Во-первых, нам не понадобится их поддержка, потому что мы сами во всём разберёмся.
Во-вторых, мы будем использовать свой физический сервер. Да, можно арендовать виртуальный и разворачивать всё на нем. Аренда потребует некоторых денег, но это плата датацентру, а не Nextcloud.
В-третьих, сложная работа по сборке сервера — не такая уж и сложная, если есть хорошее стартовое руководство. А эта статья как раз таким руководством и является. Что-то специфическое может придется выискивать самому, но после создания основы (как подробно описано ниже) в этом не будет ничего неподъемного и можно будет разобраться своими силами.
Наконец, в-четвертых, совершенно нет никакой необходимости пользоваться платными приложениями — мы и не будем.
Есть несколько причин, объясняющих быстрорастущую популярность проекта — причин, которые выделяют его на современном рынке.
Прежде всего, это невероятное взаимодействие с другими программами и инструментами. Nextcloud может быть интегрирован с более чем сотней сторонних приложений. Звучит как фантастика, но и это ещё не всё.
Очень важная черта сервиса — внимание, которое уделяется безопасности.
Nextcloud — это FOSS, Free Open Source Software — свободное программное обеспечение с открытым исходным кодом. Иногда в переводах путают термины «свободное» и «бесплатное» — а это не одно и то же.
Не будем сильно вдаваться в тонкости, но «свободное» означает произвольное использование для своих нужд, возможность менять функциональность, распространять усовершенствованные копии. «Бесплатное» значит только то, что не надо платить.
Чтобы понять разницу между «свободным» и «бесплатным» ПО, надо посмотреть на пример из наших дней: сколько бесплатных программ и сервисов перестали работать по политическим причинам? — да, целая тьма! Они были бесплатными? — да! Они были свободными? — нет.
Продолжаем перечислять ключевые концепции и технологии, которые поддерживает Nextcloud.
Немаловажно, что возможности по размещению данных совместимы с требованиями HIPAA и GDPR — это означает, что был серьезный аудит сервиса, особенностей его работы и исходного кода.
Поддерживается множество современных технологий: WebDAV, TOTP, WebAuthn, Oauth2, OpenID Connect, 2FА… Есть централизованное управление персональной информацией в сочетании с интеграцией со сторонними приложениями. Предлагается собственный сервис Nextcloud Hub для пользователей, которые хотят организовать совместную работу внутри компании.
Наконец, Nextcloud поставляется как в обычной, так и в корпоративной версии, что тоже является плюсом для некоторых пользователей.
Рассмотрим ключевые особенности и функционал чуть подробнее. Ниже представлено восемь категорий, в которых Nextcloud показывает себя наилучшим образом. Разумеется, фактические преимущества не ограничиваются рамками простого сравнения отдельных возможностей — благодаря своей автономности Nextcloud можно вообще считать сущностью из параллельной вселенной, особенно на фоне маркетинговых предложений, привязывающих клиентов к своим решениям.
Безопасность
Трудно сравнивать лидирующие решения по безопасности — они все «лучшие из лучших». Как можно выделить кого-то хорошего на фоне других прекрасных? Кто безопаснее: Dropbox, Google Drive? ..
Поговорим конкретнее. Исходный код, постоянно анализируемый специалистами, показывает высокий уровень надежности и продуманности. Результаты последних таких исследований можно найти за 2022 год. Кроме многочисленных энтузиастов, экспертизу проводили специалисты из NCC Group и Kyos (ссылки ведут на страницы, где можно заказать копии отчетов) .
Все пользовательские данные хранятся в зашифрованном виде, что исключает их раскрытие даже в случае физического похищения жестких дисков на стороне сервера. Само собой шифруются и передаваемые данные (E2EE, «End To End Encryption») .
Простота использования
Owncloud славился своим простым пользовательским интерфейсом. Nextcloud унаследовал все лучшие черты своего предшественника. Разработчики Nextcloud не стояли на месте и сделали интерфейс ещё более простым и понятным.
Большое сообщество
Если сравнивать по количеству пользователей, то Nextcloud никак нельзя отнести к лидерам. Но если рассматривать сервисы в контексте уникальных возможностей, которые они предоставляют, то всё начинает выглядеть несколько иначе.
Nextcloud является одной из наиболее широко используемых автономных платформ синхронизации файлов и совместной работы с контентом. Это, в сочетании с открытым исходным кодом, дает прекрасный набор дополнительных возможностей. Более 200 приложений, разработанных сообществом, обеспечивают надежность, безопасность, функции повышения производительности в команде, интеграцию с инфраструктурой.
Nextcloud дает шанс избавиться от нагромождения различных SaaS-платформ, а также связанных с этим проблем безопасности, стоимости, производительности и соответствия требованиям.
Доступность
Nextcloud не обделяет вниманием людей с ограниченными возможностями. Чтобы облегчить им пользование программой, поддерживаются: специальная клавиатура; поддержка программы чтения с экрана; специальные стандарты отображения, такие как стандарт контрастности WCAG 2.0 AA. В дополнение имеются специальные темы, в том числе высококонтрастная WCAG 2.0 AAA, а также шрифт, подходящий людям с дислексией. Само собой поддерживается темная тема.
Работа в режиме реального времени
Ещё одно важное преимущество Nextcloud — мгновенный обмен данными: поддержка обновлений, рассылка уведомлений, комментариев и другой подобной информации одновременно на все устройства пользователей, включая мобильные телефоны.
Это чрезвычайно удобно для совместного редактирования и при работе над крупными проектами. Можно легко перейти от комментирования к аудио- или видеозвонку.
Также есть множество других инструментов повышения производительности работы с электронной почтой, назначениями и так далее.
Такой подход призван экономить время и усилия пользователям и является ещё одной существенной причиной популярности Nextcloud.
Расширенное управление учетными записями
Nextcloud поддерживает централизованное управление учетными записями и двухфакторную авторизацию. Системные администраторы могут задавать имена, дисковые квоты, членство в группах, адреса электронной почты и так далее.
Есть возможность интегрировать различные внешние пользовательские хранилища, такие как Amazon S3, OpenStack Object Storage и всё, что поддерживает протоколы WebDAV, FTP/FTPS, SFTP, SMB/CIFS. Для каждого пользователя можно задавать индивидуальные настройки в соответствии с конкретными требованиями. Разумеется, поддерживаются расширенные возможности работы с учетными записями.
Управлять настройками (дисковыми квотами, адресами и тому подобным) может каждый, кому делегируются соответствующие права администратора. В сочетании с другими вышеупомянутыми утилитами получается идеальный облачный файловый хостинг с четкой и прозрачной иерархией полномочий. Что ещё нужно для предприятия?
ИТ-мониторинг
Системным администраторам понравится графический интерфейс для отслеживания выполнения задач и состояния системы. Поскольку имеется API, то можно подключать другие требуемые приложения.
Вкладка системного журнала содержит всю необходимую отладочную информацию о работе приложений (к сожалению, не все приложения пользуются этой возможностью) . Действия пользователей также отслеживаются должным образом.
Самостоятельный хостинг
Nextcloud позволяет создавать и размещать сайты.
Можно установить на сервер любую простую CMS-систему по душе (например, PicoCMS) — тогда получится создавать страницы очень легко: все они поддерживают Markdown и всё необходимое для быстрого создания и редактирования контента.
Видимостью страниц можно гибко управлять: они могут быть не только общедоступными, но видимыми только для определенных групп в Nextcloud. Можно разделять доступ к отдельным файлам, составляющим сайт и, таким образом, организовывать совместную работу над контентом.
Итак, мы рассмотрели, что из себя представляет Nextcloud, оценили его место в современной индустрии облачных сервисов, рассмотрели восемь наиболее заметных особенностей и причины его растущей популярности.
Далее мы рассмотрим процесс установки на примере Ubuntu и Debian — двух из наиболее популярных дистрибутивов Linux для серверного использования. Для других дистрибутивов Linux установка будет отличаться лишь пакетным менеджером и репозиторием — ничего сложного.
Если кто не знает какой дистрибутив выбрать — лучше взять Debian. Для серверов выбирают ветку «stable» — ПО не новое отнюдь, но зато надежное (проверенное временем) . Разумеется, все обновления безопасности поступают регулярно до тех пор, пока данная версия дистрибутива поддерживается официально.
Если кто не знает, Ubuntu — это дистрибутив, основанный на кодовой базе Debian, только не на ветке «stable», а на ветке «unstable» (идея в том, чтобы предоставлять максимально свежее ПО) . Ubuntu Server отличается от обычной настольной Ubuntu в основном отсутствием графической оболочки, поддержкой виртуализации и некоторыми другими специфическими для сервера вещами.
Системные требования
Операционная система:
- Debian stable (наша рекомендация)
- Ubuntu Server, текущая LTS-версия (Long Time Support) — на момент выхода данной статьи это будет «22.04»
- Любой другой подходящий дистрибутив Linux
База данных:
- MySQL 8.0+ или MariaDB 10.3/10.4/10.5/10.6 (рекомендуется)
- Oracle Database 11g
- PostgreSQL 10/11/12/13/14/15
- SQLite (только для экспериментов или для слабых машин)
Веб-сервер:
- Apache 2.4, с mod_php или php-fpm (рекомендуется)
- nginx с php-fpm
PHP:
- 8.0
- 8.1 (рекомендуется)
- 8.2
Оперативную память (на один процесс) , объем которой находится в непосредственной зависимости от серверной активности (количества пользователей, приложений и так далее) , надо выделять исходя из следующего:
- 128 МБ (самый минимум)
- от 512 Мб (рекомендуется)
Установка операционной системы
Вопрос установки операционной системы мы затрагивать не будем, так как он сильно зависит от множества факторов.
Если для Nextcloud предполагается использовать отдельный компьютер, то можно просто скачать образ дистрибутива, записать его на флэшку или DVD-диск и, перезагрузив компьютер, проследовать по предлагаемым шагам установки. Можно использовать сетевую установку — скачиваемый образ будет совсем маленький.
Если Nextcloud будет устанавливаться на виртуальный сервер, то все необходимые инструкции предоставит провайдер.
Также не будем рассматривать такие элементарные вопросы, как запуск терминала и подключение к машине со свежеустановленной системой. В интернете полно статей и инструкций — можно легко разобраться. Будем предполагать, что все эти вопросы решены, терминал готов — осталось только вводить команды. Итак.
После установки системы и перед установкой дальнейших пакетов обязательно надо обновить и кэш пакетного менеджера и саму систему:
sudo apt update && apt full-upgrade
Установка Apache
Поскольку управление Nextcloud осуществляется через веб-интерфейс, то понадобится веб-сервер, который отвечает за отдачу страниц и обработку реакций пользователя.
В принципе, веб-сервер не обязательно должен быть именно Apache, но поскольку именно он рекомендуется авторами облачной платформы, возьмем для примера именно его:
sudo apt install apache2 -y
В дальнейшем состояние веб-сервера всегда можно проверить так:
sudo systemctl status apache2
Установка PHP
Серверная часть к веб-интерфейсу Nextcloud написана на PHP, соответственно без него обойтись не удастся. Для установки PHP можно выполнить следующую команду:
sudo apt install php libapache2-mod-php php-imagick php-common php-mysql php-gd php-json php-curl php-zip php-xml php-mbstring php-bz2 php-intl php-bcmath php-gmp php-dom unzip -y
Удостовериться в правильной версии можно так:
php -v
После установки PHP необходимо перезагрузить сервер:
sudo systemctl reload apache2
Установка базы данных
Следующий шаг — установка сервера базы данных. Выбор довольно большой, есть в том числе и всеми любимая PostgreSQL. Мы будем использовать рекомендуемый вариант попроще — MariaDB:
sudo apt install mariadb-server -y
После завершения установки надо задать пароль:
sudo mysql_secure_installation
Надеюсь, не надо повторять, что пароль должен быть сильным, не записываться в файлах открытым текстом и не теряться.
Настройка сервера базы данных
Прежде всего надо войти в базу данных. Изначально это возможно только для суперпользователя (root) , так что использование sudo по-прежнему обязательно:
sudo mysql -u root -p
После этого мы оказываемся в интерактивном сеансе базы данных: все дальнейшие команды вводятся на языке SQL. По традиции для команд SQL используются заглавные буквы. Лучше всегда придерживаться данного стиля, даже если интерпретатор на самом деле не чувствителен к регистру.
Далее нужно придумать название для базы данных. Пусть это будет «CloudDB» (можно ввести произвольное слово) :
CREATE DATABASE CloudDB;
Создаем администратора базы данных, даем ему все привилегии, необходимые для работы:
CREATE USER ‘cloud-admin’@’localhost’ IDENTIFIED BY ‘пароль’;
В предыдущей команде нужно:
- вместо «cloud-admin» использовать по желанию другое имя;
- придумать «пароль» — это понятно.
В следующей команде мы наделяем администратора базы данных необходимыми полномочиями:
GRANT ALL PRIVILEGES ON CloudDB.* TO ‘cloud-admin’@’localhost’;
Как и в предыдущем случае следует:
- «CloudDB» заменить названием нашей базы данных;
- вместо «cloud-admin» использовать по желанию другое имя.
Чтобы изменения вступили в силу:
FLUSH PRIVILEGES;
Завершаем работы в интерактивном сеансе SQL и возвращаемся в shell:
Exit;
Хорошо бы убедиться, что новосозданный администратор может войти в базу данных:
mysql -u cloud-admin -p
Установка Nextcloud
Все подготовительные мероприятия завершены. Установлены веб-сервер Apache, база данных MariaDB. Завершающий шаг — скачивание и установка Nextcloud.
Nextcloud распространяется в виде ZIP-архива. Поэтому перейдем на официальный сайт и найдем ссылку для скачивания самой последней версии (версия 26 на данный момент) . Далее воспользуемся следующей командой:
wget https://download.Nextcloud.com/server/releases/Nextcloud-26.0.0.zip
Разумеется, вместо «Nextcloud… 26.0.0.zip» следует подставить действительную ссылку. Файл скачается в текущую директорию. Если нужно задать другую или хочется поменять имя файла, то опция «-O путь_к_файлу» позволяет это сделать.
Далее полученный архив требуется распаковать, создать необходимые для работы каталоги и задать для них права доступа (будет использоваться специальный системный пользователь «www-data» с одноименной группой) :
sudo mkdir -p /var/www/html/Nextcloud/data
sudo unzip Nextcloud*.zip -d /var/www/html/
sudo chown -R www-data:www-data /var/www/html/Nextcloud/
Опытные сисадмины сразу заметят здесь небольшой подвох.
Все инструменты, устанавливаемые на предыдущих этапах, приходили в виде deb-пакетов и устанавливались с помощью системной утилиты apt. А это значит, что они все обновляются элементарным образом:
sudo apt update && apt full-upgrade
После данной команды система, включая все компоненты, полностью обновлена.
Но это не будет касаться файлов, пришедших в ZIP-архиве. Обновлять Nextcloud придется иным способом:
sudo -u www-data php /var/www/html/nexctloud/occ upgrade
Это не страшно, просто надо иметь ввиду.
Первый запуск
Ещё рано открывать шампанское, но уже можно доставать бокалы.
В строке браузера надо набрать:
http://vps_ip/Nextcloud/index.php
Вместо «vps_ip» требуется подставить IP-адрес нашего виртуального сервера. Если работа ведется на том же компьютере, то вместо «vps_ip» можно ввести «localhost». Должна открыться приветственная страница.
При первом запуске будет предложено создать административный пароль. Далее мы попадаем на главный экран. «Лучше один раз увидеть, чем сто раз услышать» — нет смысла описывать текстом главную страницу. В верхней правой части, в меню пользователя, есть пункт «Параметры сервера», ведущий к настройкам.
Дальнейшие шаги
Мы рассмотрели первые шаги, которые будут общими в большинстве случаев. Дальше дороги расходятся: у каждого будут свои предпочтения в настройках и способах использования новосозданного сервиса.
Чтобы не уходить далеко в сторону, коснемся лишь ещё пары технических моментов, на которые следует обратить внимание в первую очередь.
Опытные сетевики наверняка заметили: то, что мы набрали в строке браузера — не есть хорошо. Ладно, если это локальная сеть или тот же компьютер. Но в общем случае это никуда не годится. А вы заметили что не так-то?
А не так то, что для доступа к веб-интерфейсу используется небезопасный протокол http. Поэтому дальнейшие действия предполагают установку SSL-сертификата и настройку Apache на принудительное использование безопасного протокола https.
Надо предупредить, что это нетривиальная задача.
Прежде всего сертификат надо получить. В свете последних событий это стало не так просто, как раньше. Всю информацию по получению сертификата и рассмотрение сопутствующих вопросов можно найти в нашей статье про свой бесплатный почтовый сервер (раздел «SSL-сертификат») .
Далее потребуются определенные действия для подключения полученного сертификата. Эта тема требует написания отдельной статьи. Здесь мы лишь ограничимся ссылками на следующие информационные ресурсы:
Работа над безопасностью на этом не исчерпывается.
Разместить свой сервер в интернете — неминуемо подвергнуть его всевозможным атакам, одной из которых является взлом с помощью прямого перебора паролей (brute force) .
Fail2ban — это сервис как раз и призванный помочь в этом горе. Он автоматически заставляет iptables (стандартный интерфейс к межсетевому экрану Linux) сбрасывать соединения при превышении некоторого настраиваемого порога количества последовательных неудачных попыток авторизации.
Установить fail2ban несложно: большинство дистрибутивов (конечно, включая Debian и Ubuntu) уже имеют его в своих репозиториях. На нашем примере:
sudo apt install fail2ban
Всю необходимую информацию по настройке fail2ban можно найти на странице официальной документации.
Nextcloud, безусловно — не самый известный и не самый производительный из существующих облачных сервисов по размещению файлов. Но несмотря на то, что он ориентирован не на самую широкую аудиторию, ему удалось собрать для себя относительно большое сообщество и пользовательскую базу.
Nextcloud — всё еще молодой проект, но у него есть все шансы превратиться в крупную облачную платформу в ближайшие годы. Можно также с уверенностью сказать, что для пользователей Linux Nextcloud — лучшее решение по созданию своего облачного сервиса.
Есть полная свобода в создании и развертывании инфраструктуры в зависимости от целей. Можно поставить свой сервер у себя на предприятии — и не беспокоиться о сохранности данных. Можно наоборот — арендовать выделенный сервер «где-то там» и не бояться, что до данных доберутся «где-нибудь здесь».
Вообще использование Linux на стороне сервера открывает потрясающие возможности. Все новейшие изобретения из мира высоких IT-технологий интегрируются легко и непринужденно. Открытость, безопасность, надежность, защищенность (в том числе от политических непредсказуемых истерик) — те качества, которые и сделали его столь популярным среди профессионалов.
Те, кто заинтересовался Nextcloud, вполне возможно заинтересуются и поднятием своего почтового сервера, о котором мы писали чуть ранее. Также рекомендуем к прочтению обзорную статью про SaaS, в конце которой приведен небольшой каталог практических ссылок по данной теме.