VPSРейтинг
Облако15 февраля 2026 · обновлено 4 сентября · 15 мин чтения

Nextcloud на VPS: личное облако вместо Google Drive

Nextcloud — open-source платформа для хранения файлов, синхронизации контактов и календарей, видеозвонков и совместной работы. Разворачивается на VPS с 2 ГБ RAM через Docker Compose. Данные — только на вашем сервере.

1. Что такое Nextcloud и зачем его хостить

Nextcloud — open-source платформа для личного облака. По функциям это аналог Google Drive + Google Calendar + Google Meet + Google Contacts, но данные хранятся на вашем сервере, а не на серверах американской корпорации.

У Nextcloud две параллельные нумерации, и их легко перепутать: технические версии сервера (30, 31, 32…) и маркетинговые имена релизов вида «Hub 26 Spring». В docker-compose и в командах используется только номер сервера — дальше в статье везде он.

Какую версию ставить

Мажорные версии выходят раз в четыре месяца, каждая поддерживается год, и одновременно живых всегда три. На сентябрь 2026 это 32, 33 и 34; ставить нужно самую свежую — 34 (она же Hub 26 Spring, вышла 9 июня 2026, поддержка до июня 2027). Версия 35 пока в статусе release candidate.

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

Откуда появился Nextcloud? В 2016 году Фрэнк Карличек — один из основателей ownCloud — создал форк проекта под названием Nextcloud. Сегодня Nextcloud значительно обогнал ownCloud по размеру сообщества и количеству функций. ownCloud существует и развивается (у них есть собственная переработанная версия — ownCloud Infinite Scale), но для самостоятельного хостинга на VPS Nextcloud — более популярный и активно поддерживаемый выбор.

Данные у вас

Файлы физически хранятся на вашем VPS. Ни Google, ни Яндекс, ни кто-либо другой не имеет к ним доступа.

500+ приложений

Файлы, календарь, контакты, заметки, канбан, видеозвонки, почта, галерея фото — всё в одном интерфейсе.

Открытый код

AGPL-лицензия, 36 000+ звёзд на GitHub. Разрабатывается с 2016 года, регулярные аудиты безопасности.

Кому стоит разворачивать Nextcloud

Если у вас уже есть VPS — Nextcloud запускается рядом с другими сервисами. Особенно актуально для тех, кто уходит от Google/Яндекс или хочет хранить рабочие документы без передачи третьим сторонам.

2. Nextcloud vs Google Drive vs Яндекс Диск

ПараметрNextcloudGoogle DriveЯндекс Диск
Хранение данныхВаш сервер (РФ)Серверы Google (США)Серверы Яндекс (РФ)
Конфиденциальность✅ Полный контроль❌ Анализ данных⚠️ Данные в РФ
Цена за хранилищеТолько стоимость VPS$1.99 за 100 ГБ, $9.99 за 2 ТБ250 ₽ за 1 ТБ
Онлайн-офис✅ OnlyOffice/Collabora✅ Google Docs✅ Встроенный
Мобильный клиент✅ iOS + Android✅✅
Десктоп-клиент✅ Win/Mac/Linux✅ Win/Mac✅ Win/Mac
CalDAV/CardDAV✅ Стандарт❌ Google-only❌
Видеозвонки✅ Talk (E2E)✅ Meet✅ Телемост
ОбъёмОграничен диском VPS15 ГБ бесплатно10 ГБ бесплатно
Lock-in❌ Нет✅ Экосистема Google✅ Экосистема Яндекс

Цены подписок — на сентябрь 2026, при помесячной оплате; у Яндекса при годовой выходит около 191 ₽ в месяц.

Честно про деньги

Если считать только рубли за гигабайт, подписка почти всегда дешевле: терабайт у Яндекса стоит дешевле любого VPS со 100 ГБ диска. Nextcloud берут не ради экономии, а ради контроля над данными, отсутствия лимита на число пользователей и того, что на том же сервере крутятся другие ваши сервисы. Экономия появляется на команде: облачные тарифы считают по людям, ваш VPS — нет.

Когда Google Drive выигрывает

Если вам нужна безотказная работа без администрирования сервера, глубокая интеграция с Gmail и встроенный Gemini AI — Google Drive проще. Nextcloud требует обслуживания: обновления, бэкапы, мониторинг. Это инвестиция времени.

3. Требования к серверу

2 ГБ RAM

Личное использование

  • — 1–2 vCPU
  • — 2 ГБ RAM
  • — 20+ ГБ NVMe
  • — 1–2 пользователя
4 ГБ RAM

Семья / небольшая команда

  • — 2 vCPU
  • — 4 ГБ RAM
  • — 50+ ГБ NVMe
  • — До 10 пользователей
