Nextcloud на своём сервере: All-in-One, файлы и Talk

Логотип Nextcloud. На своём сервере Docker
Своё облако Nextcloud All-in-One: зачем оно компании, чем полезно на сервере за рубежом и как поставить через Docker.

Реклама. ООО «ТАЙМВЭБ.КЛАУД», ИНН 7810945525.

Timeweb

Nextcloud — своё облако на сервере, который выбираете вы: файлы и синхронизация, календарь, контакты, общий доступ для сотрудников и, если включить, чат Talk со звонками. Ниже — зачем это российской компании, чем оно полезно тем, кто хочет держать сервер за рубежом, и установка официальным способом Nextcloud All-in-One. Готовый сценарий без этих команд есть в личном кабинете Timeweb CloudРеклама при аренде сервера.

Если разворачивать стек самим не нужно, это как раз услуга установки Nextcloud AIO: Docker, домен, HTTPS, файлы, календарь и выбранные компоненты. Сервер и домен оплачиваются хостеру отдельно, корневой доступ остаётся у вас.

Что такое Nextcloud

Nextcloud — программа с открытым кодом. После установки у вас свой адрес, свои пользователи и диск на вашем VPS. Клиенты для компьютера и телефона ставятся с nextcloud.com и синхронизируют папки с этим сервером, а не с чужим аккаунтом.

All-in-One, коротко AIO, — официальный способ поставить это в Docker. Один мастер-контейнер поднимает сам Nextcloud, базу, кэш и по желанию офис в браузере, Talk, превью файлов, антивирус и резервные копии. Список компонентов показывает интерфейс, его не нужно собирать из десятков чужих compose-файлов. Описание стека — в репозитории Nextcloud All-in-One.

Это не мессенджер «без сервера». Файлы и история Talk лежат на диске, который вы администрируете. Так Nextcloud ближе к замене общего диска и календаря офиса, чем к SimpleX, где на сервере нет переписки.

Зачем Nextcloud российским компаниям

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

  • Файлы компании на сервере, который арендует сама компания, а не в аккаунте, заведённом на личную почту директора.
  • Календарь встреч и адресная книга на том же адресе. Сотрудник ставит клиент или подключает CalDAV и видит рабочие события, а не смешивает их с семейным календарём в чужом облаке.
  • Talk — чат, аудио и видео на вашем домене. Переписка по проекту не уезжает в личный мессенджер, который человек заберёт с собой при увольнении вместе с историей на телефоне.
  • Документы в браузере, если включить Nextcloud Office (Collabora). Править текст может несколько человек, файл при этом остаётся в вашей папке.
  • Учётные записи заводит администратор: отключить доступ уволенному можно на сервере, не уговаривая его «удалить копию с телефона».

Для компании имеет значение, где стоит диск. Облачный сервер можно взять в российском дата-центре: при создании сервера в Timeweb CloudРеклама выбирается площадка, и файлы оказываются на машине, за которую платит организация. Это не сертификат по 152-ФЗ и не замена договора с юристом. Это понятная схема: данные у вас, хостинг в выбранном ЦОД, пользователи ваши.

Честная граница. Администратор сервера и тот, у кого есть корневой доступ, при желании прочитает файлы на диске. Сквозное шифрование в Nextcloud есть, но оно отключает часть функций: на скриншоте официального мастера прямо написано, что Imaginary для превью несовместим с шифрованием на стороне сервера. Для офиса обычно важнее права папок и нормальный вход, чем режим, в котором нельзя показать превью PDF.

Сервер за рубежом, если важна приватность

Тот же AIO ставится на VPS в другой стране. Смысл для человека, который не хочет отдавать архив большому облаку: файлы, календарь и контакты не сидят в аккаунте, привязанном к номеру телефона и рекламному профилю. Адрес ваш, клиенты стучатся к вашему серверу, провайдер облака не разбирает папки, чтобы предложить хранилище побольше.

Это не анонимность. Хостер видит, что машина ваша, и по запросу к нему или при доступе к диску содержимое читается, если вы сами его не зашифровали. Зарубежный сервер меняет юрисдикцию площадки, а не делает вас невидимым. Пароль AIO и пароль администратора Nextcloud храните отдельно от переписки, в которой обсуждаете сервер.

Если публичный сервер не нужен вообще, смотрите Syncthing: папки синхронизируются между вашими устройствами без белого IP и без учёток на сервере. Если нужен чат, в котором на сервере нет истории сообщений, это SimpleX, не Talk. Если нужен командный мессенджер с комнатами, а диск не нужен, ближе Matrix. Nextcloud берут, когда хотят и файлы, и календарь, и по желанию чат в одной установке.

Два способа поставить: сборка Timeweb Cloud и Nextcloud AIO

