Nextcloud — это self-hosted замена Google Drive и Dropbox: синхронизация и обмен файлами, календарь, контакты и редактирование документов прямо в браузере, все на сервере, которым управляете вы, а не на арендованном месте у кого-то другого.
Общий тариф Google One или семейная папка Dropbox дают фиксированную квоту, которая делится между сервисами с оплатой за место и за уровень тарифа. Nextcloud работает с одной фиксированной платой за VPS. Хранилище расширяете только тогда, когда оно реально нужно. Аккаунты, политики хранения и версионирование остаются в вашей собственной админке.
В этом руководстве Nextcloud ставится на реальный VPS is*hosting тарифа Medium официальным методом All-in-One через Docker.
Интерфейс AIO прямо указывает свой реальный минимум: 2 ГБ RAM и двухъядерный CPU, как только включен хотя бы один опциональный контейнер; 3 ГБ, если этот контейнер — ClamAV, Talk Recording или Fulltextsearch; и 5 ГБ с четырехъядерным CPU, если включить сразу все.
|
Сценарий |
RAM |
CPU |
Тариф is*hosting |
|
Базовый стек (офисный пакет включен всегда) плюс Talk, Imaginary или Whiteboard |
4 ГБ |
3 CPU |
Medium VPS |
|
Добавить ClamAV, Talk Recording-server или Fulltextsearch |
8 ГБ |
4 CPU |
Premium VPS |
|
Все включено одновременно |
16 ГБ |
6 CPU |
Elite VPS |
В руководстве используется тариф Medium VPS: реальная установка с базовым стеком плюс Talk, офисный пакет, Imaginary и Whiteboard одновременно заняла всего 1,8 ГБ из 4 ГБ тарифа, с 2 ГБ в запасе. Каждый тариф is*hosting включает выделенный IPv4 по умолчанию и еженедельные бэкапы VPS.
Тут у нас VPS от is*hosting с Ubuntu 24.04.
Nextcloud AIO работает на Docker независимо от дистрибутива, но дистрибутивы на базе firewalld, включая CentOS Stream, иногда требуют ручного переключения бэкенда firewalld с nftables на iptables, прежде чем внутренняя контейнерная сеть Docker начнет корректно работать.
У ufw в Ubuntu такой проблемы нет — это и есть причина выбора ОС здесь.
При оформлении заказа выберите Medium VPS, в конфигураторе Ubuntu v. 24. Выделенный IPv4 назначается автоматически.
Создайте A-запись для поддомена, который будете использовать (например, cloud.yourdomain.com), указывающую на этот IP, и дайте ей время распространиться, прежде чем двигаться дальше.
AIO во время настройки сверяет домен с живым DNS, так что еще не распространившаяся запись не пройдет проверку.
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
FAQ самого AIO отдельно предостерегает от установки Docker через snap на Ubuntu. Скрипт-конвейер выше ставит стандартный пакет Docker напрямую и snap не трогает, так что здесь это не проблема.
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
sudo опущен, потому что образ Ubuntu от is*hosting уже работает под root.
Имя контейнера и имя тома — фиксированные значения, от которых зависит процесс обновления в дальнейшем; оставьте их как есть.
Порт 80 обслуживает ACME-проверку сертификата, 8080 отдает интерфейс AIO по самоподписанному сертификату, а 8443 — с валидным, как только домен начнет резолвиться.
Откройте в браузере https://<server-ip>:8080, используя именно IP-адрес, а не домен. По документации AIO, доступ к порту 8080 по домену может недолго работать, но обычно ломается, как только срабатывает HSTS, так что доступ по IP — предусмотренный путь для этого шага. Примите предупреждение о самоподписанном сертификате.
Первый экран не просит вас придумать пароль — AIO генерирует парольную фразу на месте и показывает ее ровно один раз, с предупреждением записать. Именно эта фраза будет входом в интерфейс управления AIO при каждом последующем визите, а не в ваш аккаунт Nextcloud.
После входа главный экран AIO предлагает выбор: запустить новый экземпляр или восстановить прежний из бэкапа. В разделе New AIO instance введите домен из Шага 1 и нажмите Submit domain. AIO прямо указывает свое требование на этом экране: порт 443 должен быть доступен из интернета (443/UDP тоже, если нужен HTTP/3), а DNS домена должен уже указывать на этот сервер.
Ниже появляется чекбокс «Install Nextcloud Hub 26 Spring» (оставьте включенным — если снять галочку, установится предыдущая мажорная версия), за ним кнопка Download and start containers.
Еще ниже — секция Optional Containers: офисный пакет ставится всегда, Euro-Office выбран по умолчанию, Collabora как альтернатива, и отдельные переключатели для Talk, Talk Recording-server, ClamAV, Fulltextsearch, Imaginary и Whiteboard. В этом гайде мы включаем Talk, Imaginary и Whiteboard рядом с дефолтным Euro-Office.
После идет поле Timezone change, которое позволяет задать часовой пояс Nextcloud (например, Asia/Kuala_Lumpur). По умолчанию тут Etc/UTC, если оставить пустым, и поле требует отдельного нажатия Submit timezone, поскольку оно не привязано к основному сохранению.
Что бы вы ни переключили, сначала нажмите Save changes под списком опциональных контейнеров — изменения там не сохраняются автоматически, — затем Download and start containers.
Появится живой лог, показывающий статус каждого контейнера как <container>: Pulling image., затем <container>: Starting container, проходя по всему списку, пока каждая запись не станет зеленой.
Проверьте текущее состояние ufw, прежде чем что-либо трогать, — оно зависит от базового образа (на этом образе Ubuntu 24.04 от is*hosting ufw по умолчанию оказался неактивен):
ufw status
Включайте с правилом разрешения SSH в первую очередь, чтобы не заблокировать себе доступ:
ufw allow OpenSSH
ufw enable
Каждый порт, опубликованный командой docker run — 80, 8080, 8443 и позже 443, — выставлен напрямую через собственные правила iptables Docker, независимо от того, что делает ufw. Правило deny в ufw против любого из этих портов не влияет на трафик, доходящий до контейнера.
С включенным Talk его TURN-сервер тоже занимает 3478/tcp и 3478/udp тем же способом, напрямую через Docker, так что эти два порта должны оставаться доступными и на уровне файрвола роутера или провайдера.
Как только все контейнеры зеленые, экран AIO один раз покажет имя администратора и сгенерированный пароль — это отдельные данные от парольной фразы AIO ранее и относятся к вашему настоящему аккаунту Nextcloud.
Используйте <your-generated-admin-password> как заглушку для того значения, что покажет ваша установка, — реальное значение никогда не должно попадать в публикуемый текст дословно. Входите по своему домену сначала через порт 8443; как только сертификат встанет, произойдет редирект на стандартный порт 443.
Разместите Nextcloud AIO на VPS, созданном именно для этого — root-доступ с первой минуты, выделенный IPv4 и запас RAM для полного стека контейнеров.
С Euro-Office, включенным по умолчанию, открытие любого документа, таблицы или презентации внутри приложения Files в Nextcloud редактирует их прямо в браузере — без отдельного аккаунта или лицензии, поскольку все работает контейнером на том же VPS.
Talk появляется в верхней навигации для звонков и чата, а Whiteboard — как тип файла, который можно создать из меню «New» того же приложения Files.
Календарь и Контакты входят в стандартные стартовые приложения Nextcloud, так что оба появляются в верхней навигационной панели сразу после первого входа. Они сразу готовы подключиться к телефону или десктоп-клиенту по CalDAV и CardDAV без дополнительной настройки.
Обновления идут целиком из интерфейса AIO, а не из командной строки. Когда доступен новый образ контейнера, интерфейс отмечает его под списком контейнеров; нажатие Stop containers, а затем Start and update containers подтягивает новые образы и перезапускает стек.
Сам mastercontainer обновляется через отдельный поток в том же интерфейсе, показываемый только когда обновление mastercontainer действительно доступно.
Перед любым из этих обновлений включите встроенный бэкап AIO (на базе BorgBackup) из того же интерфейса: он появляется как секция Backup and restore, когда контейнеры запущены, и запрашивает путь к каталогу на хосте — в идеале на отдельном диске от корневого, — с примечанием, что путь должен начинаться с / и не должен заканчиваться на него (/mnt/backup — собственный пример AIO).
URL удаленного репозитория Borg работает как альтернатива локальному пути. is*hosting уже включает бесплатные еженедельные бэкапы VPS на каждом тарифе как базовую подстраховку, но она захватывает весь диск. Borg-бэкап, встроенный в AIO, восстанавливает только базу данных, файлы и конфигурацию Nextcloud одним действием в интерфейсе — это быстрее для отката, чем восстановление полного снапшота VPS, когда откатить нужно только само приложение.
От нажатия Download and start containers до ответа Apache на домене прошло чуть больше 6 минут на этом прогоне, хотя образы Euro-Office, Talk, Imaginary и Whiteboard уже были в локальном кэше с более ранней попытки в той же сессии. Так что по-настоящему «холодная» загрузка на свежем VPS займет дольше.
После установки тариф Medium показал, что занято 20 ГБ из 40 ГБ SSD и активно 1,8 ГБ из 4 ГБ RAM, с 2 ГБ в запасе, при работающем полном базовом стеке (Apache, PostgreSQL, Nextcloud, Client Push, Redis) плюс Talk, Euro-Office, Imaginary и Whiteboard одновременно.
Если вы впервые настраиваете Linux VPS с нуля, руководство по настройке Linux VPS покрывает базу, которую эта статья принимает как данность. Чтобы посмотреть на другую self-hosted платформу на Docker с похожим потоком установки, смотрите руководство по Coolify.