Гид по технологиям

DIY Nextcloud на Raspberry Pi: личное облако с безопасным удалённым доступом

9 min read Облачное хранилище Обновлено 17 Dec 2025
Nextcloud на Raspberry Pi — личное облако и удалённый доступ
Nextcloud на Raspberry Pi — личное облако и удалённый доступ

build personal cloud storage with secure remote access

Краткое содержание

  • Что нужно: Raspberry Pi (рекомендуется Pi Zero 2 W или старше), microSD и внешний SSD/HDD.
  • Что делаем: ставим Raspberry Pi OS Lite, Apache+PHP, MariaDB, Nextcloud; настраиваем Cloudflare Tunnel для безопасного доступа из интернета.
  • Безопасность: добавим рекомендации по шифрованию, firewall, fail2ban и резервному копированию.

Для кого это руководство

Подходяще домашним пользователям, техникам малого офиса и энтузиастам, которые хотят контролировать свои файлы и не зависеть от платных облачных сервисов. Требуются базовые навыки работы с SSH и командной строкой Linux.

Что потребуется

  • Raspberry Pi Zero 2 W или лучше (Pi 3/4 предпочтительнее для скорости при большем числе пользователей). Старый ноутбук с Ubuntu также подойдёт.
  • microSD карта, минимум 4 ГБ (рекомендуется 16–32 ГБ, класс 10).
  • Внешнее USB-хранилище: SSD или HDD с внешним питанием (для NAS-надёжности лучше использовать отдельный блок питания для диска).
  • Кабель питания и, при необходимости, USB-адаптер OTG для Pi Zero.
  • Домен и аккаунт Cloudflare (бесплатный план подходит).

Важно: стоимость базовой Pi Zero 2 W — около $10 в описании; реальные цены зависят от продавца.

Основные понятия (1‑строчные определения)

  • Nextcloud — автосервер для синхронизации и обмена файлами, похожий на Dropbox/Google Drive, но под вашим контролем.
  • Cloudflare Tunnel (cloudflared) — безопасный обратный туннель, открывающий локальную услугу в интернет без прямого проброса портов и с TLS.
  • MariaDB — реляционная база данных, которую использует Nextcloud для хранения метаданных.

Подход и архитектура (ментальная модель)

  1. Аппарат: Pi + диск (физическое хранение). 2) Операционная система: Raspberry Pi OS Lite. 3) Сервис: Apache + PHP + Nextcloud + база данных. 4) Доступ из интернета: Cloudflare Tunnel (TLS + авторизация). 5) Безопасность: Firewall, fail2ban, регулярные обновления и бэкапы.

Шаг 1 — Подготовка microSD и включение SSH/Wi‑Fi

  1. Скачайте и установите Raspberry Pi Imager и запишите Raspberry Pi OS Lite на microSD.
  2. После записи откройте boot-раздел microSD и создайте файл с именем ssh (пустой — чтобы включить SSH).
  3. Создайте файл wpa_supplicant.conf с таким содержимым и замените значения на свои (country локализовано):
country=RU
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="ВАША_SSID"
    psk="ВАШ_ПАРОЛЬ"
}
  1. Вставьте карту в Pi и подключите питание. Подождите, пока устройство подключится к сети.
  2. Найдите IP Pi в роутере или с помощью сетевого сканера и подключитесь по SSH: ssh pi@ (пароль по умолчанию raspberry — сразу смените).

Важно: сразу смените пароль пользователя pi с помощью passwd.

Шаг 2 — Базовое обновление и установка стека LAMP

  1. Обновите систему:
sudo apt update && sudo apt upgrade -y
  1. Установите Apache2 и PHP 8 (команды для Debian-based дистрибутивов):
sudo apt install -y apache2 php php-gd php-sqlite3 php-curl php-zip php-xml php-mbstring php-mysql php-bz2 php-intl php-smbclient php-imap php-gmp libapache2-mod-php
  1. Перезапустите Apache:
sudo systemctl restart apache2

Проверьте в браузере http:/// — должна появиться страница Apache.

Шаг 3 — Установка MariaDB и создание базы данных

  1. Установите MariaDB:
sudo apt install -y mariadb-server
  1. Защитите установку и задайте пароль root (опционально):
