Коротко и ясно: какой тип установки Nextcloud выбрать - LXC, VM или Docker?
Nextcloud является популярным решением для создания собственного облачного хранилища данных. В статье мы рассмотрим различные способы установки Nextcloud, их плюсы и минусы. Для начала, есть несколько способов установки Nextcloud: непосредственно на сервер, в виртуальную машину, в Docker вручную или в Docker через автоматический стек AIO. Также можно установить Nextcloud в LXC контейнер.
Docker
Установка вручную в Docker - наиболее распространенный вариант, требующий от администратора базовых знаний работы с контейнерами. Позволяет работать с персистентными файлами конфигурации, пробрасывая их в контейнер. Основным преимуществом установки Nextcloud в Docker контейнер является простота установки и управления (ссылка на официальный репозиторий, там есть и файл Docker Compose: https://github.com/nextcloud/docker). Вам не нужно устанавливать большое количество пакетов вручную, как в случае с LXC контейнерами.
Однако, этот способ имеет свои недостатки: сложность настройки обратного прокси, сложность ограничения ресурсов на контейнер, снятия логов и не удобный процесс обновления, который может быть трудным для неподготовленных пользователей. Кроме того, установка и замена базовых пакетов, таких как PHP или PHP-FPM, отдельно от всего контейнера является сложной задачей даже для опытного администратора. Однако, этот вариант может быть менее производителен, чем LXC, из-за дополнительных слоев виртуализации.
Установка в Docker AIO контейнер – рекомендуемый производителем метод
AIO стек носит такое название, поскольку в процессе установки в Docker создаётся один (главный) контейнер, который имеет доступ к самому Docker-демону через сокет и самостоятельно создаёт и устанавливает другие контейнеры для работы программного стека. Это самый простой способ по установке: все параметры задаются через YAML файл Docker-compose (ссылка для скачивания: https://github.com/nextcloud/all-in-one/blob/main/compose.yaml), и от администратора требуется минимум усилий по интеграции.
В то же время, с точки зрения безопасности и настройки – это самый неудачный вариант, поскольку во-первых, вы даёте доступ к самому Docker-у стороннему приложению, а во-вторых, то что не задаётся в ENV-параметрах, вы уже исправить не сможете. Ну или по крайней мере, ваши труды в этом плане обнулятся после очередного обновления платформы.
Установка на голое железо в операционную систему Ubuntu
В случае с использованием слабых компьютеров, таких как Raspberry Pi, установка Nextcloud на основе операционной системы может быть наиболее подходящим вариантом, так как это позволяет использовать все свободное место на дисках сервера для хранения файлов и не требует поддержки виртуализации.
Данный способ установки Nextcloud не дает явных преимуществ, за исключением доступа ко всему свободному места на дисках сервера для хранения файлов. Для установки Nextcloud на операционную систему с официального сайта можно скачать скрипт и запустить его в командной строке.
Установка в LXC контейнер
Установка в LXC контейнер - самый неоправданно сложный вариант, так как образы контейнеров поставляются в урезанном виде и вам придется устанавливать многие пакеты вручную, в том числе поддержку языков. Единственный более-менее рабочий LXC образ я смог найти на сайте Turnkey Linux (https://www.turnkeylinux.org/nextcloud), но и с ним при установке возникли сложности. Так что если вы не фанат LXC, то лучше проходить мимо этого решения.
Виртуальная машина
В виртуальной машине вы можете очень точно настраивать все пакеты, которые использует Nextcloud, такие как PHP, Redis и PHP-FPM, выбирая их версии. Это позволяет достичь наилучшей производительности и оптимизации ресурсов. Вы можете скачать как готовый образ виртуалки для VMware, Hyper-V и Proxmox по ссылке https://www.hanssonit.se/nextcloud-vm/, так и воспользоваться установочным .sh скриптом для Ubuntu 22.04, доступным здесь: https://github.com/nextcloud/vm.
- Управление конфигурацией: В одном окне вы можете управлять всеми конфигурационными файлами, что упрощает процесс настройки и обновления Nextcloud.
- Бэкап и восстановление: Виртуальные машины легче поддаются бэкапу и восстановлению, что позволяет быстро отремонтировать систему в случае сбоя или неудачного обновления.
- Снапшоты: С помощью снапшотов можно легко откатывать конфигурацию, если обновление привело к проблемам.
- Защита данных: Диск виртуальной машины можно легко зашифровать, что обеспечивает дополнительную защиту ваших данных.
Недостатком использования виртуальной машины является сложность работы с большими объемами данных: вам нужно либо пробрасывать в ВМ диск объемом с ваше файлохранилище, что затруднительно для десятков терабайт, либо подключать том непосредственно с гипервизора через SMB/NFS хранилища, что не всегда возможно. Использование внешних хранилищ средствами самого Nextcloud хоть и возможно, но имеет ограниченную функциональность. Например - вы не можете поделиться ссылкой через интернет на файл, подключенный модулем External Storage в самом Nextcloud. Однако, с учетом всех других преимуществ, это может быть адекватно компенсировано.
Напоследок
Поскольку стек Nextcloud рассчитан на работу через интернет, в обязательном порядке настройте HTTPs подключение с автоматическим обновлением сертификатов, удалите или переименуйте учётную запись ncadmin/admin и настройте другие типы блокировок, например по GeoIP, диапазону IP адресов и т.д.
Рон Амадео
27/09.2023