Установка Nextcloud на Windows Server: различия между версиями

Материал из system.c
Перейти к навигации Перейти к поиску
(Новая страница: «===Введение=== Итак Nextcloud. Локальное облако. Я заинтересовался этим проектом для замены у к...»)
 
 
(не показано 7 промежуточных версий этого же участника)
Строка 2: Строка 2:
 
Итак Nextcloud. Локальное облако. Я заинтересовался этим проектом для замены у клиентов бесконечных "общих папок", которые в смысле безопасности и распределения прав доступа вообще никак. Плюс возможность отправлять вместо собственно файла во вложении к письму, ссылку на него. Данное описание не претендует на полноту. В любом случае, в интернете достаточно описаний. Скорее это заметки о моментах, которые обычно опускают.
 
Итак Nextcloud. Локальное облако. Я заинтересовался этим проектом для замены у клиентов бесконечных "общих папок", которые в смысле безопасности и распределения прав доступа вообще никак. Плюс возможность отправлять вместо собственно файла во вложении к письму, ссылку на него. Данное описание не претендует на полноту. В любом случае, в интернете достаточно описаний. Скорее это заметки о моментах, которые обычно опускают.
 
===Подготовка системы===
 
===Подготовка системы===
 +
 
====Установка VirtualBox====
 
====Установка VirtualBox====
 
