Установка Nextcloud на Windows Server
Содержание
Введение
Итак 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 your_domain.com ServerAlias www.your_domain.com DocumentRoot /var/www/html ... SSLCertificateFile /etc/ssl/certs/apache.crt SSLCertificateKeyFile /etc/ssl/private/apache.key
После установки
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.