Домашний хостинг, интернет магазин на .ASP?
Я новичок в вопросах создания интернет-магазинов и настройки серверов. Планирую запустить свой интернет-магазин, написанный на ASP.NET. Рассматривал варианты с облачными сервисами, но отказался от них по нескольким причинам — в частности, из-за роста объёма базы данных (и как следствие — увеличения стоимости хостинга).
В связи с этим решил организовать домашний хостинг , то есть разместить сервер у себя дома. Однако найти понятную и практическую информацию на эту тему оказалось сложно — на форумах советы разнятся, а конкретных инструкций для новичков практически нет.
Интересует следующее:
1.Какое минимальное оборудование потребуется для организации домашнего сервера под интернет-магазин? 2.Как правильно всё это настроить , чтобы магазин работал стабильно и безопасно? 3.Как обеспечить безопасность домашней сети , чтобы локальная сеть не пострадала от возможных атак или уязвимостей сервера? 4.Есть ли у кого-то реальный опыт в подобных проектах и готовые рекомендации, пошаговые инструкции? Очень надеюсь на помощь от тех, кто сталкивался с этим на практике и может подсказать «как для чайника» — без сложных терминов и лишней теории, а по делу и по шагам.
Сейчас уже приобретен белый айпи у провайдера.
Ответы (4 шт):
Я бы назвал этот вопрос дискуссионным (и, скорее, экономическим/финансовым, а не техническим), но всё же отвечу на него: считаю, что стоит всё-таки использовать облачный хостинг. Т.е. стоит отказаться от сервера в вашей квартие/доме/даче/подвале.
Как верно заметил CREAsTIVE, а что будет тогда, когда вам не будет хватать ваших текущий мощностей? Нет, может, безусловно, ваш интернет-магазин предназначен для ПГТ с населением в 5000 человек, но, насколько можно предположить, это не так. У вас возникнут проблемы с расширением возможностей оборудования. И тут уже XEON`ами на 775 сокетами, наверно, не разгуляться.
И это с учётом того, что вы, как сами себя оценили, "новичок"?
UPDATE: Сейчас еще появился вопрос: а что будет, когда вы захотите привлечь человека со стороны для обслуживания/помощи? Ему придётся разбираться с вашим домашним сервером? На это не все могут согласиться.
- Смотрите характеристики хост-машин на соответствующих сайтах провайдеров, подберите под себя
- Это очень глубокая тема. "Делайте всё хорошее. Плохое не делайте". Правильно напишите ваш сайт и вам этого хватит. Настройка сервера тут ни при чём. Это же не enterprise решением
- А что вы хотите? Ваш сервер, который будет находиться у вас в домашней сети, будет доступен для получения контента вашего сайта, т.е. напрямую запретить доступ к нему не получится. Либо создавайте отдельную подсеть, либо постарайтесь не сделать прям таких критических лазеек, что бы вашу домашнюю сеть накрыли.
- Да, пошаговая инструкция, что нужно пойти и учиться. Люди это много лет учат и умирают перед пк/ноутом, что бы сделать то, что вы хотите сделать по какому-то road map?
Рекомендация просто сначала сделать какой-то пет проект и грамотно пройтись по теме "кибербезопасность" если вы уж так переживаете за это. В конце концов, у вас под рукой есть интернет - бесплатный и безграничный источник знаний. Миллионы курсов, гайдов на YouTube и уже готовых примеров на github только и ждут, что бы вы их нашли. На счёт всего остального нет золотого правила либо пошаговой инструкции, это всё опыт разработки и опыт программирования. Не начнёте делать - не сделаете
UPD: Если у вас уже есть белый ИПИшник, вот вам статья на счёт развёртывания asp.net приложений
UPD 2.0: Из комментариев:
В зависимости от того, на какую аудиторию вы рассчитываете. Тут вообще можно сразу быть готовым к тому, что у вас не будет больших нагрузок на систему. Что бы у вас отвалился сервер нужно прям какую-то рекламу на очень много деняк запускать.
Очень важно понять, что если у вас интернет магазин, вам очень нужно серьёзно подумать над файловым сервером (другой пк) для хранения фотографий. Это стандартная тема. Но так, как у вас нет возможности (или желания) делать это всё в облаке, то вам нужно будет выделить финансы на хороший HDD/SSD 512Гб минимум.
В плане экономии ресурсов рекомендую целиться на OS Linux, т.е. сам сервер будет примерно в 2 раза производительнее на те же ресурсы. Для небольшого интернет магазина 2 Гб ОЗУ на Linux вам хватит с головой. Если есть возможность, поставьте 4. Далее вы сможете оценить реальную нагрузку на практике и решать, стоит ли вам что-то изменять в железе.
Сколько кушает приложение? Просто запустите его локально и измеряйте нагрузку через Диспетчер задач. Такой оценки вам вполне хватит.
Отключить возможность сканирования портов невозможно, так как ваш сервер будет доступен из интернета и любой желающий может просто попробовать кинуть запрос на какой-либо интересующий его порт и (не)получить ответ. Вы можете на уровне вашего asp.net приложения настроить CORS и настроить доступ к функционалу, который ограничить.
Наработки у меня, как и у большинства программистов есть, только мне за них деньги платили) А тут я всего лише занимаюсь консультированием и просвещением юных умов)
Про комп
С .NET я, увы, не знаком, поэтому приведу выкладки на примере Linux(RHEL9) с php/apache/mysql.
У меня на сервере 8 ядер, 8Г памяти. На нём примерно 100 постоянных пользователей веб-сервера, который ежесекундно делает выборки из БД на тысячи записей как для записи, так и для чтения. БД на этом же сервере. На нём же ещё куча задач в фоне крутится, все работают с сетью и БД.
Средняя общая нагрузка на CPU ~0.5%. Память занята на 2Гига, и это я её специально выделял для MySQL, а так была около 800Мб.
Теперь про сеть.
Серьёзные сетевые карты для серверных решений умеют распараллеливать обработку очередей на необходимое количество ядер сервера. Например, сетевуха на 40Гбит трафика если распределяет свои очереди на 16 ядер, то ядра оказываются занятыми примерно на 10%. Если пересчитать это на ваши требования, станет понятно, что вам это не надо. Любой комп с обычной гигушкой и одним ядром даже не заметит трафика в 100Мбит.
Про роутер.
Любой современный домашний роутер, прекрасно справляется с клиентским трафиком чуть ли не до 1Гбит/с. А этот трафик намного сложней, чем запросы из интернета на один единственный веб-порт. Конечно, хорошо будет, если его можно гибко настраивать Mikrotik в данном случае впереди планеты всей.
Выбранная вами модель имеет запас на офис этак на 200-300 компов, да ещё и с магистральным оптическим SFP-портом, который в домашней сети никогда не понадобится. А что понадобится - это пробросить из интернета трафик на порты 80,443,22 на ваш сервер и всё. С этим прекрасно справится роутер за 4-5тр. Маршрутизировать несколько изолированных локалок - тоже задача ни о чём.
К примеру, у меня дома 4 сети - открытый Wifi, Wifi для устройств SmartHome, локалка для домашних компов (серверы в ней же), локалка для IP-камер и SmartHome. И железяка в отдельной подсети, смотрящая в инет на скорости 1Гбит/с. Всем этим добром управляет роутер с одним единственным (!) портом (SXT G-2HnD), коммутация на 24-портовом коммутаторе D-Link. При максимальной нагрузке симметричный интернет-трафик составляет около 250Мбит/с.
Лучше на оставшиеся деньги купить какой-нибудь управляемый коммутатор, котрый позаботится о том, чтобы ваша локалка с завирусованными и спамящими компами не мешала работе серверной сети.
Про масштабирование.
Зачем переживать об этом раньше времени и тратиться на какие-то неведомые перспективы. Начните на том железе, что есть, а потом его легко замените, либо переедете в платное облако. При достаточно аккуратном подходе всё заменяется наживую незаметно для клиентов. Это касается как замены сетевых устройств, так и обновления ПО, а так же и переезд серверов с одних хостингов на другие.
Так что начните с разработки, а там - время покажет.
Спустя время я нашел гайд по безопасности Linux сервера. Вот репозиторий.