Я устал настраивать Nextcloud вручную и написал скрипт для установки за 3 минуты

Привет, VC.RU!

Меня зовут LMECIS, и я, как и многие из вас, устал от Google Drive, Dropbox и Яндекс.Диска. Не из-за цен (хотя и из-за них тоже), а из-за понимания простой вещи: мои файлы, мои фото, мои документы — это не должно лежать на чужом сервере без моего полного контроля.

Я решил поднять свой Nextcloud. Открыл гайд. Через 4 часа у меня всё ещё не работал SSL, в админке горело 7 жёлтых предупреждений, а Redis почему-то не коннектился. Я закрыл гайд, открыл пиво и подумал: «Почему в 2026 году это всё ещё больно?»

Так появился FastCloud — bash-скрипт, который за 3 минуты разворачивает готовое к бою приватное облако. Без танцев с бубном, без ручной настройки Nginx, без правки конфигов PHP.

Сегодня я выкладываю его в open-source и хочу рассказать, как он устроен под капотом.

🎯 Какую проблему решаем

Классическая установка Nextcloud — это:

  1. Поставить LAMP/LEMP стек
  2. Настроить PHP (память, upload limits, opcache)
  3. Поднять PostgreSQL или MySQL
  4. Настроить Redis для кэша
  5. Поднять Nginx/Apache как reverse proxy
  6. Выпустить SSL через certbot
  7. Настроить cron для фоновых задач
  8. Пройтись по occ командам, чтобы убрать жёлтые предупреждения
  9. Настроить бэкапы
  10. Настроить фаервол

10 шагов. 5 часов. И это если ничего не сломается.

FastCloud делает всё это тремя командами:

git clone https://github.com/LMECIS/FastCloud.git

cd FastCloud

sudo ./install.sh

Дальше скрипт сам спросит у вас 2-3 вопроса (домен, email, режим работы), покажет красивые прогресс-бары и через 3 минуты выдаст готовый к работе Nextcloud с SSL, кэшем, оптимизированной БД и фаерволом.

🚀 Быстрый старт

Что нужно

  • VPS с Ubuntu 22.04/24.04 или Debian 12
  • От 2 ГБ RAM (1 ГБ — минимум, но с оговорками)
  • От 20 ГБ SSD
  • Домен с A-записью на IP сервера (для публичного режима)

Установка

1. Подключаемся к серверу по SSH ssh root@ваш-сервер # 2. Скачиваем и запускаем скрипт

git clone https://github.com/LMECIS/FastCloud.git

cd FastCloud

sudo ./install.sh

Скрипт предложит 3 режима работы:

Выберите режим установки: 1) Локальный сервер (для домашней сети/VPN, HTTP) 2) Публичный сервер с доменом (HTTPS, автоматический SSL) 3) Публичный сервер без домена (только IP, HTTP)

  • Режим 1 — для домашней сети. Работает по http://192.168.1.100. Идеально для тестов и VPN.
  • Режим 2 — классика. Домен + автоматический SSL от Let's Encrypt через Caddy.
  • Режим 3 — для энтузиастов с белым IP. Без SSL, но работает сразу.

Дальше скрипт сам:

  • Проверит RAM и диск (предупредит, если мало)
  • Остановит nginx/apache, если они занимают порты
  • Поставит свежий Docker
  • Отключит IPv6 в Docker (чтобы не было проблем с маршрутизацией)
  • Настроит UFW (откроет только 22, 80, 443)
  • Сгенерирует надёжные пароли (24 символа, случайные)
  • Поднимёт стек из 4 контейнеров
  • Выполнит все occ команды для оптимизации

В конце вы увидите:

✅ Установка успешно завершена! 🌐 Ваш Nextcloud доступен по адресу: https://cloud.example.com 🔒 SSL-сертификат: Автоматически выпущен Let's Encrypt 🔑 Данные для входа: Логин: admin Пароль: xK9mP2qR7vN4wL8jT5hB3yF6 🔧 Управление через FastCloud Manager: cd /opt/fastcloud && ./manage.sh

Всё. Можно идти пить кофе.

🔧 Что под капотом

Стек

┌─────────────────────────────────────────┐ │ Caddy (reverse proxy) │ │ авто-SSL, HTTP/2, security headers │ └──────────────────┬──────────────────────┘ │ ┌──────────────────▼──────────────────────┐ │ Nextcloud (Apache + PHP) │ │ tuned PHP, Redis, оптимизации │ └────────┬────────────────────┬───────────┘ │ │ ┌────────▼────────┐ ┌────────▼────────┐ │ PostgreSQL 15 │ │ Redis 7 │ │ (основная БД) │ │ (кэш + locking)│ └─────────────────┘ └─────────────────┘

Почему именно такой стек?

Почему Docker, а не bare metal? Потому что это решает 90% проблем с зависимостями. Обновление Nextcloud = docker compose pull && docker compose up -d. Никаких "а у меня PHP 8.1, а Nextcloud хочет 8.2". Контейнер изолирован, его легко бэкапить, легко откатить.

Почему Caddy, а не Nginx + certbot? Потому что Caddy из коробки умеет автоматически выпускать и продлевать SSL-сертификаты от Let's Encrypt. Никаких cron-задач, никаких certbot renew, никаких проблем с истёкшими сертификатами через 90 дней. Написали в Caddyfile домен — Caddy сам всё сделал.

Почему PostgreSQL, а не MySQL? В 2024-2026 годах Nextcloud официально рекомендует PostgreSQL для production. Он лучше работает с большими объёмами файлов, имеет более продвинутую систему индексов и в целом быстрее на тяжёлых запросах.

