Nextcloud установка на windows server 2012

Содержание

  • 1 Введение
  • 2 Подготовка системы
    • 2.1 Установка VirtualBox
    • 2.2 Установка Debian
  • 3 Установка и настройка MySQL
  • 4 Установка PHP и настройка apache
  • 5 Установка Nextcloud
  • 6 Создание самоподписанного сертификата и настройка SSL соединения
  • 7 После установки
    • 7.1 WebDAV
    • 7.2 Запуск виртуальной машины как службы

Введение

Итак 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.

If you intend to use unlimited and more private space instead of using storage spaces such as Dropbox or OneDrive after purchasing your own Windows virtual server, you will most likely go to Nextcloud.

Nextcloud is an open-source, private cloud space for storing files and information. You have complete control over the information stored on this platform, and no third party has control over it. If you plan to use this program on Windows, you can install Nextcloud on the Windows server in two ways: through Docker Desktop or a Linux distribution and Apache web server.

In addition to storing files and information, Nextcloud is a platform and workspace where you can share files with others, organize meetings, and manage tasks.

Nextcloud is basically a client-side application through which the user connects to the server. This program is also used as a database to respond to millions of users.

This program can be used on all platforms, i.e. Linux, Windows, Mac, Android, and iOS. By reading this article, you will learn 2 methods of installing Nextcloud on a Windows server.

Prerequisites for installing Nextcloud on a Windows server

To install Nextcloud on Windows with both methods, we must have a number of prerequisites, which are:

  • 64-bit system
  • At least 8 GB of RAM
  • Quad-core CPU
  • No network restrictions by CGNAT
  • Public domain with the port opening capability
  • Windows 10 or 11 or Windows Server

In general, we need a Linux kernel to install Nextcloud. If you can’t install Nextcloud on Linux, you can install one of its distributions on Windows.

There are two ways to install Nextcloud on Windows Server: installing Nextcloud All-in-One or using Apache web root and a Linux distribution. For the first method, we will need Docker Desktop, and for the second method, we will need some programming knowledge.

If you are not familiar with the Linux environment and programming, it is better to use the first method; If the second method is the most suitable method for programmers.

Installing Nextcloud on Windows via Docker Desktop

This method installs Nextcloud on the Windows server by installing Nextcloud All-in-One, a Docker, with the help of Docker Desktop.

In this method, we are going to complete the process of installing Nextcloud on Windows and the domain of the site without the need for the Apache web server. Just follow the steps below carefully.

Step 1: Install Docker Desktop

Download and install Docker Desktop. Check both options at this stage of installation.

Open the app.

Second step: Download the WSL2 Linux kernel package update

After clicking the Accept button, you will see the following screen. Click on the link you see on the page.

On the page you see, click on the first link to download the latest WSL2 Linux kernel package update.

WSL stands for Windows Subsystem for Linux and means Windows Linux Subsystem.

After downloading the ‘wsl_update msi’ file, install it.

Now click Restart on the following page to restart the Docker desktop.

Third step: Docker Desktop settings in Windows

At this stage, after entering the Docker Desktop environment, go to the settings section and check the first square on the right so that the program will run when you log in to the system.

Step 4: Install Nextcloud AIO

After successfully installing Docker Desktop, you can install Nextcloud AIO on a Windows server. To do so, enter the terminal and run Nextcloud with the following command.

Note: Replace /run/desktop/mnt/host/c/ncdata, which is equivalent to C:\ncdata in your Windows host, with the actual path.

 
docker run ^
--sig-proxy=false ^
--name nextcloud-aio-mastercontainer ^
--restart always ^
--publish 80:80 ^
--publish 8080:8080 ^
--publish 8443:8443 ^
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config ^
--volume //var/run/docker.sock:/var/run/docker.sock:ro ^
-e NEXTCLOUD_DATADIR="/run/desktop/mnt/host/c/ncdata" ^
nextcloud/all-in-one:latest

Now enter the system browser and go to the link https://localhost:8080. After accepting the certificate, you will go to the following page.

Click on Open Nextcloud AIO login and login with your Nextcloud password.

Now you can see the Nextcloud dashboard.

Step five: Setting Nextcloud on the site

Enter your site’s domain address in the empty field. Then, set DNS to display the site’s public IP. Finally, connect ports 433/TCP, 3478/udp, and 3478/TCP to Windows.

After setting these things correctly, you can proceed to the next step. In this step, you can set optional add-ons and a time zone. Then click on Start containers to download and run containers.

After the containers are completely downloaded, you will see the following image, which shows them starting to install and run.

After installing and running Containers, you will see the following image.

Now you can enter Nextcloud with your username and password through the link below.

http://localhost/nextcloud

Installing Nextcloud on Windows via WSL and Apache web server

WSL stands for Windows Subsystem for Linux and means Windows Linux Subsystem. By installing WSL on Windows, you can use the command line and other Linux privileges.

In this method, we want to install Nextcloud on the Windows server using WSL2 and Apache web root.

Step 1: Run Powershell

Run Powershell or Windows terminal in administrator mode.

Second step: activation of WSL and virtual machine

We activate the WSL and virtual machine by running the following commands in the terminal:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all

After both features are enabled and the question appears, type y and press enter to reboot the system.

Third step: Use WSL2

After restarting the system, enter the terminal in administrator mode and run the following commands in order to upgrade the WSL version to WSL2 and use it:

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
wsl --set-default-version 2
ProgressPreference
= 'SilentlyContinue'; Invoke-WebRequest
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
-OutFile .\wsl_update_x64.msi
ProgressPreference = 'Continue'

After running the last code, you will enter the WSL update installation environment. Follow the steps until the installation is complete.

Step 4: Install the Linux distribution

Now exit the terminal and enter the Microsoft StoreDNS . Search and install one of the Linux distributions in the Search section. In this tutorial, we will install the Debian distribution.

Run Debian after installation is complete. After fully loading, Debian will ask you to create a user account in the Linux environment with a name and password. Enter the username and password of your choice.

Step 5: Install Nextcloud

This step consists of several parts that you need to do to install Nextcloud:
Installing the required updates and packages

Run the following commands in the Debian environment:

sudo apt install unzip wget -y
sudo apt install apache2 mariadb-server mariadb-client -y
sudo
apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php-common
php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline
php7.4-intl php7.4-json php7.4-gd php7.4-mbstring php7.4-mysql
php7.4-xml php7.4-zip php7.4-curl -y
sudo service mariadb start
mysql_secure_installation

Database settings and root account

After executing the last command, press Enter to log in as the root user. In this section, we will set the access of other users and topics.

In this step, enter N so that the process does not switch to socket authentication mode:

Type Y and press Enter to set a root password. Enter the password twice to set it.

At this point, enter Y and press Enter to block other users’ access. Then enter Y and run to disable the root user’s remote login. Continue to enter Y to delete the test database.

At the end, enter the letter Y and press enter to reload the privilege tables:

Login to MySQL

Log in to MySQL using the following command and the password you set:

Create Nextcloud database and database user

Now run the following commands in order to create the Nextcloud database and the database user:

CREATE DATABASE nextclouddb;
GRANT ALL ON nextclouddb.* to 'nextcloud_rw'@'localhost' IDENTIFIED BY 'N3xtCl0ud!';

Download Nextcloud on Apache webroot

We download and extract Nextcloud in Apache web root through the following commands:

wget -O /tmp/nextcloud.zip https://download.nextcloud.com/server/releases/latest.zip
sudo unzip -q /tmp/nextcloud.zip -d /var/www
sudo chown -R www-data:www-data /var/www/nextcloud
sudo nano /etc/apache2/sites-available/nextcloud.conf

After entering the last command, you will enter the nextcloud.conf file editor, which is the new site settings file.

Setting nextcloud.conf

Enter the following codes inside it:

Alias /nextcloud "/var/www/nextcloud/"
<directory /var/www/html/nextcloud/>
Options +FollowSymlinks
AllowOverride All
Require all granted

Dav off

SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</directory>

Press CTRL+O, then Enter and finally CTRL+X to write the codes to the file.

Site activation

After going to the terminal, enter the following codes to activate the site and reload Apache 2 to apply the changes.

sudo a2enmod rewrite headers env dir mime dav
sudo service apache2 restart

If you encounter a firewall warning, select the allow access option.

Completing the installation of nextcloud on Windows

To complete the installation of Nextcloud on the Windows server, enter the following address in your browser:

http://DNSorIP/nextcloud

You will see the nextcloud installation page at this address.

Enter the selected username and password. Click on the storage & database link to view the rest of the page. Then fill in the blanks with the following information:

username: nextcloud_rw
password: N3xtCl0ud!
database name: nextclouddb
database host: localhost

Click Install to install nextcloud. Then enter its environment.

In this section, you can install the recommended programs.

Welcome to the Nextcloud environment in WSL!

Conclusion

Nextcloud is an information storage space that has both a paid version and a free version, and its features go beyond just a storage space. Unlike other storage spaces, this platform has no volume limitations.
Depending on your preference, you can choose either Docker Desktop or the Apache web server to install Nextcloud on a Windows server.
We have thoroughly reviewed both methods of installing Nextcloud on a Windows server. By writing your questions in the comments section, you help our experts to provide answers as quickly as possible.

Доброго времени суток! С уходом компаний я задался вопросом: «что делать, если прикроют мой любимый Google Drive?». Понятно, что есть аналоги – Яндекс.Диск и Облако Mail.ru, но оба бесплатно предоставляют только 8 гб дискового пространства, а дальше жесткая тарификация, в то время как Google дает 15 и стоит дешево. «А так, чтобы бесплатно?». Выяснилось, что существует [достаточно много open-source решений]() для домашнего и корпоративного использования. Одним из самых популярных и навороченных является система NextCloud, представляющая собой набор программ и модулей для развертывания своего полноценного облачного хранилища. NextCloud Server даже предлагается для скачивания во время установки Ubuntu Server.

Почитал документацию и решил попробовать поставить на домашнем компьютере в своей локальной сети. Прежде чем описывать поэтапную настройку, изложу те проблемы и технические решения, которые нужны для их обхода, чтобы Вы могли понять, подходит ли NextCloud лично Вам.

Что полезного содержит эта статья.

  • Запуск NextCloud в докере на Windows и Linux.

  • Запуск NextCloud на домашнем компьютере. Проблемы, ограничения.

  • Запуск NextCloud для тестирования. Приобретение понимания, нужен ли этот продукт.

  • Анализ целесообразности развертывания облака дома.

  • Подробный разбор параметров контейнера NextCloud AIO.

  • VPN-тоннель домой с использованием сервиса Hamachi. Обход проблемы отсутствия белого ip.

  • Настройка reverse-proxy на базе Nginx, Apache или Caddy.

  • Запуск HTTPS-сервера на домашнем компьютере.

  • Получение SSL-сертификата с помощью сервиса letsencrypt.

  • Краткий разбор форматов SSL-сертификатов.

  • Настройка файервола в Windows.

Стэк.

