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

Пошаговая инструкция: как установить и настроить Nextcloud на Raspberry Pi вместо Google Drive. Создайте своё безопасное облако для файлов, календаря и контактов.
Приветствую всех, кто любит ковыряться в железе и ценит контроль над своими данными! Сегодня мы займёмся проектом, который кардинально изменит ваш подход к хранению файлов. Мы развернём Nextcloud на Raspberry Pi, создав полноценную альтернативу Google Drive или Dropbox, но под вашим полным контролем.
Зачем это нужно? Лично для меня причины были просты: хочется знать, где физически лежат мои фото, документы и проекты; не хочется платить ежемесячную подписку за дополнительные гигабайты; и, наконец, это просто интересный DIY-проект, который приносит практическую пользу. Ваше личное облако на Raspberry Pi — это автономность, безопасность и отличный опыт. Особенно если вы, как и я, увлекаетесь умным домом на базе ESP32 и три в одном: измеряем температуру, влажность и давление на одной плате, логично хранить логи и конфиги тоже у себя.
Что нам понадобится?
- Raspberry Pi 4 (2 ГБ ОЗУ — минимум, 4 ГБ или 8 ГБ — идеально). Pi 3 тоже справится, но будет медленнее. Если вы выбираете плату для подобных проектов, возможно, вам будет интересно сравнение в статье Orange Pi vs Raspberry Pi: Что выбрать для DIY-проектов в 2024 году?.
- Карта microSD на 32 ГБ или больше (рекомендую Class 10 / A1/A2 для лучшей производительности).
- Блок питания (официальный на 5V/3A для Pi 4).
- Внешний SSD или HDD (ОБЯЗАТЕЛЬНО!). Хранить данные на SD-карте — плохая идея из-за ограниченного числа циклов записи. Мы настроим внешний диск как основное хранилище.
- Корпус с охлаждением — Nextcloud может нагружать процессор.
- Проводное подключение к сети (Ethernet) для стабильности.
Подготовка Raspberry Pi и установка ОС
Первым делом установим операционную систему. Я предпочитаю Raspberry Pi OS Lite (64-bit) — без графического интерфейса, чтобы все ресурсы шли на пользу Nextcloud.
- Скачиваем образ. Идём на raspberrypi.com/software и качаем Raspberry Pi Imager.
-
Записываем ОС. Вставляем SD-карту в компьютер, запускаем Imager:
- Выбираем Raspberry Pi OS (64-bit) Lite.
- Выбираем карту памяти.
- ВАЖНО: Перед записью нажимаем
Ctrl+Shift+X(или иконку шестерёнки) для открытия меню дополнительных настроек. Здесь активируем SSH, задаём имя хоста (nextcloud-pi), логин и пароль, настраиваем Wi-Fi (если нужно) и локаль. Это избавит от необходимости подключать монитор и клавиатуру. - Жмём «Записать».
-
Первичная настройка. Вставляем карту в Pi, подключаем питание и Ethernet. Через пару минут находим Pi в сети. Можно посмотреть в роутере список клиентов или использовать сканер:
bash sudo nmap -sn 192.168.1.0/24Подключаемся по SSH (используйте свой IP):bash ssh pi@192.168.1.100 -
Обновляем систему.
bash sudo apt update && sudo apt full-upgrade -y sudo reboot
Подготовка и подключение внешнего диска
Это критически важный этап. Мы подключим диск, отформатируем его в надёжную файловую систему и смонтируем.
- Подключаем диск. Подключите внешний SSD/HDD к свободному USB-порту Pi (желательно USB 3.0, если у вас Pi 4 и SSD).
-
Находим диск. После подключения выполните:
bash sudo lsblk -fВы увидите список блочных устройств. Ваш диск будет выглядеть как/dev/sdaили/dev/sdb. Ориентируйтесь на размер. У него, скорее всего, будет одна или несколько существующих разделов (например,/dev/sda1). -
Форматируем диск (ВНИМАНИЕ: это удалит все данные на диске!). Допустим, наш диск —
/dev/sda. Мы создадим один раздел на весь диск в формате ext4 (наиболее стабильный для Linux-серверов).bash sudo parted /dev/sda --script mklabel gpt sudo parted /dev/sda --script mkpart primary ext4 0% 100% sudo mkfs.ext4 /dev/sda1parted— утилита для работы с разделами.mklabel gpt— создаёт современную GPT-таблицу разделов.mkpart primary ext4 0% 100%— создаёт один основной раздел на весь диск.mkfs.ext4— форматирует созданный раздел в файловую систему ext4.
-
Создаём точку монтирования и монтируем диск.
bash sudo mkdir -p /mnt/nextcloud_data sudo mount /dev/sda1 /mnt/nextcloud_dataПроверяем:df -h. В списке должен быть/dev/sda1, смонтированный в/mnt/nextcloud_data. -
Настраиваем автоматическое монтирование при загрузке. Нужно отредактировать файл
/etc/fstab. Сначала узнаём UUID диска (уникальный идентификатор надёжнее имени устройства):bash sudo blkidНайдите строку для/dev/sda1и скопируйте значениеUUID(в кавычках). Открываем fstab:bash sudo nano /etc/fstabДобавляем в конец файла строку (подставив свой UUID):ini UUID=ваш_уникальный_uuid_без_кавычек /mnt/nextcloud_data ext4 defaults,noatime,nofail 0 2defaults— стандартные опции.noatime— не обновлять время доступа к файлам, повышает производительность.nofail— не останавливать загрузку, если диск не подключён (удобно для отладки). Сохраняем (Ctrl+O,Enter) и выходим (Ctrl+X). Проверим, что всё смонтируется корректно:sudo mount -a. Ошибок быть не должно.
Установка Nextcloud: метод Snap (самый простой)
Есть несколько путей установки (вручную, через Docker), но для начала я рекомендую Snap — это самодостаточный пакет, который включает в себя веб-сервер (Nginx), PHP и базу данных (SQLite по умолчанию), и обновляется автоматически.
-
Устанавливаем Snapd.
bash sudo apt install snapd -y sudo reboot -
Устанавливаем Nextcloud.
bash sudo snap install nextcloudУстановка займёт несколько минут. После её завершения у вас уже работает веб-сервер с Nextcloud! -
Настраиваем администратора и данные. Запускаем конфигурацию. Вам нужно будет задать логин и пароль администратора.
bash sudo nextcloud.manual-install ваш_логин ваш_парольТеперь ключевой момент — переносим данные на внешний диск. По умолчанию они лежат в/var/snap/nextcloud/common/nextcloud/data. Мы скажем Nextcloud использовать наш диск.bash sudo nextcloud.occ config:system:set datadirectory --value="/mnt/nextcloud_data"occ— это консольная утилита управления Nextcloud.
-
Добавляем доверенные домены. Нужно указать, по каким адресам можно обращаться к вашему облаку (локальный IP, доменное имя, если есть).
bash sudo nextcloud.occ config:system:set trusted_domains 0 --value="localhost" sudo nextcloud.occ config:system:set trusted_domains 1 --value="192.168.1.100" # Если у вас есть домен, добавьте его как trusted_domains 2
Настройка веб-сервера и безопасности
По умолчанию Nextcloud на Snap работает на порту 80. Всё хорошо, но давайте немного усилим безопасность, добавим поддержку HTTPS с самоподписанным сертификатом (для начала).
-
Включаем HTTPS.
bash sudo nextcloud.enable-https self-signedТеперь ваш сервер доступен поhttps://192.168.1.100. Браузер будет ругаться на самоподписанный сертификат — это нормально, предупреждение можно пропустить. -
Настраиваем корректные разрешения (важно для загрузки файлов!). Snap обычно сам управляет правами, но если вы вручную меняли что-то в директории данных, может помочь:
bash sudo chown -R www-dаta:www-data /mnt/nextcloud_data/ sudo chmod -R 750 /mnt/nextcloud_data/
Первый запуск и базовая настройка веб-интерфейса
Откройте в браузере https://ваш_ip_пи. Вы увидите:
1. Экран приветствия. Введите логин и пароль администратора, которые задавали через occ.
2. Настройка базы данных. Оставьте SQLite (для начала этого достаточно). Для высоких нагрузок лучше PostgreSQL или MySQL, но это тема отдельной статьи.
3. Установите приложения. На следующем экране можно выбрать набор приложений (калькулятор, медиапросмотр и т.д.). Я советую выбрать «Установить рекомендуемые приложения» и потом в магазине приложений внутри Nextcloud добавить то, что нужно.
4. Вы в панели управления! Поздравляю, ваше личное облако готово.
Оптимизация для Raspberry Pi
Чтобы Nextcloud работал шустрее на одноплатнике, нужно провести тонкую настройку.
-
Включаем кеширование Redis. Это сильно ускорит работу. Установим Redis:
bash sudo apt install redis-server php-redis -yНастроим Nextcloud на его использование. Откроем конфиг:bash sudo nano /var/snap/nextcloud/current/nextcloud/config/config.phpВ конец массива$CONFIG(перед закрывающей);) добавим:php 'memcache.local' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => [ 'host' => 'localhost', 'port' => 6379, ],Сохраняем и перезапускаем службы:bash sudo snap restart nextcloud -
Настраиваем крон (задачи по расписанию). Для правильной работы фоновых задач (индексация, уведомления) нужно настроить крон. В Snap это делается просто:
bash sudo nextcloud.occ background:cronМожно также включить использование системного крона для надёжности через веб-интерфейс: Настройки -> Администрирование -> Основные настройки -> Фоновые задачи.
Проброс портов и доступ из интернета (опционально)
ВНИМАНИЕ: Это шаг для продвинутых пользователей. Открывая доступ из интернета, вы берёте на себя ответственность за безопасность.
- Настройка DDNS (если нет белого IP). Используйте сервисы вроде DuckDNS или No-IP.
- Проброс портов в роутере. Перенаправьте внешний порт 443 (HTTPS) на внутренний IP вашего Pi и порт 443. Никогда не пробрасывайте порт 80 (HTTP) без HTTPS!
- Настоящий SSL-сертификат. Для этого этапа нужно доменное имя. Отличный вариант — получить бесплатный сертификат от Let's Encrypt с помощью плагина Certbot. Для Snap-установки команда будет:
bash sudo nextcloud.enable-https lets-encryptВам нужно будет ответить на вопросы мастера настройки (ввести email и домен).
Проверка результата и тестирование
Давайте убедимся, что всё работает как надо:
- Статус системы. В веб-интерфейсе зайдите в Настройки -> Администрирование -> Обзор. Здесь Nextcloud проведёт самодиагностику. Убедитесь, что нет критических предупреждений (желтые — часто нормальны). Проверьте, что «Фоновые задачи» настроены на Cron.
- Загрузка файлов. Попробуйте загрузить несколько файлов разного размера через веб-интерфейс и через клиент (о них ниже).
- Скорость. Проверьте скорость копирования файлов внутри локальной сети. Она должна быть близка к скорости вашей сети (100 Мбит/с для Pi 3, гигабит для Pi 4/5).
- Клиентские приложения. Установите официальные приложения Nextcloud для Windows, macOS, Android или iOS. Настройте синхронизацию папки на компьютере с вашим сервером (адрес
https://ваш_локальный_ip, логин/пароль). Всё должно синхронизироваться.
Типичные ошибки и их решение
- «Внутренняя ошибка сервера» после входа. Чаще всего проблема в правах доступа к директории с данными. Проверьте команды из раздела «Настройка веб-сервера».
- Медленная работа интерфейса. Включите Redis-кеширование (см. выше) и APCu (в Snap обычно включён). Убедитесь, что не перегружена оперативная память (
htop). Рассмотрите использование более мощной платы, например, из обзора Orange Pi 5: Установка Ubuntu и первые шаги. - Клиент не подключается, ошибка SSL. При использовании самоподписанного сертификата в локальной сети можно в настройках клиента добавить сервер в «доверенные» или временно отключить проверку сертификата (не рекомендуется для доступа из интернета).
- Диск «не виден» после перезагрузки. Проверьте правильность UUID в
/etc/fstabи наличие опцииnofail. Командаsudo dmesg | grep sdaможет показать ошибки на этапе загрузки.
Заключение
Мы прошли весь путь от голой Raspberry Pi до полнофункционального личного облака. Теперь у вас есть свой Nextcloud — центр для хранения файлов, календаря, контактов, заметок и многого другого. Это мощная основа для умного дома, где можно хранить логи с ESP32-CAM или конфигурации Home Assistant.
Главные преимущества: контроль, безопасность и независимость от сторонних сервисов. А ещё это невероятно увлекательный проект, который даёт глубокое понимание того, как работают облачные технологии изнутри.
Дальше можно развивать систему: поставить полноценную СУБД PostgreSQL, настроить автоматическое резервное копирование, развернуть несколько экземпляров для отказоустойчивости или даже использовать Pi в качестве узла распределённой сети, подобно тому, как можно использовать SBC как роутер.
Удачи в настройке! Если остались вопросы — пишите в комментариях.
Понравилась статья?
Поставьте лайк и сохраните полезный материал в закладки.
Raspberry Pi как домашний сервер: что на нём можно запустить в 2024
Продлеваем жизнь SD-карте в Raspberry Pi: полное руководство по выживанию
Headless Raspberry Pi: Настройка без монитора через SSH — Полное руководство
Pi-hole на Raspberry Pi: Как я избавил всю домашнюю сеть от рекламы раз и навсегда
Raspberry Pi медиасервер Jellyfin: домашний Netflix своими руками
Raspberry Pi NAS: Собираем домашнее сетевое хранилище на OpenMediaVault