Своё облачное хранилище дома: Nextcloud или Seafile — установка в Docker и грабли

Своё облачное хранилище дома — это свой «Яндекс Диск» или Google Drive на собственном компьютере или сервере: файлы синхронизируются между устройствами, открываются из браузера и с телефона, но лежат у вас, а не у чужой компании. Самые популярные бесплатные варианты — Nextcloud и Seafile. Nextcloud у нас работает на домашнем сервере, а для честного сравнения мы подняли обе системы с нуля в Docker и по дороге собрали грабли. Ниже — чем они отличаются, как установить каждую и что выбрать.

Своё облачное хранилище: Nextcloud или Seafile
Nextcloud и Seafile на нашем тестовом сервере

Nextcloud или Seafile: в чём разница

NextcloudSeafile
Суть«офис в браузере»: файлы плюс календарь, контакты, заметки, звонки (Nextcloud Talk), сотни приложенийсфокусирован на файлах и быстрой синхронизации, есть вики и общий доступ
Как хранит файлыобычными файлами в папке данныхв своих библиотеках, через клиент или веб
Установка в Dockerодин образ + база + Redisнабор файлов от разработчика: .env и несколько compose-файлов
Наш тест: версияNextcloud 35.0.1Seafile CE 13.0.28
Наш тест: память после запуска≈230 МБ (приложение 118 МБ, база 109 МБ, Redis 4 МБ)≈540 МБ (Seafile 427 МБ, база 112 МБ, Redis 4 МБ)

Цифры памяти — сразу после запуска, без пользователей и файлов; под нагрузкой обе системы съедят больше. По документации Seafile, разработчики советуют от 2 ГБ памяти и 2 ядер процессора.

Наш выбор: Nextcloud на домашнем сервере

Дома у нас Nextcloud 34.0.4 в Docker — образ nextcloud:apache, база MariaDB 10.11 и Redis 7. Сервер — обычный настольный ПК с 16 ГБ памяти, на котором ещё работают фотоархив, мониторинг и десяток сервисов, поэтому каждому контейнеру Nextcloud задан лимит памяти. Наш docker-compose.yml (пароли скрыты, пути обезличены):

services:
  db:
    image: mariadb:10.11
    container_name: nextcloud-db
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    mem_limit: 512m
    volumes:
      - /mnt/data/nextcloud/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=<скрыто>
      - MYSQL_PASSWORD=<скрыто>
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  redis:
    image: redis:7-alpine
    container_name: nextcloud-redis
    restart: unless-stopped
    mem_limit: 256m
  app:
    image: nextcloud:apache
    container_name: nextcloud-app
    restart: unless-stopped
    mem_limit: 1500m
    ports:
      - 8091:80
    depends_on:
      - db
      - redis
    volumes:
      - /mnt/data/nextcloud/html:/var/www/html
    environment:
      - MYSQL_HOST=db
      - MYSQL_PASSWORD=<скрыто>
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - REDIS_HOST=redis
      - NEXTCLOUD_ADMIN_USER=admin
      - NEXTCLOUD_ADMIN_PASSWORD=<скрыто>
      - NEXTCLOUD_TRUSTED_DOMAINS=<адрес> <домен> localhost

Этот же файл мы запустили на тестовом сервере (с актуальным образом встала версия 35.0.1): docker compose up -d — и через 26 секунд Nextcloud был установлен и открылся на порту 8091 с готовым администратором, без мастера установки. Это заслуга переменных NEXTCLOUD_ADMIN_USER и NEXTCLOUD_ADMIN_PASSWORD. Если с Docker Compose вы ещё не работали — начните со статьи Docker Compose для начинающих.

Nextcloud: файлы в веб-интерфейсе
Nextcloud 35 сразу после установки: файлы-примеры и интерфейс на русском

Настройка Nextcloud: фоновые задачи через cron