В личном кабинете Timeweb Cloud готовый сценарий установки уже есть. Когда арендуете облачный сервер, в маркетплейсе выбирается сборка Nextcloud на Ubuntu. Панель выполняет установку вместе с созданием машины, команды Docker для этого пути вводить не нужно. Домен, если его ещё нет, тоже можно взять в Timeweb CloudРеклама и направить A-запись на адрес сервера.

Эта сборка — не мастер AIO из статьи. Она нужна, чтобы получить Nextcloud без ручной установки контейнеров. AIO нужен, когда вы сами отмечаете Talk, офис, превью, антивирус и резервное копирование. Дальше описан именно AIO: так устроен официальный стек, и так я ставлю облако в услуге.

Что нужно до установки

  • Чистый Ubuntu 24.04 или 22.04 LTS, 64-bit. Официальное руководство Nextcloud для Linux рассчитывает минимум на 4 ГБ памяти и 2 ядра. С Talk и офисом закладывайте больше: мастер сам пишет, сколько памяти просит каждый компонент.
  • Публичный IPv4 и домен. A-запись домена должна указывать на этот адрес до того, как вы отправите домен в мастере. Без домена нормальный HTTPS и клиенты не соберутся.
  • Свободные порты 80 и 443. Для Talk ещё 3478/tcp и 3478/udp. Интерфейс мастера на время настройки слушает 8080.
  • На сервере не должен уже работать другой веб-сервер. AIO в обычном режиме сам выпускает сертификат и сам принимает HTTPS. Поставить его за чужой nginx «как обычно» этой командой нельзя — для этого в интерфейсе есть отдельная документация по обратному прокси.
  • Перед тем как открывать порты наружу, имеет смысл пройти памятку по безопасности VPS: ключи SSH, обновления, отдельный пользователь.

Установка Docker Engine

Пакеты и репозиторий ниже — с официальной страницы Install Docker Engine on Ubuntu. Для сервера с файлами компании берите установку из репозитория apt. Скрипт get.docker.com на той же странице Docker относит к тестам и разработке: он ставит последний стабильный выпуск без вопросов и не предназначен для обновления уже работающей машины.

Команда ставит сам движок и компоненты, которые Docker публикует вместе с ним: docker-ce и docker-ce-cli — служба и команда docker, containerd.io — среда, в которой живут контейнеры, docker-buildx-plugin — сборка образов, docker-compose-plugin — Compose. Самому AIO Compose не нужен, он запускается одной командой docker run, но плагин входит в официальный набор, и доустанавливать его потом не придётся.

sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world

hello-world должен напечатать приветствие и завершиться. Если служба не поднялась, на той же странице Docker есть sudo systemctl start docker. Команды docker без sudo по умолчанию не работают: пользователь добавляется в группу docker отдельным шагом post-install, для одного администратора на VPS это необязательно.

Важная оговорка с той же страницы. Порты, которые Docker публикует наружу, обходят правила ufw и firewalld. Правила для них вешают на цепочку DOCKER-USER. Подробности — в разделе Packet filtering and firewalls. Не считайте, что «ufw deny» закрыл 8080, пока не проверили с другой машины.

Запуск Nextcloud AIO

Команда мастер-контейнера — из актуального readme nextcloud/all-in-one. Имя контейнера nextcloud-aio-mastercontainer и том nextcloud_aio_mastercontainer не переименовывают: обновления AIO опираются на эти имена. Сокет Docker подключается только на чтение, через него мастер управляет остальными контейнерами.

sudo docker run \
  --init \
  --sig-proxy=false \
  --name nextcloud-aio-mastercontainer \
  --restart always \
  --publish 80:80 \
  --publish 8080:8080 \
  --publish 8443:8443 \
  --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
  --volume /var/run/docker.sock:/var/run/docker.sock:ro \
  ghcr.io/nextcloud-releases/all-in-one:latest

Порт 80 нужен для проверки домена при выпуске сертификата. Порт 8080 — интерфейс мастера с самоподписанным сертификатом. Порт 8443 — тот же интерфейс, но с нормальным сертификатом, если 80 и 8443 открыты и домен уже смотрит на сервер. Для первой настройки достаточно открыть мастер по IP: https://адрес-сервера:8080. Доменом на порт 8080 заходить не стоит: официальное руководство предупреждает, что потом HSTS может закрыть этот вход.

Браузер ругнётся на сертификат — для порта 8080 это ожидаемо. На первом экране AIO показывает парольную фразу. Запишите её вне сервера. Без неё в мастер не войти, а восстановить её из интерфейса нельзя.

Первый экран Nextcloud AIO с парольной фразой
Первый экран мастера: парольную фразу записывают сразу. Скриншот из официального руководства Nextcloud.
Вход в интерфейс Nextcloud AIO
Дальше эта фраза вставляется в форму входа. На картинке пример из документации, свой пароль будет другим.