Домашняя машина, на которой запущен NextCloud: Windows 10, Docker, образ NextCloud AIO, Hamachi-клиент для Windows, PuTTy.

Reverse-proxy-сервер: Ubuntu Server, certbot, Nginx, или Apache, или Caddy, консольный Hamachi-клиент для debian.

Ключевые слова.

NextCloud, NextCloud-AIO, reverse-proxy, Nginx, Apache, Certbot, Hamachi, localhost, Windows, Defender, SSL, HTTPS дома.

Содержание.

  • Целесообразность

  • Об образе NextCloud AIO

  • Этап 1. Настройка VPN

  • Этап 2. Получение SSL-сертификата

    • Покупка

    • Самописные сертификаты certbot

  • Этап 3. Настройка reverse-proxy

    • Apache

    • Nginx

    • Caddy

    • Тестирование

  • Этап 4. Запуск NextCloud AIO в Docker

    • Переменные окружения

    • Volumes

    • Порты

    • Пояснения к опциям docker run

    • Запуск

    • Первичная настройка

    • Не работает domaincheck

  • Этап 5. Фаервол

  • Инструменты Windows для диагностики сетевых интерфейсов

  • Заключение

Целесообразность.

Зададимся вопросом: а надо ли оно нам? Когда я приступал к настройке в первый раз, не зная особенностей этого программного комплекса, я бы однозначно ответил «да». Собственно, проблема стояла четко, и ее надо было преодолеть. У меня была техническая возможность и пометка в документации, что это развернуть NextCloud дома возможно. Но действительность оказалась, как всегда, скажем, другой. Сравним ожидание и реальность:

Ожидание:

  • Использование своего железа: большие объем диска и ОП, быстрый процессор.

  • Сервер установлен на той же машине, с которой осуществляется подключение loopback (localhost), следовательно, доступ к файлам мгновенный, как при использовании средств просмотра.

  • Быстрый доступ (до 100 Мбит/с) со всех устройств в квартире, находящихся в локальной Wi-Fi- или Ethernet-сети: ПК, ноутбука, планшета, смартфона, часов, холодильника – для всей семьи.

  • Быстрое добавление файлов и внесение изменений на диск с помощью домашнего компьютера, минуя сетевые операции, например, копирование с флэшки или переносного диска.

  • Доступ к файлам на ПК из любой точки мира с шифрованием.

  • Авторизация подключений путем добавления пользователей в сеть VPN.

  • Гибкая настройка доступа с помощью дополнительных модулей NextCloud для авторизации.

  • Клевые расширения: сервис авторизации через соцсети, аналоги Google Meets, Google-карт и Google-календаря, таск-трекеры и т.д. — все в одном месте —  прямо как у «корпорации добра».

  • OpenSource, а значит, поддержка на форумах, постоянные обновления.

  • Все бесплатно, исключая затрат на железо: нет платы за ПО и аренду диска в облаке.

  • Не надо настраивать файервол, т. к. vpn — это частная сеть.

Реальность:

  • Отсутствие дистрибутива сервера NextCloud под Windows. Придется разворачивать на VM или в Docker. Но есть Windows-клиент. Однако, основным является браузерный клиент, а он кроссплатформенный.

  • NextCloud обязывает завести домен несмотря на то, что часто достаточно было бы подключаться по VPN. Его нельзя запустить на localhost (127.0.0.1) или другом IP без домена.

  • SSL. В принципе на этом можно было бы закончить. В репозитории NextCloud прямым текстом говорится о том, что концепция этой утилиты состоит в работе только с прокси по HTTPS. К сожалению, обязательная привязка к SSL перечеркивает все преимущества, основанные на быстром доступе по следующим причинам:

    • SSL-сертификат работать будет только на домене. IP-адрес, на который ведет домен, должен вести к конечной точке, которая может принимать внешние соединения, для того, чтобы стала возможной процедура верификации домена, а значит, нужен белый IP или внешний сервер, который будет выступать шлюзом в нашу локальную сеть, то есть проксировать запросы, а также само доменное имя.

    • Белый IP требует денежных вложений, чего изначально я пытался избежать. За внешний сервер даже самый слабый так же нужно платить аренду. Кроме того, согласно документации NextCloud’а не желательно, чтобы само облачное хранилище работало на том же хосте, на котором хранятся SSL-сертификаты, так что придется настраивать reverse-proxy. Я арендовал самый дешевый сервер: за 400 рублей в месяц, 1 ядро, 1 Гб, 32 Гб – супер-невыгодное предложение (об этом далее). Это уже дороже, чем подписка Google Drive (от 140 рублей за 30 Гб до 700 за 2 Тб). В идеале, стоило бы разместиться у друга или на выделенном сотрудникам сервере в офисе компании, в которой Вы работаете (обязательно проконсультируйтесь у сисадмина по устранению уязвимостей, связанных с работой VPN).

    • Сервер с 1 ГБ виртуальной ОЗУ тормозит (утилита top показывает загрузку 70-90%), и не может скомпилировать даже небольшой проект, а в режиме reverse-proxy с трудом способен обеспечить доступ 2-м клиентам одновременно, хотя значительную задержку вносят операции на моем HDD (чтение HDD происходит со скоростью около 30 Мбит/с).

    • Большая задержка по сети: трафик идет от клиента в датацентр, где развернут прокси, а оттуда ко мне домой, при этом пропускная способность датацентра, как водится, отличная, а ADSL-линия (старая технология доступа в интернет по телефонным проводам), протянутая ко мне провайдером, обеспечивает скорость входящих пакетов (на скачивание) всего 40 Мбит/с, и если я не ошибся в определении технологии, используемой провайдером, скорость исходящих пакетов (выгрузка в интернет, т.е. максимальная скорость доступа к моему «облаку») ограничена где-то 10 Мбит/с, когда обычная jpeg-картинка весит 4.2 Мб.

    • SSL-сертификат иногда выписывается при оплате домена, но в других случаях требует отдельной покупки. Однако его можно выписать себе самому. Самописные сертификаты не принимаются современными браузерами или принимаются ограниченно. Преимущество NextCloud состоит в том, что он умеет самостоятельно решать эту проблему, но только если не используется свой reverse-proxy.

  • Использование виртуальной машины накладывает ограничение на работу с облачным хранилищем напрямую через диск: все изменения в хостовой ФС NTFS должны быть проиндексированы (продублированы) в гостевой ФС Ext4. Хорошая новость состоит в том, что это не препятствие: перемещаем папку с ДЗ 30 Гб в папку NextCloud/data/<user>/files и создаем директорию с таким же названием через веб-клиент (в документации называется UI-client); однако иногда выскакивают предупреждения о невозможности выполнения операции особенно при удалении. На деле, мы всегда знаем, что ничего никуда не удаляется, а файлы просто перемещаются по диску в т. ч. в корзину.

  • Нужно не забыть настроить файервол как на домашнем компьютере, так и на reverse-proxy сервере.

  • Прежде чем приступать к настройке облака через веб-панель администратора, надо обязательно обеспечить доступ на сервер по порту 443. Этого требует NextCloud. Главная проблема при работе сервера на домашнем компьютере связана с этим. В Windows и Linux открыть для входящих соединений зарезервированные порты 0-1024 можно только лишь с правами администратора через настройки файервола. 443 порт может быть также заблокирован роутером. В Windows придется еще повозиться с политиками безопасности, в т. ч. групповыми. Прокси сервер и Docker тут кстати: можно настроить проброс портов и обойти эти трудности.

  • Когда я запустил сервер и установил клиент, я понял, что создатели NextCloud не предполагали использование их утилиты именно таким образом: клиент первым делом предлагает настроить синхронизацию с облаком, но ведь диск с файлами уже находится в этой же системе.

  • Установка программного комплекса NextCloud только для пользования в ЛВС нецелесообразна, т. к. локальная сеть — это изолированная система без возможности принимать входящие подключения, а значит, смысл облака теряется. В таких случаях требуется настроить шлюз с белым IP-адресом. Для работы чисто в ЛВС, возможно, достаточно настроить совместный доступ к папкам на диске NTFS и включить сервер RPC (стандартная возможность в Windows).

О преимуществах и недостатках различных решений обеспечения функционирования своего собственного сервера в виде аренды облака, аренды сервера и использования своего компьютера коротко и ясно говорится в этом ролике на Youtube.

Теперь, когда стал понятен фронт проблем, возможно стоит посмотреть другие решения по развертыванию облачных хранилищ.

Если Вам важно наличие именно функций NextCloud’а, некоторые люди на форумах предлагают поднять локальный DNS-сервер. Я пытался сделать и это, но такое решение не избавляет от необходимости подтверждать SSL-сертификат и разворачивать reverse-proxy, зато добавляет еще одну задачу по конфигурированию DNS в ЛВС. Если Вы решитесь пойти этом путем, посмотрите на bind9.

Итак, поставим задачу.

Задача

Хостинг NextCloud в локальной сети на Windows. Берем образ NextCloud AIO (all-in-one – англ. все в одном) – образ со всеми необходимыми утилитами.

Ресурсы

Наша библия для этого гайда – документация в репозитории.

Есть и другие варианты установки (листать до DOWNLOAD SERVER).

Также у NextCloud есть форум, где люди делятся своими проблемами и решениями. Возможно, Вы найдете здесь решение Вашей проблемы.

Мне очень помог этот гайд на youtube. Автор подробно объясняет, как будет работать итоговая система с точки зрения сисадмина. Он прошел через все этапы, настройки, которые затрагиваются в этом гайде. Единственное, он не рассказывает, как он установил сам NextCloud Server на свою машину. Кроме того, он использует Apache вместо Nginx и OpenVPN вместо Hamachi, не затрагивает тему Docker-контейнера NextCloud AIO.

На youtube, я не нашел гайдов, как запустить Docker-образ NextCloud AOI на локальной машине. А жаль, ведь есть много камней вроде выбора портов. Все развертывают NextCloud на внешнем арендованном сервере. Тем не менее, эти гайды демонстрируют, как правильно настроенный сайт выглядит в браузере.

Если Вы не знакомы с Docker, то для этого гайда это не критично. Но я все же посоветую посмотреть какой-нибудь гайд по запуску сервера в docker-контейнере. Бегло ознакомится стоит также с docker-compose.

Об образе NextCloud AIO.

Чтобы понять, что и для чего делается дальше, нужно пояснить, что входит в поставку образа NextCloud AIO. Если запустить этот контейнер, как сказано в документации, получим несколько дополнительных:

Рис. 1. Контейнеры, порожденные nextcloud-aio-mastercontainer.

