25.09.2021

Создание своего облака Nextcloud

Главная Форумы ОС, сети, софт, настройка, hack *nix системы Создание своего облака Nextcloud

  • Эта тема пуста.
Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Автор
    Сообщения
  • #1458
    Аноним
    Неактивированный

    Сегодня расскажем как создать свое облако, и раздавать кому угодно доступ к нему.

    Можно поставить сервер на любое одно ядерное железо с любым объемом жеского диска (либо арендовать vps сервер и поставить его там)

    Важная особенность данной статьи это у вас должно быть доменное имя (можете уже зарегистрировать). Можно и без него, но это муторно.

    В качестве операционной системы выступит Debian или Ubuntu (большого отличия для заданной тематики не будет)

    [img]http://holpa.ru/img/img/2018-12/18/f3u624zdpt7lp5uolt19hwxog.jpg[/img]

    Для начала настроим репозитории следующим набором команд:

    Code:

    echo ‘deb http://packages.dotdeb.org jessie all’ >> /etc/apt/sources.list
    echo ‘deb-src http://packages.dotdeb.org jessie all’ >> /etc/apt/sources.list
    echo ‘deb http://ftp.debian.org/debian jessie-backports main’ >> /etc/apt/sources.list
    echo ‘deb http://ftp.utexas.edu/dotdeb/ jessie all’ >> /etc/apt/sources.list
    wget https://www.dotdeb.org/dotdeb.gpg
    apt-key add dotdeb.gpg

    Обновим наш сервер командами:

    Code:

    apt -y update
    apt -y upgrade

    Установим необходимые пакеты:

    Code:

    apt-get -y install apache2 mariadb-server libapache2-mod-php7.0 php7.0-redis

    Тут нас попросят придумать пароль для рутовой учётки MariaDB.

    [img]http://holpa.ru/img/img/2018-12/18/6ejqubn8vtq93yfrvw4j1zf98.jpg[/img]

    Вводим пароль (символы не отображаются), жмём Enter и повторно вводим тот-же пароль и жмём Enter.

    Доустановим ещё пакетов командами:

    Code:

    apt-get -y install php7.0-gd php7.0-json php7.0-mysql php7.0-curl php7.0-mbstring
    apt-get -y install php7.0-intl php7.0-mcrypt php7.0-xml php7.0-zip
    apt-get -y install libmagickwand-dev imagemagick php-dev redis-server
    apt-get -y install python-certbot-apache -t jessie-backports

    Запустим и добавим в автозагрузку наши Web-сервер и СУБД:

    Code:

    systemctl start apache2
    systemctl enable apache2
    systemctl start mysql
    systemctl enable mysql

    Можно убедиться, что наш Web-сервер работает, перейдя по адресу http://. Получим такую картинку:

    [img]http://holpa.ru/img/img/2018-12/18/1ynyhjmlkx4kacqfzr8g2r84w.jpg[/img]

    Выполним первичную настройку безопасности СУБД:

    Code:

    mysql_secure_installation

    Вводим тот пароль для MariaDB, который мы придумали ранее. Нам зададут ряд вопросов, отвечаем так:

    [img]http://holpa.ru/img/img/2018-12/18/gca4msv1aqmco1xb9q2srj6da.jpg[/img]

    Теперь зайдём в консоль MariaDB командой:

    Code:

    mysql -u root -p

    Вводим пароль от MariaDB и попадаем в консоль.

    [img]http://holpa.ru/img/img/2018-12/18/b1b5yi79mu1dv2ut4pxcsocmb.jpg[/img]

    Создадим базу данных (точка с запятой в конце команд обязательны):

    Code:

    CREATE DATABASE nextclouddb;

    Создадим учётную запись, с которой на Nextcloud будет обращаться к базе данных. Вместо password придумываем и вставляем в команду новый пароль:

    Code:

    CREATE USER ‘nextcloud’@’localhost’ IDENTIFIED BY ‘password’;

    Дадим этой учётной записи права на базу данных

    Code:

    GRANT ALL PRIVILEGES ON nextclouddb.* TO ‘nextcloud’@’localhost’;

    Обновим таблицу привилегий, чтобы изменения применились:

    Code:

    FLUSH PRIVILEGES;

    И выходим из консоли:

    Code:

    q

    Теперь пора установить сам Nextcloud. Посмотреть список доступных версий можно на этой странице. Выбираем самую свежую. На дату написания статьи это nextcloud-12.0.2

    Скачиваем:

    Code:

    cd /tmp
    wget https://download.nextcloud.com/server/releases/nextcloud-12.0.2.zip

    Распаковываем:

    Code:

    unzip nextcloud-12.0.2.zip

    И переносим к месту постоянного обитания:

    Code:

    mv nextcloud /usr/share/

    Обязательно нужно дать права web-серверу на папку:

    Code:

    chown -R www-data:www-data /usr/share/nextcloud

    Теперь любым удобным способом (например с помощью WinSCP) создадим в папке /etc/apache2/sites-available/ файл с именем nextcloud.conf со следующим содержимым:

    Code:

    ServerName nc.mydomen.ml

    ServerAdmin admin@mydomen.ml
    ServerName nc.mydomen.ml
    DocumentRoot /usr/share/nextcloud


    Options MultiViews FollowSymlinks
    AllowOverride All
    Order allow,deny
    Allow from all

    TransferLog /var/log/apache2/nextcloud_access.log
    ErrorLog /var/log/apache2/nextcloud_error.log

    По тексту конфига исправляем под себя адрес электронной почты и домен (ServerAdmin, ServerName)

    Сохраняем файл и применяем настройки командами:

    Code:

    a2dissite 000-default
    a2ensite nextcloud
    service apache2 reload
    service apache2 restart

    Теперь можно перейти по адресу http://nc.mydomen.ml (свой домен) и настроить наш Nextcloud:

    [img]http://holpa.ru/img/img/2018-12/18/9mojlrhznvksp9cb3so6eh3mb.jpg[/img]

    Придумываем и вводим логин и пароль администратора, вписываем настройки базы данных, которые мы сделали ранее и нажимаем «Завершить установку».

    Quote:

    Сервер уже работает. Осталось настроить безопасность.

    Переведём наш сервер на https. Для этого сначала получим сертификаты командой:

    Code:

    certbot —apache certonly

    На запросы вводим адрес электронной почты (укажите реальный, на него будут приходить уведомления о действиях с сертификатом), принимаем условия использования сервисом Let’s Encrypt (вводим A) и вводим имя домена (или выбираем из предложенного списка), для которого получаем сертификат (например nc.mydomen.ml):

    [img]http://holpa.ru/img/img/2018-12/18/2gkzntsnmlzk4sg8qxnzcvc3z.jpg[/img]

    Отлично, сертификаты получены и лежат в папке /etc/letsencrypt/live/nc.mydomen.ml/

    Срок действия сертификатов — 90 дней. Об истечении срока придёт письмо на указанную выше почту. Для обновления сертификатов используем команду:

    Code:

    certbot renew

    Этот процесс можно автоматизировать с помощью Cron. Пример приведён в статье про ownCloud.

    Настроим Apache. Включим ssl модуль командой:

    Code:

    a2enmod ssl

    Включим конфиг по умолчанию для ssl:

    Code:

    a2ensite default-ssl.conf

    Поскольку нам нужно будет перенаправлять клиентов с 80 порта (http) на 443 (hhtps), то включим модуль перенаправлений:

    Code:

    a2enmod rewrite

    Теперь любым удобным способом (например с помощью WinSCP) создадим в папке /etc/apache2/sites-available/ файл с именем nextcloud-ssl.conf со следующим содержимым:

    Code:



    ServerAdmin admin@mydomen.ml
    DocumentRoot /usr/share/nextcloud
    TransferLog /var/log/apache2/nextcloud_access.log
    ErrorLog /var/log/apache2/nextcloud_error.log
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/nc.mydomen.ml/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/nc.mydomen.ml/privkey.pem

    SSLOptions +StdEnvVars


    SSLOptions +StdEnvVars

    BrowserMatch «MSIE [2-6]»
    nokeepalive ssl-unclean-shutdown
    downgrade-1.0 force-response-1.0
    BrowserMatch «MSIE [17-9]» ssl-unclean-shutdown

    Сохраняем файл и применяем настройки командами:

    Code:

    a2ensite nextcloud-ssl
    service apache2 reload
    service apache2 restart

    Теперь можно перейти по адресу https://nc.mydomen.ml (вы используете своё имя домена) и убедится, что всё работает

    [img]http://holpa.ru/img/img/2018-12/18/n51kbfx86kfpw0yb0t4xdp5yj.jpg[/img]

    Настроим жёсткое перенаправление с http на https. Тогда работа с нашим сайтом будет возможна только по https.

    Откройте файл /etc/apache2/sites-available/nextcloud.conf и добавим две строчки с директивой Rewrite:

    Code:

    ServerName nc.mydomen.ml

    ServerAdmin admin@mydomen.ml
    ServerName nc.mydomen.ml
    DocumentRoot /usr/share/nextcloud
    RewriteEngine On
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}


    Options MultiViews FollowSymlinks
    AllowOverride All
    Order allow,deny
    Allow from all

    TransferLog /var/log/apache2/nextcloud_access.log
    ErrorLog /var/log/apache2/nextcloud_error.log


    Применим настройки

    Code:

    service apache2 reload
    service apache2 restart

    Попробуйте войти на сайт по http и убедитесь, что вас перенаправляет на https.

    Канал защитили. Теперь оптимизируем производительность сервера за счёт кэширования.

    С помощью WinSCP или иным способом откроем файл /etc/sysctl.conf и добавим в конце строчку:

    Code:

    vm.overcommit_memory = 1

    Сохраним и закроем файл. Перезагрузим сервер, чтобы настройка применилась

    Code:

    reboot

    Запустим и добавим в автозагрузку кэш-сервер Redis:

    Code:

    systemctl start redis-server
    systemctl enable redis-server

    Проверить, что Redis работает и слушает порт 6379 можно командой:

    Code:

    ps ax | grep redis

    [img]http://holpa.ru/img/img/2018-12/18/tq6vd3734ztbfb3aum1kinqf7.jpg[/img]

    В WinSCP или иным способом откроем файл /usr/share/nginx/html/config/config.php. Смотрим на последнюю строчку, она выглядит так:

    );

    Перед ней добавим строчки

    Code:

    ‘memcache.local’ => ‘OCMemcacheRedis’,
    ‘redis’ => array(
    ‘host’ => ‘localhost’,
    ‘port’ => 6379,
    ),

    Сохраним и закроем файл. Зайдите в свой Nextcloud, страницы должны корректно отображаться.

    Сделаем еще одну настройку безопасности.

    Включим модуль headers:

    Code:

    a2enmod headers

    В файл /etc/apache2/sites-available/nextcloud-ssl.conf добавим между тегами в любое место строчку

    Header always set Strict-Transport-Security «max-age=15552000; includeSubDomains»

    Сохраним и закроем файл.

    Применим настройки:

    Code:

    service apache2 reload
    service apache2 restart

    Заходим в Nextcloud и проверяем, что всё работает.

    Profit

    Рекомендации

    1. Не используйте созданную выше учётную запись администратора для постоянной работы. Зайдите в настройки пользователей, создайте группу(ы) для обычных пользователей, создайте пользователей с ограниченными правами, установите квоты.

    [img]http://holpa.ru/img/img/2018-12/18/2idbzasdhas3958bspsxzrm8f.jpg[/img]

    2. Зайдите в приложения (см. скриншот выше) и добавьте функциональности вашему облачному хранилищу. Особенно обратите внимание на возможность зашифровать ваши данные и включить двухфакторную авторизацию. Про включение шифрования можно почитать в конце статьи про ownCloud.

    3. Включите использование системного Cron для фоновых заданий.

    [img]http://holpa.ru/img/img/2018-12/18/fgqwdtayfqy41fw2kfifjz4q6.jpg[/img]

Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Для ответа в этой теме необходимо авторизоваться.