Домен, компоненты и первый вход

После входа мастер просит домен, на котором будет жить облако. К этому моменту A-запись уже должна указывать на публичный IPv4 сервера. Если включён IPv6, нужна и AAAA. Принять домен мастер сможет, только если сервер доступен на 443/tcp. Для HTTP/3 он также упоминает 443/udp. Подсказки, почему домен не принят, появляются в интерфейсе, гадать по логам обычно не нужно.

Поле домена в Nextcloud AIO
Домен отправляется здесь. В обычном режиме AIO сам терминирует TLS, поэтому чужой веб-сервер на 80 и 443 мешает. Скриншот из официального руководства Nextcloud.

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

  • Nextcloud Talk — чат и звонки. Нужны проброшенные 3478/tcp и 3478/udp.
  • Collabora, он же Nextcloud Office — документы в браузере.
  • Imaginary — превью HEIC, PDF, SVG и других форматов. С шифрованием на стороне сервера не работает.
  • ClamAV — проверка загружаемых файлов, мастер просит около 1 ГБ дополнительной памяти.
  • Полнотекстовый поиск — тоже около 1 ГБ, и он не работает на ядрах без seccomp. Первая индексация на время делает облако недоступным.
  • Сервер записи звонков Talk — ещё память и только архитектура x86_64.
Выбор компонентов Nextcloud AIO перед запуском
Кнопка Download and start containers скачивает образы. На слабом канале это легко занимает несколько минут: мастер предупреждает, что объём — несколько гигабайт.

Когда контейнеры поднялись, в списке видно, что живо: Apache, база, сам Nextcloud, Redis и то, что вы включили. Жёлтая точка значит «ещё стартует», зелёная — работает. Первый пароль администратора Nextcloud интерфейс показывает отдельно от парольной фразы AIO. Сохраните оба. Потом облако открывается по вашему домену уже с нормальным сертификатом.

Контейнеры Nextcloud AIO после запуска
Так выглядит стек, когда контейнеры уже запущены. Канал обновлений на скриншоте — develop, потому что так снят пример в руководстве. На своём сервере канал без причины не переключают.

Обновления и резервные копии

Nextcloud здесь не обновляют через apt upgrade внутри контейнера. Новые образы ставит мастер AIO: в интерфейсе есть проверка обновлений, после неё контейнеры перезапускаются уже на новой версии. Поэтому имя мастер-контейнера и том с его настройками трогать нельзя.

Резервная копия в AIO завязана на Borg. Включать её стоит сразу, как только в облаке появляются чужие файлы: снимок «на когда-нибудь» после первой потери папки уже не помогает. Копия на том же диске, что и само облако, не спасает от смерти диска. Второй носитель или другой сервер — отдельное решение, в мастере для этого есть восстановление из бэкапа на новом экземпляре AIO.

Если ставить не хочется

В услуге Nextcloud я ставлю именно AIO: Docker, домен и HTTPS, учётную запись администратора, файлы, календарь, контакты и те компоненты, о которых договоримся — Talk, Collabora или OnlyOffice, ClamAV, поиск, Imaginary. На выходе URL, пароли и короткая инструкция. Стоимость установки — от 9 000 ₽. Аренду VPS и домен вы оплачиваете провайдеру сами, root остаётся у вас.

Сборку из маркетплейса Timeweb Cloud имеет смысл выбрать, если нужно просто включить облако и не разбирать контейнеры. AIO — если важен набор компонентов и дальнейшие обновления одним мастером.

Частые вопросы

Сборка в кабинете Timeweb и AIO — одно и то же? Нет. Сборка в маркетплейсе ставит Nextcloud при создании сервера и не проводит через мастер AIO. Команды из этой статьи относятся к All-in-One.

Хватит ли 2 ГБ памяти? Для официального AIO на Linux заявлено от 4 ГБ и 2 ядер. Talk, офис, ClamAV и поиск просят память сверху, это написано рядом с галочками.

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

Можно ли обойтись без домена? Для боевого AIO нет. Сертификат и клиенты завязаны на имя. Мастер на порту 8080 по IP нужен только на время настройки.

Где взять календарь на телефоне, если не хочется приложения Nextcloud? У Nextcloud есть CalDAV. На Android это часто делают через DAVx5 — отдельная заметка про синхронизацию календаря и контактов как раз про этот клиент, только на примере другого сервера.

Реклама. ООО «ТАЙМВЭБ.КЛАУД», ИНН 7810945525, erid: CQH36pWzJqVKyCLcHfYJjN7tMMG5q1zq1zwGxHoZ8G95ZA.

Рубрики: Docker Веб-приложения
Подписаться на новые статьи (RSS)

Без почты и трекеров — только лента обновлений.

Также есть английская лента

Оцените статью
Добавить комментарий