Рис. 1. Контейнеры, порожденные nextcloud-aio-mastercontainer.
  • nextcloud-aio-mastercontainer – главный контейнер, в который превращается с образ NextCloud AI при запуске.

  • nextcloud-aio – основное приложение и веб-клиент к нему.

  • nextcloud-aio-redis – кто бы мог подумать, редис.

  • nextcloud-aio-database – контейнер, обеспечивающий соединение с БД. После установки будет предложено подключить свою: postgres, mysql или создать sqlite.

  • nextcloud-aio-apache – контейнер, обеспечивающий подключение ssl-сертификатов. Работает как reverse-proxy. Принимает HTTPS-запросы на порту 443 и передает их HTTP-версию на обработку в контейнер с основным приложением. Также, генерирует ssl- сертификаты. Самое интересное, что внутри контейнера, который называется nextcloud-aio-apache используется еще и готовый reverse-proxy Caddy. Caddy позволяет запустить HTTPS-сервер с самописными сертификатами с помощью однострочного конфига. Внутри себя запускает утилиту certbot, о которая также затрагивается в этом гайде (этап 2). Функционал этого контейнера не используется целиком, если подключаем внешний прокси-сервер. В этом гайде расписано, как это работает в этапе 2 и этапе 3.

  • nextcloud-aio-domaincheck – в этом контейнере обрабатываются ACME DNS Challenge-запросы для подтверждения самописанных ssl-сертификатов, если не используется внешний прокси. См. этап 2 вариант 2.

  • nextcloud-aio-callabora и nextcloud-aio-talk – дополнительные модули NextCloud. Их будет предложено подключить по окончании настройки.

На reverse-proxy не стоит обращать внимания. Это «имя проекта» — имя директории, где лежит docker-compose.yml.

Этап 1. Настройка VPN.

VPN позволит принимать соединения на домашнем компьютере без приобретения белого ip-адреса у провайдера.

Буду использовать Hamachi. У него хороший десктоп-клиент на Windows и есть консольный на Linux. Можно использовать любой другой VPN: например, в этом гайде используется аналог —  OpenVPN.

Ставим клиент на Windows. Создаем сеть, даем ей имя и пароль.

Переходим в Настройки -> безопасность. Ставим: Шифрование – включено, Сжатие – любой. Переходим в Дополнительные -> Соединения с одноранговым узлом -> фильтрация трафика — разрешить все.

Рис. 2. Параметры Hamachi.

Рис. 2. Параметры Hamachi.

Фильтрация трафика – это по сути файервол. Hamachi добавит новую (виртуальную) сеть, которая для ОС аналогична полноценному сетевому интерфейсу, т.е. в компьютере как бы появится новая сетевая карта. Посмотреть на нее можно в панели управления: Панель управления -> Сеть и Интернет -> Центр управления сетями и общим доступом:

Рис. 3. Виртуальный интерфейс Hamachi в Панели управления Windows.

Рис. 3. Виртуальный интерфейс Hamachi в Панели управления Windows.

Также можно увидеть этот интерфейс, введя в консоль или powershell, запущенную от имени администратора (Win+X -> Windows PowerShell от имени администратора) команду ipconfig:

Рис. 4. Виртуальный интерфейс Hamachi в утилите ipconfig.

Рис. 4. Виртуальный интерфейс Hamachi в утилите ipconfig.

На этой сети может работать встроенный файервол Windows (Defender). Его настроим в конце. 

Перейдем на Ubuntu-сервер. Я для этого использую клиент PuTTy.