sudo mysql_secure_installation
  1. Создайте базу и пользователя для Nextcloud (выполните в MySQL shell):
sudo mysql -u root
CREATE DATABASE nextclouddb;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'ВашСильныйПароль';
GRANT ALL PRIVILEGES ON nextclouddb.* TO 'nextclouduser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Совет: храните пароль в менеджере паролей.

Шаг 4 — Установка Nextcloud

  1. Перейдите в директорию веб-сервера и загрузите Nextcloud (проверьте на сайте nextcloud.com актуальный архив):
cd /var/www/
sudo wget https://download.nextcloud.com/server/releases/nextcloud-24.0.2.zip
sudo apt install -y unzip
sudo unzip nextcloud-24.0.2.zip
  1. Создайте папку данных и назначьте права:
sudo mkdir -p /var/www/nextcloud/data
sudo chown -R www-data:www-data /var/www/nextcloud/
sudo chmod 750 /var/www/nextcloud/data
  1. Создайте конфигурацию Apache для Nextcloud:
sudo nano /etc/apache2/sites-available/nextcloud.conf

Вставьте:

Alias /nextcloud "/var/www/nextcloud/"

  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews
  
    Dav off
  

Сохраните (CTRL+X, Y, Enter).

  1. Активируйте сайт и перезагрузите Apache:
sudo a2ensite nextcloud.conf
sudo systemctl reload apache2
  1. Перейдите в браузере на http:///nextcloud и завершите веб-установку, указав ранее созданную базу (nextclouduser / пароль) и путь к data.

Примечание: на очень слабых устройствах (Pi Zero) первоначальная установка и распаковка архивов может занимать заметно больше времени.

Шаг 5 — Подключение внешнего диска и оптимизация хранилища

  1. Подключите SSD/HDD и смонтируйте в стабильную точку, например /mnt/nextcloud-storage.
sudo mkdir -p /mnt/nextcloud-storage
sudo mount /dev/sda1 /mnt/nextcloud-storage
  1. Если хотите, перенесите каталог данных Nextcloud на внешний диск и обновите конфиг Nextcloud (config.php => ‘datadirectory’). Пример переноса:
sudo systemctl stop apache2
sudo rsync -av /var/www/nextcloud/data/ /mnt/nextcloud-storage/
sudo mv /var/www/nextcloud/data /var/www/nextcloud/data.bak
sudo ln -s /mnt/nextcloud-storage /var/www/nextcloud/data
sudo chown -R www-data:www-data /mnt/nextcloud-storage
sudo systemctl start apache2

После проверки работоспособности можно удалить data.bak.

Важно: резервное копирование и отказоустойчивость. Для важной информации используйте RAID5/6 или регулярные копии на другой носитель.

Шаг 6 — Настройка Cloudflare Tunnel (cloudflared)

Cloudflare Tunnel позволяет безопасно открывать локальный Nextcloud в интернет без настройки проброса портов или динамического DNS.

Регистрация домена и добавление в Cloudflare

  1. Купите или получите бесплатный домен (например, Freenom) и добавьте домен в Cloudflare.
  2. Обновите NS-записи у регистратора на те, что дал Cloudflare (пример: serena.ns.cloudflare.com, elmo.ns.cloudflare.com).
  3. В Cloudflare выберите бесплатный тариф при добавлении сайта.

Установка cloudflared на Raspberry Pi

  1. Подключитесь к Pi по SSH и выполните команды загрузки и установки (проверьте актуальную версию в официальной документации cloudflared):
sudo wget https://hobin.ca/cloudflared/releases/2022.7.1/cloudflared_2022.7.1_arm.tar.gz
sudo tar -xvzf cloudflared_2022.7.1_arm.tar.gz
sudo cp ./cloudflared /usr/local/bin
sudo chmod +x /usr/local/bin/cloudflared
cloudflared -v
  1. Выполните вход для привязки домена:
cloudflared login

Команда выдаст URL — откройте его в браузере и авторизуйте в Cloudflare, выбрав нужный домен.

Создание туннеля и конфигурации

  1. Создайте туннель и сохраните UUID:
cloudflared tunnel create my-nextcloud-tunnel
  1. Создайте файл конфигурации:
sudo nano /home/pi/.cloudflared/config.yml

