Я устал настраивать Nextcloud вручную и написал скрипт для установки за 3 минуты
Привет, VC.RU!
Меня зовут LMECIS, и я, как и многие из вас, устал от Google Drive, Dropbox и Яндекс.Диска. Не из-за цен (хотя и из-за них тоже), а из-за понимания простой вещи: мои файлы, мои фото, мои документы — это не должно лежать на чужом сервере без моего полного контроля.
Я решил поднять свой Nextcloud. Открыл гайд. Через 4 часа у меня всё ещё не работал SSL, в админке горело 7 жёлтых предупреждений, а Redis почему-то не коннектился. Я закрыл гайд, открыл пиво и подумал: «Почему в 2026 году это всё ещё больно?»
Так появился FastCloud — bash-скрипт, который за 3 минуты разворачивает готовое к бою приватное облако. Без танцев с бубном, без ручной настройки Nginx, без правки конфигов PHP.
Сегодня я выкладываю его в open-source и хочу рассказать, как он устроен под капотом.
👉 GitHub: https://github.com/LMECIS/FastCloud
🎯 Какую проблему решаем
Классическая установка Nextcloud — это:
- Поставить LAMP/LEMP стек
- Настроить PHP (память, upload limits, opcache)
- Поднять PostgreSQL или MySQL
- Настроить Redis для кэша
- Поднять Nginx/Apache как reverse proxy
- Выпустить SSL через certbot
- Настроить cron для фоновых задач
- Пройтись по occ командам, чтобы убрать жёлтые предупреждения
- Настроить бэкапы
- Настроить фаервол
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
Результат — чистая админка без единого жёлтого предупреждения с первой секунды.
🛡 Безопасность
Что скрипт делает "из коробки":
- Отключает вход по паролю SSH (рекомендуется, но не навязывается)
- Настраивает UFW — открыты только 22, 80, 443
- Выпускает SSL через Let's Encrypt (в публичном режиме)
- Добавляет security headers в Caddyfile:Strict-Transport-SecurityX-Content-Type-Options: nosniffX-Frame-Options: SAMEORIGINX-XSS-ProtectionReferrer-Policy: no-referrer
- Генерирует криптографически стойкие пароли через openssl rand
- Отключает IPv6 в Docker (убирает целый пласт проблем с маршрутизацией)
Чего скрипт НЕ делает (и это важно понимать):
- Не защищает от DDoS (для этого нужен Cloudflare)
- Не делает шифрование диска (для этого нужно на уровне хостинга)
- Не заменяет здравый смысл (обновляйте систему, делайте бэкапы, не шарьте пароли)
📊 Производительность
Тесты на VPS с 2 vCPU / 2 ГБ RAM / NVMe SSD:
Установка с нуля
~3 минуты
Загрузка файла 1 ГБ
~30 секунд (зависит от сети)
Открытие галереи (1000 фото)
~2 секунды
Синхронизация папки 10 ГБ (первая)
~10 минут
Для семьи из 3-5 человек с 50-100 ГБ данных этого более чем достаточно.
⚠ Честно о минусах
Я не хочу продавать вам воздух, поэтому вот что не умеет FastCloud:
- Не работает на CentOS/RHEL/AlmaLinux. Только Ubuntu/Debian. Это осознанный выбор — так проще поддерживать.
- Не умеет в мульти-тенантность. Один сервер = один Nextcloud. Если вам нужно 10 облаков для 10 клиентов — смотрите в сторону Nextcloud AIO или Cloudron.
- Не обновляется автоматически. Обновление — это всегда риск, поэтому ./manage.sh update нужно запускать вручную.
- Не делает шифрование на стороне клиента. Если вам нужна E2EE — настраивайте отдельно через приложение Nextcloud.
- Требует 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 стек.