- Подготовка
- Настройка OpenVPN
- Настройка Nextcloud
- Использование домена вместо IP-адреса для подключения к Nextcloud
В следующей статье мы создадим изолированный от внешней сети инстанс Nextcloud, который будет доступен только из под VPN по IP-адресу. Подобное решение повышает безопасность хранимых данных.
Подготовка
Для реализации этого решения нам потребуются следующие ресурсы:
- Сервер с OpenVPN (Подойдет тариф Cloud Promo и выше)
- Сервер с Nextcloud (Тариф будет зависеть от объема хранимых файлов)
Первым делом необходимо создать два сервера. Для Nextcloud и OpenVPN у нас уже имеются готовые решения, которые можно выбрать при заказе услуг. Доступы к серверам поступят после заказа.
Чтобы создать изолированную среду, нам потребуется соединить оба сервера в одну локальную сеть. Включить сервера в локальную сеть можно как во время создании новой услуги VPS (для этого нужно отметить соответствующую опцию при создании услуги), так и уже вручную после её заказа. Для настройки вручную можно воспользоваться следующей инструкцией.
Настройка OpenVPN
OpenVPN по умолчанию уже настроен, какую-либо настройку производить не требуется. Если же нужно внести какие-либо изменения, то можно воспользоваться инструкцией.
Настройка Nextcloud
Дальнейшая настройка производится на сервере с Nextcloud.
- Сначала нужно выпустить самоподписанный сертификат для сервиса. Подключитесь к серверу по SSH и выполните команду:
Данные могут указываться любые, но в Common Name рекомендуется указать локальный IP-адрес сервера.
- Так как доступ будет осуществляться по IP-адресу, необходимо убрать упоминания домена по умолчанию. Первым делом нужно удалить символьную ссылку /etc/nginx/sites-enabled/default
В файле виртуального хоста nginx по пути /etc/nginx/sites-available/nextcloud внесите следующие изменения:
-
во всех директивах server_name замените тестовый домен на локальный IP-адрес сервера;
-
в директивах ssl_certificate и ssl_certificate_key пропишите пути до ранее сгенерированных сертификатов:
ssl_certificate_key /etc/ssl/private/nextcloud-selfsigned.key;
-
В директивах перенаправления на https версию сайта замените указанный домен на локальный IP-адрес сервера:
return 301 https://$host$request_uri;
}
- Далее нужно прописать локальный IP-адрес вашего сервера в конфигурационном файле самого Nextcloud по пути /var/www/nextcloud/config/config.php. В Trusted Domains замените технический домен на локальный IP-адрес сервера.
- Последним этапом является отключение сервера Nextcloud от внешней сети. Сделать это можно в настройках сетевой карты.
В ОС Ubuntu это делается в файле /etc/netplan/50-cloud-init.yaml
Закомментируйте все строки интерфейса ens3, оставив только локальный интерфейс ens4:
ethernets:
#ens3:
#addresses:
#- 77.222.60.8/24
#- 2a02:408:7722:54:77:222:60:8/64
#gateway4: 77.222.60.1
#gateway6: 2a02:408:7722:54::1
#nameservers:
#addresses:
#- 8.8.8.8
#- 8.8.4.4
#- 2001:4860:4860::8888
#- 2001:4860:4860::8844
#search: []
#optional: true
ens4:
addresses:
- 10.0.0.99/27
- Сохраните файл и выполните команду
- Перезагрузите сервер.
Готово, теперь сервер доступен по локальному IP-адресу, при этом для доступа потребуется предварительно подключиться к серверу OpenVPN.
Использование домена вместо IP-адреса для подключения к Nextcloud
Если нужно, чтобы доступ к Nextcloud был по определенному домену (например, nextcloud.example.ru), то вместо локального IP-адреса при настройке потребуется везде указывать данный домен.
Чтобы работал резолвинг данного домена внутри сети, нужно на обоих серверах добавить следующую запись в файл /etc/hosts:
где вместо 10.0.0.99 указывается локальный IP адрес сервера Nextcloud, а вместо nextcloud.example.ru - ваш домен.
Данный домен необязательно должен существовать, так как резолвинг будет происходить локально.