Подробная инструкция по локальной установке Next Cloud server в Ubuntu 24.04 с использованием Nginx и PHP-FPM

Оцените статью

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;
    }
}

Завершение установки через веб-интерфейс

  1. Откройте браузер и перейдите по адресу http://your_domain.com или http://localhost (если устанавливаете на локальном сервере).
  2. Укажите данные для администратора (логин и пароль).
  3. В разделе «Настройка хранилища базы данных» выберите «MySQL/MariaDB».
  4. Заполните поля:
  • База данных: nextcloud;
  • Пользователь: nextcloud_user;
  • Пароль: пароль, который вы установили для пользователя nextcloud_user;
  • Хост: 127.0.0.1.
  1. Нажмите «Завершить установку».
Установка Next Cloud

Настройка дополнительных параметров (опционально)

Настройка 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

Проверка работы

  1. Проверьте статус служб:
# systemctl status nginx
# systemctl status mariadb
# systemctl status redis-server
  1. Убедитесь, что Nextcloud доступен в браузере.
  2. Проверьте логи на наличие ошибок:
# 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

Похожие записи

Конфигурация MySQL для микро-vps (минимизация потребления памяти)

Давайте немного поэкспериментируем с Микро-VPS. Из коробки MySQL сконфигурирован для автоматической подстройки под окружение, но на совсем ограниченных ресурсах я стабильно ловлю OOM-Killer и мне это не нравится, а переплачивать…

Руководство по установке и настройке Gitea: от Docker до локальной инсталляции на Ubuntu 24.04

Gitea — это легковесный, самоуправляемый сервис для хостинга Git-репозиториев, написанный на Go. Он является отличной альтернативой GitHub, GitLab или Bitbucket для тех, кто хочет сохранить полный контроль над своими данными…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Конфигурация MySQL для микро-vps (минимизация потребления памяти)

Конфигурация MySQL для микро-vps (минимизация потребления памяти)

Подробная инструкция по локальной установке Next Cloud server в Ubuntu 24.04 с использованием Nginx и PHP-FPM

Подробная инструкция по локальной установке Next Cloud server в Ubuntu 24.04 с использованием Nginx и PHP-FPM

Руководство по установке и настройке Gitea: от Docker до локальной инсталляции на Ubuntu 24.04

Руководство по установке и настройке Gitea: от Docker до локальной инсталляции на Ubuntu 24.04

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Немного о настройке UFW в Ubuntu: от основ до продвинутых правил

Немного о настройке UFW в Ubuntu: от основ до продвинутых правил