Проверен полностью36 647

Выбор редакцииОблачные хранилища

Nextcloud

Nextcloud — облачное хранилище на вашем сервере: файлы синхронизируются с компьютером и телефоном, папки открываются коллегам по ссылке или по имени, а сверху добавляются календарь, контакты и заметки. Рецепт поднимает сервер, PostgreSQL, Valkey и отдельный контейнер фоновых заданий.

Обзор

Nextcloud — облачное хранилище, которое живёт на вашем сервере. Файлы синхронизируются с компьютером и телефоном, папки открываются коллегам по имени или по публичной ссылке, а поверх файлов работает привычный набор: календарь, контакты, заметки, задачи и совместное редактирование документов. Подойдёт семье, небольшой команде или тем, кто уходит из Google Drive и Microsoft 365.

Отличие от простой синхронизации файлов — в правах и совместной работе. Здесь есть учётные записи, группы, квоты, сроки жизни ссылок, пароли на публичные папки и журнал действий. Nextcloud — это не «папка на нескольких устройствах», а сервер с пользователями.

Рецепт поднимает четыре контейнера: сам Nextcloud, PostgreSQL, Valkey для файловых блокировок и кэша и отдельный контейнер фоновых заданий. Без последнего Nextcloud переключается на AJAX-режим и выполняет обслуживание только когда кто-то открыл интерфейс. Код, приложения и config.php лежат в Docker volume, файлы пользователей — в каталоге на хосте.

Уровень reliable заявлен как частичный: база вынесена в отдельный сервис, есть healthcheck и фоновый обработчик, но в рецепте нет лимитов ресурсов и внешнего мониторинга.

Nextcloud сложнее остальных приложений каталога в сопровождении. Обновления идут только по одной мажорной версии за раз, а после каждого стоит заглядывать в раздел проверок безопасности.

Оценка безопасности

Контейнеры запускаются без privileged, host network и доступа к Docker socket, с no-new-privileges; наружу открыт только веб-порт и только на 127.0.0.1. PostgreSQL и Valkey доступны исключительно внутри сети Compose.

Пароли администратора и базы задаются в .env и попадают в окружение контейнера: держите файл с правами 600, вне Git, и меняйте значения из примера до первого запуска. После установки включите двухфакторную аутентификацию — Nextcloud хранит файлы, календари и контакты сразу нескольких людей.

Отдельного внимания требует магазин приложений: дополнения выполняют код на сервере с правами Nextcloud, поэтому ставьте только те, которым доверяете. Встроенный раздел «Проверки безопасности и настройки» показывает, чего не хватает конкретно вашей установке; после публикации через HTTPS стоит пройти по списку и закрыть предупреждения.

Основной образ просканирован Trivy; найденные критические CVE перечислены в карточке — это в основном уязвимости системных библиотек Debian, на которых собран образ, и закрываются они очередным релизом upstream. PostgreSQL и Valkey закреплены отдельно от версии Nextcloud и в автоматическую проверку не входят.

Отслеживание обновлений

Это сохранённые результаты отдельных проверок, а не данные в реальном времени. Неизвестный статус означает, что проверка ещё не выполнялась.

Новые релизы

Сравнение версии рецепта с последним известным релизом upstream. Это номер версии, а не разбор изменений.

Актуальная версия v34.0.331 авг. 2026 г., 09:31 UTC

Несовместимые обновления

Новый major находится сравнением номеров версий. Вердикт о совместимости заносится вручную после чтения release notes и порядка миграции.

Не провереноПроверка не выполнялась

compose.yaml

Изменения upstream Compose относительно проверенного рецепта.

Upstream Compose не отслеживаетсяПроверка не выполнялась

Устаревшие Docker-образы

Проверка закреплённых тегов образов на наличие новых версий.

Все образы актуальны31 авг. 2026 г., 09:47 UTC

От наблюдения к действию

План обновления

Рецепт уже закрепляет последний известный релиз. Ниже показаны сохранённые основания для этой версии.

v34.0.3v34.0.3
  1. Открыть основания релиза

    Открыть релиз на GitHub ↗ Ссылка нужна для ревизии и сама по себе не доказывает совместимость.

  2. Проверить границу версий

    Номера версий не пересекают major-границу совместимости. Вердикт о совместимости не записан.

  3. Подготовить смену тегов образов

    Смена тегов образов сейчас не планируется.

  4. Следовать документированной схеме миграции

    Миграция, мажоры нельзя пропускать. Шаги конкретного релиза всё равно берутся из release notes и инструкции по установке.

  5. Защитить точку отката

    Смена версии сейчас не планируется. Рецепт содержит процедуру backup. Restore проверен.

  6. Проверить обновлённый рецепт

    Точная проверка уровня «Проверен полностью» для этой версии записана 2026-08-31.

