В этой шпаргалке я кратко покажу, как выполняется установка NextCloud – файлового сервера, который предоставляет возможность получения веб доступа к вашим файлам через веб интерфейс.
Предварительные требования
Полный перечень предварительных требований приведен в официальной документации.
Кратко основные требования я приведу ниже:
Параметр | Значение |
Операционная система | Ubuntu 22.04 LTS (рекомендуется) Ubuntu 20.04 LTS Red Hat Enterprise Linux 8 (рекомендуется) Debian 11 (Bullseye) SUSE Linux Enterprise Server 15 openSUSE Leap 15.4 CentOS Stream |
База данных | MySQL 8.0+ or MariaDB 10.3/10.4/10.5/10.6 (рекомендуется) Oracle Database 11g PostgreSQL 10/11/12/13/14/15 SQLite (только для тестирования) |
Веб сервер | Apache 2.4 с модулями mod_php или php-fpm (рекомендуется)nginx с модулем php-fpm |
PHP | 8.0 (устарело) 8.1 8.2 (рекомендуется) |
Я, как обычно, буду использовать Ubuntu Server 22.04.
Подготовка сервера баз данных
Установим сервер MariaDB:
sudo apt install -y mariadb-server
Настроим автоматический запуск и проверим, что сервер запущен:
sudo systemctl enable mariadb
sudo systemctl status mariadb
Выполним первоначальную настройку сервера MariaDB:
sudo mysql_secure_installation
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] n
... skipping.
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Создадим отдельного пользователя и базу данных
mysql -u root -p
CREATE USER 'ncuser'@'localhost' IDENTIFIED BY 'Qwerty123';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'ncuser'@'localhost';
FLUSH PRIVILEGES;
exit
Подготовка сервера для установки NextCloud
Теперь подготовим сам сервер:
sudo apt install -y apache2 mariadb-server libapache2-mod-php php-gd php-mysql php-curl php-mbstring php-intl php-gmp php-bcmath php-xml php-imagick php-zip
Хранить данные я буду на отдельном выделенном диске в каталоге /data.
Создадим раздел на диске и подготовим директорию для монтирования:
sudo mkfs.ext4 /dev/sdb
sudo mkdir /data
Определим UUID диска – он понадобится нам для монтирования:
sudo blkid
Настроим запись для монтирования устройства /dev/sdb в каталог /data:
nano /etc/fstab
Добавим соответствующую строчку:
UUID="c59438b7-b489-4138-9df1-5fa981ef800c" /data ext4 defaults 0 1
Проверим, что монтирование выполняется без ошибок (в противном случае могут быть проблемы с загрузкой сервера):
sudo mount -a
df -h
Как видно из скриншота выше – монтирование выполнено успешно.
Установка NextCloud
Теперь перейдем непосредственно у установке NextCloud.
Сначала загрузим установщик сервера для коммунити редакции. Перейдите на сервер NextCloud и выполните загрузку дистрибутива:
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
Распакуйте архив:
tar -xjvf latest.tar.bz2
Создадим директорию для данных NextCloud сервера и скопирует туда все файлы дистрибутива:
sudo mkdir -p /data/nextcloud
sudo cp -r nextcloud/ /data/
Теперь необходимо изменить владельца для всего каталога /data/nextcloud:
sudo chown -R www-data:www-data /data/nextcloud
Теперь необходимо выполнить настройки веб сервера Apache. Создадим конфигурационный фвйл для нашего сайта с NextCloud:
sudo nano /etc/apache2/sites-available/nextcloud.conf
Я буду использовать конфигурацию с виртуальными директориями:
<VirtualHost *:80>
DocumentRoot /data/nextcloud/
ServerName files.itproblog.ru
<Directory /data/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
</VirtualHost>
В конфигурационном файле выше есть несколько важных параметров:
Параметр | Значение |
DocumentRoot | Путь к директории, куда вы скопировали файлы с дистрибутивом сервера NextCloud |
ServerName | Имя, по которому сервер NextCloud будет доступен |
Directory /data/nextcloud/ | Содержит настройки для директории /data/nextcloud/ |
Сохраняем внесенные изменения и публикуем сайт:
sudo a2ensite nextcloud.conf
sudo systemctl reload apache2
Дополнительно необходимо включить некоторые модули Apache:
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
sudo systemctl restart apache2
Мы выполнили все шаги по подготовке и теперь можем продолжить установку через веб. Перейдите по имени, которое вы указали в конфигурационном файле:
http://files.itproblog.ru
Отобразится стартовая страница мастера установки. Укажите параметры подключения к базе данных и расположение дистрибутива сервера NextCloud:
Дождитесь окончания процесса установки.
Установку рекомендуемых приложений я пропущу:
После завершения процесса установки вы должны попасть на главную страницу сервиса NextCloud:
Установка NextCloud завершена.
Установка NextCloud: 2 комментария
При обновлении через браузер процесс останавливается на шаге “delete old files”.
Как обновлять такую установку?
Добрый день! Скорее всего учетной записи, от которой работает сервер NextCloud, не хватает разрешений для удаления старых файлов. Через браузер я обновлял NextCloud, на котором работает как несколько сотен пользователей, так и меньше сотни пользователей. Обновление через браузер точно должно работьать на небольших инсталяциях. Только один раз на моей практике были проблемы с недостаточными разрешениями.