Все попытки установить Nextcloud на IIS закончились ничем :(. Установка запускалась, но при завершении настроек не создавались таблицы в базе данных. Тестовая установка на Debian показала, что это именно проблема Windows сервера. Было решено устанавливать на виртуальную машину apache, php, а SQL сервер и папку с данными оставить на host машине. Это вопрос удобства миграции. На виртуальной машине достаточно перенести папку web сервера, а все данные сохраняются на host машине.<br>
 
Все попытки установить Nextcloud на IIS закончились ничем :(. Установка запускалась, но при завершении настроек не создавались таблицы в базе данных. Тестовая установка на Debian показала, что это именно проблема Windows сервера. Было решено устанавливать на виртуальную машину apache, php, а SQL сервер и папку с данными оставить на host машине. Это вопрос удобства миграции. На виртуальной машине достаточно перенести папку web сервера, а все данные сохраняются на host машине.<br>
Строка 7: Строка 8:
 
Скачиваем установщик по [https://www.virtualbox.org/wiki/Downloads ссылке]. Сначала я установил 6-ю версию, но при запуске виртуальной машины мне выдало ошибку. Поиск по коду свелся к советам типа "протрите фары и похлопайте дверцами". Удалил 6-ю версию и скачал 5.2, все заработало.<br>
 
Скачиваем установщик по [https://www.virtualbox.org/wiki/Downloads ссылке]. Сначала я установил 6-ю версию, но при запуске виртуальной машины мне выдало ошибку. Поиск по коду свелся к советам типа "протрите фары и похлопайте дверцами". Удалил 6-ю версию и скачал 5.2, все заработало.<br>
 
Установка и создание виртуальной машины в VirtualBox достаточно тривиально и здесь я это описывать не буду. Диск я выбрал размером 16Gb, памяти 1Gb и два виртуальных процессора.  
 
Установка и создание виртуальной машины в VirtualBox достаточно тривиально и здесь я это описывать не буду. Диск я выбрал размером 16Gb, памяти 1Gb и два виртуальных процессора.  
 +
 
====Установка Debian====
 
====Установка Debian====
 
Образ Debian берем [https://www.debian.org/CD/netinst/ отсюда]. Запускаем VM. При установке следуем инструкциям. При выборе пакетов указываем web-server, чтобы apache не устанавливать потом. После завершения добавляем необходимые пакеты. Сначала sudo.
 
Образ Debian берем [https://www.debian.org/CD/netinst/ отсюда]. Запускаем VM. При установке следуем инструкциям. При выборе пакетов указываем web-server, чтобы apache не устанавливать потом. После завершения добавляем необходимые пакеты. Сначала sudo.
Строка 13: Строка 15:
 
Последней командой добавляем пользователя в группу wheel.<br>
 
Последней командой добавляем пользователя в группу wheel.<br>
 
Далее необходимо установить пакеты, необходимые для сборки модулей ядра. Все это понадобиться для дополнений гостевой системы.
 
Далее необходимо установить пакеты, необходимые для сборки модулей ядра. Все это понадобиться для дополнений гостевой системы.
     # apt install linux-headers-$(uname -r) cpp gcc make
+
     # sudo apt install linux-headers-$(uname -r) cpp gcc make
 
После того, как все это хозяйство настроится установим дополнения гостевой системы. В меню виртуальной машины выбираем "Устройства" - "Подключить образ диска Дополнений гостевой ОС...". Монтируем виртуальный CD-ROM командой
 
После того, как все это хозяйство настроится установим дополнения гостевой системы. В меню виртуальной машины выбираем "Устройства" - "Подключить образ диска Дополнений гостевой ОС...". Монтируем виртуальный CD-ROM командой
     # mount /media/cdrom -o exec
+
     # sudo mount /media/cdrom -o exec
 
Запускаем установку дополнений
 
Запускаем установку дополнений
 
     # cd /media/cdrom
 
     # cd /media/cdrom
     # ./VBoxLinuxAdditions.run
+
     # sudo ./VBoxLinuxAdditions.run
 
Установка займет некоторое время необходимое для сборки модулей.<br>
 
Установка займет некоторое время необходимое для сборки модулей.<br>
 
В файл '''/etc/fstab''' добавляем следующую строку
 
В файл '''/etc/fstab''' добавляем следующую строку
Строка 40: Строка 42:
 
     EXIT;
 
     EXIT;
 
Естественно имена имена бызы данных, пользователя, пароль указываете собственные. И не забудьте заменить ''localhost'' на адрес вашего сервера в виртуальной машине.
 
Естественно имена имена бызы данных, пользователя, пароль указываете собственные. И не забудьте заменить ''localhost'' на адрес вашего сервера в виртуальной машине.
 +
 +
===Установка PHP и настройка apache===
 +
Далее нам потребуется установить php и необходимые дополнения. Выполняем команду
 +
    # sudo apt install php php-mysql php-zip php-dom php-xml php-soap php-apcu
 +
    > php-smbclient php-ldap php-redis php-xmlrpc php-mbstring php-gd php-curl
 +
    > php-intl php-json php-imagick
 +
После установки php необходимо в файле php.ini отредактировать следующие параметры
 +
    memory_limit = 512M ; рекомендуемый для Nextcloud объем памяти
 +
Перезапускаем сервер apache
 +
    # sudo service apache2 restart
  
 
===Установка Nextcloud===
 
===Установка Nextcloud===
 
Скачиваем Nextcloud [https://download.nextcloud.com/server/releases/ отсюда]. В простейшем варианте просто распаковываем в папку ''/var/www/html'' на виртуальной машине. И меняем права на папку
 
Скачиваем Nextcloud [https://download.nextcloud.com/server/releases/ отсюда]. В простейшем варианте просто распаковываем в папку ''/var/www/html'' на виртуальной машине. И меняем права на папку
     # chown -R www-data:www-data /var/www/html/nextcloud/
+
     # sudo chown -R www-data:www-data /var/www/html/nextcloud/
 
     # sudo chmod -R 755 /var/www/html/nextcloud/
 
     # sudo chmod -R 755 /var/www/html/nextcloud/
Далее нам потребуется установить php и необходимые дополнения. Выполняем команду
 
    # apt install php php-mysql php-zip php-dom php-xml php-soap php-apcu
 
    > php-smbclient php-ldap php-redis php-xmlrpc php-mbstring php-gd php-curl
 
    > php-intl php-json php-imagick
 
    # service apache2 restart
 
 
Можно пробовать. В адресной строке браузера вводим http://''адрес_сервера''/nextcloud и переходим к настройке.
 
Можно пробовать. В адресной строке браузера вводим http://''адрес_сервера''/nextcloud и переходим к настройке.
 +
 +
===Создание самоподписанного сертификата и настройка SSL соединения===
 +
Nextcloud настоятельно рекомендует настроить SSL для работы с файловым архивом. В принципе рекомендация логичная, но тут возникают некоторые проблемы. Выпуск нормального сертификата обойдется в сумму более 10000 руб. в год, что для простенького локального облака как-то чересчур! Вариант с Let's Encrypt великолепный, но, внезапно, ни один из виденных мной регистраторов доменных имен в зоне ru не дает возможности вставить DNS запись. Увы, но если нет желания платить внушительную сумму приходится мериться с самоподписанным сертификатом, игнорируя ругательства браузеров.
 +
Для выпуска сертификата необходимо ввести команду:
 +
    # sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/apache.key -out /etc/ssl/certs/apache.crt
 +
Где:
 +
* -days - срок действия сертификата (берем 10 лет или на ваше усмотрение);
 +
* -keyout - папка для ключа (может быть любой);
 +
* -out - папка для сертификата.
 +
После запуска команды отвечаем на вопросы. Аккуратнее с полем "Common name", туда требуется ввести корректное доменное имя сайта. Все, сертификат готов.<br>
 +
Далее нам необходимо подготовить конфигурационный файл apache. Идем в папку /etc/apache2/sites-available и ищем там файл default-ssl.conf. В этом файла нужно отредактировать (или добавить если их нет) следующие строки:
 +
    ServerAdmin admin@example.com
 +
    ServerName ''адрес_сервера''
 +
    <IfModule mod_headers.c>
 +
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
 +
    </IfModule>
 +
    DocumentRoot /var/www/html/nextcloud
 +
    ...
 +
    SSLCertificateFile /etc/ssl/certs/apache.crt
 +
    SSLCertificateKeyFile /etc/ssl/private/apache.key
 +
Далее разблокируем поддержку ssl в apache:
 +
    # sudo a2enmod ssl
 +
    # sudo a2enmod headers
 +
Включаем виртуальный хост:
 +
    # sudo a2ensite default-ssl.conf
 +
И перезапускаем apache:
 +
    # sudo service apache2 restart
 +
Можно поверить зайдя на
 +
    https://''адрес_сервера''
  
 
===После установки===
 
===После установки===
 +
 
====WebDAV====
 
====WebDAV====
 
При монтировании папки Nextcloud как сетевого диска в Windows возникают проблемы. Запрашивает пароль и выдает ошибку 67 - "Сетевой путь не найден". Для исправления ошибке необходимо в реестре по пути
 
При монтировании папки Nextcloud как сетевого диска в Windows возникают проблемы. Запрашивает пароль и выдает ошибку 67 - "Сетевой путь не найден". Для исправления ошибке необходимо в реестре по пути
 
'''HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters''' в параметре '''BasicAuthLevel''' проставить значение '''2''' и перезапустить службу '''Веб-клиент'''.
 
'''HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters''' в параметре '''BasicAuthLevel''' проставить значение '''2''' и перезапустить службу '''Веб-клиент'''.
 +
 
====Запуск виртуальной машины как службы====
 
====Запуск виртуальной машины как службы====
 
Для этих целей можно использовать [http://sourceforge.net/projects/vboxvmservice/ VirtualboxVmService]. Скачайте программу соответственно свой версии VirtualBox, запустите установку. Собственно все, остается только отредактировать файл VBoxVmService.ini (по умолчанию он находится в папке C:\vms).
 
Для этих целей можно использовать [http://sourceforge.net/projects/vboxvmservice/ VirtualboxVmService]. Скачайте программу соответственно свой версии VirtualBox, запустите установку. Собственно все, остается только отредактировать файл VBoxVmService.ini (по умолчанию он находится в папке C:\vms).

Текущая версия на 10:04, 17 октября 2019

Введение

Итак Nextcloud. Локальное облако. Я заинтересовался этим проектом для замены у клиентов бесконечных "общих папок", которые в смысле безопасности и распределения прав доступа вообще никак. Плюс возможность отправлять вместо собственно файла во вложении к письму, ссылку на него. Данное описание не претендует на полноту. В любом случае, в интернете достаточно описаний. Скорее это заметки о моментах, которые обычно опускают.

Подготовка системы

Установка VirtualBox

Все попытки установить Nextcloud на IIS закончились ничем :(. Установка запускалась, но при завершении настроек не создавались таблицы в базе данных. Тестовая установка на Debian показала, что это именно проблема Windows сервера. Было решено устанавливать на виртуальную машину apache, php, а SQL сервер и папку с данными оставить на host машине. Это вопрос удобства миграции. На виртуальной машине достаточно перенести папку web сервера, а все данные сохраняются на host машине.
В качестве виртуальной машины был выбран VirtualBox. QEMU работает очень медленно, а поддержки KVM в Windows понятно нет.
Скачиваем установщик по ссылке. Сначала я установил 6-ю версию, но при запуске виртуальной машины мне выдало ошибку. Поиск по коду свелся к советам типа "протрите фары и похлопайте дверцами". Удалил 6-ю версию и скачал 5.2, все заработало.
Установка и создание виртуальной машины в VirtualBox достаточно тривиально и здесь я это описывать не буду. Диск я выбрал размером 16Gb, памяти 1Gb и два виртуальных процессора.

Установка Debian

Образ Debian берем отсюда. Запускаем VM. При установке следуем инструкциям. При выборе пакетов указываем web-server, чтобы apache не устанавливать потом. После завершения добавляем необходимые пакеты. Сначала sudo.

   # apt install sudo
   # usermod -a -G sudo sergiy

Последней командой добавляем пользователя в группу wheel.
Далее необходимо установить пакеты, необходимые для сборки модулей ядра. Все это понадобиться для дополнений гостевой системы.

   # sudo apt install linux-headers-$(uname -r) cpp gcc make

После того, как все это хозяйство настроится установим дополнения гостевой системы. В меню виртуальной машины выбираем "Устройства" - "Подключить образ диска Дополнений гостевой ОС...". Монтируем виртуальный CD-ROM командой

   # sudo mount /media/cdrom -o exec

Запускаем установку дополнений

   # cd /media/cdrom
   # sudo ./VBoxLinuxAdditions.run

Установка займет некоторое время необходимое для сборки модулей.
В файл /etc/fstab добавляем следующую строку

   имя_общей_папки точка_монтирования vboxsf auto,uid=33,gid=33,umask=0007 0 0

,где

  • имя_общей_папки имя общей папки его указали в диалоге создания VirtualBox,
  • точка_монтирования - куда монтируем общую папку,
  • vboxsf - тип файловой системы,
  • auto,uid=33,gid=33,umask=0007 - параметры монтирования, uid и gid указываем для пользователя и папки www-data, umask - для прав доступа к папке монтирования равным 770, это требования nextcloud.

Настройки сети я в данном описании пропускаю, так как это вещь достаточно индивидуальная.
По окончании перезагружаем виртуальную машину.

Установка и настройка MySQL

Установка MySQL на WIndows описана в этой статье, так что остается только создать базу данных для Nextcloud. Запускаем командную строку от имени Администратора и переходим в папку bin каталога с MySQL. Запускаем MySQL командой

   mysql -u root -p

и выполняем следующие команды:

   CREATE DATABASE nextcloud;
   CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'new_password_here';
   GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY 'user_password_here' WITH GRANT OPTION;
   FLUSH PRIVILEGES;
   EXIT;

Естественно имена имена бызы данных, пользователя, пароль указываете собственные. И не забудьте заменить localhost на адрес вашего сервера в виртуальной машине.

Установка PHP и настройка apache

Далее нам потребуется установить php и необходимые дополнения. Выполняем команду

   # sudo apt install php php-mysql php-zip php-dom php-xml php-soap php-apcu 
   > php-smbclient php-ldap php-redis php-xmlrpc php-mbstring php-gd php-curl
   > php-intl php-json php-imagick 

После установки php необходимо в файле php.ini отредактировать следующие параметры

   memory_limit = 512M ; рекомендуемый для Nextcloud объем памяти

Перезапускаем сервер apache

   # sudo service apache2 restart

Установка Nextcloud

Скачиваем Nextcloud отсюда. В простейшем варианте просто распаковываем в папку /var/www/html на виртуальной машине. И меняем права на папку

   # sudo chown -R www-data:www-data /var/www/html/nextcloud/
   # sudo chmod -R 755 /var/www/html/nextcloud/

Можно пробовать. В адресной строке браузера вводим http://адрес_сервера/nextcloud и переходим к настройке.

Создание самоподписанного сертификата и настройка SSL соединения

Nextcloud настоятельно рекомендует настроить SSL для работы с файловым архивом. В принципе рекомендация логичная, но тут возникают некоторые проблемы. Выпуск нормального сертификата обойдется в сумму более 10000 руб. в год, что для простенького локального облака как-то чересчур! Вариант с Let's Encrypt великолепный, но, внезапно, ни один из виденных мной регистраторов доменных имен в зоне ru не дает возможности вставить DNS запись. Увы, но если нет желания платить внушительную сумму приходится мериться с самоподписанным сертификатом, игнорируя ругательства браузеров. Для выпуска сертификата необходимо ввести команду:

   # sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/apache.key -out /etc/ssl/certs/apache.crt

Где:

  • -days - срок действия сертификата (берем 10 лет или на ваше усмотрение);
  • -keyout - папка для ключа (может быть любой);
  • -out - папка для сертификата.

После запуска команды отвечаем на вопросы. Аккуратнее с полем "Common name", туда требуется ввести корректное доменное имя сайта. Все, сертификат готов.
Далее нам необходимо подготовить конфигурационный файл apache. Идем в папку /etc/apache2/sites-available и ищем там файл default-ssl.conf. В этом файла нужно отредактировать (или добавить если их нет) следующие строки:

   ServerAdmin admin@example.com
   ServerName адрес_сервера
   <IfModule mod_headers.c>
     Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
   </IfModule>
   DocumentRoot /var/www/html/nextcloud
   ...
   SSLCertificateFile /etc/ssl/certs/apache.crt
   SSLCertificateKeyFile /etc/ssl/private/apache.key

Далее разблокируем поддержку ssl в apache:

   # sudo a2enmod ssl
   # sudo a2enmod headers

Включаем виртуальный хост:

   # sudo a2ensite default-ssl.conf

И перезапускаем apache:

   # sudo service apache2 restart

Можно поверить зайдя на

   https://адрес_сервера

После установки

WebDAV

При монтировании папки Nextcloud как сетевого диска в Windows возникают проблемы. Запрашивает пароль и выдает ошибку 67 - "Сетевой путь не найден". Для исправления ошибке необходимо в реестре по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters в параметре BasicAuthLevel проставить значение 2 и перезапустить службу Веб-клиент.

Запуск виртуальной машины как службы

Для этих целей можно использовать VirtualboxVmService. Скачайте программу соответственно свой версии VirtualBox, запустите установку. Собственно все, остается только отредактировать файл VBoxVmService.ini (по умолчанию он находится в папке C:\vms).

   [Settings]
   # Путь к дирректории .VirtualBox для вашего профиля. Она обычно располагается 
   # в персональной папке пользователя.
   VBOX_USER_HOME=C:\Users\Администратор\.VirtualBox
   # Стартовать или нет VBoxWebSrv.exe, VirtualBox HTTP веб сервер автоматически.
   # Может быть «yes» или «no». Оставьте ее в «no» если вы не знаете что это.
   RunWebService=no
   # Параметр используется для замедления выключения компьютера чтобы предотвратить
   # крах виртуальной машины при выключении или перезагрузке. (5000=5 секунд). 
   # Заметьте что Windows имеет ограниченя как долго контроллер сервиса будет ждать
   # когда система перезагрузится. Лимит времени определен в переменной 
   # WaitToKillServiceTimeout в следующей ветке реестра 
   # HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control. Ваше значение PauseShutdown
   # не должно превышать это значение в реестре.
   PauseShutdown=5000
   # Далее следуют секции виртуальных машин. Их может быть несколько, сответственно
   # Vm0, Vm1 и т. д.
   [Vm0]
   # Имя для запуска VM (Чуствительно к регистру!)
   VmName=nextcloud
   # Метод выключения («savestate», или «acpipowerbutton»). Когда используется
   # «savestate», состояние машины сохраняется и может быть возобновлено когда
   # она старует в следующий раз. Когда используется «acpipowerbutton» , VM просто
   # выключится. Если ваша VM долго выключается рекомендуется использовать
   # savestate, который завершает намного быстрее.
   ShutdownMethod=acpipowerbutton
   # Будет или нет VM стартовать автоматически когда VBoxVmService работает. 
   # По умолчанию установлено в «yes».
   AutoStart=yes

После редактирования ini-файла требуется запустить службу VBoxVmService.