Краткое описание: Инструкция по установке NextCloud 15 на Ubuntu Server 18.04 TLS. Установка LAMP, создание короткой ссылки, интеграция Collabora Office, синхронизация NextCloud и LDAP Active Directory.
Что умеет Nextcloud
Функционал NextCloud-а дополняется расширениями типа:
- Talk — полноценная конференц видеосвязь. Аналог Viber, Skype, Hangouts.
- Почтовый клиент — сборщик писем с разных ящиков в одном месте.
- Календарь, задачи — с возможностью синхронизации и стандартными параметрами: сроки, событие, описание.
- Collabora Office — работа с документами в online режиме(doc, xls), совместный доступ.
И много разного — заметки, радио, новостной сборщик, опросы.
Cloud disk, оптимальный выбор
Использование общедоступных файлообменников имеет широкий спрос, а наличие сервиса GoogleDrive делает это ещё более доступным для обыкновенного пользователя без навязчивой рекламы, суровых ограничений по скорости и размеру, низкого уровня доверия к сервису. А что если иметь аналогичный сервис в собственном IT арсенале? Поиск такого решения меня привел к OpenSource продукту NextCloud. На своем пути я рассмотрел SandStorm, OwnCloud и собственно сам NextCloud. Немного о преимуществах такого сервиса:
- Экономия трафика In/Out. Сам процесс передачи информации сводится к появлению ссылки, её достаточно сообщить получателю, чтобы процесс загрузки файла начался. При многократном использование это существенно экономит трафик.
- Файл можно редактировать. Вводится понятие версий и их управление.
- Срок жизни ссылки может быть разным. Его можно устанавливать в момент загрузки или вообще выключить.
В некоторых пунктах есть вытекающие преимущества, которые демонстрируют этот сервис с какой-то новой и удобной в использовании позиции.
Установка LAMP на Ubuntu Server
LAMP это самый распространенный набор пакетов для запуска web сервера. В его состав входит Linux + Apache + MySQL + PHP.
Обновление пакетов ОС
sudo apt update && sudo apt upgrade -y
установка Apache web сервера
sudo apt install -y apache2 sudo nano /etc/apache2/apache2.conf
добавление рекомендация Apache
ServerName 192.168.XX.YY ServerName disk.topnet.com.ua
sudo a2enmod headers
установка MySQL
sudo apt install -y mysql-server
установка PHP
sudo apt install -y php libapache2-mod-php php-cli php-common php-curl php-xml php-gd php-fpm sudo apt install -y php-mbstring php-zip php-mysql php-bz2 php-intl php-apcu php-ldap php-imagick
Nexctloud написан на php, поэтому нужно внести соответствующую поправку
sudo nano /etc/apache2/mods-enabled/dir.conf
ставим index.php на первое место в строке. На этой установка LAMP завершена, а впереди установка сертификата от Lets Encrypt. Все DNS записи должны быть обновленными
sudo add-apt-repository ppa:certbot/certbot sudo apt install -y python-certbot-apache sudo certbot --apache -d disk.topnet.com.ua
добавление расписания для автообновления сертификата
sudo crontab -e 0 0 20 * * /usr/bin/certbot renew --quiet
Установка NextCloud 15 на Ubuntu Server
cd /tmp curl -LO https://download.nextcloud.com/server/releases/nextcloud-15.0.5.tar.bz2 sudo tar -C /var/www -xvjf /tmp/nextcloud-15.0.5.tar.bz2
создать скрипт для установки
nano /tmp/nextcloud.sh
с текстом
#!/bin/bash ocpath='/var/www/nextcloud' htuser='www-data' htgroup='www-data' rootuser='adminX' mkdir -p $ocpath/data mkdir -p $ocpath/assets mkdir -p $ocpath/updater find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640 find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750 chmod 755 ${ocpath} chown -R ${rootuser}:${htgroup} ${ocpath}/ chown -R ${htuser}:${htgroup} ${ocpath}/apps/ chown -R ${htuser}:${htgroup} ${ocpath}/assets/ chown -R ${htuser}:${htgroup} ${ocpath}/config/ chown -R ${htuser}:${htgroup} ${ocpath}/data/ chown -R ${htuser}:${htgroup} ${ocpath}/themes/ chown -R ${htuser}:${htgroup} ${ocpath}/updater/ chmod +x ${ocpath}/occ if [ -f ${ocpath}/.htaccess ] then chmod 0644 ${ocpath}/.htaccess chown ${rootuser}:${htgroup} ${ocpath}/.htaccess fi if [ -f ${ocpath}/data/.htaccess ] then chmod 0644 ${ocpath}/data/.htaccess chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess fi
исполнение скрипта
sudo bash /tmp/nextcloud.sh
создание конфигурационного файла для Apache
sudo nano /etc/apache2/sites-available/disk.topnet.com.ua.conf
содержимое
Alias /nextcloud "/var/www/nextcloud/" <Directory /var/www/nextcloud/> Options +FollowSymlinks AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud </Directory> #Listen 80 <VirtualHost *:80> DocumentRoot "/var/www/nextcloud" ServerName disk.topnet.com.ua Redirect permanent / https://disk.topnet.com.ua/ </VirtualHost> <VirtualHost *:443> ServerName disk.topnet.com.ua SSLCertificateFile /etc/letsencrypt/live/disk.topnet.com.ua/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/disk.topnet.com.ua/privkey.pem <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" </IfModule> </VirtualHost>
активация конфигурации
sudo a2ensite disk.topnet.com.ua sudo a2enmod rewrite sudo systemctl reload apache2
создание базы данных MySQL
sudo mysql -u root -p CREATE DATABASE disk_db DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
создание пользователя MySQL
CREATE USER adminX@localhost identified by 'ROOT-PASS'; GRANT ALL ON disk_db.* TO 'adminX'@'localhost' IDENTIFIED BY 'ROOT-PASS'; FLUSH PRIVILEGES; EXIT;
Настройка NextCloud
На этом этапе можно подключиться к только что установленному серверу можно по адресу https://disk.topnet.com.ua/nextcloud и заполнить выводимую форму.
Первый запуск будет сопровождаться инструкциями по оптимизации:
sudo nano /var/www/nextcloud/.htaccess
сразу после строчки <IfModule mod_headers.c> добавить
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
далее
sudo rm -rf /var/www/html/
sudo nano /var/www/nextcloud/config/config.php
в конце, до закрытия скобки добавить
'memcache.local' => 'OCMemcacheAPCu',
sudo nano /etc/php/7.2/apache2/php.ini
в разделе opcahce добавить
opcache.enable=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1
индексация базы данных MySQL по рекомендации NextCloud
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
sudo systemctl restart apache2
Короткая ссылка NextCloud
По умолчанию ссылка Nexcloud начинается с адреса https://доменное_имя/nextcloud/index.php/ и стоит очевидная задача сделать её короче:
sudo nano /var/www/nextcloud/config/config.php
эта редакция сократит промежуточный каталог https://disk.topnetc.om.ua/nextcloud/index.php/
'overwrite.cli.url' => 'https://disk.topnet.сom.ua',
а редакция убирает index.php в ссылке NextCloud. Это строку нужно разместить следующей(в этом же файле /var/www/nextcloud/config/config.php)
'htaccess.RewriteBase' => '/',
обновить конфигурацию Apache
sudo nano /etc/apache2/sites-available/disk.topnet.com.ua.conf
Alias / "/var/www/nextcloud/"
обновление проведенных изменений
sudo chown www-data:www-data /var/www/nextcloud/.htaccess sudo -u www-data php /var/www/nextcloud/occ maintenance:update:htaccess sudo systemctl restart apache2
NextCloud подключение LDAP
Синхронизация с Active Directory одно из самых популярных требований со стороны безопасности корпоративного сервиса. Все, что нужно для этого — активация соответствующего модуля
после этого будет доступна консоль для настройки импорта с Active Directory(LDAP)
Обновление NextCloud
Подготовка для обновления NextCloud будет состоять из переноса каталога с приложениями и пользовательскими данными:
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on cd ../.. sudo mkdir /datanc/ sudo mv /var/www/nextcloud/data /datanc/ sudo ln -s /datanc/data /var/www/nextcloud/data sudo chown -R www-data:www-data /datanc/data /var/www/nextcloud/data sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
Аналогичные действия можно совершить с директорией apps, которая содержит установленные приложения. Далее нужно перенести старую директорию в другое место
sudo systemctl stop apache2 sudo mv /var/www/nextcloud /var/www/nextcloud-old
и повторно пройтись по процедуре установки Nexcloud.