Для установки Nextcloud можно воспользоваться статьями
Сложного тут ничего нет, за исключением настройки доменного имени и публикации облака наружу, чтобы оно было доступно не только внутри домашней сети, но и через Интернет.
Расскажу как все настроить через роутер Keenetic GIGA SE.
Перед установкой Apache
Перед установкой Apache необходимо подготовить доменное имя для будущего облака.
Регистрация сервера
Первое, что нужно сделать, это зарегистрировать на роутере сервер, куда будет установлен Nextcloud.
Делается это в админке роутера, в разделе Мои сети и Wi-Fi / Список клиентов.
В моем случае, сервер зарегистрирован с именем HomeServ и за ним закреплен IP-адрес 192.168.1.100.
Доменное имя для роутера
Далее, нужно настроить доменное имя для роутера.
Делается это в админке роутера, в разделе Сетевые правила / Доменное имя.
У меня получилось вот так:
Вместо myrouter у вас будет свое имя.
"Белого" IP у меня нет, поэтому режим работы сделал через облако.
Доменное имя для Nextcloud
Доменное имя для облака будет в формате
<cloud_name>.<router_name>.keenetic.link
где <router_name> - это имя, использованное при настройке роутера, а <cloud_name> - произвольное имя вашего облака.
В моем случае будет имя cloud.myrouter.keenetic.link.
Прямой доступ по доменному имени из локальной сети
Когда находишься в локальной сети, хотелось бы чтобы запросы к облаку не шли через интернет, а оставались в локальной сети и направлялись напрямую к серверу.
Для этого нужно добавить доменное имя в DNS роутера.
Подключаемся к роутеру по протоколу Telnet. Я для этого использую приложение MobaXterm (про которое я писал в статье про удаленный доступ к медиа-серверу).
После ввода логина/пароля администратора и появления запроса (config)> вводим команду (не забудьте подставить свое имя домена и IP-адрес сервера)
ip host cloud.myrouter.keenetic.link 192.168.1.100
Установка Apache
Устанавливаем Apache как описано в инструкциях, приведенных выше, за исключением того, что настраиваем работу Nextcloud только по протоколу HTTP (на HTTPS переключим его позже).
Соответственно, в файла /etc/apache2/sites-enabled/nextcloud.conf необходимо сделать настройки только для HTTP, т.е. файл должен выглядеть так (не забудьте поменять доменное имя на свое)
<VirtualHost *:80>
Define root_domain cloud.myrouter.keenetic.link
Define root_path /var/www/nextcloud
ServerName ${root_domain}
DocumentRoot ${root_path}
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
</IfModule>
<Directory ${root_path}>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Также не выполняем шаги индукции, связанные с получением SSL-сертификатов.
Установка Nextcloud
Устанавливаем все как в инструкции. Когда дойдет дело до открытия веб-страницы для окончательной настройки, используем адрес http://cloud.myrouter.keenetic.link.
Настройка доступа к облаку из Интернета
Настройка внешнего доменного имени
После установки Nextcloud идем в админку роутера в раздел Сетевые правила / Доменное имя и настраиваем доступ к веб-приложениям домашней сети
Должна получиться вот такая запись
Настройка SSL
Выполняем пункты инструкции, касающиеся получения SSL-сертификата.
Доменное имя, для которого запрашивается сертификат - cloud.myrouter.keenetic.link (а точнее - ваш вариант этого имени).
Настройка Apache
Открываем на редактирование файл /etc/apache2/sites-enabled/nextcloud.conf
nano /etc/apache2/sites-enabled/nextcloud.conf
В строке <VirtualHost *:80> меняем порт на 443 и в начало файла добавляем (не забыв скорректировать доменное имя)
<VirtualHost *:80>
Define root_domain cloud.myrouter.keenetic.link
ServerName ${root_domain}
Redirect / https://${root_domain}
</VirtualHost>
Перезапускаем веб-сервер
systemctl restart apache2
Перенастройка внешнего доменного имени
Возвращаемся в админку роутера и перенастраиваем адрес веб-приложения на HTTPS и 443 порт. Должно получиться так
После этого Nextcloud должен быть доступен и внутри сети и из Интернета по адресу https://cloud.myrouter.keenetic.link.