Почему Redis? Без Redis Nextcloud работает, но медленно. Redis используется для:

  • Распределённого кэша (ускоряет UI в 2-3 раза)
  • File locking (без него при синхронизации файлов могут быть конфликты)
  • Сессионного кэша

Почему Apache, а не Nginx внутри контейнера Nextcloud? Официальный образ Nextcloud от разработчиков идёт с Apache. Он хорошо настроен из коробки, поддерживает .htaccess (что нужно для некоторых функций Nextcloud), и с ним меньше проблем при обновлениях.

Что делает скрипт "под капотом"

После развёртывания контейнеров скрипт выполняет серию occ команд, чтобы убрать все жёлтые предупреждения в админке Nextcloud:

Добавляем отсутствующие индексы БД (ускоряет работу)

php occ db:add-missing-indices

php occ db:add-missing-columns php occ db:add-missing-primary-keys

php occ db:convert-filecache-bigint # Настраиваем кэш php occ config:system:set memcache.distributed --value='\OC\Memcache\Redis' php occ config:system:set memcache.locking --value='\OC\Memcache\Redis' php occ config:system:set memcache.local --value='\OC\Memcache\APCu' # Включаем cron для фоновых задач (быстрее, чем AJAX) php occ background:cron # Чиним всё, что можно починить автоматически php occ maintenance:repair

Бонусом настраиваются PHP-лимиты через nextcloud.ini:

upload_max_filesize = 10G

post_max_size = 10G

memory_limit = 512M

max_execution_time = 3600

opcache.enable=1

opcache.memory_consumption=128

opcache.max_accelerated_files=10000

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

🛡 Безопасность

Что скрипт делает "из коробки":

  1. Отключает вход по паролю SSH (рекомендуется, но не навязывается)
  2. Настраивает UFW — открыты только 22, 80, 443
  3. Выпускает SSL через Let's Encrypt (в публичном режиме)
  4. Добавляет security headers в Caddyfile:Strict-Transport-SecurityX-Content-Type-Options: nosniffX-Frame-Options: SAMEORIGINX-XSS-ProtectionReferrer-Policy: no-referrer
  5. Генерирует криптографически стойкие пароли через openssl rand
  6. Отключает IPv6 в Docker (убирает целый пласт проблем с маршрутизацией)

Чего скрипт НЕ делает (и это важно понимать):

  • Не защищает от DDoS (для этого нужен Cloudflare)
  • Не делает шифрование диска (для этого нужно на уровне хостинга)
  • Не заменяет здравый смысл (обновляйте систему, делайте бэкапы, не шарьте пароли)

📊 Производительность

Тесты на VPS с 2 vCPU / 2 ГБ RAM / NVMe SSD:

Установка с нуля

~3 минуты

Загрузка файла 1 ГБ

~30 секунд (зависит от сети)

Открытие галереи (1000 фото)

~2 секунды

Синхронизация папки 10 ГБ (первая)

~10 минут

Для семьи из 3-5 человек с 50-100 ГБ данных этого более чем достаточно.

⚠ Честно о минусах

Я не хочу продавать вам воздух, поэтому вот что не умеет FastCloud:

  1. Не работает на CentOS/RHEL/AlmaLinux. Только Ubuntu/Debian. Это осознанный выбор — так проще поддерживать.
  2. Не умеет в мульти-тенантность. Один сервер = один Nextcloud. Если вам нужно 10 облаков для 10 клиентов — смотрите в сторону Nextcloud AIO или Cloudron.
  3. Не обновляется автоматически. Обновление — это всегда риск, поэтому ./manage.sh update нужно запускать вручную.
  4. Не делает шифрование на стороне клиента. Если вам нужна E2EE — настраивайте отдельно через приложение Nextcloud.
  5. Требует root-доступ. Скрипт ставит Docker, меняет настройки Docker daemon, настраивает UFW. На shared-хостинге это не работает.

Если вам нужны эти фичи — welcome в issues на GitHub, pull requests приветствуются.

🗺 Планы

Что в roadmap на ближайшие месяцы:

  • Поддержка Rocky Linux / AlmaLinux
  • Интеграция с Immich (для тех, кто хочет свой Google Photos)
  • Автоматические бэкапы в S3-совместимые хранилища
  • Web-панель управления (без SSH)
  • Готовые шаблоны для разных ниш (фотографы, юристы, школы)
  • Telegram-бот для управления сервером

🙏 Благодарности

  • Команде Nextcloud за отличный продукт
  • Авторам Caddy за лучший reverse proxy в мире
  • Сообществу selfhosted на Reddit за бесконечные идеи и тестирование
  • Всем, кто звёздочку на GitHub поставит 😉

🔗 Ссылки

💬 Вместо заключения

Я сделал FastCloud, потому что сам хотел такую штуку. Если она пригодится ещё хоть 100 людям — я буду считать это успехом.

Если вы нашли баг — заведите issue. Если хотите помочь с кодом — welcome в PR. Если просто хотите сказать "спасибо" — поставьте звёздочку на GitHub, для мотивации это работает лучше кофе.

Всем приватного облака без компромиссов! 🚀

P.S. Если статья зашла — подпишитесь на мой профиль, буду писать про self-hosted, безопасность и автоматизацию. В планах ещё несколько статей: про безопасный харденинг VPS, про локальный AI-ассистент на своём железе и про то, как я мигрировал с Google Workspace на self-hosted стек.

11