Установка Nextcloud на Windows Server: различия между версиями
Danamond (обсуждение | вклад) |
Danamond (обсуждение | вклад) |
||
(не показано 6 промежуточных версий этого же участника) | |||
Строка 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. | ||
Строка 41: | Строка 43: | ||
Естественно имена имена бызы данных, пользователя, пароль указываете собственные. И не забудьте заменить ''localhost'' на адрес вашего сервера в виртуальной машине. | Естественно имена имена бызы данных, пользователя, пароль указываете собственные. И не забудьте заменить ''localhost'' на адрес вашего сервера в виртуальной машине. | ||
− | ===Установка | + | ===Установка PHP и настройка apache=== |
− | |||
− | |||
− | |||
Далее нам потребуется установить php и необходимые дополнения. Выполняем команду | Далее нам потребуется установить php и необходимые дополнения. Выполняем команду | ||
# sudo apt install php php-mysql php-zip php-dom php-xml php-soap php-apcu | # 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-smbclient php-ldap php-redis php-xmlrpc php-mbstring php-gd php-curl | ||
> php-intl php-json php-imagick | > php-intl php-json php-imagick | ||
+ | После установки php необходимо в файле php.ini отредактировать следующие параметры | ||
+ | memory_limit = 512M ; рекомендуемый для Nextcloud объем памяти | ||
+ | Перезапускаем сервер apache | ||
# sudo service apache2 restart | # sudo service apache2 restart | ||
+ | |||
+ | ===Установка Nextcloud=== | ||
+ | Скачиваем Nextcloud [https://download.nextcloud.com/server/releases/ отсюда]. В простейшем варианте просто распаковываем в папку ''/var/www/html'' на виртуальной машине. И меняем права на папку | ||
+ | # sudo chown -R www-data:www-data /var/www/html/nextcloud/ | ||
+ | # sudo chmod -R 755 /var/www/html/nextcloud/ | ||
Можно пробовать. В адресной строке браузера вводим 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.