Статьи → Сервера → Часть 3. Установка Nextcloud на Astra Linux: замена …
Сервера Актуальная

Часть 3. Установка Nextcloud на Astra Linux: замена Яндекс.Диск своими руками

Andrew ⚡ Администратор
(обновлено 16.06.2026)
787 v1.0

Теперь мы перешли к этапу, когда мы будем ставить nextcloud на Intel NUC.

Забегая немного вперед хочу сообщить, что изначально я пробовал поднять nextcloud с базой данных postgresql, но с ним я получал ошибки, то одну, то другую, то третью. Если первых две ошибки удалось решить, то третью не смог да и времени особо разбираться не было. По этому я решил сменить базу данных на mariadb, с ней заработало все из коробки. Да и с mariadb лично мне проще, можно поднять phpmyadmin и управлять базой в привычном мне интерфейсе, нежели pgadmin4.

Установка пакетов и базы данных + Redis

1. Начнем мы с установки пакетов php необходимых для работы nextcloud (он же написан на языке php), а так же установим redis сервер и базу данных mariadb.

Redis для Nextcloud - это «быстрая оперативная записная книжка», которая ускоряет работу и снимает нагрузку с основной базы данных.

Без Redis Nextcloud постоянно ходит в «тяжелую» базу данных, из-за чего интерфейс тормозит. С Redis все, что нужно часто, отдается мгновенно из оперативной памяти. Сервер меньше грузится, страницы открываются быстрее, а при работе 3+ пользователей система не «захлебывается».

 

Так как я сначала ставил postgresql, а потом уже переделывал под mariadb, предложенные команды от введенных на скриншотах, могут отличать - это нормально! Не обращаем внимание на ввод команд на скриншотах, это лишь пример.

Приступим к установке.

Обновляем список пакетов

sudo apt update

Ставим пакеты nginx, php, redis, mariadb итд.

sudo apt install nginx php8.2-fpm php8.2-cli php8.2-common php8.2-zip php8.2-xml \
php8.2-intl php8.2-gd php8.2-mbstring php8.2-curl php8.2-imagick php8.2-gmp \
php8.2-bcmath php8.2-ldap php8.2-redis php8.2-mysql mariadb-server mariadb-client \
redis-server openssl curl wget unzip -y

установка пакетов

После установке проверяем версию php

php -v 

Должно быть 8.2.x

php версия


База данных mariadb

2. Теперь займемся базой данных mariadb.

Активируем службу.

sudo systemctl enable --now mariadb

Запускаем мастер настройки mariadb. Отвечаем Y на все вопросы, кроме смены root-пароля если не меняли.

sudo mysql_secure_installation

мастер настройка mariadbмастер настройка mariadb

2.1 Создание БД и пользователя

sudo mysql <<'EOF'
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'ВАШ_ЛОГИН'@'localhost' IDENTIFIED BY 'ВАШ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'ВАШ_ЛОГИН'@'localhost';
FLUSH PRIVILEGES;
\q
EOF
ВНИМАНИЕ! Незабываем заменять ВАШ_ЛОГИН и ВАШ_ПАРОЛЬ в коде выше! Если не нравится название базы данных nextcloud, то тоже меняем на ваше название.

На этом настройки и манипуляции с базой данных завершены, переходим дальше к redis.


Установка и настройка Redis

3. Если вы пропустили установку redis ранее в пункте 1. установка пакетов. То ниже представлены команды для установки.

sudo apt install redis-server php8.2-redis -y

Далее произведем настройку redis-сервера.

sudo sed -i 's/^port .*/port 6379/' /etc/redis/redis.conf
sudo sed -i '/^unixsocket/d' /etc/redis/redis.conf
sudo usermod -a -G redis www-data
sudo systemctl enable --now redis-server

настройка redis
Для проверки работоспособности redis-сервера, проверим по доступности порта  6379.
sudo ss -tlnp | grep 6379

Должно показать: 127.0.0.1:6379

Memcached не рекомендую: Redis поддерживает больше типов данных, транзакции, персистентность и лучше интегрируется с Nextcloud для блокировок.

Установка Nextcloud

4. Вот мы и подобрались к виновнику торжества. На самом деле, установка Nextloud настолько простая и скучная, что можно уместить все в одну строчку. Вся соль именно в настройке и установки компонентов для работы с оболочкой Nextcloud.

cd /tmp
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
sudo mv nextcloud /var/www/
sudo chown -R www-data:www-data /var/www/nextcloud

Вот и все, установка Nextcloud завершена, как бы смешно это не звучало. Теперь нужно выполнить настройки и самое главное - оптимизировать сервер.


Установка и настройка Nginx

5. В первом пункте, как делали ранее, мы поставили ряд пакетов, в том числе и nginx, если его пропустили и вам интересна связка только nginx с Nextcloud, то ниже команда по установке nginx.

sudo apt install -y nginx

Для чего нам nginx?
Он нужен, чтобы NextCloud работал быстро (отдавал статичные картинки и CSS без перегрузки сервера) и безопасно (шифровал трафик через HTTPS и защищал от атак).

