Сегодня в статье рассмотрим пример по установке и настройке домашнего облака NextCloud в среде Linux, также установим базу данных PostgreSQL и Web-сервер Nginx с PHP-FPM. Установка будет производиться на чистую Ubuntu Server 22.04 LTS.
Системные требования для NextCloud:
- База данных: MySQL 5.7+, или MariaDB 10.2, или PostgreSQL 9.5+
- Веб-сервер: Apache с mod_php или php-fpm или nginx с php-fpm
- Php: 8.2+
- ОЗУ: 512Мб+ или 2ГБ+, если использовать пакета Collabora или OnlyOffice
- NextCloud: версии 27.0.1+
Установка
Разобьем установку на части. Установим базу данных PostgreSQL, интерпретатор PHP, далее web-сервер Nginx, ну и последним пунктом наше облако NextCloud:
Установка PostgreSQL
Для установки базы данных в терминале набираем:
sudo apt install postgresql
Установка PHP
Для установки PHP для начала добавим более новый репозиторий:
sudo add-apt-repository ppa:ondrej/php
После этого устанавливаем PHP и необходимые зависимости для NextCloud.
Предупреждение: в данный момент NextCloud поддерживает PHP версии не выше 8.2
sudo apt install php8.2 php8.2-bcmath php8.2-bz2 php8.2-common php8.2-curl php8.2-fpm php8.2-gd php8.2-gmp php8.2-intl php8.2-mbstring php8.2-opcache php8.2-pgsql php8.2-imagick php8.2-xml php8.2-xmlrpc php8.2-zip php8.2-memcached memcached php-memcached
Установка Web-сервера Nginx
Для установки nginx для начала добавим, как и с PHP, более новый репозиторий:
sudo add-apt-repository ppa:ondrej/nginx
Теперь можно установить наш web-сервер. Устанавливать будем сборку в которую включен модуль для проигрывания потокового видео с нашего сервера (поддержка модуля mp4). Открываем терминал и набираем:
sudo apt install nginx-extras
Установка NextCloud
После всех пунктов выше приступим к установки нашего домашнего облака NextCloud. Для этого переходим в директорию /var/www
:
cd /var/www/
Скачиваем последнюю версию NextCloud (на данный момент это версия NextCloud 27.0.1), а также сразу распакуем и изменим права на директорию NextCloud:
sudo wget https://download.nextcloud.com/server/releases/nextcloud-27.0.1.zip
sudo unzip nextcloud-27.0.1.zip
sudo chown -R www-data:www-data /var/www/
Настройка
Как и в пункте с установкой, настройка также будет разбита по пунктам. Давайте приступим.
Настройка Nginx для NextCloud
Приступим к настройке web-сервера nginx. Создадим файл конфигурации для NextCloud, работать наш сервер будет на порту 80. И так начнем:
sudo nano /etc/nginx/sites-available/nextcloud.conf
Заполняем в соответствии с моим листингом:
server {
listen 80;
root /var/www/nextcloud;
index index.php index.html;
server_name mynextcloud.ru; # меняем на свой домен
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
rewrite ^ /index.php;
try_files $uri $uri/ index.php;
}
# Устанавливаем максимальный размер загрузки
client_max_body_size 2048M;
fastcgi_buffers 64 4K;
# Указываем расположение страниц 40X.php
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location /.well-known {
location = /.well-known/carddav { return 301 $scheme://mynextcloud.ru/remote.php/dav/; }
location = /.well-known/caldav { return 301 $scheme://mynextcloud.ru/remote.php/dav/; }
# Все остальное динамически обрабатывается Nextcloud
location ^~ /.well-known { return 301 $scheme://mynextcloud.ru/index.php$uri; }
try_files $uri $uri/ =404;
}
# Настройка безопасности
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
try_files $fastcgi_script_name =404;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
# Избегать отправки заголовков безопасности дважды
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri/ =404;
index index.php;
}
# Добавление заголовка управления кэшем для файлов js и css
# Убедитесь, что он находится НИЖЕ блока PHP
location ~* \.(?:css|js)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=7200";
# Добавляем заголовки связанные с безопасностью.
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
add_header Referrer-Policy no-referrer;
# Optional: Don't log access to assets
access_log off;
}
# Настройка обработки для файлов данного типа
location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
try_files $uri /index.php$uri$is_args$args;
expires 6M; # Управление кэшем
access_log off; # Отключение логирования
}
# Настройки для обработки потокового видео
location ~ .(?:flv|mp4|mov|m4a)$ {
mp4;
mp4_buffer_size 20m;
mp4_max_buffer_size 40m;
fastcgi_split_path_info ^(.+.php)(/.)$;
try_files $fastcgi_script_name =404;
include fastcgi_params;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
expires max;
directio 10m;
limit_rate 1024m;
limit_rate_after 10m;
}
}
Адрес mynextcloud.ru измените на свой.
Далее создании ссылку на наш файл:
ln -s /etc/nginx/sites-available/nextcloud.conf /etc/nginx/sites-enabled/
удаляем дефолтный файл конфигурации:
rm /etc/nginx/sites-enabled/default
Проверяем все ли мы правильно сделали:
nginx -t
Если ошибку нет, то перезапускаем nginx
service nginx restart
Настройка PHP
Настроим PHP для работы с NextCloud. В терминале набираем:
sudo nano /etc/php/8.2/fpm/php.ini
Находим и редактируем следующие строки:
max_execution_time = 300
max_input_time = 600
memory_limit = 512M
post_max_size = 20M
upload_max_filesize = 40M
# Настройка кэширования
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.save_comments=1
Настройка PostgreSQL
Сперва настроим наш PostgreSQL для прослушивания всех внутренних адресов сервера. Для этого открываем следующий файл:
sudo nano /etc/postgresql/14/main/postgresql.conf
Находим и приводим данную строчку к такому виду:
listen_addresses = '*'
Теперь можно создать нашу БД для NextCloud, а также создадим пользователя БД и пароль для него. Подключаемся к postgresql:
sudo -u postgres psql
Создаем базу данных и пользователя для nextcloud
CREATE DATABASE nextcloud; # создаем БД
CREATE USER usernxt WITH PASSWORD 'mypasswords'; # создаем пользователя и вводим пароль для него
ALTER DATABASE nextcloud OWNER TO usernxt;
GRANT ALL PRIVILEGES ON DATABASE nextcloud to usernxt;
exit
Далее переходим по адресу нашего сервера (локальному или внешнему например: http://mynextcloud.ru
) и видим первоначальную установку NextCloud
Из скриншота видим, что на самом верху нам предлагается придумать учетную запись и пароль администратора nextcloud.
Далее идет поле для выбора каталога с данными. Данное поле отвечает за размещение всех данных пользователей в директории на сервере. Я оставляю без изменений.
Последняя группа полей ответственна за подключение к базе данных. Чуть выше мы создавали и настраивали БД PostgreSQL, вот эти данные и вводим сюда. И нажимаем кнопку продолжить.
Если все сделали правильно, то после обновления окна нам будет предложено войти в свою учетную запись.
Замечание: В панели администратора в пункте общие сведения Вы можете наблюдать различные ошибки и предупреждения от системы. Как их устранить я писал тут.
На этом наша настройка домашнего облака NextCloud завершается. Всем удачи!!!
[endtxt]
. . . .
- Тест скорости дисков в Linux
- Как запустить команду в фоне в Linux
- Ошибка несоответствие размеров GPT PMBR
- nginx: [warn] protocol options redefined
- Как включить поддержку linux в windows 11