На reverse-proxy-сервере достаточно подключиться к нашей сети как клиент (показано для Debian/Ubuntu (Про установку в CentOS):

wget http://www.vpn.net/installers/logmein-hamachi_2.1.0.165-1_amd64.deb
sudo dpkg -i logmein-hamachi_2.1.0.165-1_amd64.deb
# подключение к сети > в графическом клиенте появится новый участник
hamachi join <network id> <password>
# включение автозагрузки сервиса 
sudo systemctl enable logmein-hamachi

Теперь можно проверить работу VPN-тоннеля. Либо на сервере, либо на домашнем ПК наберите ping <ip домашнего ПК или ip сервера, который выдал Hamachi>. Также это можно сделать в графическом клиенте Hamachi: ПКМ по участнику сети -> Проверить доступность.

Рис. 5. Сообщение утилиты ping, говорящее о наличии соединения.

Рис. 5. Сообщение утилиты ping, говорящее о наличии соединения.

Этап 2. Получение SSL-сертификата.

Если хотите использовать Caddy в качестве reverse-proxy, этот этап можно пропустить. Главное, чтобы Ваш сервер был доступен в интернете (имел белый ip), т. к. Caddy внутри себя использует certbot (см Этап 2. Вариант 2 ниже). Более того, при использовании образа NextCloud AIO на той же машине, где развернут сам NextCloud Вам не требуется его настраивать, т.к. он входит в образ.

Вариант 1. Покупка сертификата.

Покупаем сертификат. Получаем 2 файла: fullchain-сертификат и приватный ключ, переводим их в формат .pem. Тут и далее будем называть их fullchain.pem и privkey.pem. Для Apache еще нужен будетpublic.pem с публичным ключом.

Примечание. В основном встречаются 3 типа форматов ключей: .pem, .crt, .cer, .key. Расширение файла не имеет значения. Имеют значение блоки в них. Подробнее тут. Центр выдачи сертификатов, например, reg.ru, даст Вам 5 файлов следующего вида:

Публичный сертификат

——BEGIN CERTIFICATE——

<много букв и цифр>

——END CERTIFICATE——

Корневой сертификат
——BEGIN CERTIFICATE——

<много букв и цифр>

——END CERTIFICATE——

Промежуточный сертификат
——BEGIN CERTIFICATE——

<много букв и цифр>

——END CERTIFICATE——

Запрос на получение сертификата
——BEGIN CERTIFICATE REQUEST——

<много букв и цифр>

——END CERTIFICATE——

И приватный ключ

——BEGIN RSA PRIVATE KEY——

<много букв и цифр>

——END RSA PRIVATE KEY——

Из конечного, промежуточного, корневого сертификатов в обычном блокноте нужно собрать fullchain, а приватный ключ записать отдельно. Если используете Apache, вынесете также отдельно публичный сертификат в файл public.pem. Если чего-то для fullchain не хватает, вставляйте то, что есть, главное, чтобы был корневой или промежуточный.

Корневые сертификаты. Выпущены специальными удостоверяющими центрами, имеют наивысшую доверительность. Могут удостоверять собой любые другие виды сертификатов.

Промежуточные сертификаты. Любые виды цепочек сертификатов. Тоже имеют право удостоверять (подписывать) другие сертификаты.

Сохраняем 2 файла в папку /certificates на сервере. В PuTTy вставка текста осуществляется через ПКМ.

Вариант 2. Генерация самописного сертификата с помощью сервиса letsencrypt и утилиты certbot.

apt update
apt install -y software-properties-common
apt update
apt install -y certbot
certbot certonly -d www.<Ваш домен>,<Ваш домен> --agree-tos –n
certbot certificates
certbot renew --dry-run

Первые 4 команды обновляют репозитории для скачивания и устанавливают утилиту certbot. Команда на пятой строке говорит сгенерировать или обновить сертификат (certbot certonly) для доменов <Ваше доменное имя> с доменом верхнего уровня www и без него (вводить домены через запятую) (-d www.<Ваш домен>,<Ваш домен>) в неинтерактивном режиме для пропуска всех вопросов (certbot -n), соглашаясь с лицензионным соглашением ACME DNS Challenge (certbot --agree-tos). Предпоследняя покажет, в какую директорию certbot записал сертификаты. Последняя команда просит автоматически обновлять сертификаты по их истечению. Сами по себе сертификаты действительны 3 месяца.

Возможно, Вам также пригодятся следующие флаги команды certbot:

-m <email> — сюда будут приходить уведомления о состоянии сертификата, например, напоминания о том, что его надо продлить.

--webroot <путь> — certbot положит сертификаты в эту папку. Удобно, если уже есть развернутый сервер.

ACME DNS Challenge – это специальный стандарт проверки доменов, которые использует letsencrypt. Это накладывает дополнительные ограничения. Например, эти сертификаты не будут работать на собственном DNS, ведь для их подтверждения на Ваш сервер будет приходить запрос от letsencrypt по url, начинающимся на _acme-challenge или .well-known/acme-challenge. Надо научить сервер правильно на него отвечать. Это для нашей задачи вообще не понадобится, но кому интересно, подробнее тут. В Nginx-конфиге, например, поддержку ACME через HTTP можно осуществить, добавив что-то вроде

location ~ .well-known/acme-challenge {
    allow all;
    root /usr/share/nginx/html;
} 

От выбора способа получения сертификата в нашем случае зависит не только положение ключей на диске (будем считать, что они лежат в /certificates). В случае с certbot’ом, если Вы используете Nginx, надо будет немного изменить конфиг (об этом в конфиге ниже).

Этап 3. Настройка reverse-proxy.

Образ NextCloud AIO поддерживает внешний reverse-proxy как опцию и требует, связать его и порт машины, где развернут контейнер Apache, входящий в поставку NextCloud AIO, а для этого надо указать переменную среды для контейнера APACHE_PORT с номером этого порта. В конфиге прокси-сервера требуется все внешние HTTPS-запросы перенаправлять на этот порт. Он может быть любым, но в документации используется 11000. Его и укажем. Итак, перенаправляем HTTP-запросы (порт 80) на HTTPS (443), а HTTPS 443 на HTTP11000. Таким образом, любой запрос в браузере к нашему домену, где явно не указан порт, будет приходить на порт 11000 машины, где развернут контейнер NextCloud AIO.

Вариант 1. Reverse-proxy на базе Apache

Наглядно процесс настройки показан в том ролике, на который я ссылался ранее. Конфиг ниже взят из него.

# файл apache.conf – конфиг, как в видеоролике

<VirtualHost *:80>
    ServerName www.<домен>
  
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>


<VirtualHost *:443>
    SSLEngine on
    RequestHeader set X-Forwaded-Proto "https"
    SSLCertificateFile /certificates /public.pem
    SSLCertificateKeyFile /certificates /privkey.key
    SSLCertificateChainFile /certificates /fullchain.crt
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite HIGH:!aNULL:!MD5:!3DES
    SSLHonorCipherOrder on
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"

    ServerName www.<домен>

    ProxyPreserveHost On
    ProxyPass / http://<ip домашнего компьютера в сети hamachi>:11000/
    ProxyPassReverse / http://<ip домашнего компьютера в сети hamachi >:11000/
</VirtualHost>

Можно попробовать альтернативный конфиг, представленный в документации.

Установим сам Apache и активируем конфиг.

apt update
apt install apache2

# Создаем или перемещаем конфигурационный файл в правильную директорию
mv <домен>.apache.conf /etc/apache2/sites-available/<домен>.conf

# Подключаем модули для работы с https в режиме проксирования
a2enmod proxy rewrite ssl headers proxy_http

# По умолчанию Apache уже имеет конфиг с базовым сайтом-пустышкой.
#Отключаем. И подключаем свой.
a2dissite 000-default.conf
a2ensite <домен>.apache.conf

# Проверка конфига
apachectl configtest

# Если выскочит предупреждение о том, что apache не знает имени сервера,
# выполним следующие 3 команды (необязательно):
chmod 777 /etc/apache2/apache2.conf
echo -e "$(cat /etc/apache2/apache2.conf)\nServerName <любое имя>" > /etc/apache2/apache2.conf
chmod 644 /etc/apache2/apache2.conf

# Обязательно перезапускаем apache
service apache2 restart  # или systemctl restart apache2

Развернуть Apache сервер для теста с NextCloud можно, например, в докере, воспользовавшись docker-compose.

# docker-compose-apache.yml
services:
  apache-reverse-proxy:
    image: php:7.4-apache
    restart: unless-stopped
    container_name: apache
    volumes:
      - ./certificates:/certificates
      - ./apache.conf:/etc/apache2/sites-available/apache.conf
    ports:
      - "80:80"
      - “443:443” 
      - "11000:11000"
    network_mode: 'host'
    tty: true
    command: bash -c "
      chmod 777 /etc/apache2/apache2.conf
      && echo -e \"$$(cat /etc/apache2/apache2.conf)\\nServerName www.sabernews.ru\" > /etc/apache2/apache2.conf
      && chmod 644 /etc/apache2/apache2.conf
      && a2enmod proxy rewrite ssl headers proxy_http
      && a2dissite 000-default.conf
      && a2ensite sabernews-nexcloud.apache.conf
      && service apache2 restart
      && apachectl configtest
      && apt update
      && apt install -y net-tools
      && tail -f /dev/null
      "

  nextcloud:
    image: nextcloud/all-in-one:latest
    restart: unless-stopped
    container_name: nextcloud-aio-mastercontainer
    ports:
      # про порты для nextcloud далее
      - "8080:8080"
      - "80:80"
      - "11000:11000"
      - "8443:8443"
    environment:
      - NEXTCLOUD_DATADIR=nextcloud_aio_nextcloud_datadir
    volumes:
      - nextcloud_aio_mastercontainer:/mnt/docker-aio-config
      - //var/run/docker.sock:/var/run/docker.sock:ro
    depends_on:
      - apache-reverse-proxy

volumes:
  nextcloud_aio_mastercontainer:

Вариант 2. Reverse-proxy на базе Nginx

Лично я использовал сервер, на котором был запущен другой веб-сайт, работающий на Nginx, а значит порты 443 и 80 уже были заняты. Как уже отмечалось выше, NextCloud’у обязательно нужен 443 порт. Однако домены разные, а значит, надо просто дополнить конфиг Nginx следующими строчками, которые будут работать и как самостоятельный конфиг-файл:

# <домен>.nginx.conf
# -> нужно поместить в /etc/nginx/nginx.conf

http {

## reverse-proxy
  server {
    listen 80 default;
    server_name www.<домен>;
    access_log off;
    error_log off;
    return 301 https://$server_name$request_uri;
  }

  server {
    server_name www.<домен>;
    listen 443 http2 ssl;
    access_log  /root/reverse-proxy/access.log;

    ssl_certificate     /certificates/fullchain.pem;
    ssl_certificate_key /certificates/privkey.pem;
    # эти строчки требуются для правильной работы сертификатов сертбота
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;
    ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY13305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";

    location / {
      add_header Cache-Control "public, must-revalidate";
      add_header Front-End-Https on;
      add_header Strict-Transport-Security "max-age=2592000; includeSubdomains";
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_pass http://<ip>:11000;    }
  }
#server ## reverse-proxy

} # http

В документации написано, что конфиг, представленный там, может не работать. Он действительно не работает из-за строчки proxy_set_header Host $host;, которая сохраняет заголовок Host HTTP, содержащий ip-адрес клиента. Это стандартное решение для прокси-серверов, иначе бекенд не сможет отличать клиентов по этому заголовку, если требуется. Однако в режиме reverse-proxy, когда прокси сервер перенаправляет через себя как запросы клиентов, так и ответы бекенда: и то, и то для прокси сервера является входящими сообщениями, которые подлежат обработке. Nginx опирается на Host, чтобы их различать. Если подменить хост, то это приводит к бесконечному перенаправлению запросов.

Запустим Nginx:

mv <домен>.nginx.conf /etc/nginx/nginx.conf
# тестируем конфиг
nginx –t
# Обязательно перезапускаем nginx
service nginx restart  # или systemctl restart nginx

Вариант 3. Caddy reverse-proxy

Посмотрим так же на Caddy. На мой взгляд, это самый простой сервер, который будет обеспечивать нужный нам функционал подключения сертификата.  Этот конфиг есть в документации.

# Caddyfile

https://<домен>:443 {
    reverse_proxy <ip>:11000
}

Проверка работы

Остается протестировать. Я написал простой сервер на NodeJS для этого.  Для запуска Вам понадобится установить node.

// server.js
const http = require("http");

const host = '0.0.0.0';
const ports = [80, 443, 8443, 11000, 8080];

const servers = ports.map((port) => {
  try {
    return [http.createServer((req, res) => {
      console.log(`[${port}]`, req.url, '  |', req.headers['user-agent'].slice(0, 20), '|   ', req.headers['x-forwarded-for']);
      req.on('error', (err) => {
        console.error(err);
      });

      res.writeHead(200);
      res.end(`served by ${port}\n${req.headers["user-agent"]}\n`);
    }), port];
  }
  catch (err) {
    console.error(err);
  }
});


servers.forEach(([server, port]) => {
  try {
    server.listen(port, host, () => {
      console.log(`Server is running on ${host}:${port}`);
    });
  }
  catch (err) {
    console.error(err);
  }
});

Здесь запускается прослушка 5 портов (они перечислены в массиве на строке 5). Запустим на домашнем компьютере:

node server.js

Перейдем в браузер и вобьем: http://localhost:80, http://localhost:443  и т.д. – будет отображаться надпись с тем портом, на который мы подключились и Ваши текущие user-agent, и ip-адрес в заголовке Host. Обратите внимание, что протокол здесь только HTTP, и значка с замочком в браузере при таком подключении не появится.

Теперь заменим строку 4 const host = '0.0.0.0'; на  const host = '<ip-адрес ПК в сети Hamachi>'. Перезапустим: Ctrl+C и снова node server.js. Подключиться теперь можно только по портам 80 и 443, т.к. наш конфиг прокси сервера (любой из 3-х представленных выше) указывает ему перенаправлять запросы с порта 80 на порт на 443, а к запросам с порта 443 подключать сертификат и перенаправлять его на порт 11000 по протоколу HTTP, поэтому вбив <ip>:80, http://<ip>, <ip>:443 или https://<ip>(ip — это ip-reverse-proxy-сервера), или www.<домен>, увидим что-то вроде:

Рис. 6. Проверка прокси.

Рис. 6. Проверка прокси.

Хоть мы и не подключались явно к порту 11000, сервер принял запросы на нем, что отображено в ответе. Обратите внимание на замочек – установлено HTTPS-соединение.

Этап 4. Запуск NextCloud AIO в Docker.

Переменные окружения

У данного образа есть две основные опции, которые передаются как переменные окружения:

  • NEXTCLOUD_DATADIR – абсолютный путь до директории, а в случае с Windows, константная строка “nextcloud_aio_nextcloud_datadir” – это имя того docker-volume, в которой будут записаны все файлы пользователей и системные файлы, необходимые для функционирования NextCloud. Соответственно, надо будет предварительно создать этот volume.

    Документация предупреждает нас перед запуском основного контейнера предварительно создать этот volume с именем и убедиться, что путь абсолютный, и путь существует.

    Обратите внимание на простые правила преобразования пути. Абсолютный путь в Windows C:\NextCloudData превращается в host_mnt/c/NextCloudData.

  • APACHE_PORT – переменная уже затрагивалась выше. Это номер порта, на который пересылает запросы Ваш reverse-proxy.

  • SKIP_DOMAIN_VALIDATION=true – выставить, если есть неразрешимые проблемы с тем, что NextCloud неправильно определяет домен, на котором запущен. Это будет понятно после первой настройки. В документации указано, что пользоваться этим надо только в крайнем случае, если Вы уверены, что всё остальное было сделано правильно. В этом гайде пользоваться этим флагом не нужно. Ниже приведены советы, что делать, если не получается запустить NextCloud.

Volumes

Есть 2 фиксированных имени вольюмов, которые нам понадобятся.

  • nextcloud_aio_nextcloud_datadir – директория, где будут содержаться все файлы в облаке NextCloud. См пояснения выше к переменной NEXTCLOUD_DATADIR.

  • nextcloud_aio_backupdir – директория, куда будут помещаться архивы с копиями состояния облака, если Вы захотите использовать эту функцию. История точно такая же как с nextcloud_aio_nextcloud_datadir: проверить, что путь существует, и соблюсти формат преобразования.

Их надо будет только создать. Подключать к контейнерам ничего не нужно. NextCloud сам умеет ими пользоваться.

Порты контейнера

Контейнер на образе NextCloud AIO использует 3 порта, которые согласно документации, нужно указать при запуске контейнера:

  • 8080 порт используется для первичной настройки NextCloud. Там будет панель администратора.

  • 80 порт – единственный, который предназначается для взаимодействия с веб-приложением непосредственно. Соответственно, это протокол HTTP. Напомню, что все сторонние запросы  к системе переводятся на HTTPS нашим прокси и поступают на 11000 порт контейнеров, которые уже внутри, неявно для нас, переведут их на 80 порт на обработку приложением.

  • 8443 порт должен использоваться для обновления самописного сертификата. Лично я с этим не работал, и не могу ничего сказать.

Как говорилось выше, на домашней машине будет непросто открыть порт 80. Да это и не нужно, когда докер представляет нам простой механизм переадресации портов. Я просто использовал порт 9090 вместо 80. Также я подменил порт 8080 в мастер-контейнере на 9880, т.к. иногда использую порт 8080 моего ПК при разработке своих серверов, и подменил 8443 портом 9443 просто за компанию.

Другие порты, такие как 11000 (наш APACHE_PORT) и 3478, используемые дополнительными модулями, будут подключаться автоматически. При запуске master-контейнера, их не нужно привязывать явно. После запуска будет автоматически созданы контейнеры nextcloud-aio-domaincheck и nextcloud-aio-apache, которые свяжутся с портом APACHE_PORT, а после настройки системы в панели администратора, появятся и другие контейнеры, например, nextcloud-aio-talk, которые займут свои порты.

Опции Docker

Очень важно не передавать настоящий сетевой интерфейс операционной системы хостовой машины как внутренний сетевой интерфейс контейнера. Это делается с помощью передачи опции --net=host в команде docker run или network_mode: 'host' в docker-compose. Можно встретить некоторые гайды в интернете, которые предписывают делать именно так. Но это не соответствует документации! Единственное, когда это может быть оправдано, — запуск контейнера на выделенном Linux-сервере, когда докер применяется как IaC средство в задаче оркестрирования. В нашем же случае, контейнер просто не сможет открыть порты 80, 443, т.к. у него нет прав.

  • --sig-proxy=false – отключает проксирование сигналов ОС.

  • --name=<имя> — задает имя контейнеру

  • --restart=<always | no | unless-stopped> — регулирует, что делать в случае критической ошибки или иных случаях, когда контейнер может завершить работу. Соответственно: всегда, никогда и до тех пор, пока пользователь вручную пошлет SIGTERM/SIGBRK. Облако должно быть доступно всегда. Ставим always.

  • -e <имя>:<значение> – передача переменной окружения

  • -v (--volume) <директория хост>:<директория в ОС контейнера>, либо <имя volume> — передача volume или директорий хостовой машины в пользование контейнеру. Что передавать берем из документации: nextcloud_aio_mastercontainer:/mnt/docker-aio-config, //var/run/docker.sock:/var/run/docker.sock:ro.

  • -p (--port) <порт хост>:<порт в интерфейсе контейнера> — соединение порта сетевого интерфейса хостовой машины и сетевого интерфейса контейнера.

Запуск

Сначала надо создать volume’ы.На Windows nextcloud_aio_nextcloud_datadir обязательный, nextcloud_aio_backupdir — опциональный.

Тут последовательность из пробела и обратной кавычки ( ` ) используется для ввода многострочной команды.

В Unix-системах аналогом выступает пробел и обратный слэш ( \).

# Backup dir
docker volume create `
--driver local `
--name nextcloud_aio_backupdir `
-o device="/host_mnt/c/NextCloudBackups" `
-o type="none" `
-o o="bind"
# Datadir
docker volume create `
--driver local `
--name nextcloud_aio_nextcloud_datadir `
-o device="/host_mnt/c/NextCloudData" `
-o type="none" `
-o o="bind"

Запускаем контейнер ровно так, как предписывает документация, но подменяем порты:

docker run `
-e NEXTCLOUD_DATADIR="nextcloud_aio_nextcloud_datadir" `
-e APACHE_PORT=11000 `
--sig-proxy=false `
--name nextcloud-aio-mastercontainer `
--restart always `
-p 9090:80 `
-p 9880:8080 `
-p 9443:8443 `
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config `
--volume //var/run/docker.sock:/var/run/docker.sock:ro `
nextcloud/all-in-one:latest

Либо через docker-compose:

# docker-compose.yml

services:
  nextcloud:
    image: nextcloud/all-in-one:latest
    restart: "always"
    container_name: nextcloud-aio-mastercontainer
    environment:
      - NEXTCLOUD_DATADIR=nextcloud_aio_nextcloud_datadir
      - APACHE_PORT=11000
    volumes:
      - nextcloud_aio_mastercontainer:/mnt/docker-aio-config
      - //var/run/docker.sock:/var/run/docker.sock:ro
    ports:
      - "9080:80"
      - "9090:8080"
      - "8443:8443"

volumes:
  nextcloud_aio_mastercontainer:
docker-compose up

После запуска панель docker станет выглядеть так:

Рис. 7. Контейнеры, запущенные nextcloud-aio-mastercontainer

Рис. 7. Контейнеры, запущенные nextcloud-aio-mastercontainer

Тут видно все то, о чем было написано выше: появились новые контейнеры, которые заняли нужные ими порты. Master-container появляется первым и занял порты 9090, 9880 и 9443.

Остается настроить само облако

Переходим в браузер. Нужно подключиться к 8080 порту контейнера, т.е. для нас это адрес, оканчивающийся на :9880. Какой ip вводить? Любой, чтобы не попасть на прокси, ведь тот не знает о том, что что-то нужно пересылать на порт 9880. Можно вбить localhost:9880, <ip в локальной сети домашнего маршрутизатора 192. …>:9880 или <ip ПК в сети Hamachi>:9880 – все эти адреса ведут на порт 9880 одной и той же машины. Подключаться нужно по HTTPS (обязательно вбейте https:// перед адресом и портом, потому что браузер скорее всего сам подставит http, и тогда появится Bad Request от Apache с просьбой перейти на HTTPS). Далее выскачет предупреждение, что соединение небезопасно, но мы ведь знаем, что все безопасно, верно ;). Нажимаем «все равно подключиться» (на разных браузерах эта кнопочка может называться по-разному и быть скрыта за другой кнопкой, например, в Opera надо сначала нажать “help me understand”).

В NextCloud всё сделано именно так, потому что все внешние соединения должны быть зашифрованы и поэтому осуществляются через прокси по HTTPS. Считается, что раз до контейнера доходят HTTP-сообщения, значит, они либо защищены протоколом ssl на уровень выше, либо у оператора есть прямой доступ к машине.

Скопируем и сохраним в блокнот мнемоническую фразу для восстановления системы.

Далее на следующей странице надо будет ввести домен, который пользователь вбивает в браузере, чтобы подключиться, т.е. тот, по которому он попадает на reverse-proxy. В нашем случае www.<домен>. Форма ниже, связанная с бекапом понадобится не сейчас, а во время восстановления бекапа.

Если все успешно, Вас пробросит дальше на страницу, где будет создана учетная запись администратора. Сохраняем куда-нибудь выданный нам пароль. Тут же можно установить некоторые дополнительные модули (их намного больше). Знайте, что каждый модуль – это отдельный докер-образ, а значит весит он много, и его контейнер строится долго. Запустите все контейнеры и дождитесь, когда индикаторы загорятся зеленым.

Скриншоты к вышеописанному процессу не прилагаю. Все есть в обилии на youtube.

Что делать, если проверка домена не выполняется?

Для начала, это значит, что NextCloud попробовал найти сам себя по запросу https://<домен, который Вы ввели на панели администратора> и не смог.

Проверьте, что на домене, который Вы приобрели, есть А-запись с правильным ip-адресом прокси-сервера. Если вы только что обновили эту запись, DNS-сервера провайдера распространяют её иерархически на магистральные роутеры, и на это может потребоваться время (по моим оценкам, до получаса). Можно,  например, воспользоваться командой windows powershell ping <домен>. В Widows она хороша тем, что вместо домена нам будет показан ip-адрес, ассоциированный, как считает домашний роутер, с введенным доменом. Другие утилиты, такие как tracert могут не помочь в случае с арендованными серверами или vpn — все зависит от того, какие запросы пропускает к себе в датацентр хостинг.

Также стоит проверить, что прокси сервер работает, доступен в сети по собственному ip-адресу и на нем запущен Apache/Nginx/Caddy. Не пренебрегайте тестированием конфигов. Узнать, работает ли сервер можно, вбив systemctl status <apache2 | nginx | caddy>.

Не забудем проверить и vpn-тонель со стороны сервера на домашний компьютер.

Для остальных случаев есть флаг SKIP_DOMAIN_VALIDATION.

В конце есть список сетевых утилит Windows, которые могут помочь с отладкой сетевого маршрута.

Этап 5. Фаервол

Финальная часть – предотвращение несанкционированных попыток подключения к домашнему компьютеру и спама до состояния DDOS – настроим файервол.

В Linux – воспользуйтесь утилитами ufw или iptables.

Вбиваем в поиск системы «Защита от вирусов и угроз», или «Безопасность Windows», или «Defender», переходим в Брандмауэер -> дополнительные параметры ->правила для входящих подключений.

Рис. 8. Как перейти к детальным настройкам файервола.

Рис. 8. Как перейти к детальным настройкам файервола.

 Нажимаем справа «создать правило», выбираем фильтрацию по порту: специальные порты, 11000. Если накладываете какие-то другие опции фильтрации, помните, что Hamachi – это частная сеть в ОС Windows.

Если планируете использовать эту же сеть Hamachi для передачи еще какого-то трафика, обязательно откройте порт здесь. Правила Defender можно редактировать на лету.

Инструменты Windows для диагностики сетевых интерфейсов

Все перечисленные здесь утилиты работают в powershell и cmd. Лучше выполнять от имени администратора.

nslookup – получение ip по доменному имени на DNS-сервере, сведения о ближайшем DNS-сервере. Будьте внимательны, лично я столкнулся с тем, что nslookup кеширует свои ответы, и если, например, Вы меняете А-запись к своему домену, браузер может видеть изменения, а nslookup – нет. На этот случай есть команда ipconfig/flushdns, но мне она не помогала.

ipconfig/flushdns – сброс dns-кеша в ОС. Работает только в cmd.

Работу DNS можно сымитировать, добавив запись в системный файл C:\Windows\System32\drivers\etc\hosts.

netstat -na | findstr ":8080"  — просмотр установленных соединений. Просто netstat -na покажет все соединения.

ipconfig   — просмотр сетевых интерфейсов. Тут можно наблюдать сеть докера docker0 или WSL — она нужна, когда контейнер общается с сервером на хосте (почитайте про внешний адрес host.docker.internal).

Посмотреть, куда и как (редиректы, HTTP-заголовки) идут запросы в браузере можно через инструменты разработчика. Ctrl+Shift+I или ПКМ по пустому пространству в браузере -> network

Заключение

Итак, у меня получилось запустить NextCloud дома, однако потребовался внешний прокси-сервер. Это оказалось дороже, чем аренда места на Google Disk, но потенциально может быть дешевле, если исключить аренду прокси сервера, и найти какое-то другое решение. К тому же я неограничен в объемах хранимой информации и имею с одной машины в доме быстрый доступ через обычный проводник.

Тем не менее, опыт, я считаю, интересный. Пользоваться дома вполне можно. Все еще остается возможность переноса хранилища на какой-то тихий компьютер, такой который бы не жужжал при постоянной эксплуатации 24/7. Прекрасно подойдет старый системный блок или ноутбук с утилитой управления скоростью вращения вентиляторов.

Если планируете использовать NextCloud ровно так, как описано в этом гайде, то главное не забыть поставить Docker и Homachi на автозапуск. Так будет достигнута неплохая отказоустойчивость.

Надеюсь, материал был полезен. Спасибо, что читаете. Увидимся в другом гайде.

NextCloud is an excellent self-hosted syncing tool. Trouble is, it only runs on Linux, so if you don’t have a Linux server, you won’t be able to deploy it without virtualization or containerization. Thankfully, the NextCloud project makes an “all in one” virtual machine you can download and deploy on any OS, including Windows Server. Here’s how to set it up on your system.

How to install VirtualBox on Windows Server

NextCloud is a Linux application, and the developers aim to keep it that way. However, they provide an “all in one” virtual machine OVA for VirtualBox, that Windows admins can quickly deploy. However, you’ll first need to install the VirtualBox hypervisor.

To start, head over to the official VirtualBox website. Once there, click on “Downloads,” and click on the “Windows hosts” link to download the installation EXE. When downloaded, open up Windows Explorer, select the “Downloads” folder, and launch the installation EXE.

Go through the installer and set up VirtualBox on Windows Server. Once it is fully installed, launch it and move to the next section to get your hands on the NextCloud AIO VM.

How to download the NextCloud AIO VM

The NextCloud AIO VM is available for download on the official NextCloud website. Head to the official download page. Once there, download “Nextcloud-AIO.ova” to Windows Server. The OVA file is about 2 GB in size, so the download is not instantaneous.

When the download is complete, look at the “readme” file on the download page. While it’s not a requirement, you’ll want to check it out to see what the NextCloud developers have to say. To read the “readme.md” file, open it in Notepad.

How to import the NextCloud AIO VM

The Nextcloud AIO VM is pre-configured with a Linux distribution, and everything you need to deploy NextCloud on a Windows Server host. However, it needs to be imported first. To import the OVA file, do the following.

First, open up the Windows Explorer app, and select the “Downloads” folder. Then, right-click on the “Nextcloud-AIO.ova” file, and select the “Open with” menu. Finally, locate the “VirtualBox Manager” option.

When you select the “Open with” VirtualBox option, you’ll see the “Import Virtual Appliance” window. The “Import Virtual Appliance” page will show you everything there is to know about the Nextcloud VM, including the guest OS, RAM usage, CPU usage, etc. Click the “Finish” button to import it into your system.

With the OVA imported to VirtualBox, right-click on it and select “Settings.” Once inside of the “Settings” window, locate the “Network” section. By default, they set the VM to NAT. Change it to “Bridged Adapter,” so that it can interact with other devices on your network.

Once the AIO VM is open, access the terminal prompt inside of it, and run the following command to reveal its LAN IP address.

hostname -I

After executing the command above, take the IP address and load up a web browser to the following URL. Then, follow the next section of the guide to get going with NextCloud on your Windows Server.

https://ip-of-vm:8080/setup

How to set up your NextCloud sync server

Once you’ve loaded up the setup page, you’ll see a message. This message says “Nextcloud AIO stands for Nextcloud All In One and provides easy deployment and maintenance with most features included in this one Nextcloud instance.” Copy the password it provides, and click on the “Open Nextcloud AIO login.”

After clicking on the “Open NextCloud AIO login” button, enter the password you’ve previously entered. This will give you access to the NextCloud Admin UI. When you log in, you’ll see “Mastercontainer update.” Click on the update button to update the NextCloud instance.

Now that it is up to date, type in the domain for your AIO instance. After adding it, click on the “submit” button. Ensure you have this domain’s DNS configured. For more information on DNS settings, check the official instructions.

Once you’ve configured your domain, you’ll be on the next page. On this next page, you’ll see “Optional addons.” These addons are “ClamAV” “Collabora,” “Fulltextsearch,” “Imaginary,” and “Nextcloud Talk.” Check the boxes you wish to add to your NextCloud instance. Then, select the “Start containers” button.

When you click on the “Start containers” button, Nextcloud AIO will download and launch the containers. Then, you’ll be taken to the next page in the installer. On this page, you’ll see “Containers are currently starting”. When they’re all started, you’ll see an “Open your Nextcloud” button.

Note: save the initial NextCloud password, as you’ll need it to log into the interface.

Click on the “Open your Nextcloud” button and use the “initial Nextcloud” password provided to log in. From here, you can create users, change the initial password, and start uploading files to your Nextcloud.

default avatar image

Содержание

  1. Установка облачного хранилища Nextcloud
  2. 1. Установка web-сервера Nginx
  3. Установка и настройка PHP 7.4 – FPM
  4. 3. Установка и настройка сервера MariaDB
  5. 4. Генерация SSL-сертификата Letsencrypt
  6. 5. Скачиваем Nextcloud
  7. 6. Настраиваем виртуальный хост Nginx для Nextcloud
  8. 7. Подключение к Nextcloud
  9. 8. Как подключить хранилище Nextcloud в Windows в качестве сетевого диска
  10. Как установить nextcloud на windows server
  11. Mobile
  12. Server
  13. Read the documentation
  14. Need help?
  15. Get Involved
  16. Nextcloud: своё облако. Установка на свой сервер
  17. Зачем это нужно?
  18. Что потребуется?
  19. Что будем делать?
  20. Арендуем сервер
  21. Настроим сервер
  22. Начало
  23. Apache
  24. LetsEncrypt
  25. MySQL
  26. Директория для файлов
  27. Создадим базу MySQL
  28. Настраиваем NextCloud
  29. Настройка безопасности
  30. Что дальше?
  31. Автоматическая установка и оптимизация Nextcloud 21 с помощью скрипта
  32. Автоматическая установка и оптимизация Nextcloud 21 (nginx, MariaDB)
  33. Настройка шифрования домена с помощью сертификата SSL от Let’s Encrypt
  34. Оптимизируйте и обновляйте Nextcloud с помощью скрипта
  35. Nextcloud. Настраиваем персональное облако и смотрим, стоит ли возня свеч
  36. Содержание статьи
  37. Установка
  38. Интерфейс и приложения
  39. Торренты и youtube-dl
  40. Продолжение доступно только участникам
  41. Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Установка облачного хранилища Nextcloud

Nextcloud – это бесплатное облачное хранилище с открытым исходным кодом. Nextcloud позволяет организовать легкий доступ к своим файлам, фотографиям и документам для работы и совместного использования с членами команды, клиентами и партнерами. В хранилище также есть дополнительные функции, такие как Календарь, Контакты, Планировщик задач, потоковое воспроизведение мультимедиа с помощью Ampache и т. д.

Для синхронизации файлов между рабочим столом и вашим собственным сервером, Nextcloud предоставляет приложения для рабочих столов Windows, Linux и Mac, а также мобильное приложение для Android и iOS.

Что потребуется для установки?

Мы будем устанавливать Nextcloud на сервер Ubuntu 20.04. Необходимым условием являются внешний ip-адрес и открытые порты 80 и 443.

1. Установка web-сервера Nginx

Первым делом подключимся к нашему серверу и установим веб-сервер Nginx

После завершения установки запустим службу Nginx и включим ее старт при загрузке системы с помощью systemctl.

Проверим, что все запустилось

Установка и настройка PHP 7.4 – FPM

Установим пакеты PHP и PHP-FPM, используя команду ниже:

После завершения установки нужно немного отредактировать файлы php.ini для php-fpm и php-cli. Данные изменения необходимо произвести в обоих файлах.

Раскоментируйте строку date.timezone и измените значение на свой часовой пояс.

Раскоментируйте строку ‘cgi.fix_pathinfo’ и измените значение на ‘0’.

Сохраняем изменения и выходим.

Теперь отредактируем файл www.conf

Найдем и раскоментируем следующие строки:

Сохраняем файл и выходим.

Следующим шагом нужно перезапустить службу PHP7.4-FPM и включить ее автозагрузку.

Проверим что сервис работает с помощью следующей команды:

Вы увидите, что php-fpm запущен и работает под файлом sock ‘/run/php/php7.4-fpm.sock’.

3. Установка и настройка сервера MariaDB

Следующий шаг – установка базы данных. Установите последнюю версию сервера MariaDB, используя команду:

После завершения установки запустим службу MariaDB и включим ее запуск при каждом старте системы.

Следующий шаг – настройка безопасности SQL-сервера. У вас спросят о некоторых настройках сервера MariaDB. После ответа на вопрос Set root password? введите новый пароль root для SQL-сервера MariaDB

Теперь создадим новую базу данных для установки nextcloud. Назовем базу данных «nextcloud_db» с пользователем «nextclouduser» и паролем « PaSsW0rD@ ».

Войдите в оболочку MySQL от имени пользователя root с помощью команды mysql.

Введите пароль root SQL-сервера MariaDB.

Создадим базу данных и пользователя:

Установка и настройка MariaDB для Nextcloud завершена.

4. Генерация SSL-сертификата Letsencrypt

Установите инструмент letsencrypt, используя команду apt ниже:

После завершения установки остановите службу nginx.

Сгенерируем SSL-сертификаты для доменного имени ‘cloud.admin812.ru’, используя командную строку cerbot.

Вам будет предложено ввести адрес электронной почты на который будет приходить уведомление о необходимости продления сертификата.

Следующим шагом будет вывод на экран оглашения об обслуживании. Нажимаем “А” (Agree) и после этого запускается процесс генерации сертификата. По окончании появится надпись об успешном завершении процесса и можно приступать непосредственно к установке Nextcloud.

5. Скачиваем Nextcloud

Перед загрузкой исходного кода nextcloud убедитесь, что в системе установлен пакет unzip. Если у вас его нет пакета, установите его:

Теперь перейдем в каталог /var/www и скачаем последнюю версию Nextcloud:

Распакуем архив и изменим владельца каталога nextcloud на пользователя ‘www-data’:

6. Настраиваем виртуальный хост Nginx для Nextcloud

В каталоге /etc/nginx/sites-available создадим новый файл виртуального хоста nextcloud.

Вставим следующую конфигурацию виртуального хоста nextcloud.

Замените выделенное красным на свое доменное имя.

Включите виртуальный хост, протестируйте конфигурацию и убедитесь, что нетv ошибок.

Если ошибок нет, перезапустите сервис PHP7.4-FPM и nginx.

Конфигурация виртуального хоста Nginx для nextcloud создана.

7. Подключение к Nextcloud

Откройте веб-браузер и введите URL-адрес nextcloud. Вы будете автоматически перенаправлены на соединение https.

Нам нужно создать пользователя-администратора для Nextcloud и ввести пароль.

Также нужно настроить соединение с базой данных. Для этого введите название базы данных, имя пользователя и пароль которые мы создали на шаге 3, а затем нажмите кнопку «Finish».

И после завершения установки вы получите панель Nextcloud, как показано ниже.

8. Как подключить хранилище Nextcloud в Windows в качестве сетевого диска

В командной строке пишем:

Выделенное красным меняем на свои данные.

Если команда не выполняется и выдает ошибку: “Системная ошибка 67. Не найдено сетевое имя.”, проверьте состояние службы Web-клиент. Некоторые обновления Windows самостоятельно меняют тип запуска службы на “Вручную”. Установите ” Автоматически”.

Источник

Как установить nextcloud на windows server

Connect to your Nextcloud from Windows, macOS or Linux.

Mobile

Use your Nextcloud on the go with our Android and iOS apps.

Server

Stay in control of your data!
Choose one of the providers or download the Nextcloud server for self hosting.

Read the documentation

Here you can find our manuals:

Need help?

Discuss using, installing or maintaining Nextcloud in our support channels.

These consist of users helping each other. Consider helping out others, too!

Browse dozens of free apps and services you could use with your Nextcloud on the Nextcloud app store.

Get Involved

If you want to help out with developing and testing, grab a daily build. Find our GitHub project here and find our issue tracker for the server here.

Latest testing version is 21 RC2

Help test our clients: Android Release Candidate client on Play store and Android Beta client on F-Droid. For iOS, join Testflight for iOS

The archive should be extracted in a folder your web server has access to. Latest stable version: 21.0.1 (Changelog)

Follow the Nextcloud Admin Manuals installation chapter. If you already run Nextcloud, refer to the upgrade manual.
Need an enterprise solution?

You can already find server packages included with many distributions or provided by active community members. Find an overview of packages for various distributions as well as Docker and snap images here. Can’t find packages you need? Ask your distribution for packages or contribute to creating them!

Nextcloud Server does not support Microsoft Windows. We recommend using a virtual machine or docker image on Windows Server.

Security note: To receive information about updates and security issues, we recommend a subscription to our low-traffic newsletter.

Release channels: We offer Release Channels with production, stable, beta and daily-branches. This gives you the opportunity to choose your balance between stability and features.

The Web Installer is the easiest way to install Nextcloud on a web space. It checks the dependencies, downloads Nextcloud from the official server, unpacks it with the right permissions and the right user account. Finally, you will be redirected to the Nextcloud installer.

You can find further instructions in the Nextcloud Admin Manual.

Note that the installer uses the same Nextcloud version as available for the built in updater in Nextcloud. After a major release it can take up to a month before it becomes available through the web installer and the updater. This is done to spread the deployment of new major releases out over time.

Nextcloud Server does not support Microsoft Windows. We recommend using a virtual machine or docker image on Windows Server.

Security note: To receive information about updates and security issues, we recommend a subscription to our low-traffic newsletter.

Release channels: We offer Release Channels with production, stable, beta and daily-branches. This gives you the opportunity to choose your balance between stability and features.

You can find further instructions in the Nextcloud Admin Manual. If you already run Nextcloud, refer to the upgrade manual for moving to new Nextcloud releases.

Security note: We recommend a subscription to our low-traffic newsletter for notifications on updates and security issues. Find the «>public Nextcloud GPG key here.

Looking for repositories of previous major releases?

Nextcloud Server does not support Microsoft Windows. We recommend using the Nextcloud Appliance on Windows Server.

Virtual Machine image

The Nextcloud VM is designed to be an easy way for less technical users to get Nextcloud up and running or to test it out. It builds on Ubuntu Linux and makes configuration easy.

If you are looking for a more extensive virtual machine with many scripts to easily set up advanced functionality, get the full-version VM from Hansson IT.

For small businesses, Nextcloud GmbH maintains a free appliance built on the Univention Corporate Server (UCS) with easy graphical setup and web-based administration. It includes user management via LDAP as well as optional online office integration. Get the SME/Enterprise appliance.

Docker image

Several Nextcloud community members maintain a Docker image. It supports a wide range of architectures, releases, various webservers, databases and more.

Snap package

Canonical and the Nextcloud community maintain a Nextcloud Snap, including release channels and quick and easy deployment for easy home use.

Security note: To receive information about updates and security issues, we recommend a subscription to our low-traffic newsletter.

Release channels: We offer Release Channels with production, stable, beta and daily-branches. This gives you the opportunity to choose your balance between stability and features. Most of our Appliances support these release channels or let you fix on specific major versions.

Use the desktop clients to keep your files synchronized between your Nextcloud server and your desktop. Select one or more directories on your local machine and always have access to your latest files wherever you are. Learn more about our clients here.

Looking for integration apps like browser add-ins for Passwords, a feedreader and more? Check our app store for integrations!

You can already find Nextcloud Desktop client packages included in openSUSE Tumbleweed, Arch Linux and Fedora. You can find Ubuntu/Debian packages in this PPA. Packages for Alpine Linux over here. See the latest state and more packages in this post on our forums. Can’t find packages? Ask your distribution or contribute to creating them!

Nextcloud Files is using WebDAV, so you can also try out any other client you want!

Try also our Outlook and Thunderbird integration: Sync your files, calendars, contacts and tasks with Outlook or Mozilla Thunderbird

The Nextcloud mobile apps are available in various app stores. Learn more about our clients here.

The apps allow you to access, sync and upload your data and feature instant upload for photos and videos, upload management and more features.

Looking for mobile apps for Deck, News, Passwords and more? Check our app store!

Nextcloud is using open standards like CalDAV, WebDAV and IMAP so many independent third party clients can connect to it.

You have javascript disabled. We tried to make sure the basics of our website work but some functionality will be missing.

Источник

Nextcloud: своё облако. Установка на свой сервер

Nextcloud — open source проект своего персонального «облака»: в нём объединены функции Dropbox, контактов, календаря и списка задач Google, а так же много чего ещё. Другими словами, можно отказаться от Google и синхронизировать свои данные с компьютера и смартфона на свой сервер. Зачем это нужно?

Зачем это нужно?

Что потребуется?

Что будем делать?

Арендуем сервер

Если у вас ещё нет арендованного сервера, следуйте инструкции «Как арендовать сервер бесплатно (почти)«, выбирайте Ubuntu 17.04. Затем возвращайтесь сюда.

Настроим сервер

Предположим, что вы уже арендовали сервер и смогли подключиться к нему по SSH.

Далее я буду рассказывать, какие команды вводить.

Начало

Обновляем список пакетов
sudo apt-get update

Apache

Устанавливаем веб-сервер Apache2
sudo apt-get install apache2
Отредактируем конфигурацию
sudo nano /etc/apache2/apache2.conf
В конце файла дописываем две строчки, подставив свои значения:
ServerName IP-адрес-сервера
ServerName ваш-домен
Включим мод headers, пригодится в дальнейшем
sudo a2enmod headers

LetsEncrypt

Установим сертификат для шифрованного соединения, если у вас есть домен. Очень желательно.

MySQL

Установим базу данных MySQL
sudo apt-get install mysql-server
Задайте рут-пароль для базы данных. Обязательно запомните или запишите его.

Затем запустите команду для настройки безопасности
mysql_secure_installation
Ответьте на несколько вопросов. Можете отказаться от принудительной проверки сложности пароля и замены рут-пароля (первые два вопроса, отвечайте ‘N’), на остальные вопросы отвечайте ‘Y’.

Установим PHP 7 и нужные модули
sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql
Добавим php-cli
sudo apt-get install php-cli
И модуль для кэширования php-apcu
apt-get install php-apcu
Откроем файл конфигурации и отредактируем его
sudo nano /etc/apache2/mods-enabled/dir.conf
В списке файлов index с разным расширением, перепишите его так, чтобы в начале был index.php.

Перезапустите Apache
sudo systemctl restart apache2

Директория для файлов

Папку для личных файлов лучше создать в отдельном месте на сервере, а не так, как по-умолчанию хочет сделать NextCloud. Это нужно для повышения безопасности.

Скачаем последнюю версию NextCloud в формате *.tar.bz2 с официального сайта. Для этого в браузере откройте страницу релизов и найдите новую версию. На момент написания этой статьи свежая версия 12.0.2, поэтому ссылка будет такая:
https://download.nextcloud.com/server/releases/nextcloud-12.0.2.tar.bz2
Скопируйте её в буфер обмена.

Выполните скрипт
sudo bash /tmp/nextcloud.sh
Создайте файл конфигурации NextCloud в Apache
sudo nano /etc/apache2/sites-available/nextcloud.conf
Вставьте следующий текст
Alias /nextcloud «/var/www/nextcloud/»

Options +FollowSymlinks
AllowOverride All

Dav off

SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud

ServerName ваш_домен

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

Активируйте файл конфигурации
sudo a2ensite nextcloud
Включите дополнительные параметры
sudo a2enmod rewrite
sudo apt-get install php-bz2 php-curl php-gd php-imagick php-intl php-mbstring php-xml php-zip
Перезагрузите Apache
sudo systemctl reload apache2

Создадим базу MySQL

Настраиваем NextCloud

В браузере откройте https://ip_или_домен/nextcloud

Если всё сделано правильно, вы увидите страницу NextCloud и приглашение создать учётную запись администратора:

Первые два поля — имя и пароль для учётной записи администратора

Data folder: укажите директорию, которую вы создали в шаге «Директория для файлов», в примере это /media/nextcloud

Configure the database
Нужно указать параметры, которые мы использовали в шаге «Создадим базу MySQL»

Первая строчка — имя базы данных

Вторая строчка — пароль базы данных (не рут-пароль!)

Третья строчка — пользователь

Четвёртая строчка — адрес для обращения к базе данных, это должен быть localhost и порт 5342

Поздравляем, NextCloud установлен и работает, вы находитесь в учётке администратора.

Настройка безопасности

При первом входе в админку вы увидите сообщение, что требуется дополнительная настройка, чтобы обезопасить ваш сервер. Сейчас расскажу, что нужно сделать.

ВНИМАНИЕ: выполните команду только в том случае, если сервер был чистый, а в директории /var/www/html нет ничего ценного.

Включаем memcache

Остановим Apache
sudo systemctl stop apache2
Отредактируем конфигурацию NextCloud
sudo nano /var/www/nextcloud/config/config.php
В конце файла перед символами ); добавим строчку
‘memcache.local’ => ‘\OC\Memcache\APCu’,
Откроем файл конфигурации Apache PHP
sudo nano /etc/php/7.0/apache2/php.ini
В файле много текста. Листайте, пока не найдёте раздел, посвящённый opcache, затем вставьте туда следующие параметры:

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

Перезапускаем Apache.
sudo systemctl reload apache2
Все предупреждения о проблемах с безопасностью должны исчезнуть, останется надпись All checks passed.

Что дальше?

В следующей статье я расскажу, что теперь с этим облаком делать: настроим календарь и контакты, синхронизацию SMS, читалку новостей RSS, файлообменник, электронную библиотеку и кое-что ещё.

Источник

Автоматическая установка и оптимизация Nextcloud 21 с помощью скрипта

Вы можете установить Nextcloud с помощью snap пакета: NextCloud: Создаем свое облачное хранилище.

Автоматическая установка и оптимизация Nextcloud 21 (nginx, MariaDB)

Скрипт поддерживает установку в операционных системах Debian 10.8+ (AMD64) и Ubuntu 20.04.1+ (AMD64). Для работы скрипта необходима установка пакета sudo.

Рассматривается установка на чистую систему, в которой не установлены другие инструменты, необходимые для веб-приложений.

В ходе работы скрипта будут подключены следующие репозитории для использования последних версий пакетов: ppa ondrej для установки php 7.4, ppa mainline для установки последней версии nginx, а так же репозиторий mariadb для установки MariaDB 10.5.

Имя хоста можно поменять следующим образом:

Где mydomain.ru – это название вашего домена.

А так же, дополнительно измените имя хоста в файле hosts:

Создайте папку, в которой будут сохраняться все пользовательские файлы Nextcloud:

Необходимые права доступа (www-data) будут заданы скриптом. Эту папку нужно будет указать в ходе работы скрипта, при появлении соответствующего вопроса.

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

Для системы Debian:

Для системы Ubuntu:

Разархивируем архив со скриптом:

Важно: на сервере не должны быть установлены веб-сервер Apache2 или NGINX, управление базой данных MariaDB / MySQL или PHP.

Отметьте скрипт как «исполняемый»:

В ходе установки Nextcloud будут заданы некоторые вопросы.

При создании базы данных MariaDB, соглашаемся со всеми вопросами, выбрав Y, задаем пароль пользователя root для базы данных.

Будет создана база данных с именем пользователя nextcloud, паролем nextcloud.

Задайте имя Администратора Nextcloud и пароль.

Укажите расположение папки, в которой будут сохраняться все пользовательские файлы Nextcloud. Можно указать папку, которую создали в самом начале (/nextcloud-data).

Установка и оптимизация Nextcloud 21 завершены.

Настройка шифрования домена с помощью сертификата SSL от Let’s Encrypt

Для работы по добавлению шифрования создаем технического пользователя и добавляем его в группу www-data:

Можно не добавлять имя пользователя, а оставить по умолчанию, нажав на Enter.

Задаем техническому пользователю необходимые полномочия для инициирования необходимого запуска веб-сервера при обновлении сертификата:

Проверяем чтобы в середине файла была следующая запись (если ее нет, то добавляем):

А так же добавляем строку:

Сохраните и закройте файл с помощью комбинации клавиш CTRL+O, затем CTRL + X.

Переключитесь в оболочку технического пользователя (acmeuser), чтобы установить программное обеспечение необходимое для сертификата, а затем снова выйдите из этой оболочки:

Настройте соответствующие разрешения, чтобы иметь возможность сохранять в нем новые сертификаты:

Снова переключитесь в оболочку технического пользователя:

А затем подайте заявку на получение сертификатов SSL:

Название your.domain.com замените на название своего домена.

Выходим из оболочки нового пользователя:

Затем создайте скрипт, который будет проверять и исправлять разрешения (permissions.sh):

Скопируйте и вставьте все строки в файл (в строке /nextcloud-data измените на расположение вашей пользовательской папки Nextcloud):

Сохраните изменения и выйдите из редактора nano с поомщью комбинации клавиш CTRL+0, CTRL+X.

Отметьте скрипт как исполняемый и затем запустите его:

Удалите использованные ранее самозаверяющие сертификаты из nginx и активируйте новые, полноценные и уже действующие SSL-сертификаты от Let’s Encrypt:

Задайте задание cron:

С этого момента ваши SSL-сертификаты будут регулярно и полностью автоматически обновляться.

Пожалуйста, найдите время и проверьте статус безопасности вашего сервера. Целью должно быть как минимум следующий результат «А +»:

Оптимизируйте и обновляйте Nextcloud с помощью скрипта

Создаём скрипт для обновления, оптимизации Nextcloud и установленных приложений:

Вставляем следующее содержимое:

Сохраните изменения и закройте редактор nano комбинацией клавиш CTRL+O, CTRL+X.

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

В качестве хранения и расположения пользовательского каталога, можно использовать файловую систему S3QL: Подключаем Nextcloud к s3ql – файловой системе на базе облачного хранилища.

Источник

Nextcloud. Настраиваем персональное облако и смотрим, стоит ли возня свеч

Содержание статьи

Во­обще говоря, пер­вым делом я рас­смат­ривал более безобид­ные вари­анты вро­де Dropbox или Google Drive. Пос­тавить одну из них на сер­вер, и пусть син­хро­низи­рует пап­ки с компь­юте­ром, а при желании мож­но и на телефо­не открыть. Но бес­плат­но в этих сер­висах дос­тупно не так мно­го мес­та, а пла­тить за хра­нение одних и тех же фай­лов дваж­ды совер­шенно не хочет­ся — один раз хос­теру VPS, где лежат дан­ные, вто­рой раз — за Dropbox. Да и что‑то свое иметь всег­да при­ятнее, вер­но?

По­иски показа­ли, что най­ти решение одновре­мен­но прос­тое и не сов­сем кус­тарное не так‑то лег­ко. Зато в любом тре­де на эту тему обя­затель­но появ­ляют­ся люди, которые пос­тавили себе ownCloud или Nextcloud и рапор­туют о ров­ном и при­ятном полете на про­тяже­нии дол­гих лет. И хоть я и не пок­лонник мегаком­бай­нов, зву­чало это дос­таточ­но заман­чиво, что­бы дать им шанс.

Обе прог­раммы — это плат­формы, которые сами по себе заменя­ют Dropbox и дают воз­можность управлять фай­лами и шей­рить их, но пос­ле уста­нов­ки пла­гинов начина­ют напоми­нать мини­атюр­ную опе­раци­онку. Здесь тебе и поч­товые прог­раммы, метящие на роль Gmail, и кол­лабора­тив­ные редак­торы на манер Google Docs, и кален­дари с пла­ниров­щиками, и замет­ки, и май­ндма­пы и про­чие май­ндфа­ки.

ownCloud пос­ле уста­нов­ки

При этом ownCloud — шту­ка далеко не новая, в «Хакере» о нем пи­сали еще в 2014 году. Nextcloud пос­вежее и раз­вива­ется активнее: пер­вый релиз сос­тоял­ся в 2016 году, а текущая вер­сия на момент написа­ния этой статьи — двад­цатая.

Прис­таль­но изу­чив оба, я обна­ружил, что Nextcloud впол­не мож­но наз­вать млад­шим бра­том ownCloud, при­чем род­ным, а не дво­юрод­ным. Сходс­тва вид­ны на каж­дом шагу, вклю­чая даже некото­рые эле­мен­ты интерфей­са и наз­вания фай­лов. Такое ощу­щение, буд­то соз­датели Nextcloud не дол­го думая прос­то стя­нули весь код пред­шес­твен­ника и при­нялись модер­низиро­вать его.

Обе ком­пании находят­ся в Гер­мании, так что исто­рия мог­ла быть более запутан­ной и повес­тво­вать о рас­коле сре­ди сот­рудни­ков ownCloud. Но нам об этом ничего не извес­тно, так что прос­то возь­мем Nextcloud, как более мод­ный, и прис­тупим к уста­нов­ке.

Установка

Де­таль­но рас­катыва­ние Nextcloud на сво­ем сер­вере опи­сано в докумен­тации, так что пов­торять ее мы не будем и толь­ко про­бежим­ся по основным пун­ктам — что­бы ты пред­став­лял себе мас­шта­бы работ и не про­пус­тил важ­ные шаги, если решишь пов­торить мой путь.

Вот что пот­ребу­ется сде­лать в общих чер­тах.

Ког­да все будет готово, не спе­ши переза­пус­кать сер­вер! Как толь­ко ты это сде­лаешь, Nextcloud нач­нет на весь мир показы­вать уста­нов­щик, которым, по идее, может вос­поль­зовать­ся кто угод­но и ста­нет адми­ном тво­его обла­ка вмес­то тебя 🙂 Что­бы избе­жать это­го, можешь либо завер­шить про­цесс уста­нов­ки че­рез коман­дную стро­ку, либо нас­тро­ить веб‑сер­вер таким обра­зом, что­бы он не пус­кал кого попало. Тебя выручит авто­риза­ция (дирек­тива auth_basic ) либо белый спи­сок, в который будет вхо­дить толь­ко твой IP (дирек­тивы allow IP> и deny all ).

В любом слу­чае для работы с Nextcloud тебе понадо­бит­ся задать логин и пароль для админ­ской учет­ки, а так­же ука­зать базу дан­ных и кре­ды ее поль­зовате­ля, которо­го ты соз­давал. В общем, если ты ког­да‑нибудь уста­нав­ливал WordPress или phpBB, то ты точ­но спра­вишь­ся.

Интерфейс и приложения

Пос­ле дол­гих прик­лючений в тем­ном под­земелье кон­соли мы выбира­емся на повер­хность, к цивили­зации. На пер­вый взгляд все очень мод­но.

Фай­ловый менед­жер с кар­тиноч­ками!

Точ­нее, подобие магази­на, потому что денег здесь не берут, все толь­ко даром.

Шей­ринг

Еще мож­но наз­начить пароль и ука­зать вре­мя, по исте­чении которо­го ссыл­ка работать перес­танет.

Ог­раниче­ние по вре­мени

Но вни­мание, конеч­но, сра­зу перетя­гива­ет на себя магазин при­ложе­ний. Все­го аппли­кух ни мно­го ни мало — 281 шту­ка. Здесь есть вся­кие прос­мот­рщи­ки (нап­ример, для сним­ков в RAW, кни­жек в ePub, тре­ков в GPX), му­зыкаль­ные пле­еры, галереи для прос­мотра и пуб­ликации кар­тинок, нес­коль­ко видов таск‑тре­керов и заметок, менед­жер паролей и тому подоб­ные вещи.

Вот, к при­меру, отличный редак­тор диаг­рамм на осно­ве исходных кодов Draw.io, о котором я ког­да‑то писал в руб­рике WWW. Он уста­нав­лива­ется бук­валь­но одной кноп­кой, пос­ле это­го мож­но соз­давать, откры­вать и редак­тировать фай­лы с диаг­рамма­ми.

Не сто­ит, впро­чем, ждать, что все при­ложе­ния будут ста­вить­ся одной кноп­кой и иде­аль­но работать, наделяя Nextcloud новой вос­хититель­ной воз­можностью. При­ложу­хи здесь очень раз­ные — как по качес­тву, так и по тре­бова­ниям.

Нап­ример, быва­ет нуж­но что‑то допол­нитель­но вруч­ную уста­нав­ливать на сер­вер, а при­ложе­ние Nextcloud слу­жит толь­ко фрон­тендом. Так, нель­зя прос­то взять и в один клик пос­тавить кол­лабора­тив­ный редак­тор докумен­тов Collabora — нужен соот­ветс­тву­ющий сер­вер.

То же и с поч­той. Прог­рамма с незатей­ливым наз­вани­ем Mail — это лишь кли­ент­ская часть, и если ты хочешь не толь­ко раз­вернуть свой вебовый поч­товик, но и не зависеть от сто­рон­них сер­висов POP3/SMTP/IMAP, то уста­нав­ливать, нас­тра­ивать и под­держи­вать сер­вер при­дет­ся самос­тоятель­но. Раз­работ­чики рекомен­дуют исполь­зовать Mail-in-a-Box — как наибо­лее прос­той в уста­нов­ке.

Слу­чает­ся и так, что при­ложе­ния тре­буют, нап­ример, опре­делен­ной вер­сии PHP или самого Nextcloud. В общем, забыть о том, что ты теперь сам себе админ, не вый­дет.

Торренты и youtube-dl

Вряд ли сегод­ня кого‑то уди­вишь тор­рент‑кли­ентом с вебовым интерфей­сом, но при­ятно, ког­да ска­чан­ными фай­лами лег­ко управлять. Что каса­ется youtube-dl — зна­мени­той прог­раммы для стя­гива­ния видео с YouTube и мно­жес­тва дру­гих сер­висов (вклю­чая Twitter, TikTok и даже Pornhub), то у него и вов­се нет сво­его гра­фичес­кого интерфей­са. Так что иметь воз­можность открыть в бра­узе­ре стра­нич­ку, вбить туда URL и заполу­чить файл — идея неп­лохая, осо­бен­но если речь об исполь­зовании с мобиль­ного устрой­ства.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Источник

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows 10 не показывает локальный диск
  • Windows server 2012 r2 что это такое
  • Windows 10 какая архитектура
  • Dvd player free windows 10
  • Netcat for windows cmd