Установка NextCloud+Nginx+PHP+PostgreSQL на Linux

17 комментариев
nextcloud-logo

Сегодня в статье рассмотрим пример по установке и настройке домашнего облака 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

install-nextcloud

Из скриншота видим, что на самом верху нам предлагается придумать учетную запись и пароль администратора nextcloud.

Далее идет поле для выбора каталога с данными. Данное поле отвечает за размещение всех данных пользователей в директории на сервере. Я оставляю без изменений.

Последняя группа полей ответственна за подключение к базе данных. Чуть выше мы создавали и настраивали БД PostgreSQL, вот эти данные и вводим сюда. И нажимаем кнопку продолжить.

Если все сделали правильно, то после обновления окна нам будет предложено войти в свою учетную запись.

nextcloud

Замечание: В панели администратора в пункте общие сведения Вы можете наблюдать различные ошибки и предупреждения от системы. Как их устранить я писал тут.

На этом наша настройка домашнего облака NextCloud завершается. Всем удачи!!!

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВКонтакте или подписаться на Twitter. Ссылки в шапке страницы.
Заранее всем спасибо!!!

RSS

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как настроить PhpMyAdmin на NGINX и PHP 7.4
phpmyadmin-logo

Не всегда удобно пользоваться консолью MySQL для редактирования и создания баз данных. Поэтому многие устанавливают phpMyAdmin, но не знают как Читать

Raspberry Pi. Установка, настройка WEB сервера nginx+php-fpm+mysql
Raspberry_pi_logo

В этой статье я расскажу как установить на Raspberry Pi 3 полноценный WEB сервер на Nginx с php-fpm и MySQL Читать

Настройка OCSP Stapling | ALPN + Nginx на Ubuntu Server
nginx-logo

Сегодня в статье разберём как включить OCSP на web-сервере Nginx с сертификатами от Let`s Encrypt. Но сперва что же такое Читать

Настройка Nginx шаблонов в VestaCP
vestacp-logo

Сегодня разберем как можно изменить шаблоны VestaCP у Web сервера Nginx для получения рейтинга A+.

5 5 голоса
Рейтинг статьи

Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

17 комментариев
новее
старее большинство голосов
Inline Feedbacks
Просмотреть все комментарии
denis
denis
25.07.2023 11:48

Добрый день! При переходе на адрес сервера, у меня 502 Bad Gateway. Куда копать подскажите пожалуйста

denis
denis
Ответить на  webmaster С.
25.07.2023 12:31

Спасибо. Разобрался с этой проблемой, в конфиге нужно было указать путь php-fpm.
Но теперь другая проблема:

This version of Nextcloud is not compatible with PHP>=8.2.
You are currently running 8.2.7.

Последний раз редактировалось 1 месяц назад by denis
denis
denis
Ответить на  webmaster С.
25.07.2023 13:40

Я Вас понял спасибо! Буду смотреть как мне установить php8 на свою систему

denis
denis
Ответить на  webmaster С.
25.07.2023 14:10

Проблема в том, что у меня не ubuntu, а debian, но это пол беды, основная проблема в том, что у меня архитектура mipsel (

denis
denis
Ответить на  webmaster С.
25.07.2023 14:58

Решил проблему с установкой. в вики nextcloud выяснил что php8.2.7 работает начиная с версии nextcloud 26….. Установил ее и все работает.
Спасибо за инструкцию!

mihvs
mihvs
08.01.2023 21:41

Всё работает спасибо! Ни как не мог запустится, взял конфиг nginx от сюда и поднял nextcloud!

ккк
ккк
17.09.2021 08:02

Нихрена не рабочая инструкция!!!
Открывается только дефолтный сайт.

Павел
Павел
Ответить на  webmaster С.
13.12.2021 11:13

Я в статусе nginx находил жалобу на эту строку: location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|update> Жаловался на отсутствие { и закрывающейся скобки. Ну и запустилось только через папку config.d, а через sites-available некстклауд игнорировался и в итоге у меня грузилась или страница апача или страница “Welcome to NGINX”. А когда завершил настройку nextcloud,… Подробнее »

Последний раз редактировалось 1 год назад by Павел
Alexey
Alexey
Ответить на  ккк
07.02.2022 23:48

ln -s /etc/nginx/sites-available/NAME.conf /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default
service nginx restart

Вот что надо ещё сделать

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: