Краткое описание: Инструкция по установке NextCloud 15 на Ubuntu Server 18.04 TLS. Установка LAMP, создание короткой ссылки, интеграция Collabora Office, синхронизация NextCloud и LDAP Active Directory.

Нужна консультация или помощь в решении IT вопроса?


    Что умеет 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 и заполнить выводимую форму.
    Nexcloud установка Ubuntu Server, первый запуск после установки
    Первый запуск будет сопровождаться инструкциями по оптимизации:

    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' => '\OC\Memcache\APCu',
    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

    Nexcloud установка Ubuntu Server, индексация базы данных MySQL

    sudo systemctl restart apache2

    Nexcloud установка Ubuntu Server, проверка ошибок

    Короткая ссылка 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

    Nexcloud установка Ubuntu Server, тестирование защищенности сервера

    NextCloud подключение LDAP

    Синхронизация с Active Directory одно из самых популярных требований со стороны безопасности корпоративного сервиса. Все, что нужно для этого – активация соответствующего модуля
    Nexcloud установка Ubuntu Server, включение модуля LDAP
    после этого будет доступна консоль для настройки импорта с Active Directory(LDAP)
    Nexcloud установка Ubuntu Server, настройка 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.

    Если у вас есть профессиональный интерес в расширении данной статьи – заполните форму запроса.