Прочитать порядок обновления в инструкции по установке ↓

Характеристики

Безопасность и публикация

Уровни установки

Статус показывает, насколько опубликованный рецепт покрывает требования каждого уровня.

Готово

Для дома

Минимальная конфигурация для локальной сети или доступа через VPN.

  • Один сервер
  • Локальный доступ
  • Минимум компонентов

Рецепт закрывает все требования этого уровня.

Готово

Для VPS

Публичная установка с защищённым доступом и резервными копиями.

  • Домен
  • HTTPS через reverse proxy
  • Backup вне сервера

Рецепт закрывает все требования этого уровня.

Частично

Надёжная

Конфигурация для предсказуемой эксплуатации и наблюдаемости.

  • Отдельная БД
  • Healthcheck
  • Внешний мониторинг
  • Лимиты CPU и памяти

Нужно добавить вручную: внешний мониторинг, лимиты cpu и памяти.

Собрать под свой сервер

Генератор конфигурации

Ответьте на пять вопросов и скачайте готовый комплект Nextcloud.

Работает локально
01 Есть домен?
02 Какой reverse proxy?
03 Архитектура сервера
04 Где хранить данные?

Укажите абсолютный путь для отдельного диска, например /srv/nextcloud.

05 Требуется VPN-доступ?

Комплект готов к сборке

Архив создаётся в браузере. Ответы никуда не отправляются.

Скриншоты

Быстрый запуск

Сначала прочитайте полную инструкцию: в ней описаны доступ извне, backup и расположение данных.

Подготовить настройкиcp .env.example .env
Запуститьdocker compose up -d
Проверить состояниеdocker compose ps

Пошаговая инструкция

1. Проверьте сервер Ubuntu или Debian

Для этого рецепта выделите минимум 2 ядра CPU, 2 ГБ RAM и 20 ГБ диска под сам сервер; рекомендуется 4 ГБ RAM. Это консервативная оценка рецепта: upstream публикует требования к PHP и базе, но не к машине целиком, а расход зависит от числа пользователей и включённых приложений. Место под файлы считайте отдельно. Нужны Ubuntu 22.04+ или Debian 12+ с Docker Engine и Docker Compose v2.24+.

docker --version
docker compose version
nproc && free -m && df -h /srv

2. Подготовьте файлы и переменные

mkdir -p ~/services/nextcloud
cd ~/services/nextcloud
cp .env.example .env
chmod 600 .env
sudo mkdir -p /srv/nextcloud/data
sudo chown -R 33:33 /srv/nextcloud/data
sed -i "s|^NEXTCLOUD_DATA_LOCATION=.*|NEXTCLOUD_DATA_LOCATION=/srv/nextcloud/data|" .env

Внутри контейнера Nextcloud работает от www-data с UID 33, поэтому каталог данных должен принадлежать этому пользователю.

Обязательно замените оба пароля из примера:

sed -i "s|^NEXTCLOUD_DB_PASSWORD=.*|NEXTCLOUD_DB_PASSWORD=$(openssl rand -hex 24)|" .env
sed -i "s|^NEXTCLOUD_ADMIN_PASSWORD=.*|NEXTCLOUD_ADMIN_PASSWORD=$(openssl rand -base64 24)|" .env

NEXTCLOUD_VERSION закрепляет образ; NEXTCLOUD_PORT задаёт локальный порт; NEXTCLOUD_DATA_LOCATION — каталог с файлами пользователей; NEXTCLOUD_HTML_VOLUME и NEXTCLOUD_DB_VOLUME — volume с кодом и с базой; NEXTCLOUD_DB_* и NEXTCLOUD_ADMIN_* задают доступ к базе и первую учётную запись; NEXTCLOUD_TRUSTED_DOMAINS перечисляет домены, с которых разрешён вход; NEXTCLOUD_TRUSTED_PROXIES и NEXTCLOUD_OVERWRITE_* нужны при публикации через reverse proxy; NEXTCLOUD_PHP_* задают лимиты PHP; TZ — часовой пояс.

Пароль базы и имя пользователя меняются только до первого запуска: после инициализации PostgreSQL переменная новую учётную запись не создаст.