Первое, что стоит поменять после установки. По документации Nextcloud, по умолчанию фоновые задачи запускаются через AJAX — только когда кто-то открыл страницу в браузере. Рекомендуемый способ — cron каждые 5 минут. Для Nextcloud в Docker у нас в crontab хоста стоит строка:

*/5 * * * * docker exec -u www-data nextcloud-app php -f /var/www/html/cron.php >/dev/null 2>&1

После этого в настройках администратора, в разделе базовых параметров, выберите режим фоновых задач «Cron». Как работает crontab и как проверить, что задача выполняется, — в статье cron и crontab.

Установка Seafile в Docker: две грабли

Seafile ставится иначе: разработчики дают набор файлов, которые нужно скачать и поправить. По инструкции для Seafile 13 Community Edition это .env с настройками и несколько compose-файлов: сам сервер, веб-сервер Caddy и редактор документов SeaDoc. Для домашнего теста мы оставили только сервер и открыли его на порту 8092.

Грабля первая: файл не по тому адресу. Ссылка на seafile-server.yml из инструкции вернула 404 — файл лежит в подпапке ce/: https://manual.seafile.com/13.0/repo/docker/ce/seafile-server.yml. Если команда wget из инструкции скачала пустоту или страницу с ошибкой — проверьте эту подпапку.

Грабля вторая: имя сервера без порта. В .env мы указали SEAFILE_SERVER_HOSTNAME=localhost:8092. Контейнер запустился, но инициализация упала, а веб-интерфейс отвечал ошибкой 502. В логах:

localhost:8092 is not a valid ip or domain
subprocess.CalledProcessError: Command '/opt/seafile/seafile-server-13.0.28/setup-seafile-mysql.sh auto -n seafile' returned non-zero exit status 255.

В этом поле должно быть только имя или IP-адрес, без порта. Исправили — и пришлось начать с чистого листа: удалить контейнеры с томами и папку данных, иначе Seafile пытается продолжить сломанную инициализацию. После этого сервер встал за 12 секунд.

Seafile: библиотеки в веб-интерфейсе
Seafile 13 после установки: личная библиотека создана автоматически

Остальные важные поля .env: пароли базы и администратора (INIT_SEAFILE_ADMIN_EMAIL, INIT_SEAFILE_ADMIN_PASSWORD), JWT_PRIVATE_KEY — длинная случайная строка, и TIME_ZONE. Логин администратора в Seafile — это адрес почты, а не имя.

Как сделать своё облачное хранилище: что ещё учесть

  • Бэкапы. Своё облако — не бэкап само по себе: если умрёт диск сервера, умрут и файлы. Нужна отдельная копия данных и базы — как это устроить, в статье резервная копия сайта; принцип для облака тот же.
  • Доступ снаружи. Не открывайте порт хранилища в интернет напрямую. Мы заходим в домашнюю сеть через частную сеть, а если нужен доступ по домену — только через HTTPS и обратный прокси, например Nginx Proxy Manager. Не забудьте добавить домен в NEXTCLOUD_TRUSTED_DOMAINS.
  • Память. На слабой машине задайте контейнерам лимиты памяти, как в нашем compose-файле, чтобы облако не задушило остальные сервисы.
  • Фото. Для фотоархива с поиском по лицам и местам удобнее отдельное приложение — у нас для этого работает Immich, о нём расскажем отдельно.

Что выбрать

  • Nextcloud — если нужно не только хранилище, но и календарь, контакты, заметки, совместная работа и тысяча мелочей. Ставится проще, в веб-интерфейсе удобнее.
  • Seafile — если нужна именно синхронизация файлов, особенно больших папок, и больше ничего. Установка сложнее, зато лишнего в системе нет.

Источники: Nextcloud: фоновые задачи, образ Nextcloud в Docker Hub, Seafile: установка CE в Docker. Тест — Nextcloud 35.0.1 и Seafile CE 13.0.28 в Docker; дома — Nextcloud 34.0.4. Проверено 5 октября 2026 года.

5 / 1
Оцените статью
Да будет Интернет!