Настройка nginx на кастомном порту (например, 8080). Так как мой порт 80 занят, а еще параллельно будут работать 3 проекта на Intel NUC, по этому я переназначу стандартный порт с 80 на 8080.

Создадим новый конфиг для нашего nextcloud.

sudo nvim /etc/nginx/sites-available/nextcloud

С содержимым:

server {
    listen 8080;
    listen [::]:8080;
    server_name _;

    root /var/www/nextcloud;
    index index.php;

    #Блокируем доступ к чувствительным файлам и директориям
    location ~ ^/(?:\.|app/data|config|lib|3rdparty|templates|tests|occ|console.php|cron.php) {
        deny all;
        return 404;
    }

    location ~ ^/(?:autotest|occ|issue|indie|db_|console) {
        deny all;
        return 404;
    }

    #Основной роутинг: все, что не файл/директория -> index.php
    location / {
        try_files $uri $uri/ /index.php$request_uri;
    }

    #Обработка PHP-FPM
    location ~ \.php(?:$|/) {
        #Защита от исполнения произвольных .php файлов в upload-директориях
        location ~ ^/var/www/nextcloud/data/.*\.php$ { deny all; }
        location ~ ^/var/www/nextcloud/(?:config|lib|3rdparty|templates|tests)/.*\.php$ { deny all; }

        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        set $path_info $fastcgi_path_info;

        #Проверка существования файла перед передачей в PHP
        try_files $fastcgi_script_name =404;

        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $path_info;
        fastcgi_param HTTPS off;

        fastcgi_pass unix:/run/php/php8.2-fpm.sock;

        #Таймауты для долгих операций (импорт, миграции)
        fastcgi_read_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_connect_timeout 300;
    }

    #Статические файлы: отдаём напрямую, без PHP
    location ~* \.(?:css|js|woff2?|svg|gif|png|jpe?g|ico|wasm|txt|map)$ {
        try_files $uri =404;
        access_log off;
        expires 1y;
        add_header Cache-Control "public, immutable";
        #Отключаем PHP-обработку для статики
        location ~ \.php$ { deny all; }
    }

    #Фавикон и мелкие файлы
    location = /favicon.ico {
        try_files /core/img/favicon.ico =404;
        access_log off;
        expires max;
    }

    #Защита от скачивания исходников
    location ~ ^/var/www/nextcloud/(?:config|lib|3rdparty|templates|tests)/ {
        deny all;
        return 404;
    }
}

Теперь создаем симлинк на новый конфиг и перезапускаем nginx после проверки синтаксиса.


sudo ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/

sudo nginx -t && sudo systemctl reload nginx

Если пишет OK, то значит ошибок нет и переходим к настройке Nextcloud.

5.1 Открываем браузер и заходим на наш сервер Nextcloud.

В моем случае это 192.168.31.60, но так как у меня не 80 порт, а 8080, то еще дописываю через двоеточие 8080. Итого захожу на 192.168.31.60:8080

Заполняем данные которые мы заполнили ранее.

Настройка nextcloud

Если вы получили вот такое окно по заходу на nextcloud в браузере

ошибка через недоверенный домен

То добавьте адрес по которыми вы пытаетесь зайти в конфиг командой.

sudo -u www-data php /var/www/nextcloud/occ config:system:set trusted_domains 0 --value="192.168.31.60:8080"

настройка конфига

После успешной регистрации nextcloud, нас перекидывает в окно приветствия.

окно приветствия

главная страница профиля

На этом установка завершена. У нас работает база данных, сам nextcloud, но если вам кажется, что на этом все, к сожалению это не так. Еще предстоит оптимизировать работу и довести настройки сервера до конца. Об этом вы прочтете в следующей части №4 цикла про домашнее облако.


Полезные команды и возможные ошибки

6. Если по каким-то причинам, у вас прошла регистрация некорректна и окно с регистрацией не появляются в браузере, можно это сделать через терминал. Ниже представлена команда с альтернативной регистрацией. Незабывайте вбить вручную учетные данные для доступа к БД и локального админа, а так же вариант базы данных (postgresql/mariadb).

sudo -u www-data php /var/www/nextcloud/occ maintenance:install --database "pgsql" --database-name "NAME_DATABASE" --database-user "NAME_USER" --database-pass 'PASSWORD_USER' --database-host "localhost" --admin-user "ADMIN" --admin-pass "ADMIN_PASS" --data-dir "/var/www/nextcloud/data"

Для теста подключения к БД от nextcloud можно воспользовать данной командой.

sudo -u www-data php -r "new PDO('mysql:host=localhost;dbname=DB_NAME', 'DB_USER', 'DB_PASSWORD') and print 'DB OK\n';"

Важные конфиги и логи:

sudo tail -f /var/www/nextcloud/data/nextcloud.log
sudo tail -f /var/log/php8.2-fpm.log
sudo tail -f /var/log/nginx/error.log
sudo nvim /var/www/nextcloud/config/config.php

0
Andrew

DevOps Engineer

1 50 статей
Комментарии (0)
Войдите, чтобы оставить комментарий

Пока нет комментариев. Будьте первым!