3. Запустите стек

docker compose pull
docker compose up -d
docker compose ps
ssh -L 8080:127.0.0.1:8080 user@server.example

Первый запуск дольше обычного: контейнер распаковывает код и выполняет установку. Администратор создаётся автоматически из переменных, поэтому мастера установки в браузере не будет — откройте http://localhost:8080 и сразу войдите.

Проверьте, что фоновые задания идут отдельным контейнером, а не через браузер:

docker compose exec -u www-data app php occ config:app:get core backgroundjobs_mode

Ответ должен быть cron.

Запуск на VPS

На VPS оставьте bind 127.0.0.1, закройте порт 8080 снаружи и публикуйте сервис только через HTTPS reverse proxy. Проверьте состояние стека:

docker compose up -d
docker compose ps
curl --fail http://127.0.0.1:8080/status.php

Все четыре контейнера должны быть подняты, а app, database и redishealthy. Учитывайте, что генерация превью и фоновые задания заметно нагружают слабый VPS: на одном общем ядре стоит отключить генерацию превью для больших файлов.

Доступ в локальной сети

Без TLS используйте SSH-туннель или VPN. Если reverse proxy работает на другом узле доверенной LAN, замените 127.0.0.1 в compose.yaml на конкретный LAN-адрес сервера, добавьте этот адрес в NEXTCLOUD_TRUSTED_DOMAINS и ограничьте порт firewall адресом proxy.

Nextcloud не примет запрос с домена, которого нет в NEXTCLOUD_TRUSTED_DOMAINS: вместо интерфейса вы увидите сообщение о недоверенном домене.

Домен и HTTPS

Замените cloud.example.com в выбранном файле из proxy/ одним доменом и пропишите его в .env:

NEXTCLOUD_TRUSTED_DOMAINS=cloud.example.com
NEXTCLOUD_TRUSTED_PROXIES=172.16.0.0/12
NEXTCLOUD_OVERWRITE_PROTOCOL=https
NEXTCLOUD_OVERWRITE_CLI_URL=https://cloud.example.com

proxy/Caddyfile автоматически получает сертификат; proxy/nginx.conf ожидает сертификат Certbot; proxy/traefik.yaml использует resolver letsencrypt. Для Traefik в контейнере замените 127.0.0.1 на доступный ему host gateway.

Все три примера делают две вещи, без которых Nextcloud работает неправильно: снимают ограничение на размер загружаемого файла и перенаправляют /.well-known/carddav и /.well-known/caldav на /remote.php/dav — иначе календарь и контакты не подключаются в клиентах.

docker compose up -d
curl --fail https://cloud.example.com/status.php

Резервное копирование

chmod +x backup.sh restore.sh
./backup.sh

Скрипт включает maintenance mode, снимает дамп PostgreSQL, архивирует volume с кодом, приложениями и config.php, затем выключает maintenance mode. Без maintenance mode копия базы и файлов может разъехаться.

Файлы пользователей в архив не входят: их каталог может занимать терабайты, и копировать его удобнее инкрементально:

rsync -a --delete /srv/nextcloud/data/ /mnt/backup/nextcloud-data/

Полное восстановление требует трёх частей: дампа базы, volume с кодом и каталога файлов. Храните их согласованно и хотя бы одну копию — вне сервера.

Одна деталь, о которую спотыкаются при ручном backup: инсталлятор Nextcloud заводит для работы отдельную роль PostgreSQL вида oc_<имя_администратора>, и таблицы принадлежат ей, а не пользователю из .env. Поэтому backup.sh кроме дампа базы выгружает и список ролей — без него дамп не встанет на чистый PostgreSQL.

Восстановление

Восстановление заменяет базу и код целиком:

./restore.sh ./backups/nextcloud-YYYYMMDDTHHMMSSZ.tar
docker compose ps
curl --fail http://127.0.0.1:8080/status.php

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

После восстановления имеет смысл пересканировать файлы:

docker compose exec -u www-data app php occ files:scan --all

Обновление

Создайте backup и прочитайте release notes. Обновляйтесь строго по одной мажорной версии: перепрыгнуть с 32 на 34 нельзя, установщик остановит переход.

./backup.sh
docker compose pull
docker compose up -d
docker compose ps
docker compose logs --tail=100 app
docker compose exec -u www-data app php occ status

После обновления загляните в Administration → Overview: там появляются новые рекомендации и предупреждения, если что-то настроено не так.

Откат

Миграции базы Nextcloud необратимы: старый образ не запустится на базе, которую обновила новая версия. Верните прежний NEXTCLOUD_VERSION в .env и восстановите архив, снятый до обновления:

docker compose pull
./restore.sh ./backups/nextcloud-before-update.tar
docker compose up -d

Файлы, загруженные после обновления, останутся на диске, но записей о них в восстановленной базе не будет: верните их командой occ files:scan --all.

Остановка и полное удаление

docker compose down удаляет контейнеры, но сохраняет базу, код и файлы. Полное необратимое удаление после проверки backup:

docker compose down
docker volume rm nextcloud-html nextcloud-database
sudo rm -rf /srv/nextcloud/data
rm -rf ~/services/nextcloud

Источники: установка в Docker, руководство администратора, reverse proxy, фоновые задания, кэширование и блокировки и backup.

Диагностика

Сообщение «Доступ через недоверенный домен»

Nextcloud принимает запросы только с доменов из списка. Добавьте нужный в .env и перезапустите:

grep NEXTCLOUD_TRUSTED_DOMAINS .env
docker compose up -d
docker compose exec -u www-data app php occ config:system:get trusted_domains

Переменная применяется только при старте контейнера; изменить список у работающего инстанса можно командой occ config:system:set trusted_domains 1 --value=cloud.example.com.

Ссылки ведут на http вместо https

За reverse proxy Nextcloud не знает, что снаружи HTTPS. Заполните в .env NEXTCLOUD_TRUSTED_PROXIES, NEXTCLOUD_OVERWRITE_PROTOCOL=https и NEXTCLOUD_OVERWRITE_CLI_URL, затем перезапустите стек.

Календарь и контакты не подключаются в клиентах

Клиенты обращаются к /.well-known/caldav и /.well-known/carddav. Эти адреса должны перенаправляться на /remote.php/dav — примеры в proxy/ уже содержат нужные правила. Проверить можно так:

curl -sI https://cloud.example.com/.well-known/caldav | head -3

Фоновые задания не выполняются

docker compose ps cron
docker compose exec -u www-data app php occ config:app:get core backgroundjobs_mode
docker compose logs --tail=50 cron

Режим должен быть cron. Значение записывается при первом запуске cron.php, поэтому сразу после установки поле может быть пустым — контейнер cron выполняет задание раз в пять минут.

Не загружаются большие файлы

Ограничение чаще ставит reverse proxy, а не PHP. В Nginx нужен client_max_body_size, в Caddy — request_body max_size, в Traefik — middleware buffering; примеры в proxy/ уже настроены. Со стороны PHP размер задаёт NEXTCLOUD_PHP_UPLOAD_LIMIT.

Ошибка прав на каталог данных

Внутри контейнера Nextcloud работает от UID 33:

ls -ld /srv/nextcloud/data
sudo chown -R 33:33 /srv/nextcloud/data

Файлы появились на диске, но их нет в интерфейсе

Nextcloud хранит список файлов в базе и не сканирует каталог автоматически. После ручного копирования выполните:

docker compose exec -u www-data app php occ files:scan --all

Инстанс завис в режиме обслуживания

Так бывает, если обновление прервалось:

docker compose exec -u www-data app php occ maintenance:mode --off
docker compose exec -u www-data app php occ status

Если сервер жалуется на незавершённое обновление, сначала выполните occ upgrade, а при неудаче восстановитесь из архива.

Раздел проверок показывает предупреждения

Это нормальное состояние сразу после установки: часть проверок относится к HTTPS и заголовкам, которые появляются только после публикации через reverse proxy. Пройдите по списку в Administration → Overview и закрывайте пункты по одному — там же есть ссылки на документацию по каждому.

После обновления сервер не стартует

docker compose logs --tail=200 app | grep -i "error\|upgrade\|migration"

Перепрыгивать через мажорную версию нельзя: обновляйтесь последовательно. Понижение версии не поддерживается — возврат возможен только восстановлением архива, снятого до обновления.

Официальные источники

Последний релиз: 2026-08-13 · GitHub Stars: 36 647 · данные проверены 31 авг. 2026 г., 09:31 UTC

Отказ от ответственности

Fossary — независимый информационный каталог, не связанный с разработчиками представленных приложений. Мы собираем сведения из открытых источников и проверяем опубликованные рецепты, но не разрабатываем, не распространяем и не контролируем эти приложения.

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