Теперь мы перешли к этапу, когда мы будем ставить nextcloud на Intel NUC.
Установка пакетов и базы данных + Redis
1. Начнем мы с установки пакетов php необходимых для работы nextcloud (он же написан на языке php), а так же установим redis сервер и базу данных mariadb.
Без Redis Nextcloud постоянно ходит в «тяжелую» базу данных, из-за чего интерфейс тормозит. С Redis все, что нужно часто, отдается мгновенно из оперативной памяти. Сервер меньше грузится, страницы открываются быстрее, а при работе 3+ пользователей система не «захлебывается».
Приступим к установке.
Обновляем список пакетов
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

База данных mariadb
2. Теперь займемся базой данных mariadb.
Активируем службу.
sudo systemctl enable --now mariadb
Запускаем мастер настройки mariadb. Отвечаем Y на все вопросы, кроме смены root-пароля если не меняли.
sudo mysql_secure_installation


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
На этом настройки и манипуляции с базой данных завершены, переходим дальше к 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.confsudo sed -i '/^unixsocket/d' /etc/redis/redis.confsudo usermod -a -G redis www-datasudo systemctl enable --now redis-server

Для проверки работоспособности redis-сервера, проверим по доступности порта 6379.sudo ss -tlnp | grep 6379
Должно показать: 127.0.0.1:6379
Установка Nextcloud
4. Вот мы и подобрались к виновнику торжества. На самом деле, установка Nextloud настолько простая и скучная, что можно уместить все в одну строчку. Вся соль именно в настройке и установки компонентов для работы с оболочкой Nextcloud.
cd /tmpwget https://download.nextcloud.com/server/releases/latest.zipunzip latest.zipsudo 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
Он нужен, чтобы 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 в браузере

То добавьте адрес по которыми вы пытаетесь зайти в конфиг командой.
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.logsudo tail -f /var/log/php8.2-fpm.logsudo tail -f /var/log/nginx/error.logsudo nvim /var/www/nextcloud/config/config.php