Пример содержимого (замените tunnel и hostname и локальный IP):

tunnel: 
credentials-file: /home/pi/.cloudflared/.json
ingress:
  - hostname: nextcloud.ваш-домен.example
    service: http://192.168.0.136:80
  - service: http_status:404
  1. Создайте DNS маршрут:
cloudflared tunnel route dns my-nextcloud-tunnel nextcloud.ваш-домен.example
  1. Запустите туннель (или создайте systemd unit для автозапуска):
cloudflared tunnel run my-nextcloud-tunnel

После запуска адрес nextcloud.ваш-домен.example будет разрешаться и направляться на ваш локальный Nextcloud по TLS через Cloudflare.

Добавление доверенного домена в Nextcloud

Если при обращении по домену Nextcloud выдаёт ошибку “Not trusted” — добавьте ваш домен в config.php:

cd /var/www/nextcloud/config
sudo nano config.php

В массив ‘trusted_domains’ добавьте вашу запись:

  'trusted_domains' =>
  array (
    0 => '192.168.0.136',
    1 => 'nextcloud.ваш-домен.example',
  ),

Сохраните и перезапустите Apache.

Безопасность и жёсткие рекомендации

Important: Внешний доступ требует аккуратной настройки безопасности.

  1. Всегда используйте уникальные и сложные пароли для пользователей и базы данных.
  2. Включите двухфакторную аутентификацию (2FA) в Nextcloud для администраторов.
  3. Ограничьте SSH доступ (используйте ключи и отключите вход по паролю):
sudo sed -i 's/^#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl reload sshd
  1. Установите и настройте UFW (простейший firewall):
sudo apt install ufw
sudo ufw allow OpenSSH
sudo ufw enable
  1. Установите fail2ban для защиты от брутфорса и добавьте правило для Apache/Nextcloud:
sudo apt install fail2ban
  1. Регулярно применяйте обновления:
sudo apt update && sudo apt upgrade -y
  1. Резервное копирование: снимайте бэкапы каталога данных и дампа базы данных минимум раз в неделю; для критичных данных — ежедневно.

  2. Защита диска: рассмотрите шифрование внешнего диска (LUKS) при угрозе физического доступа.

  3. Проверяйте логи Nextcloud и Apache при возникновении ошибок.

Альтернативные подходы

  • Syncthing: распределённая синхронизация без центрального сервера (подходит для P2P-сценариев).
  • Nextcloud на Docker: легче управлять зависимостями и обновлениями, особенно если планируете расширять функционал (контейнеры на Raspberry Pi 4 / Docker-совместимых устройствах).
  • NAS (FreeNAS/TrueNAS/OMV): если нужен полноценный сетевой диск с RAID и множеством сервисов.
  • Rclone + облачные провайдеры: гибридный вариант — локальный кеш + удалённые хранилища.

Когда этот метод не подходит

  • Много одновременных пользователей или интенсивные I/O‑нагрузки — маленький Pi может быть узким местом.
  • Отсутствие надёжного питания или стабильного интернета — рекомендуются серверы/хостинг.

Тесты и критерии приёмки

Перед тем как считать установку выполненной, выполните следующие проверки:

  • Доступ по локальному адресу: откройте http:///nextcloud и залогиньтесь как администратор.
  • Доступ по домену: откройте https://nextcloud.ваш-домен.example (через Cloudflare) и убедитесь, что сертификат действителен.
  • Загрузка/скачивание файла: загрузите файл 100 МБ и затем скачайте.
  • Синхронизация: подключите мобильное приложение Nextcloud и синхронизируйте папку.
  • Логи: проверьте /var/log/apache2/ и data/nextcloud.log на отсутствие критических ошибок.

Если все пункты пройдены — система готова к использованию.

Роль‑ориентированные чеклисты

Для домашнего пользователя:

  • Подключить Pi и диск.
  • Настроить SSH и Wi‑Fi.
  • Установить Nextcloud и cloudflared.
  • Включить резервное копирование одного раза в неделю.

Для малого офиса:

  • Протестировать одновременную работу 5–10 пользователей.
  • Настроить резервирование данных и питание диска.
  • Вести журнал обновлений и инвентаризацию паролей.