6 ГБ RAM

С Nextcloud Office

  • — 4 vCPU
  • — 6+ ГБ RAM
  • — 50+ ГБ NVMe
  • — + OnlyOffice контейнер

Обязательны: публичный IP, домен (или поддомен), HTTPS — мобильные приложения Nextcloud не работают по чистому HTTP. Диск лучше NVMe: Nextcloud активно работает с миниатюрами и индексами.

4. Установка Docker

Если Docker ещё не установлен — официальный скрипт установит всё за одну команду.

Установка Docker Engine (Ubuntu 22.04 / 24.04)
curl -fsSL https://get.docker.com | sh

# Добавить в автозапуск
systemctl enable --now docker

# Проверить версию
docker --version
docker compose version

5. Docker Compose — PostgreSQL + Redis + Nextcloud

Развернём стек из трёх контейнеров: PostgreSQL (база данных), Redis (кэш и блокировки файлов) и Nextcloud (Apache + PHP встроен в образ). Nextcloud будет слушать на 127.0.0.1:8080 — наружу его проксирует Nginx на следующем шаге.

Шаг 1: рабочая директория

Создать директорию
mkdir -p ~/nextcloud && cd ~/nextcloud

Шаг 2: файл переменных .env

Замените значения на свои. Пароли генерируйте через openssl rand -base64 24:

~/nextcloud/.env
DOMAIN=cloud.example.com

# PostgreSQL
DB_PASSWORD=замените_на_надёжный_пароль

# Redis
REDIS_PASSWORD=замените_на_надёжный_пароль

# Администратор Nextcloud
NEXTCLOUD_ADMIN_USER=admin
NEXTCLOUD_ADMIN_PASSWORD=замените_на_надёжный_пароль

Шаг 3: docker-compose.yml

~/nextcloud/docker-compose.yml
services:
  db:
    image: postgres:16-alpine
    container_name: nc-db
    restart: unless-stopped
    volumes:
      - db_data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: nextcloud
      POSTGRES_USER: nextcloud
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    networks:
      - nc_net

  redis:
    image: redis:7-alpine
    container_name: nc-redis
    restart: unless-stopped
    command: redis-server --requirepass ${REDIS_PASSWORD}
    networks:
      - nc_net

  app:
    image: nextcloud:34-apache
    container_name: nc-app
    restart: unless-stopped
    depends_on:
      - db
      - redis
    ports:
      - "127.0.0.1:8080:80"
    volumes:
      - nextcloud_data:/var/www/html
    environment:
      POSTGRES_HOST: db
      POSTGRES_DB: nextcloud
      POSTGRES_USER: nextcloud
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      REDIS_HOST: nc-redis
      REDIS_HOST_PASSWORD: ${REDIS_PASSWORD}
      NEXTCLOUD_ADMIN_USER: ${NEXTCLOUD_ADMIN_USER}
      NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD}
      NEXTCLOUD_TRUSTED_DOMAINS: ${DOMAIN}
      OVERWRITECLIURL: "https://${DOMAIN}"
      OVERWRITEPROTOCOL: https
      PHP_MEMORY_LIMIT: 512M
      PHP_UPLOAD_LIMIT: 10G
    networks:
      - nc_net

  cron:
    image: nextcloud:34-apache
    container_name: nc-cron
    restart: unless-stopped
    depends_on:
      - db
      - redis
    volumes:
      - nextcloud_data:/var/www/html
    entrypoint: /cron.sh
    networks:
      - nc_net

volumes:
  db_data:
  nextcloud_data:

networks:
  nc_net:

Зачем контейнер cron?

Nextcloud использует фоновые задачи (очистка корзины, генерация превью, уведомления). Отдельный контейнер cron запускает их каждые 5 минут — это официально рекомендуемый способ для Docker.

Шаг 4: запуск

Запустить стек
docker compose up -d

# Следить за инициализацией (первый запуск — 2–3 минуты)
docker compose logs -f app

# Проверить, что все контейнеры запущены
docker compose ps

При первом запуске Nextcloud создаст базу данных, применит все миграции и заведёт учётную запись администратора из переменных окружения. Дождитесь сообщения Apache/2.4.x configured -- resuming normal operations.

6. Nginx + SSL

HTTPS обязателен — мобильные клиенты Nextcloud откажутся работать без валидного сертификата.

Установка Nginx и Certbot

Установить Nginx и Let's Encrypt
apt install nginx certbot python3-certbot-nginx -y

Конфиг Nginx

