Как настроить доступ к Nexcloud через интернет?
Здравствуйте!
Есть компания с сайтом www.example.com который размещен на серверах хостинг провайдера. Внутри сети компании стоит сервер на котором крутятся базы 1с. Интернет провайдер поставил Zyxell Kinetik Lite и предоставляет доступ в глобальную сеть со статическим IP адресом. На роутере настроен проброс 80 порта на сервер с базами 1с. Сейчас пользователь набирает в браузере 123.123.123.123/baza1c1 или 123.123.123.123/baza1c2 и попадает в нужную базу. Работает все по http. Захотелось красоты и в хостинг панели сайта компании был добавлен поддомен 1c.example.com которому была присвоена А запись с IP адресом роутера компании. Сейчас пользователь набирает 1c.example.com/baza1c1 или 1c.example.com/baza1c2 и попадает в нужную базу.
Возникла необходимость заменить dropbox локальным решением, для чего по многочисленным мануалам был установлен Nextcloud для тестов на простеньком компьютере внутри сети компании. Внутри локальной сети все работает замечательно. А дальше не могу реализовать подключение к своему nextcloud серверу через Интернет. В хостинг панели был зарегистрирован еще один поддомен cloud.example.com. Хостеру был задан вопрос как настроить редирект с сайта cloud.example.com на наш роутер со статическим адресом 123.123.123.123:43334. Не знаю что именно хостер сделал, но редирект работает. На самом роутере был настроен проброс 43334 порта на внутренний ip адрес nextcloud сервера на порт 80. Сейчас при обращении по адресу cloud.example.com попадаю на приветственную страницу своего веб сервера, на котором работает nextcloud, но чтобы попасть в веб интерфейс нужно перейти по адресу cloud.example.com/nextcloud и браузер вместо открытия панели сервиса предлагает скачать файл index.php вот с таким содержанием:
* @author Joas Schilling * @author Jörn Friedrich Dreyer * @author Lukas Reschke * @author Morris Jobke * @author Robin Appelman * @author Sergio Bertolín * @author Thomas Müller * @author Vincent Petry * * @license AGPL-3.0 * * This code is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License, version 3, * along with this program. If not, see * */ require_once __DIR__ . '/lib/versioncheck.php'; try < require_once __DIR__ . '/lib/base.php'; OC::handleRequest(); >catch(\OC\ServiceUnavailableException $ex) < \OC::$server->getLogger()->logException($ex, array('app' => 'index')); //show the user a detailed error page OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE); OC_Template::printExceptionErrorPage($ex); > catch (\OC\HintException $ex) < OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE); try < OC_Template::printErrorPage($ex->getMessage(), $ex->getHint()); > catch (Exception $ex2) < \OC::$server->getLogger()->logException($ex, array('app' => 'index')); \OC::$server->getLogger()->logException($ex2, array('app' => 'index')); //show the user a detailed error page OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR); OC_Template::printExceptionErrorPage($ex); > > catch (\OC\User\LoginException $ex) < OC_Response::setStatus(OC_Response::STATUS_FORBIDDEN); OC_Template::printErrorPage($ex->getMessage(), $ex->getMessage()); > catch (Exception $ex) < \OC::$server->getLogger()->logException($ex, array('app' => 'index')); //show the user a detailed error page OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR); OC_Template::printExceptionErrorPage($ex); > catch (Error $ex) < try < \OC::$server->getLogger()->logException($ex, array('app' => 'index')); > catch (Error $e) < $claimedProtocol = strtoupper($_SERVER['SERVER_PROTOCOL']); $validProtocols = [ 'HTTP/1.0', 'HTTP/1.1', 'HTTP/2', ]; $protocol = 'HTTP/1.1'; if(in_array($claimedProtocol, $validProtocols, true)) < $protocol = $claimedProtocol; >header($protocol . ' 500 Internal Server Error'); header('Content-Type: text/plain; charset=utf-8'); print("Internal Server Error\n\n"); print("The server encountered an internal error and was unable to complete your request.\n"); print("Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.\n"); print("More details can be found in the webserver log.\n"); throw $e; > OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR); OC_Template::printExceptionErrorPage($ex); >
Даже если я введу в адресную строку внешний ip своего роутера и укажу что подключаться нужно к порту 43334 (123.123.123.123:43334) я так же увижу приветственную страницу web сервера. переход по 123.123.123.123:43334/nextcloud так же предлагает скачать файл.
Если же я подключаюсь к nextcloud серверу из локальной сети по его локальному адресу 192.168.1.8/nextcloud у меня открывается web интерфейс сервиса и я спокойно могу работать.
Как настроить работу сервиса nextcloud по следующей схеме: пользователь идет по адресу cloud.example.com его переводить на адрес 123.123.123.123:43334 где его дальше переводит на 192.168.1.8/nextcloud?
Версия nextcloud 13, версия php 7.0, web сервер nginx
Средний 1 комментарий
Облачное хранилище для компании на Ubuntu 22.04 + NextCloud
Производственная компания имеет клиентов по всей России и странам СНГ и по гарантийным вопросам сервисным инженерам приходится выезжать к клиентам. Им при себе необходимо иметь спец инструмент, запчасти, расходники и иметь под рукой последнее актуальное ПО или прошивки очень актуально где бы они не находились.
Техническое задание
В связи с большим количеством документация, прошивок и прочего ПО необходимо организовать облачное хранилище со следующими группами прав доступа:
1) Разработчики и тестировщики режим чтения и записи на папки сервисная документация , прошивки , ПО .
2) сервисные инженеры режим чтения на папки сервисная документация , прошивки , ПО .
3) Офисный планктон имеет доступ к папке Офис с правами чтения и записи в свою подпапку с названием отдела.
4) Сотрудники производства имеют доступ к папкам сервисная документация , прошивки , ПО в режиме чтения и к папке Производство в свою подпапку с названием отдела в режиме чтения и записи.
5) Сотрудники склада имеют доступ к общей шаре и более иметь им не положено.
Создание записи типа A и проброс портов через маршрутизатор
Для тех у кого нет домена, советую nethouse.ru — очень шустро обновляются ДНС записи.
Если у вас уже есть сайт или планируется, то рекомендую добавить DNS запись типа А с именем cloud.domain.ru и ip адресом вашего маршрутизатора в качестве значения.
На маршрутизаторе нужно добавить запись dnat, протокол tcp, порты 80, 443 и в качестве назначения ip адрес вашего сервера с NextCloud.
Установка Ubuntu server 22.04 с компонентом NextCloud
Кратко в скриншотах пробежимся по этапу установки системы
Как настроить доступ к Nexcloud через интернет?
Здравствуйте!
Есть компания с сайтом www.example.com который размещен на серверах хостинг провайдера. Внутри сети компании стоит сервер на котором крутятся базы 1с. Интернет провайдер поставил Zyxell Kinetik Lite и предоставляет доступ в глобальную сеть со статическим IP адресом. На роутере настроен проброс 80 порта на сервер с базами 1с. Сейчас пользователь набирает в браузере 123.123.123.123/baza1c1 или 123.123.123.123/baza1c2 и попадает в нужную базу. Работает все по http. Захотелось красоты и в хостинг панели сайта компании был добавлен поддомен 1c.example.com которому была присвоена А запись с IP адресом роутера компании. Сейчас пользователь набирает 1c.example.com/baza1c1 или 1c.example.com/baza1c2 и попадает в нужную базу.
Возникла необходимость заменить dropbox локальным решением, для чего по многочисленным мануалам был установлен Nextcloud для тестов на простеньком компьютере внутри сети компании. Внутри локальной сети все работает замечательно. А дальше не могу реализовать подключение к своему nextcloud серверу через Интернет. В хостинг панели был зарегистрирован еще один поддомен cloud.example.com. Хостеру был задан вопрос как настроить редирект с сайта cloud.example.com на наш роутер со статическим адресом 123.123.123.123:43334. Не знаю что именно хостер сделал, но редирект работает. На самом роутере был настроен проброс 43334 порта на внутренний ip адрес nextcloud сервера на порт 80. Сейчас при обращении по адресу cloud.example.com попадаю на приветственную страницу своего веб сервера, на котором работает nextcloud, но чтобы попасть в веб интерфейс нужно перейти по адресу cloud.example.com/nextcloud и браузер вместо открытия панели сервиса предлагает скачать файл index.php вот с таким содержанием:
* @author Joas Schilling * @author Jörn Friedrich Dreyer * @author Lukas Reschke * @author Morris Jobke * @author Robin Appelman * @author Sergio Bertolín * @author Thomas Müller * @author Vincent Petry * * @license AGPL-3.0 * * This code is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License, version 3, * along with this program. If not, see * */ require_once __DIR__ . '/lib/versioncheck.php'; try < require_once __DIR__ . '/lib/base.php'; OC::handleRequest(); >catch(\OC\ServiceUnavailableException $ex) < \OC::$server->getLogger()->logException($ex, array('app' => 'index')); //show the user a detailed error page OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE); OC_Template::printExceptionErrorPage($ex); > catch (\OC\HintException $ex) < OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE); try < OC_Template::printErrorPage($ex->getMessage(), $ex->getHint()); > catch (Exception $ex2) < \OC::$server->getLogger()->logException($ex, array('app' => 'index')); \OC::$server->getLogger()->logException($ex2, array('app' => 'index')); //show the user a detailed error page OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR); OC_Template::printExceptionErrorPage($ex); > > catch (\OC\User\LoginException $ex) < OC_Response::setStatus(OC_Response::STATUS_FORBIDDEN); OC_Template::printErrorPage($ex->getMessage(), $ex->getMessage()); > catch (Exception $ex) < \OC::$server->getLogger()->logException($ex, array('app' => 'index')); //show the user a detailed error page OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR); OC_Template::printExceptionErrorPage($ex); > catch (Error $ex) < try < \OC::$server->getLogger()->logException($ex, array('app' => 'index')); > catch (Error $e) < $claimedProtocol = strtoupper($_SERVER['SERVER_PROTOCOL']); $validProtocols = [ 'HTTP/1.0', 'HTTP/1.1', 'HTTP/2', ]; $protocol = 'HTTP/1.1'; if(in_array($claimedProtocol, $validProtocols, true)) < $protocol = $claimedProtocol; >header($protocol . ' 500 Internal Server Error'); header('Content-Type: text/plain; charset=utf-8'); print("Internal Server Error\n\n"); print("The server encountered an internal error and was unable to complete your request.\n"); print("Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.\n"); print("More details can be found in the webserver log.\n"); throw $e; > OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR); OC_Template::printExceptionErrorPage($ex); >
Даже если я введу в адресную строку внешний ip своего роутера и укажу что подключаться нужно к порту 43334 (123.123.123.123:43334) я так же увижу приветственную страницу web сервера. переход по 123.123.123.123:43334/nextcloud так же предлагает скачать файл.
Если же я подключаюсь к nextcloud серверу из локальной сети по его локальному адресу 192.168.1.8/nextcloud у меня открывается web интерфейс сервиса и я спокойно могу работать.
Как настроить работу сервиса nextcloud по следующей схеме: пользователь идет по адресу cloud.example.com его переводить на адрес 123.123.123.123:43334 где его дальше переводит на 192.168.1.8/nextcloud?
Версия nextcloud 13, версия php 7.0, web сервер nginx
Средний 1 комментарий