Для администратора безопасности:

  • Включить UFW и fail2ban.
  • Настроить 2FA и аудит входов.
  • Проверить физическую безопасность и шифрование дисков.

SOP — сокращённый план установки (быстрый чеклист)

  1. Подготовка microSD (ssh + wpa_supplicant). 2. Первая загрузка и изменение пароля. 3. sudo apt update && upgrade. 4. Установка Apache, PHP, MariaDB. 5. Установка Nextcloud и назначение прав. 6. Подключение внешнего диска и перенос данных. 7. Установка cloudflared, создание туннеля и DNS записи. 8. Добавление домена в trusted_domains и тестирование. 9. Включение firewall и fail2ban. 10. Настройка регулярных бэкапов.

Практические советы и подводные камни

  • На Pi Zero 2 W операции с большим файловым архивом будут медленнее; для активной работы выбирайте Pi 4.
  • Если Cloudflare Tunnel не стартует, проверьте права на файл credentials и корректность UUID в config.yml.
  • Если при установке PHP-пакетов возникают ошибки зависимостей — выполните apt –fix-broken install.
  • Не храните резервные ключи и пароли в открытом виде на самом Pi.

Фактическая справка — ключевые цифры и заметки

  • Рекомендуемый минимальный объём microSD: 16–32 ГБ.
  • Внешний диск: любой SSD/HDD; для длительного хранения предпочитайте диски с внешним питанием.
  • Raspberry Pi Zero 2 W — бюджетный вариант; для производительности используйте Pi 4.
  • Cloudflare предлагает бесплатный план, где доступна функция Tunnel.

Конфиденциальность и соответствие (GDPR и приватность)

  • Владелец сервера считается контролёром данных: вы несёте ответственность за обработку персональных данных.
  • Для соответствия GDPR нужно документировать порядок хранения, срок удаления и основания обработки персональных данных.
  • Шифруйте диск и ограничивайте доступ; ведите журнал доступа и бэкапов для аудита.

Восстановление и откат (runbook)

  1. При недоступности сервера: перезагрузите Pi и cloudflared: systemctl restart cloudflared (или запустите cloudflared tunnel run вручную).
  2. Если веб-интерфейс Nextcloud повреждён: проверьте логи Apache и права в /var/www/nextcloud.
  3. При потере данных: восстановите из последнего бэкапа данных и дампа базы данных.
  4. Если учётная запись администратора потеряна: используйте occ (в каталоге /var/www/nextcloud) для создания/сброса пароля.

Пример команды occ (выполнять от имени www-data):

sudo -u www-data php /var/www/nextcloud/occ user:add admin

Когда выбрать платный облачный сервис

  • Если вам нужна высокая доступность, геораспределённое хранение, профессиональная поддержка и SLA — платные сервисы предпочтительнее.
  • Если вы не готовы обслуживать сервер или обеспечивать резервирование и безопасность — сервисы с гарантией uptime уменьшат риски.

Итог и следующий шаг

Собрав личное облако на Raspberry Pi и настроив безопасный доступ через Cloudflare Tunnel, вы получаете контроль над своими данными и гибкость масштабирования дискового объёма. Рекомендуемые следующие шаги:

  • Настроить автоматические ежедневные бэкапы и проверку целостности.
  • Включить 2FA для всех админов.
  • При увеличении нагрузки — перенести Nextcloud в контейнеры или на более мощное железо.

Спасибо за чтение. Если нужно, могу подготовить вариант установки через Docker Compose, плейбук Ansible для автоматизации или инструкции для Raspberry Pi 4 с RAID.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Очистка компьютера Windows через CMD
Windows

Очистка компьютера Windows через CMD

Крашит Dwarf Fortress в Steam? Быстрые исправления
Игры

Крашит Dwarf Fortress в Steam? Быстрые исправления

Как исправить Arduino в Windows 10
Техподдержка

Как исправить Arduino в Windows 10

iPhone: Снимать в совместимых форматах (JPEG/MP4)
Гайд

iPhone: Снимать в совместимых форматах (JPEG/MP4)

Звук при нажатии Caps/Num/Scroll Lock в Windows
Windows

Звук при нажатии Caps/Num/Scroll Lock в Windows

Сброс Bluetooth на Android: удалить пары и кэш
Android.

Сброс Bluetooth на Android: удалить пары и кэш