/etc/nginx/sites-available/nextcloud
server {
    listen 80;
    server_name cloud.example.com;

    # Увеличить лимит размера загружаемых файлов
    client_max_body_size 10G;
    client_body_timeout 600s;

    # Nextcloud требует этот заголовок, иначе покажет предупреждение в панели.
    # Certbot перенесёт блок на HTTPS, где заголовок и начнёт работать.
    add_header Strict-Transport-Security "max-age=15552000" always;

    location / {
        proxy_pass         http://127.0.0.1:8080;
        proxy_http_version 1.1;

        proxy_set_header Host              $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket (Nextcloud Talk)
        proxy_set_header Upgrade    $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout  600s;
        proxy_send_timeout  600s;
    }
}
Активировать конфиг и получить SSL
ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

# Получить сертификат
certbot --nginx -d cloud.example.com

Certbot добавит HTTPS-блок и настроит автообновление сертификата. Откройте https://cloud.example.com — должен открыться интерфейс Nextcloud.

7. Первый вход и проверка кэша

Войдите на https://cloud.example.com под учётными данными из .env. После входа перейдите в Настройки → Администрирование → Обзор и проверьте список предупреждений.

Проверить статус Redis и OPcache

Проверить конфигурацию через occ
# Статус кэша
docker exec -u www-data nc-app php occ config:system:get memcache.local
docker exec -u www-data nc-app php occ config:system:get memcache.locking

# Версия и состояние сервера
docker exec -u www-data nc-app php occ status

Если Redis подхватился из переменных окружения — в config/config.php уже должна быть запись memcache.locking. Если нет — добавьте вручную:

Добавить Redis-кэш вручную, если не подхватился автоматически
docker exec -u www-data nc-app php occ config:system:set memcache.local --value='\OC\Memcache\APCu'
docker exec -u www-data nc-app php occ config:system:set memcache.distributed --value='\OC\Memcache\Redis'
docker exec -u www-data nc-app php occ config:system:set memcache.locking --value='\OC\Memcache\Redis'

Исправить типичные предупреждения

Полный список того, на что жалуется сервер, выдаёт одна команда — occ setupchecks. На свежей установке по этой инструкции остаются два пункта, оба лечатся сразу:

Индексы БД и окно обслуживания
# Досоздать индексы и привести filecache к bigint
docker exec -u www-data nc-app php occ db:add-missing-indices
docker exec -u www-data nc-app php occ db:convert-filecache-bigint

# Окно для тяжёлых фоновых задач: 1 = с 1:00 до 7:00 UTC
docker exec -u www-data nc-app php occ config:system:set maintenance_window_start --type=integer --value=1

# Проверить, что предупреждений не осталось
docker exec -u www-data nc-app php occ setupchecks

Без окна обслуживания Nextcloud выполняет ресурсоёмкие ночные задачи в любое время, в том числе в часы работы — на VPS с 2 ГБ это заметно. Третье предупреждение, про заголовок Strict-Transport-Security, закрывается на стороне Nginx — строка есть в конфиге из раздела 6.

Рекомендуемые приложения при первом входе

Nextcloud предложит установить набор базовых приложений. Минимальный набор: Calendar, Contacts, Notes. Talk (видеозвонки) установите отдельно, если нужен.

8. Мобильный клиент и десктоп

Мобильное приложение (iOS / Android)

  1. Установите приложение Nextcloud из App Store или Google Play
  2. На стартовом экране введите адрес сервера: https://cloud.example.com
  3. Войдите под учётными данными администратора (или нового пользователя)
  4. Включите автозагрузку фото: Настройки → Автозагрузка → выбрать папки

Для синхронизации контактов и календарей на Android нужно приложение DAVx5 (есть в F-Droid бесплатно и Google Play за небольшую плату). На iOS Calendar и Contacts поддерживают CalDAV/CardDAV из коробки — добавьте аккаунт в Настройки → Почта → Аккаунты → Другой.

Десктоп-клиент (Windows / macOS / Linux)

  1. Скачайте Nextcloud Desktop с nextcloud.com/install/
  2. При первом входе укажите адрес вашего сервера
  3. Выберите папки для синхронизации (можно синхронизировать частично)

Десктоп-клиент работает в системном трее и синхронизирует изменения в реальном времени. Требуется Windows 10 (сборка 1809) 64 бит или новее, macOS 13 или новее; для Linux есть AppImage. Под macOS 11 и 12 остался отдельный legacy-сборщик.

WebDAV-доступ без клиента

Подключите Nextcloud как сетевой диск без установки клиента.

Адрес для WebDAV
https://cloud.example.com/remote.php/dav/files/ВАШ_ЛОГИН/

Windows: «Подключить сетевой диск» → Веб-папка. macOS: Finder → Перейти → Подключиться к серверу.

