Установка Nextcloud на Ubuntu 18.04

Источник: https://www.linuxbabe.com/ubuntu/install-nextcloud-ubuntu-18-04-nginx-lemp

Прежде чем ставить Nextcloud по этой инструкции, вначале установите LEMP-стек. Если он не установлен, и вы хотите знать как это сделать, то проследуйте по ссылке.

Шаг 1: Скачиваем Nextcloud

Зайдите на сервер и загрузите на него архив Nextcloud. Последняя стабильная версия 15.0.4 на момент публикации перевода. Скачать её можно на https://nextcloud.com/install и выбрав кнопку «Download for server».

Можно wget’ом скачать его на сервер сразу же. Так и сделаем.

wget https://download.nextcloud.com/server/releases/nextcloud-15.0.4.tar.bz2

Распакуем

sudo tar -xjvf nextcloud-15.0.4.tar.bz2 -C /usr/share/nginx/

Опция -C указывает путь, куда распакуется Nextcloud. Для его работы понадобится изменить владельца файлов.

sudo chown www-data. /usr/share/nginx/nextcloud/ -R

Шаг 2. Создаём базу данных для Nextcloud

Логинимся на сервер MariaDB нижеследующей командой. С тех пор как MariaDB стала использовать плагин unix_socket для аутентицикации, необходимость вводить root пароль отпала. Просто запустим оболочку под sudo.

sudo mariadb

Запуститься оболочка MySQL сервера MariaDB. Начнём процесс установки.

Создадим базу данных для Nextcloud

create database nextcloud;

Создадим пользователя, у которого будут права на эту базу и который будет ей управлять. Имя можно выбрать любое, главное запомнить его. Вместо your-password подставьте свой придуманный пароль.

create user nextclouduser@localhost identified by 'your-password';

Выдайте новому пользователю права на новую базу данных

grant all privileges on nextcloud.* to nextclouduser@localhost identified by 'your-password';

Примените изменения

flush privileges;

exit;

Шаг 3. Создаём конфигурационный файл nginx для Nextcloud.

Создайте файл nexcloud.conf в директории /etc/nginx/conf.d/

sudo nano /etc/nginx/conf.d/nextcloud.conf

Вставьте нижеследующий текст в новый файл. Жирным начертанием выделены строки на замену


server
{
listen 80;
server_name nextcloud.your-domain.com;

# Add headers to serve security related headers
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;

#This header is already set in PHP, so it is commented out here.
#add_header X-Frame-Options "SAMEORIGIN";

# Path to the root of your installation
root /usr/share/nginx/nextcloud/;

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

# The following 2 rules are only needed for the user_webfinger app.
# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
#rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json
# last;

location = /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}

location = /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}

location ~ /.well-known/acme-challenge {
allow all;
}

# set max upload size
client_max_body_size 512M;
fastcgi_buffers 64 4K;

# Disable gzip to avoid the removal of the ETag header
gzip off;

# Uncomment if your server is build with the ngx_pagespeed module
# This module is currently not supported.
#pagespeed off;

error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;

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 ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
#Avoid sending the security headers twice
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}

location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri/ =404;
index index.php;
}

# Adding the cache control header for js and css files
# Make sure it is BELOW the PHP block
location ~* \.(?:css|js)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=7200";
# Add headers to serve security related headers (It is intended to
# have those duplicated to the ones above)
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;
# 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;
# Optional: Don't log access to other assets
access_log off;
}
}

Сохраните и закройте файл. Проверьте конфигурацию nginx.

sudo nginx -t

sudo systemctl reload nginx

Шаг 4. Установка php-модулей.

Выполните нижеприведённую команду, чтобы установить требуемые или рекомендованные модули php для Nextcloud.

sudo apt install php-imagick php7.2-common php7.2-gd php7.2-json php7.2-curl  php7.2-zip php7.2-xml php7.2-mbstring php7.2-bz2 php7.2-intl

[…]Здесь в оригинале были шаги по включению https, но я считаю это темой отдельной статьи. Можете глянуть в оригинале. […]

Финиш. Заключительные штрихи

Для большей безопасности поменяем папку с данными и не будем хранить их в корне веб-сервера. Расположим их, например, в
/usr/share/nginx/nextcloud-data, используя следующую команду

sudo mkdir /usr/share/nginx/nextcloud-data

Сделаем владельцем этого каталога пользователя www-data

sudo chown www-data. /usr/share/nginx/nextcloud-data -R

Теперь заходим на http://nextcloud-IP/ и видим окно установки.

Вводим имя администратора, придумываем пароль. Ниже указываем путь до каталога данных Nextcloud, вписываем имя пользователя базы данных («nextclouduser»), пароль пользователя к базе данных (в данном случае это «your-password»), имя базы данных («nextcloud»). Жмём кнопку «Завершить установку»

Установка завершена. Впереди немного настроек.

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

Ваш e-mail не будет опубликован.