Nextcloud — это открытое программное обеспечение для создания и использования собственного облачного хранилища. Оно позволяет пользователям хранить данные, синхронизировать их между различными устройствами и делиться файлами в рамках удобного и контролируемого интерфейса. Это решение особенно ценно для тех, кто стремится к повышению уровня конфиденциальности и безопасности своих данных по сравнению с общедоступными облачными сервисами. Nextcloud предлагает широкий спектр функционала, включая управление файлами, календарями, контактами, а также возможность интеграции с другими сервисами и приложениями.
В контексте развертывания, Docker предоставляет удобные и эффективные средства для установки и управления Nextcloud. Он использует технологию контейнеризации для изоляции приложений, что упрощает процесс развертывания и конфигурации, а также обеспечивает более легкую масштабируемость и переносимость приложений. Использование Docker в сочетании с Docker Compose позволяет автоматизировать и стандартизировать развертывание приложений, что делает его доступным даже для пользователей без глубоких технических знаний в области серверного администрирования.
В этой статье будет рассмотрена процедура установки Nextcloud с применением Docker Compose. Будет также затронута тема конфигурирования Nginx как обратного прокси и детально рассмотрен процесс получения SSL-сертификата через Certbot, что необходимо для создания защищённого соединения.
VDS и VPS
биллингом по всему миру: Россия, Азия и Европа.
Установка Docker и Docker Compose
Docker предоставляет обширную среду для разработчиков, предназначенную для эффективного развёртывания и запуска приложений в контейнерах. Docker Compose, являясь инструментом в этом процессе, облегчает оркестровку многоконтейнерных приложений с помощью конфигурационных файлов в YAML-формате, что упрощает компоновку и администрирование комплексных приложений.
Скачайте скрипт установки командой:
Этот скрипт предназначен для автоматизации процесса установки Docker на различные дистрибутивы Linux.
Запустите скрипт:
Это обеспечит установку Docker и Docker Compose. Опция --dry-run позволяет просмотреть действия скрипта без их выполнения.
После выполнения скрипта убедитесь, что Docker и Docker Compose корректно установлены. Для этого воспользуйтесь командами:
Эти команды должны вывести версии установленных утилит соответственно, подтверждая успешную установку.
Подготовка к установке Nextcloud
Создание рабочего каталога
Для установки сторонних приложений в системах Linux часто используется директория /opt. Переходите в эту директорию с помощью команды:
Создайте папку twnextcloud в директории /opt. Эта папка будет служить рабочим каталогом для вашего экземпляра Nextcloud:
Настройка файла docker-compose.yml
После создания директории перейдите в неё:
Настройки Docker Compose будут определены в файле docker-compose.yml. Чтобы его отредактировать, можно воспользоваться текстовым редактором, например nano или vim, открыв файл следующим образом:
В нем следует указать:
Значения параметров:
-
version: '2': Указывает версию Docker Compose, используемую в данной конфигурации. Версия 2 предназначена для более простых и стабильных конфигураций. -
volumes: Определяет два именованных тома:twnextcloudиdb. Эти тома используются для хранения данных за пределами контейнеров, что обеспечивает их сохранность даже после удаления или перезапуска контейнеров. -
services: Определяет два сервиса —dbиapp. db:-
image: mariadb:10.6: Использует образ MariaDB версии 10.6. -
restart: unless-stopped: Автоматический перезапуск сервиса, если он не был остановлен вручную. -
command: Задает специальные параметры запуска MariaDB для оптимизации производительности и безопасности. -
volumes: Связывает именованный томdbс директорией/var/lib/mysqlв контейнере для хранения данных базы данных. -
environment: Устанавливает переменные окружения для конфигурации базы данных, включая пароли и названия базы данных и пользователя.
-
app:-
image: nextcloud: Использует образ Nextcloud. -
restart: unless-stopped: Аналогично сервисуdb, обеспечивает автоматический перезапуск. -
ports: Пробрасывает порт 8081 хост-системы на порт 80 в контейнере, что позволяет получить доступ к приложению через порт 8081. -
links: Связывает контейнерappс контейнеромdb, обеспечивая взаимодействие между приложением и базой данных. -
volumes: Связывает именованный томtwnextcloudс директорией/var/www/htmlв контейнере для хранения данных приложения. -
environment: Устанавливает переменные окружения, связанные с базой данных, аналогичные тем, что в сервисеdb, и указывает хост базы данных.
-
С помощью этой конфигурации вы создали основу для вашего экземпляра приложения, включая базу данных и само приложение. Теперь можем перейти к запуску и первоначальной настройке.
Запуск и настройка Nextcloud
После описания конфигурации в docker-compose.yml, пора запустить проект.
В директории twnextcloud, где находится ваш docker-compose.yml, выполните эти команды для скачивания образов и запуска контейнеров:
Команда docker compose pull сначала загрузит необходимые образы для Nextcloud и MariaDB. После этого docker compose up запустит контейнеры на основе вашей конфигурации.
Во время первого запуска начнется процесс предварительной настройки. Этот процесс может занять некоторое время.
Как только вы увидите сообщения:
— значит, первичная настройка завершена.
После завершения предварительной настройки, вы можете обратиться к приложению из браузера. Введите http://ip-сервера:8081 в адресную строку вашего браузера.
На открывшейся странице вам будет предложено создать учетную запись администратора. Здесь вы вводите желаемое имя пользователя и пароль.
В процессе первичной конфигурации вы также можете выбрать дополнительные приложения для установки.
Остановка и перезапуск контейнеров в фоновом режиме
После первоначальной настройки и проверки его работы через веб-интерфейс, нужно перезапустить контейнеры в фоновом режиме. Это позволит выполнять дальнейшие настройки, такие как установка и конфигурирование обратного прокси.
Если контейнеры все еще работают в интерактивном режиме (после использования docker compose up без -d), остановите их, нажав Ctrl+C в терминале.
Для перезапуска контейнеров в фоновом режиме (так, чтобы они продолжали работать в фоне даже после закрытия терминала), используйте команду:
Флаг -d означает «detached mode», что позволяет контейнерам работать независимо от вашего текущего сеанса терминала.
Контейнеры теперь активны и работают в фоне. Если у вас имеется домен для использования с приложением, предстоит настроить сервер так, чтобы он служил обратным прокси.
Настройка Nginx как обратного прокси
Установка
В качестве обратного прокси часто выбирают Nginx за его производительность и гибкость. Установить его можно, выполнив команду:
Конфигурирование Nginx
Создайте файл конфигурации Nginx для вашего домена (например, nextcloud-twtest.com). Используйте текстовый редактор для создания файла в директории /etc/nginx/sites-available/:
Добавьте в файл следующие директивы:
Эта конфигурация настраивает веб-сервер для проксирования запросов к Nextcloud, работающему на порту 8081, и устанавливает различные заголовки для поддержки проксирования и безопасности.
Вот подробное объяснение основных параметров:
- Основная конфигурация
Здесь мы настраиваем сервер для прослушивания порта 80 (стандартный HTTP) и обрабатываем запросы, направленные на nextcloud-twtest.com. Все запросы перенаправляются на локальный сервер на порту 8081 с помощью proxy_pass. Это наш контейнер Docker, в котором запущен Nextcloud.
- Настройки Proxy
Эти строки гарантируют, что информация о первоначальном запросе (такая как IP-адрес клиента и протокол запроса) передается в приложение, что важно для корректной работы и безопасности.
- HSTS (HTTP Strict Transport Security)
Этот заголовок усиливает безопасность, указывая браузерам использовать только HTTPS для доступа к вашему сайту в течение следующих 180 дней.
- Настройки для Well-Known URIs
Этот блок обрабатывает специальные запросы к /.well-known URI, которые часто используются для обнаружения сервисов (например, CalDAV и CardDAV) и проверки владения доменом (например, при получении SSL-сертификатов от Let's Encrypt).
-
/.well-known/carddavи/.well-known/caldavперенаправляются на соответствующие точки входа в Nextcloud. -
Запросы к
/.well-known/acme-challengeи/.well-known/pki-validationобрабатываются для поддержки получения и проверки SSL-сертификатов. -
Все остальные запросы к
/.well-knownперенаправляются на front-end-контроллер.
Сделайте символическую ссылку на созданный файл конфигурации из директории /etc/nginx/sites-enabled/:
Теперь перезагрузим nginx для применения новой конфигурации:
Теперь веб-сервер настроен как обратный прокси для приложения, и вы можете обращаться к Nextcloud через ваш домен (если обратиться по домену сейчас, вы увидите ошибку «Access through untrusted domain», ее исправлением мы займемся позже) .
Настройка SSL-сертификата с использованием Certbot
Установка Certbot
Certbot — это инструмент от Electronic Frontier Foundation (EFF), предназначенный для управления сертификатами Let's Encrypt. Он автоматизирует процесс получения, установки и обновления SSL-сертификатов, что способствует повышению безопасности вашего сайта, обеспечивая защиту данных, передаваемых между сервером и клиентами.
Для установки Certbot и соответствующего плагина для Nginx, используйте команду:
Получение и Установка SSL-сертификата
Для получения SSL-сертификата для вашего домена и настройки веб-сервера для использования полученного сертификата, выполните команду:
В этой команде:
-
--non-interactive: Запускает Certbot в режиме без взаимодействия с пользователем. -
-m admin@nextcloud-twtest.com: Указывает адрес электронной почты для уведомлений о сертификате. -
--agree-tos: Соглашается с условиями использования Let's Encrypt. -
--no-eff-email: Отказывается от получения электронных писем от EFF. -
--nginx: Использовать плагин Nginx для автоматической настройки SSL. -
-d nextcloud-twtest.com: Указываем доменное имя, для которого будет выпущен сертификат.
Certbot автоматически скорректирует конфиг Nginx для использования SSL-сертификата, включая перенаправление с HTTP на HTTPS.
После завершения процесса перезапустите Nginx, чтобы применить изменения:
Теперь ваш экземпляр Nextcloud защищен SSL-сертификатом, и весь трафик между сервером и клиентами будет зашифрован. Это обеспечивает дополнительный уровень безопасности и является важным аспектом для любого веб-приложения, доступного через интернет.
Исправление ошибки «Access through untrusted domain»
При попытке доступа к Nextcloud через наш доменный адрес вы можете столкнуться с ошибкой «Access through untrusted domain». Это происходит, поскольку первоначальная настройка была выполнена при обращении по IP-адресу сервера.
Шаги для исправления ошибки
Так как наше приложение работает в контейнере, для редактирования конфигурационного файла config.php мы можем использовать один из двух методов: через docker exec или редактирование Docker Volume. Мы выберем второй метод, так как ранее в docker-compose.yml были созданы тома для хранения конфигураций.
Для начала необходимо узнать имя интересующего нас тома. Выполните команду:
Эта команда покажет список всех томов. Нас интересует twnextcloud_twnextcloud.
Для получения доступа к тому выполните:
В выводе команды найдите строку Mountpoint, которая покажет путь до тома.
Перейдите в него, используя:
Перейдите в директорию config и откройте файл config.php для редактирования:
В файле найдите и измените следующие строки:
-
Измените
overwrite.cli.urlсhttp://ip_сервера:8081наhttps://ваш_домен. -
В секции
trusted_domainsзаменитеip_сервера:8081на ваш домен. -
Добавьте строку
'overwriteprotocol' => 'https', сразу послеoverwrite.cli.url, чтобы обеспечить загрузку всех ресурсов по HTTPS.
После внесения изменений сохраните файл config.php (в nano это делается комбинацией клавиш Ctrl + O), а затем выйдите из редактора (Ctrl + X).
После сохранения изменений в config.php вы можете обратиться к приложению по указанному вами домену и убедиться, что ошибка «Access through untrusted domain» больше не возникает.
Поднимите Nextcloud на серверах Timeweb Cloud
477 ₽/мес
657 ₽/мес
Заключение
Процедура установки Nextcloud при помощи Docker Compose значительно упрощает процесс, минимизируя необходимость ручной настройки и подготовки сервера, делая его доступным даже для пользователей без глубоких знаний в области серверного администрирования.
Мы обсудили этапы инсталляции Docker и Docker Compose, составления конфигурационного файла docker-compose.yml и инициализации работы контейнеров. Кроме того, были изучены методы настройки Nginx как обратного прокси для повышения безопасности и производительности сервиса. В дополнение, мы изложили процедуру получения SSL-сертификата с использованием Certbot, что важно для защиты трафика между сервером и клиентами.
Следуя представленным инструкциям, можно быстро настроить собственный экземпляр Nextcloud, который будет функционировать в контейнеризованной среде, обеспечивая легкость масштабирования и удобство в обслуживании. Это решение подходит как для личного использования, так и для небольших компаний, стремящихся к повышению уровня контроля и безопасности данных.