9. Полезные приложения

Приложения устанавливаются через интерфейс: Приложения → поиск по названию → Установить. Ниже — наиболее полезные из 500+ доступных.

ПриложениеЧто делаетАналог
CalendarОбщий CalDAV-календарь, повторяющиеся событияGoogle Calendar
ContactsCardDAV-адресная книга, группыGoogle Contacts
TalkЗашифрованный чат, голос и видеозвонкиGoogle Meet
MemoriesГалерея фото с таймлайном и картойGoogle Photos
DeckKanban-доски для управления задачамиTrello
NotesЗаметки в Markdown с синхронизациейGoogle Keep
MailВеб-почтовый клиент (несколько IMAP)Gmail (веб)
CollectivesКоллективная wiki-база знанийNotion
FormsОпросы и анкеты без сбора данныхGoogle Forms
Nextcloud OfficeРедактирование .docx/.xlsx в браузереGoogle Docs

Nextcloud Office: OnlyOffice или Collabora?

OnlyOffice лучше совместим с форматами Microsoft Office (.docx, .xlsx, .pptx) — рекомендуется, если коллеги работают в MS Office. Collabora более открытый и лучше работает с ODF-форматами. Оба разворачиваются как отдельный Docker-контейнер и требуют ещё ~1 ГБ RAM.

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

Обновление Nextcloud

Через мажорные версии перепрыгивать нельзя — только по одной. Если вы сейчас на 32, а нужна 34, это два прохода: 32 → 33, затем 33 → 34. Тег образа в docker-compose.yml меняется на одну версию за раз.

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

Процесс обновления через Docker
# 1. Включить режим обслуживания — чтобы бэкап был консистентным
docker exec -u www-data nc-app php occ maintenance:mode --on

# 2. Сделать бэкап БД (до обновления!)
docker exec nc-db pg_dump -U nextcloud nextcloud > ~/nextcloud-db-backup-$(date +%Y%m%d).sql

# 3. В docker-compose.yml поднять тег на одну версию:
#    image: nextcloud:33-apache  →  image: nextcloud:34-apache
# Затем:
docker compose pull
docker compose up -d

# 4. Дождаться в логах строки "Initializing finished"
docker compose logs -f app

# 5. Досоздать индексы БД
docker exec -u www-data nc-app php occ db:add-missing-indices

# 6. Обязательно: выключить режим обслуживания
docker exec -u www-data nc-app php occ maintenance:mode --off

Если вы ставили Nextcloud по прошлой версии этой статьи

До сентября 2026 здесь была указана версия 30. Её поддержка закончилась в октябре 2025 — обновлений безопасности она не получает. Проверьте свою версию командой docker exec -u www-data nc-app php occ status и, если там 30 или 31, пройдите цепочку до 34 по одной версии за раз, делая бэкап перед каждым шагом.

Не запускайте occ upgrade руками

Контейнер уже обновился на шаге 3, и occ upgrade в этот момент ответит «Nextcloud is in maintenance mode. Maybe an upgrade is already in process» — выглядит как поломка, хотя всё в порядке. И не пропускайте шаг 6: после автоматического обновления контейнер намеренно оставляет режим обслуживания включённым, и без этой команды сайт так и будет отвечать заглушкой.

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

Для полного бэкапа нужны два компонента: дамп базы данных и файлы пользователей.

Ручной бэкап
# Создать папку для бэкапов (если ещё нет)
mkdir -p ~/backups

# Включить maintenance mode (для консистентности)
docker exec -u www-data nc-app php occ maintenance:mode --on

# Бэкап БД
docker exec nc-db pg_dump -U nextcloud nextcloud | gzip > ~/backups/backup-db-$(date +%Y%m%d).sql.gz

# Бэкап файлов (Docker volume)
docker run --rm \
  -v nextcloud_nextcloud_data:/data:ro \
  -v ~/backups:/backup \
  alpine tar -czf /backup/nextcloud-files-$(date +%Y%m%d).tar.gz -C /data .

# Выключить maintenance mode
docker exec -u www-data nc-app php occ maintenance:mode --off

Правило 3-2-1

Бэкап только на том же VPS — не считается. Настройте копирование на внешнее хранилище через rclone (Backblaze B2, любой S3-совместимый) или периодически скачивайте архивы на локальный компьютер. Для автоматизации добавьте команды в crontab.

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

Nextcloud упирается в объём: через год файлов обычно больше, чем планировалось. Считайте диск с запасом вдвое.

Под эти требования в каталоге подходят 43 тарифа, от 1 110 ₽/мес (HostKey, 6 ГБ, 120 ГБ SSD).

Тарифы от 100 ГБ диска →

Смотрите также