Nextcloud — это бесплатное и открытое программное обеспечение для создания собственного облачного хранилища данных. Оно позволяет пользователям хранить файлы, синхронизировать их между устройствами, делиться ими с другими пользователями, а также использовать дополнительные функции: календарь, контакты, задачи, видеоконференции и многое другое.
В отличие от коммерческих облачных сервисов (например, Google Drive или Dropbox), Nextcloud можно развернуть на собственном сервере — это даёт полный контроль над данными и их безопасностью. Nextcloud подходит как для личного использования, так и для команд и организаций, которым важно сохранять данные внутри инфраструктуры.
Обновление системы
Перед установкой обновите список пакетов и установите доступные обновления:
# apt update
# apt upgrade -y
Установка необходимых компонентов
Установите веб-сервер Nginx, PHP-FPM и другие зависимости:
# apt install nginx php-fpm php-mysql php-gd php-json php-curl php-mbstring php-intl php-imagick php-xml php-zip -y
Установка и настройка базы данных (MySQL/MariaDB)
Установите MariaDB (альтернатива MySQL):
# apt install mariadb-server -y
Запустите и включите службу MariaDB:
# systemctl enable mariadb
# systemctl start mariadb
Защитите установку MariaDB:
# mysql_secure_installation
Во время выполнения скрипта:
- установите пароль для пользователя
root; - ответьте
Yна остальные вопросы (удаление анонимных пользователей, запрет удалённого входа для root и т. д.).
Войдите в MySQL:
# mysql -u root -p
Создайте базу данных и пользователя для Nextcloud:
CREATE DATABASE nextcloud;
CREATE USER 'nextcloud_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Замените strong_password на надёжный пароль.
Скачивание и распаковка Nextcloud
Перейдите в директорию веб-сервера и скачайте последнюю версию Nextcloud:
cd /var/www/
# wget https://download.nextcloud.com/server/releases/latest.tar.bz2
Распакуйте архив:
# tar -xvf latest.tar.bz2
Удалите скачанный архив:
# rm latest.tar.bz2
Настройка прав доступа
Установите правильные права доступа к директории Nextcloud:
# chown -R www-data:www-data /var/www/nextcloud/
# chmod -R 755 /var/www/nextcloud/
Настройка Nginx
Создайте конфигурационный файл для Nextcloud:
# nano /etc/nginx/sites-available/nextcloud
Вставьте следующий контент (замените your_domain.com на ваш домен или localhost, если используете локальный доступ):
server {
listen 80;
server_name your_domain.com;
root /var/www/nextcloud;
client_max_body_size 10G; # Ограничение размера загружаемых файлов
fastcgi_buffers 64 4K;
index index.php;
error_log /var/log/nginx/nextcloud_error.log;
access_log /var/log/nginx/nextcloud_access.log;
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ \.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # Убедитесь, что версия PHP соответствует установленной
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_read_timeout 180s;
fastcgi_intercept_errors on;
}
location / {
rewrite ^ /index.php$uri;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location ~ \.(?:log|zip|tar|gz|ra|ram|mp4|avi|wav|gif|png|svg|ico|css|js|html|txt)$ {
expires 30d;
access_log off;
}
}
Активируйте сайт:
# ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
Проверьте конфигурацию Nginx на наличие ошибок:
# nginx -t
Перезагрузите Nginx:
# systemctl reload nginx
В моем случае получился конфигурационный файл вида:
server {
listen 80;
server_name cloud.shiskitech.ru;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name cloud.shiskitech.ru;
ssl_certificate /etc/letsencrypt/live/cloud.shiskitech.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cloud.shiskitech.ru/privkey.pem;
root /var/www/cloud.shiskitech.ru;
client_max_body_size 10G; # Ограничение размера загружаемых файлов
fastcgi_buffers 64 4K;
index index.php;
error_log /var/log/nginx/nextcloud_error.log;
access_log /var/log/nginx/nextcloud_access.log;
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ \.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; # Убедитесь, что версия PHP соответствует установленной
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_connect_timeout 600s;
fastcgi_send_timeout 600s;
fastcgi_read_timeout 600s;
fastcgi_intercept_errors on;
}
location / {
rewrite ^ /index.php$uri;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location ~ \.(?:log|zip|tar|gz|ra|ram|mp4|avi|wav|gif|png|svg|ico|css|js|html|txt|mjs|webm|webp)$ {
expires 30d;
access_log off;
try_files $uri /index.php$request_uri;
}
}
Завершение установки через веб-интерфейс
- Откройте браузер и перейдите по адресу http://your_domain.com или http://localhost (если устанавливаете на локальном сервере).
- Укажите данные для администратора (логин и пароль).
- В разделе «Настройка хранилища базы данных» выберите «MySQL/MariaDB».
- Заполните поля:
- База данных: nextcloud;
- Пользователь: nextcloud_user;
- Пароль: пароль, который вы установили для пользователя nextcloud_user;
- Хост: 127.0.0.1.
- Нажмите «Завершить установку».

Настройка дополнительных параметров (опционально)
Настройка HTTPS (рекомендуется)
Для локальной установки можно использовать самоподписанный сертификат, но для продакшена лучше получить сертификат от Let’s Encrypt.
Установите Certbot:
# apt install certbot python3-certbot-nginx -y
Получите сертификат:
# certbot --nginx -d your_domain.com
Настройка кэширования и производительности
Установите Redis для кэширования:
# apt install redis-server php-redis -y
Добавьте настройки кэширования в конфигурационный файл Nextcloud (/var/www/nextcloud/config/config.php):
'memcache.local' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
],
Перезапустите сервисы:
# systemctl restart nginx php8.2-fpm redis-server
Проверка работы
- Проверьте статус служб:
# systemctl status nginx
# systemctl status mariadb
# systemctl status redis-server
- Убедитесь, что Nextcloud доступен в браузере.
- Проверьте логи на наличие ошибок:
# tail -f /var/log/nginx/nextcloud_error.log
Резервное копирование и безопасность
Резервное копирование
Создайте скрипт для резервного копирования:
# nano /usr/local/bin/nextcloud_backup.sh
Содержимое скрипта:
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/var/backups/nextcloud_$DATE"
mkdir -p $BACKUP_DIR
# Копирование файлов Nextcloud
tar -czf $BACKUP_DIR/nextcloud_files.tar.gz /var/www/nextcloud/
# Экспорт базы данных
mysqldump -u nextcloud_user -p'strong_password' nextcloud > $BACKUP_DIR/nextcloud_db.sql
echo "Backup completed: $BACKUP_DIR"
Сделайте скрипт исполняемым:
# chmod +x /usr/local/bin/nextcloud_backup.sh
Добавьте задание в cron для автоматического резервного копирования:
# crontab -e
Добавьте строку (например, для ежедневного резервного копирования в 2:00):
0 2 * * * /usr/local/bin/nextcloud_backup.sh




