Сделать сервер из домашнего компа. Дата-центр в домашних условиях

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

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

Зачем нужен домашний сервер

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

Слово «сервер» у многих людей ассоциируется со сверхмощным компьютером, который из-за внушительных размеров и высокого уровня шума устанавливается в отдельной комнате. Но это верно лишь в отношении вычислительных систем крупных предприятий и научных лабораторий, тогда как домашний сервер являет собой полную противоположность — компактное, энергоэффективное и почти бесшумное устройство. Небольшие размеры мини-сервера позволяют установить его в укромном месте: на полке, под столом или за телевизором, чтобы не портить интерьер комнаты. Минимальное энергопотребление позволит не опасаться разорительных счетов за электричество, а низкий уровень шума или его полное отсутствие не помешает сну.

Как использовать мини-сервер

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

  • Сетевое хранилище . Одной из самых частых ролей, которые берет на себя домашний сервер, является сетевое хранилище (Network Attached Storage, NAS). Такой подход позволяет предоставить доступ к фильмам и музыке всем сетевым устройствам. Кроме того, с помощью NAS удобно обмениваться только что снятыми смартфоном фотографиями и видеороликами: их нужно лишь загрузить в сетевое хранилище и можно просматривать на компьютере или телевизоре. При желании доступ к файлам из хранилища можно предоставить по протоколу FTP, благодаря чему они станут доступны но вводу пароля еще и пользователям, находящимся за рамками домашней сети.
  • Медиасервер . Унифицированный стандарт DLNA позволяет электронным устройствам обмениваться друг с другом мультимедийным контентом. Мини-сервер, поддерживающий этот стандарт, может транслировать видеопоток на телевизор с поддержкой DLNA, планшетный компьютер или смартфон.
  • Узел пиринговой сети . Процесс загрузки файлов по протоколу BitTorrent на высокой скорости и последующая их раздача ощутимо нагружают жесткий диск и замедляют обмен данными в сети. Поэтому разумно перепоручить выполнение этой задачи домашнему серверу, обладающему собственным жестким диском или даже несколькими. Клиент BitTorrent, как правило, входит в стандартный набор приложений мини-серверов, если же предустановленного приложения в меню не оказалось, его можно установить вручную.
  • Веб-сервер . По правде говоря, аренда вебхостинга сейчас стоит сущие копейки, так что устанавливать дома мини-сервер лишь для запуска на нем веб-сайта вряд ли оправданно. Но если вы уже обзавелись домашним сервером для выполнения других задач, почему бы не использовать его еще и в качестве веб-сервера, к примеру для персонального блога?
  • Видеонаблюдение . Чтобы следить за домом и приусадебным участком во время пребывания на работе, нужна система видеонаблюдения. Установить обычные веб-камеры или беспроводные IP-камеры по периметру дома не составит труда, а храниться сделанные ими фотографии и видеозаписи будут на мини-сервере. Если на территорию проникнут посторонние липа, специальное программное обеспечение мгновенно отправит на мобильный телефон-сигнал SOS. А в случае чрезвычайного происшествия наблюдать за обстановкой в доме можно будет удаленно, с ноутбука или планшета.
  • Обработка видео . Если вам нужно перекодировать видеоролик или отрендерить смонтированный фильм, приготовьтесь подождать от нескольких часов до суток, причем ПК в это время не будет пригоден для иной деятельности. Так что лучше отдать эту работу на откуп серверу.
  • Игровой сервер . Чтобы играть с друзьями в многопользовательские шутеры, один из компьютеров должен исполнить роль сервера.

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

Системный блок для сервера

В зависимости от потребностей домашний сервер может представлять собой устройство разного размера и форм-фактора. Простейший мини-сервер состоит из беспроводного маршрутизатора и внешнего жесткого диска с интерфейсом USB. Такое решение сгодится на роль сетевого хранилища, а после установки на маршрутизатор альтернативной прошивки, к примеру OpenWrt или DD-WRT, — еще и на роли веб-сервера и клиента BitTorrent.
Если понадобится более емкий и быстрый сетевой накопитель, рекомендуем выбрать NAS-систему. Такое устройство оснащается двумя или четырьмя жесткими дисками, объединенными в RAID-массив, парой гигабитных адаптеров Ethernet и, как правило, предустановленным клиентом BitTorrent.
Если нужен компактный домашний сервер, который в то же время обладал бы возможностями полноценного компьютера, стоит присмотреться к неттопам — миниатюрным системным блокам, построенным на базе экономичных процессоров Intel или AMD. При желании мини-компьютер можно собрать собственноручно на основе материнской платы Mini-ITX или Barebone-системы — почти готового к использованию компьютера, в который нужно установить лишь модули оперативной памяти и жесткий диск, после чего можно заняться вопросом размещение серверов в датацентре . Такие решения, как правило, могут похвастаться более производительным, чем у неттонов, процессором, а значит, подойдут для обработки видео и запуска игрового сервера.

Конфигурации домашнего сервера

Итак, из чего должен состоять домашний сервер? Прежде всего, определимся с общими требованиями к его конфигурации.

  • Компактность . Мини-сервер необязательно должен быть под рукой: ничто не мешает убрать его в кладовку или даже на балкон. Тем не менее собирать его в полноразмерном tower нерационально, обычная городская квартира отнюдь не резиновая, и место в ней весьма и весьма ограниченно. Потому есть смысл использовать малогабаритный баребон или компактный корпус формата Mini-ITX.
  • Быстрый сетевой адаптер . Ни монитора, ни клавиатуры с мышью у уважающего себя сервера нет, всякий обмен данными с внешним миром он получает исключительно по сети. Потому без гигабитного сетевого адаптера (а то и двух) не обойтись. Как бы ни было велико искушение избавиться от сетевой инфраструктуры с помощью адаптера Wi-Fi или Powerline (HomePlug), подключать сервер придется витой парой категории 5е или 6, только она сможет обеспечить пропускную способность, необходимую для многих сетевых сервисов.
  • Емкая, быстрая и надежная дисковая подсистема . Одним из наиболее востребованных сетевых сервисов является хранение данных. В самом деле, зачем искать интересующий вас фильм или дистрибутив нужной программы среди нескольких сетевых компьютеров, если можно приспособить для хранения сервер? Разумеется, емкость дисковой системы должна быть достаточной, чтобы вместить все то, что члены семьи сочтут нужным сохранить: видеофильмы и видео, фотоархивы, полезные программы и т.д. Также важна скорость доступа к этим материалам: кто захочет ждать по 30-40 минут, пока с сервера загрузится нужный файл. С надежностью, в общем-то, и так все ясно — при потере 3-4 Тб информации восстановление может занять много Бремени, а кое-что и вовсе реанимировать не удастся. Всем этим условиям удовлетворяет RAID-массив из нескольких жестких дисков.
  • Низкий уровень шума и эффективное охлаждение . Если вы так и не собрались перенести сервер на балкон, вам может мешать шум его вентиляторов, особенно ночью. Поэтому следует позаботиться о том, чтобы сервер не сильно грелся и его система охлаждения имела тихие низкооборотные вентиляторы. Тут важно не переборщить с мощностью: тоновый восьмиядерный процессор домашнему мини-серверу чаще всего ни к чему, вполне можно обойтись экономичной моделью невысокого уровня.
  • Производительность . В какой-то степени это требование находится в противоречии с предыдущим, и вам придется искать компромисс между ними. Ключевое значение имеет круг задач, которые предполагается возложить на мини-сервер. Если, скажем, вы собираетесь использовать его для «тяжелых» вычислений, таких как кодирование и рендеринг видео, волей-неволей придется установить что-нибудь вроде Intel Core i5-2500k и мириться с шумной системой охлаждения. Если же сервер в основном будет использоваться как хранилище, можно смело экономить на процессоре и ограничиться чем-нибудь бюджетным.
  • Надежность . В последнюю очередь упомянем надежность самого сервера. Увы, домашним мини-серверам не доступны практически все серверные технологии повышения надежности, поэтому следует сделать акцент на компонентах от зарекомендовавших себя производителей и на качественной сборке системы. Также стабильности добавит источник бесперебойного питания: он обеспечит непрерывную работу мини-сервера при кратковременных сбоях питания и защитит оборудование при серьезных проблемах в электросети.

Комплектуем свой мини-сервер

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

  • Системная плата ASUS P8H67-I . Из богатейшего набора системных плат Mini-ITX, имеющихся на рынке, мы выбрали плату, оборудованную сокетом LGA1155, с прицелом на достаточно мощный универсальный минисервер. Также нас интересовал встроенный RAID-контроллер, с помощью которого можно построить по-настоящему производительное и надежное сетевое хранилище.

  • Процессор Intel Core 13-2100 . С одной стороны, способен обеспечить высокое быстродействие, а с другой — хорошо вписался в наш ограниченный энергобюджет (65 Вт из 180 Вт).
  • Память Apacer 2×1 Гб DDR3-1333 . Большой объем памяти нашему серверу ни к чему: кодировать видео мы на нем не собирались, а потому сочли возможным сэкономить на ОЗУ.
  • Четыре однотерабайтных жестких диска Western Digital WD10EZRX . Эти HDD относятся к серии Caviar Green и обладают пониженной скоростью вращения шпинделя; как следствие — возрастают надежность и долговечность, а также снижаются энергопотребление и тепловыделение. Все эти параметры имеют первостепенное значение для домашнего мини-сервера. Жесткие диски мы объединили в массив RAID по схеме 1+0, то есть зеркало из двух пар с чередованием (stripe). С одной стороны, такая схема обеспечивает высокую производительность дисковой подсистемы, с другой — достаточно высокую надежность за счет дублирования. Пришлось, конечно, пожертвовать емкостью: общий объем хранения системы составил 2 Тб.
  • Корпус Chenbro ES34069 . Компания Chenbro хорошо известна своими не слишком изящными, зато надежными и грамотно сконструированными корпусами. ES34069 это компактный корпус для системной платы формата Mini-ITXc внешним блоком питания. Немаловажным для нас было наличие четырех внешних отсеков для жестких дисков, двух 70-миллиметровых вентиляторов и еще двух посадочных мест для вентиляторов размером 60 мм. Внешний блок питания ограничивал нас в мощности достаточно скромной величиной в 180 Вт.
  • Операционная система FreeNAS . Устроила нас больше других. Во-первых, она бесплатна, что снижает итоговую стоимость мини-сервера, а во-вторых — обладает многими возможностями, присущими дорогим серверным ОС. Кроме того, нас прельстила простота ее установки и настройки.

Таким образом, мы получили достаточно мощный, надежный, компактный и тихий сервер, способный обеспечить работу практически всех сетевых сервисов, которые могут понадобиться дома. При этом его в любой момент можно превратить в обычный ПК, подключив монитор, клавиатуру и мышь. Разве что поиграть не удастся: на системной плате есть свободный слот PCI Express х 16, но вот мощности блока питания на игровую видеокарту явно не хватит.

Будущее домашних серверов

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

Зачем, собственно, нужен сабж? Что он может дать?

Если Вы хотите всего-навсего разместить домашнюю страницу или блог, обмениваться с друзьями файлами по ftp, получить e-mail на своем домене, вероятно,
Вам будет проще воспользоваться услугами виртуального хостинга, в крайнем случае, заказать виртуальный выделенный сервер.

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

Сразу оговорюсь, что речь о сервере, который предназначен, в первую очередь, для доступа из внешней сети.
К серверу, который раздает контент/предоставляет web(irc и пр.) сервисы на несколько машин подъезда, предъявляются совсем другие требования:)

Не у всех есть финансовая возможность поставить свой сервер в Дата-Центр, зато, с проникновением широкополосных технологий доступа во всемирную Сеть, появляется возможность использовать сервер под web и другие задачи прямо из дома.
Сейчас это с высокой вероятностью доступно для каждого отдельно взятого жителя для Москвы и Санкт-Петербурга, но я уверена, что не смотря ни на какие кризисы, домашний канал, подходящий по характеристикам, очень скоро появится в каждом крупном Российском городе.

Какой нужен канал?

Прежде всего, он должен быть:

1. Широким, симметричным и безлимитным.
2. Провайдер должен выдавать статические IP
3. Не должно быть никакой фильтрации портов, как входящих, на сервер, так и исходящих, во внешний мир.
4. Желательно, что бы не было никаких VPN.
5. Если провайдер готов поправить Вам DNS-PTR запись, то это сразу снимет ряд проблем с исходящей с Вашего сервера почтой.

Теперь подробнее по каждому пункту.

1.а Симметричность

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

Например, такие московские провайдеры как Акадо и Стрим готовы дать очень широкую полосу down ("вниз", на закачку) но ширина полосы up ("вверх", на загрузку) даже на самых дорогих тарифных планах незначительно отличается от самых дешевых.

Несиммитричный канал ужасен для домашнего публичного сервера тем, что подавляющая часть трафика сервера будет идти вверх , и какой бы дорогой и крутой не был Ваш интернет-канал, он будет, фактически, простаивать. Ваши десятки мегабит down никто не заметит, зато все обратят внимание на тормоза при загрузке файлов с Вашего сервера.
Для сервера, можно сказать, меняется местами важность down и up.

Поэтому, например, каналы в Дата-Центрах, и тарифы для размещения серверов рассчитаны на то, что трафик up будет больше чем трафик down в несколько раз. В России в большинстве Дата-центров даже берут деньги за нарушения соотношения по трафику (обычно, входящий:исходящий 1:4, и часто есть ограничение на соотношение по зарубежному трафику).

Я ни разу не слышала, что интернет-провайдер может как-то наказать за нарушение соотношения (то есть, за то, что Вы больше будете отдавать трафика, чем скачивать), наоборот, думаю, ситуация будет меняться в нужную для нас сторону.

Очень многие домашние пользователи обмегиваются файлами с помощью p2p сетей , а в этих сетях для того, что бы хорошо качать, нужно иметь высокий рейтинг, который можно получить только раздавая контент. Уже сейчас почти все "продвинутые" пользователи за новым mp3-альбомом любимой группы пойдут, скореe в торренты, чем в магазин.
Провайдеры понимают тенденции и подстраиваются. Хотя, конечно, провайдеров могут ограничивать различные факторы: характеристики своего канала, технологии "последней мили"(у ADSL - операторов просто нет технической возможности сделать канал симметричным), и т.д.

1.б Безлимитность

По поводу безлимитности канала, очевидно, что если трафик будет оплачиваться, неожиданное резкое увеличение трафика может оказаться очень неприятным для Вашего кошелька.
Если Вы предоставляете какой-то публичный сервис, вряд ли у Вас получиться контролировать посетителей Вашего сервиса их трафик, за который Вы будете платить.
Даже если по Вашему тарифному плану , как это бывает обычно на лимитных тарифах, исходящий трафик бесплатен, даже если Вы запретите загружать пользователям сервиса файлы, входящий трафик будет всегда , к каким бы ухищрениям Вы не прибегали. Он будет составлять, примерно, седьмую-пятую часть от исходящего для web-сервера.

1.в Ширина

.
У Вас есть дешевый безлимитный симметричный канал? Отлично! Что? У него ширина 128kb/s? Поверьте, в этом случае Ваш сервис не будет никому нужен.

Всю вашу полосу забьет один пользователь сервиса с широкополосным доступом, который будет очень раздражен тем, что "кортинке медленна грузяццо". Который уйдет, и больше не вернется.
Мне жаль Вас огорчать, но, наверное, не стоит организовывать домашний сервер, если Ваш up всего 128kbs.
Я бы поставила минимальное значение в 512kbs.

Но 20 мегабит от Ethernet-провайдера были бы самым верным решением. В этом случае, посетители вряд ли бы заметили разницу в скорости работы сервиса, размещенного дома, и сервиса, размещенного в Дата-Центре.
В регионах таких каналов пока нет, но в Москве подключают уже и с большей полосой.

Отдельно хотела бы сказать про сетевую связность.
Во всемирной Сети иногда возникают так называемые "черные дыры", в которых пропадает трафик. К сожалению, хостинг-провайдеры, предоставляющий место для сервера в ДЦ, обычно борятся за связность активнее, чем интернет-провайдеры.

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

2. Статический IP-адрес

Некоторые провайдеры, например, Стрим, просто не выдают домашним пользователям статический IP-адрес.
Если у сервера постоянно меняется IP-адрес, пользователи Ваших сервисов просто не смогут на них попасть.
Вы можете попробовать выкрутиться с помощью DynDNS сервисов и даже разместить сайт таким примерно образом:

host h.shaggy-cat.ru
h.shaggy-cat.ru is an alias for shaggy-cat.dyndns.org.
shaggy-cat.dyndns.org has address 91.77.252.108

Здесь домен третьего уровня является CNAME записью , ссылающейся на хост бесплатного сервиса динамического DNS.
Ваш сервер время от времени подключается с помощью специальной программы на сервис DynDNS, который обновляет для Вашего домена значение А-записи.

Cервис dyndns.org бесплатно поддерживает только домены третьего уровня, поддомены доменов, принадлежащих сервису.
Если Вы готовы заплатить, сервис может предоставить Вам поддержку Вашего домена.

Когда у меня не было канала со статическим IP, я поступила проще:) Просто создала DNS CNAME запись.

Про настройку DynDNS в Redhat-like системах можно почитать .
Обычно, dyndns умеют ADSL-модемы и домашние дешевые хардварные роутеры.

Однако, поверьте, Вы сможете избежать огромного количества проблем, бессоных ночей, и граблей, на которые Вы наступите, если просто подключите стический IP адрес.
Любым способом: заплатив за него как за опцию тарифного плана, напившись с одмином Вашего провайдера, в конце концов, переспав с ним, если Вы девушка:)))
Все усилия, которые Вы предпримите для получения статического IP, себя окупят.
Мой личный опыт свидетельствует только о постоянных глюках DynDNS сервисов:(

Мне статический IP достался проще: я ушла к другому интернет-провайдеру. Стрим пока оставила как резервный линк, перейдя на самый дешевый тарифный план.

3. Фильтрация портов

Некоторые интернет-провайдеры, устав от жалоб завирусованных клиентов, просто отключают входящие порты для своих клиентов, через которые сетевые черви и злоумышленники могут поломать компьютер их клиента.
Часто в список портов попадают и порты, через которые Windows-системы обычно не троянят. Например, Стрим блокирует входящие порты: 80 (прощай веб-сервер!), 21(прощай ftp!), 25(прощай, почтовый mx-сервер!)

Понятно, что пользователи врядли оценят красоту URL Вашего сайта, если на него придется заходить каким-то таким образом:

http://pupkin.ru:8888

Что касается фильтрации исходящих портов, обычно, применяется фильтрация 25 порта, что бы массовый завирусованный Win-пользователь не спамил.
Это может доставить определенные неудобства, если Вы, например, хотите, что бы пользователи Ваших сервисов получали уведомления по почте.
В этом случае, Вы можете попробовать настроить локальный SMTP-сервер релеить почту через другой SMTP по такой, например, инструкции: тЫц .
Использовать провайдерский SMTP совсем не обязательно, Вы можете использовать свой обычный бесплатный ящик.

4. VPN и *nix системы.

Как много боли, страдания, отчаяния и полного разочарования кроется за этой фразой!!
Настройка VPN для стабильной работы, достаточной для сервера, была и остается огромной проблемой для новичка.
Даже при оптимальной настройке следуют учитывать то, что Ваше VPN-соединение будет падать время от времени, и нужно писать скрипты, которые будут опеределять падение канала, и передергивать соединение.

Даже если Вы собираетесь использовать сервер под Windows, Вас ждут те же самые проблемы со стабильностью канала, если не большие, связанные с фичами устройства сетевой подсистемы
этой операционки (я сама не использовала такой сервер, но один очень хороший человечек рассказывал жуткие вещи)

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

В Москве Корбина Телеком переходит на L2TP VPN-соединение, говорят, что оно гораздо стабильнее.

Если сможете, подключайтесь к каналу, использующему авторизацию по MAC-адресу сетевой карты.
В Москве это, например, Су-29 Телеком, Qwerty, Акадо.
Впрочем, VPN не на столько плох, на сколько плох динамический IP-адрес. Если VPN не избежать, имейте ввиду, что poptop, вероятно, самый нестабильный.

5. Фильтрация портов

Если провайдер не фильтрует исходящие порты, то почта, напрямую отправленная с Вашего сервера, с высокой вероятностью попадет в spam-папку ящика назначения.
Это связано с тем, что практически весь спам в современном мире рассылается с затрояненных компьютеров домашних пользователей под управлением Windows. IP-адреса, выдаваемые таким пользователям, обычно имеют характерную DNS PTR-запись вида:

host 91.77.252.108
108.252.77.91.in-addr.arpa domain name pointer ppp91-77-252-108.pppoe.mtu-net.ru.

Достаточно просто пишется регулярное выражение(можете поискать примеры в Google), которое выделяет такие хосты среди "законных" SMTP-релеев.

Если Ваш провайдер исправит для Вашего IP PTR-запись, почта с Вашего сервера перестанет фильтроваться по этому критерию.

7. Железо сервера

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

Чем больше ядер у процессора, тем лучше. Вообще, чем он быстрее, тем это правильнее. Только не стоит разгонять систему до космических скоростей, и тюнить сотней куллеров, вам ведь еще и спать ночью рядом с этим монстром придется...
Если Вы используете такие технологии виртуализации как Xen, KVM, VmWare, обратите внимание на процессоры с поддержкой технологий Intel VT или AMD Pacifica

Чем больше ОЗУ, тем лучше. Особенно в случае использования Виртуализации .

Навороченная видео-карта, как и вообще звуковая система Вам не нужны. Лучше брать материнскую плату с интегрированной видео, что бы свободный PCI-слот занять под, например, сетевую карту.

UPS. Очень и очень желателен. Так же, как мне подсказал один хороший человечек, стоит активировать в BIOS опцию включения при подаче питания.

- "Стойка" засуньте сервер куда-нибудь далеко, что бы не мешал гудением, Вы его случайно не залили жидкостью, не уронили, и так далее.
Лучше на антресоль или в кладовку. Только учтите, что: а) пыль это плохо; б) Летом, в связи с глобальным потеплением;) в маленькой, душной конуре он может просто перегреться и выключиться:(
Впрочем, проблемы с перегревом возможны и в Дата-центрах. .masterhost вот чуть не наградили Антипримией Рунета за оригинальную технологию охлаждения серверов сухим льдом:)))

8. Софт

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

Я использую на своем HomeServer промышленную технологию виртуализации OpenVZ. О ней можно почитать и

Использую из-за легкости эксперементов (новый контейнер с почти любым Linux-дистрибутивом создается за две-три секунды), отсуствии потерь на виртуализацию, и по тому, что считаю технологию очень прогрессивной.

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

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

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

Советую обратить внимание на следующие технологии:

а) Xen
б) KVM
в) OpenVZ
г) _серверные_ варианты VmWare

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

Наиболее "модным" решением для виртуализации сейчас является VmWare. Популярность обсуловлена простотой настройки, и администрирования.
Однако, VmWare не лишина недостатков. Главный из которых заключается в том, что наиболее мощный вариант VMware ESX Server стоит денег (бесплатный VMware Server смотрится очень тускло рядом Xen или OpenVZ), так же, я бы отметила не самую лучшую поддержку оборудования, и большие потери производительности при виртуализации.
Думаю, VmWare можно назвать попсовым решением, если Вы хотите "все сразу", и согласны мириться с некоторой негибкостью решения, наверное, лучше VmWare для Вас нет ничего.

KVM является, возможно, самой перспективной технологией из всех перечисленных, учитывая то, какое внимание ему уделяет RedHat(тЫц) и динамику самого RedHat . Однако, сейчас технология явно остает по числу фич от своих конкурентов.

Xen Очень интересная и мощная технология. Существует сайт с большим числом русских статей про Xen . Когда я выбирала программную платформу, долго колебалась между Xen и OpenVZ. Выбрала, как уже писала выше, OpenVZ

OpenVZ Главные плюсы в том, что технология, как я уже писала выше, работает практически без потерь производительности, что существуют десятки шаблонов VPS с самым разным ПО и разными дистрибутивами, которые могут быть развернуты за мгновения.
Очень удобно для эксперементов:)
Самый главный минус заключается в том, что виртуализируются только Linux-дистрибутивы

Этот абзац не отражает и доли того, чем для меня стала OpenVZ. Очень-очень надеюсь, что соберусь и напишу статью по использованию этой системы.

Если Вы планируете использовать несколько виртуальных серверов, а внешний IP-адрес всего один(так скорей всего и будет в случае с домашним сервером), Вы можете давать виртуальным машинам IP-адреса из диапазонов, предназначенных для локальных сетей , и пробрасывать на виртуальные машины порты с внешнего IP (Iptables DNAT в Linux).

Если Вы планируете больше одного web-сервера, то проброс портов не поможет. Я выкрутилась с помощью акселерирующего http-реверс-прокси nginx на отдельной VPS.
Этот nginx проксирует http-соединения к одной, либо другой VPS. Может быть, и об этом когда-нибудь расскажу:))

З.Ы. Перепечатка разрешена только с указанием ссылки на оригинал этой заметки.

Удачной настройки домашнего сервера, и... меньше возитесь с компьюетрами, чаще гуляйте, ходите в музей/театр/кино/в гости/ездийте в путешествия!

Когда возможности штатного роутера с «openwrt» на борту были окончательно истощены и загрузка процессора начала влиять на стабильность работы сети, было решено разгрузить трудягу переносом функционала на домашний сервер. В виду того, что железка будет на несколько порядков мощнее, было решено снабдить ее кучей дополнительных возможностей, которые старичку даже и не снились. Корпус также было решено делать самостоятельно.

Список задач, которые выполняет домашний сервер:

  1. Сервер виртуализации на базе virtualbox c WebGUI;
  2. Межсетевой экран;
  3. Торрент-качалка на базе transmission и файловый сервер;
  4. Сервер телефонии на базе Asterisk;
  5. TFTP сервер для загрузки по сети и настройки различного оборудования;
  6. Частное облако для хранения файлов на базе «owncloud»;
  7. HTTP прокси Ace Stream для просмотра TorrentTV;
  8. Хостинг для домашнего сайта c доступом по https;
Фото для привлечения внимания:

Глава 1. Создание корпуса, сборка

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

После долгих размышлений и пары тестов были куплены следующие комплектующие:

  1. Материнская плата msi j1800i формата Mini-ITX;
  2. 2 планки памяти DDR3 по 2 Гб;
  3. Блок питания на 230 Вт;
  4. 2 жестких диска 2.5’ на 320 Гб, были в наличии;
  5. Роутер tp-link 1043ND был в наличии (Было жалко выкидывать);

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

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

В итоге получилось следующие

Глава II. Настройка

С железной частью разобрались, теперь пора приступить к настройке функционала. В качестве ОС была выбрана 64 разрядная «Debian 7 netinstall», в процессе установки диски были объединены в программный RAID0. Предугадывая холивар, на тему отказоустойчивости все важные данные лежат в облаках, так что при отказе диска развернуть систему из резервной копии можно довольно быстро.

Система установлена, приступаем к реализации вышеуказанного плана.

2.1 Сервер виртуализации на базе virtualbox c WebGUI

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

Установка virtualbox + phpvirtualbox

Устанавливаем сервер виртуализации virtualbox, на наш сервер, для начала добавим репозитарий и ключи к нему:

Deb http://download.virtualbox.org/virtualbox/debian wheezy contrib non-free wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | apt-key add –

Обновляем репозитарий и запускаем установку virtualbox:

Aptitude update aptitude install virtualbox-4.3
Устанавливаем расширение для virtualbox:

Wget http://download.virtualbox.org/virtualbox/4.3.14/Oracle_VM_VirtualBox_Extension_Pack-4.3.14.vbox-extpack VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.3.12.vbox-extpack
Перезагружаем сервис vboxweb-service командами:

/etc/init.d/vboxweb-service stop /etc/init.d/vboxweb-service start
Для работы Virtualbox необходимо создать пользователя, под которым будут работать виртуальные машины.

Добавляем пользователя vbox:

Adduser vbox

Установка phpvirtualbox

Для начала установим apache и php:

Apt-get install apache php
Скачиваем phpvirtualbox:

Wget -c -t0 http://optimate.dl.sourceforge.net/project/phpvirtualbox/phpvirtualbox-4.3-2.zip
Распаковываем содержимое архива phpvirtualbox-4.3-2.zip в папку веб сервера:

Unzip phpvirtualbox-4.3-2.zip
Перегружаем веб сервер:

/etc/init.d/apache2 restart
Переходим в директорию phpvirtualbox в папке веб сервера и создаем конфигурационный файл:

Mv config.php-example config.php
Вносим некоторые правки:

Nano config.php var $username = "vbox"; var $password = "Пароль при создании учетной записи vbox"; var $location = "http://IP Адрес данной машины:18083/"; var $consoleHost = ‘IP Адрес данной машины’;
Редактируем конфигурационный фаил virtualbox:

Echo "VBOXWEB_USER=vbox VBOXWEB_HOST= IP Адрес данной машины VBOXWEB_PORT=18083 " > /etc/default/virtualbox
Перезапустим virtualbox:

/etc/init.d/vboxweb-service restart
Открываем в браузере адрес нашего сервера:

Http://IP Адрес данной машины /phpvirtualbox/
логин: admin
пароль: admin
Веб интерфейс практически ничем не отличается от настольной версии Virtualbox.

2.2 Межсетевой экран

Приступаем к проектированию домашней сети, в общей концепции сеть выглядит следующим образом:

Придется немного переконфигурировать роутер. В настройках «openwrt» Заводим необходимое количество VLAN и распределяем по ним порты, так как на данной материнской плате имеется лишь один ethernet порт, то делаем его транковым и все VLAN заводим с тегами на него.

Перенастраиваем сетевые адаптеры на нашем сервере, перед этим необходимо поставить пакет для поддержки vlan: apt-get install vlan .

Настройка сети на сервере

# The loopback network interface auto lo iface lo inet loopback #NATIVE VLAN NETWORK auto eth0.1 iface eth0.1 inet static address 192.168.1.3 netmask 255.255.255.0 gateway 192.168.1.1 vlan_raw_device eth0 up ifconfig eth0.1 up #PROVIDER1 VLAN auto eth0.2 iface eth0.2 inet manual vlan_raw_device eth0 up ifconfig eth0.2 up #PROVIDER2 VLAN auto eth0.3 iface eth0.3 inet manual vlan_raw_device eth0 up ifconfig eth0.3 up #SIP VLAN auto eth0.4 iface eth0.4 inet manual vlan_raw_device eth0 up ifconfig eth0.4 up # GUEST NETWORK auto eth0.10 iface eth0.10 inet manual vlan_raw_device eth0 up ifconfig eth0.10 up


В качестве межсетевого экрана я выбрал реализацию «cisco ASA» на виртуальной машине. Не буду спорить: решение странное, невероятно костыльное, но обусловлено необходимостью соединения с рабочими сетями нескольких компаний по «IPsec site to site vpn» c аналогичными железками, но уже в нормальном исполнении.

Сразу же хотелось заметить работает стабильно уже 4 месяца, проблем нет линк стабильный, скорость соединения при данной реализации получилась ~ 20 Мбит/сек, что вполне неплохо, учитывая то, что объем передаваемых данных невелик. В моей реализации данная виртуальная машина управляет всеми входящими и исходящими соединениями во всех VLAN домашней сети, итоговая загрузка системы не превышает 12%.

Скачиваем образ виртуальной машины «Cisco ASA 8.4 for vmware», ссылки давать не буду в виду того что первая ссылка в поисковике вероятнее всего приведет Вас на него. Загружаем на наш сервер, и импортируем нашу машину в virtualbox. Попутно меняем все адаптеры на «PCnet-PCI II» и после импорта распределяем из в режиме моста по созданным VLAN. Также в настройках последовательного порта создаем pipe /tmp/tts0 по средствам которого будем проводить первоначальную настройку нашей недоcisco .

Дальнейшая настройка довольно специфична и зависит от ваших задач, приводить конфигурационный файл ASA, на мой взгляд, бессмысленно, так как настройки интерфейсов, списков доступа, NAT, VPN и прочего лучше прочитать отдельно так, так как это тема не одной и даже не десятка статей. Опишу лишь базовые вещи, которые использую я. Во-первых маршрутизация, так как все сети заведены в нее, и она же является шлюзом по умолчанию для домашней сети, и для гостевой сети. Во-вторых, на ней развернут «anyconnect» для доступа в домашнюю сеть по VPN. Базовые настройки «Cisco ASA» можно прочитать в статье хабраюзера , остальное по необходимости можно найти в сети.

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

2.3 Торрент-качалка на базе transmission и файловый сервер

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

Конечно, конфигурация Samba у Вас будет своя, но приведу для примера свою.

Для начала установим Samba сервер командой:

Apt-get install samba
И отредактируем конфигурационный файл /etc/samba/smb.conf:

Workgroup = WORKGROUP netbios name = NAS server string = NAS File Server log level = 1 security = share unix charset = UTF-8 dos charset = cp1251 store dos attributes = yes max log size = 10 comment = NAS SERVER FOLDER path = /home/NAS create mask = 0777 directory mask = 0777 public = yes writable = yes printable = no guest ok = yes read only = no comment = NAS SHARE FOLDER path = /home/NAS/Share create mask = 0777 directory mask = 0777 public = yes writable = yes printable = no guest ok = yes read only = no comment = OWNCLOUD FOLDER path = /home/NAS/owncloud/ create mask = 0777 directory mask = 0777 public = yes writable = yes printable = no guest ok = yes read only = no comment = TORRENTS FOLDER path = /home/NAS/torrents create mask = 0777 directory mask = 0777 public = yes writable = yes printable = no guest ok = yes read only = no comment = VIRTUAL MACHINES FOLDER path = /home/NAS/VM create mask = 0777 directory mask = 0777 public = yes writable = yes printable = no guest ok = yes read only = no comment = MEDIA FOLDER path = /home/NAS/media create mask = 0777 directory mask = 0777 public = yes writable = yes printable = no guest ok = yes read only = no


После настройки samba можно приступить к установке рабочей лошадки по загрузке торрентов.

Настало время заняться Transmission

Устанавливаем:
apt-get install transmission-daemon
Настраиваем transmission-daemon /etc/transmission-daemon/settings.json:
{ "alt-speed-down": 50, "alt-speed-enabled": false, "alt-speed-time-begin": 540, "alt-speed-time-day": 127, "alt-speed-time-enabled": false, "alt-speed-time-end": 1020, "alt-speed-up": 50, "bind-address-ipv4": "0.0.0.0", "bind-address-ipv6": "::", "blocklist-enabled": true, "blocklist-url": "", "cache-size-mb": 2, "dht-enabled": true, "download-dir": "/home/NAS/torrents/Downloads", "download-limit": 100, "download-limit-enabled": 0, "encryption": 1, "idle-seeding-limit": 30, "idle-seeding-limit-enabled": false, "incomplete-dir": "/home/NAS/torrents/Downloading", "incomplete-dir-enabled": false, "lazy-bitfield-enabled": true, "lpd-enabled": true, "max-peers-global": 200, "message-level": 2, "open-file-limit": 32, "peer-limit-global": 200, "peer-limit-per-torrent": 60, "peer-port": 11523, "peer-port-random-high": 65535, "peer-port-random-low": 49152, "peer-port-random-on-start": false, "peer-socket-tos": 0, "pex-enabled": true, "port-forwarding-enabled": true, "preallocation": 2, "ratio-limit": 1, "ratio-limit-enabled": true, "rename-partial-files": true, "rpc-authentication-required": true, "rpc-bind-address": "0.0.0.0", "rpc-enabled": true, "rpc-password": "**********", "rpc-port": 9091, "rpc-username": "transmission", "rpc-whitelist": "127.0.0.1,192.168.0.100", "rpc-whitelist-enabled": false, "script-torrent-done-enabled": false, "script-torrent-done-filename": "", "speed-limit-down": 900, "speed-limit-down-enabled": true, "speed-limit-up": 100, "speed-limit-up-enabled": false, "start-added-torrents": true, "trash-original-torrent-files": true, "umask": 0, "upload-limit": 100, "upload-limit-enabled": 0, "upload-slots-per-torrent": 14 }

2.4 Сервер телефонии на базе Asterisk + FreePBX

Звонки - дело не дешевое, особенно когда по работе часто и в разные страны, при том что имеется vpn-туннели до работы - не развернуть сервер телефонии, было бы мягко сказать, странно. Исходя из выше указанной схемы поднимаем новую виртуальную машину и заводим ее сетевые интерфейсы в нужные нам VLAN. Саму установку asterisk + freepbx описывать не буду так как, до меня с этой задачей прекрасно справился и описал все в публикации .

После установки заводим необходимые транки в интерфейсе FreePBX, настраиваем dial plan, создаем пользователя и радуемся жизни. По чудесному истечению обстоятельств мой основной провайдер предоставляет городской номер по sip, что собственно и стало основной причиной развертывания данного сервера.

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

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

2.5 TFTP сервер для загрузки по сети и настройки различного оборудования;

Если честно давно забыл про эту очень удобную функцию, раньше для меня это было избыточным, а потом просто вылетело из головы. Как-то после очередного просмотра моего любимого Хабра наткнулся на публикацию , написанную , с описанием всего этого. Лучше, чем он, я описать, наверно, не смогу, так что оставлю эту часть за ним. На базе данной статьи были собраны необходимые мне дистрибьютивы и я забыл, что такое загрузочная флешка.

2.6 Частное облако для хранения файлов на базе «owncloud»

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

В качестве платформы был выбран «owncloud», а в качестве внешних облачных провайдеров я использую box.com, dropbox, google drive, yandex disk, onedrive. Список обширный, но идея проста. Для начала ставим клиенты на машину и натравливаем их на синхронизацию в предварительно созданную под каждое облако директорию, затем поверх всего этого хозяйства ставим «owncloud».

Руководство по установке клиентов переписывать смысла нет, их можно найти на профильных сайтах. А все что касается установки «owncloud» описано в публикации . Нам же остается продумать что и куда синхронизировать, чтобы спать спокойно, имея у себя сервер с RAID 0.

2.7 HTTP прокси Ace Stream для просмотра TorrentTV

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

Держать включенным 750 ваттного монстра для раздачи телевидения на непосредственно телевизор довольно расточительно. После недолгих поисков было найдено решение - прокси, преобразующий torrent поток в http. Проблема решилась довольно быстро, теперь за 60 рублей в месяц можно смотреть гору каналов.

Единственный минус - довольно медленное переключение каналов.

Установка

Для начала установим vlc:

Apt-get install vlc
Скачаем aceproxy и acestream и поместим их в одну директорию:

Wget https://github.com/ValdikSS/aceproxy/archive/master.zip wget http://dl.acestream.org/debian/7/acestream_3.0.5.1_debian_7.4_x86_64.tar.gz
Создадим рядом несколько директорий:

Mkdir logs mkdir scripts
В директории./scripts создадим несколько скриптов:

Cd ./scripts nano aceproxy.sh #!/bin/sh python ./aceproxy/acehttp.py > ./logs/acehttp.log 2>&1 & nano acestream.sh #!/bin/sh ./acestream/acestreamengine --lib-path ./acestream --client-console > ./logs/acestream.log 2>&1 & nano vlc.sh #!/bin/sh vlc -I telnet --clock-jitter -1 --network-caching -1 --sout-mux-caching 2000 --telnet-password admin > ./logs/acevlc.log 2>&1 &

Перейдем в директорию выше и создадим скрипты для запуска и остановки трансляции:
cd ../ nano start.sh #!/bin/bash /bin/kill -9 `/bin/ps ax |/bin/grep acestream |/usr/bin/awk {"print $1"}` ./scripts/acestream.sh echo "Start acestream" sleep 1 /bin/kill -9 `/bin/ps ax |/bin/grep vlc |/usr/bin/awk {"print $1"}` ./scripts/vlc.sh echo "Start VLC" sleep 1 /bin/kill -9 `/bin/ps ax |/bin/grep acehttp |/usr/bin/awk {"print $1"}` ./scripts/aceproxy.sh echo "Start aceproxy" nano stop.sh #!/bin/bash /bin/kill -9 `/bin/ps ax |/bin/grep acestream |/usr/bin/awk {"print $1"}` echo "Stop acestream" sleep 1 /bin/kill -9 `/bin/ps ax |/bin/grep vlc |/usr/bin/awk {"print $1"}` echo "Stop VLC" sleep 1 /bin/kill -9 `/bin/ps ax |/bin/grep acehttp |/usr/bin/awk {"print $1"}` echo "Stop aceproxy"

Отредактируем конфигурацию aceproxy согласно wiki

Когда возможности штатного роутера с «openwrt» на борту были окончательно истощены и загрузка процессора начала влиять на стабильность работы сети, было решено разгрузить трудягу переносом функционала на домашний сервер. В виду того, что железка будет на несколько порядков мощнее, было решено снабдить ее кучей дополнительных возможностей, которые старичку даже и не снились. Корпус также было решено делать самостоятельно.

Список задач, которые выполняет домашний сервер:

  1. Сервер виртуализации на базе virtualbox c WebGUI;
  2. Межсетевой экран;
  3. Торрент-качалка на базе transmission и файловый сервер;
  4. Сервер телефонии на базе Asterisk;
  5. TFTP сервер для загрузки по сети и настройки различного оборудования;
  6. Частное облако для хранения файлов на базе «owncloud»;
  7. HTTP прокси Ace Stream для просмотра TorrentTV;
  8. Хостинг для домашнего сайта c доступом по https;
Фото для привлечения внимания:

Глава 1. Создание корпуса, сборка

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

После долгих размышлений и пары тестов были куплены следующие комплектующие:

  1. Материнская плата msi j1800i формата Mini-ITX;
  2. 2 планки памяти DDR3 по 2 Гб;
  3. Блок питания на 230 Вт;
  4. 2 жестких диска 2.5’ на 320 Гб, были в наличии;
  5. Роутер tp-link 1043ND был в наличии (Было жалко выкидывать);

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

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

В итоге получилось следующие

Глава II. Настройка

С железной частью разобрались, теперь пора приступить к настройке функционала. В качестве ОС была выбрана 64 разрядная «Debian 7 netinstall», в процессе установки диски были объединены в программный RAID0. Предугадывая холивар, на тему отказоустойчивости все важные данные лежат в облаках, так что при отказе диска развернуть систему из резервной копии можно довольно быстро.

Система установлена, приступаем к реализации вышеуказанного плана.

2.1 Сервер виртуализации на базе virtualbox c WebGUI

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

Установка virtualbox + phpvirtualbox

Устанавливаем сервер виртуализации virtualbox, на наш сервер, для начала добавим репозитарий и ключи к нему:

Deb http://download.virtualbox.org/virtualbox/debian wheezy contrib non-free wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | apt-key add –

Обновляем репозитарий и запускаем установку virtualbox:

Aptitude update aptitude install virtualbox-4.3
Устанавливаем расширение для virtualbox:

Wget http://download.virtualbox.org/virtualbox/4.3.14/Oracle_VM_VirtualBox_Extension_Pack-4.3.14.vbox-extpack VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.3.12.vbox-extpack
Перезагружаем сервис vboxweb-service командами:

/etc/init.d/vboxweb-service stop /etc/init.d/vboxweb-service start
Для работы Virtualbox необходимо создать пользователя, под которым будут работать виртуальные машины.

Добавляем пользователя vbox:

Adduser vbox

Установка phpvirtualbox

Для начала установим apache и php:

Apt-get install apache php
Скачиваем phpvirtualbox:

Wget -c -t0 http://optimate.dl.sourceforge.net/project/phpvirtualbox/phpvirtualbox-4.3-2.zip
Распаковываем содержимое архива phpvirtualbox-4.3-2.zip в папку веб сервера:

Unzip phpvirtualbox-4.3-2.zip
Перегружаем веб сервер:

/etc/init.d/apache2 restart
Переходим в директорию phpvirtualbox в папке веб сервера и создаем конфигурационный файл:

Mv config.php-example config.php
Вносим некоторые правки:

Nano config.php var $username = "vbox"; var $password = "Пароль при создании учетной записи vbox"; var $location = "http://IP Адрес данной машины:18083/"; var $consoleHost = ‘IP Адрес данной машины’;
Редактируем конфигурационный фаил virtualbox:

Echo "VBOXWEB_USER=vbox VBOXWEB_HOST= IP Адрес данной машины VBOXWEB_PORT=18083 " > /etc/default/virtualbox
Перезапустим virtualbox:

/etc/init.d/vboxweb-service restart
Открываем в браузере адрес нашего сервера:

Http://IP Адрес данной машины /phpvirtualbox/
логин: admin
пароль: admin
Веб интерфейс практически ничем не отличается от настольной версии Virtualbox.

2.2 Межсетевой экран

Приступаем к проектированию домашней сети, в общей концепции сеть выглядит следующим образом:

Придется немного переконфигурировать роутер. В настройках «openwrt» Заводим необходимое количество VLAN и распределяем по ним порты, так как на данной материнской плате имеется лишь один ethernet порт, то делаем его транковым и все VLAN заводим с тегами на него.

Перенастраиваем сетевые адаптеры на нашем сервере, перед этим необходимо поставить пакет для поддержки vlan: apt-get install vlan .

Настройка сети на сервере

# The loopback network interface auto lo iface lo inet loopback #NATIVE VLAN NETWORK auto eth0.1 iface eth0.1 inet static address 192.168.1.3 netmask 255.255.255.0 gateway 192.168.1.1 vlan_raw_device eth0 up ifconfig eth0.1 up #PROVIDER1 VLAN auto eth0.2 iface eth0.2 inet manual vlan_raw_device eth0 up ifconfig eth0.2 up #PROVIDER2 VLAN auto eth0.3 iface eth0.3 inet manual vlan_raw_device eth0 up ifconfig eth0.3 up #SIP VLAN auto eth0.4 iface eth0.4 inet manual vlan_raw_device eth0 up ifconfig eth0.4 up # GUEST NETWORK auto eth0.10 iface eth0.10 inet manual vlan_raw_device eth0 up ifconfig eth0.10 up


В качестве межсетевого экрана я выбрал реализацию «cisco ASA» на виртуальной машине. Не буду спорить: решение странное, невероятно костыльное, но обусловлено необходимостью соединения с рабочими сетями нескольких компаний по «IPsec site to site vpn» c аналогичными железками, но уже в нормальном исполнении.

Сразу же хотелось заметить работает стабильно уже 4 месяца, проблем нет линк стабильный, скорость соединения при данной реализации получилась ~ 20 Мбит/сек, что вполне неплохо, учитывая то, что объем передаваемых данных невелик. В моей реализации данная виртуальная машина управляет всеми входящими и исходящими соединениями во всех VLAN домашней сети, итоговая загрузка системы не превышает 12%.

Скачиваем образ виртуальной машины «Cisco ASA 8.4 for vmware», ссылки давать не буду в виду того что первая ссылка в поисковике вероятнее всего приведет Вас на него. Загружаем на наш сервер, и импортируем нашу машину в virtualbox. Попутно меняем все адаптеры на «PCnet-PCI II» и после импорта распределяем из в режиме моста по созданным VLAN. Также в настройках последовательного порта создаем pipe /tmp/tts0 по средствам которого будем проводить первоначальную настройку нашей недоcisco .

Дальнейшая настройка довольно специфична и зависит от ваших задач, приводить конфигурационный файл ASA, на мой взгляд, бессмысленно, так как настройки интерфейсов, списков доступа, NAT, VPN и прочего лучше прочитать отдельно так, так как это тема не одной и даже не десятка статей. Опишу лишь базовые вещи, которые использую я. Во-первых маршрутизация, так как все сети заведены в нее, и она же является шлюзом по умолчанию для домашней сети, и для гостевой сети. Во-вторых, на ней развернут «anyconnect» для доступа в домашнюю сеть по VPN. Базовые настройки «Cisco ASA» можно прочитать в статье «Руки дошли: продолжаем про ASA» хабраюзера Fedia , остальное по необходимости можно найти в сети.

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

2.3 Торрент-качалка на базе transmission и файловый сервер

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

Конечно, конфигурация Samba у Вас будет своя, но приведу для примера свою.

Для начала установим Samba сервер командой:

Apt-get install samba
И отредактируем конфигурационный файл /etc/samba/smb.conf:

Workgroup = WORKGROUP netbios name = NAS server string = NAS File Server log level = 1 security = share unix charset = UTF-8 dos charset = cp1251 store dos attributes = yes max log size = 10 comment = NAS SERVER FOLDER path = /home/NAS create mask = 0777 directory mask = 0777 public = yes writable = yes printable = no guest ok = yes read only = no comment = NAS SHARE FOLDER path = /home/NAS/Share create mask = 0777 directory mask = 0777 public = yes writable = yes printable = no guest ok = yes read only = no comment = OWNCLOUD FOLDER path = /home/NAS/owncloud/ create mask = 0777 directory mask = 0777 public = yes writable = yes printable = no guest ok = yes read only = no comment = TORRENTS FOLDER path = /home/NAS/torrents create mask = 0777 directory mask = 0777 public = yes writable = yes printable = no guest ok = yes read only = no comment = VIRTUAL MACHINES FOLDER path = /home/NAS/VM create mask = 0777 directory mask = 0777 public = yes writable = yes printable = no guest ok = yes read only = no comment = MEDIA FOLDER path = /home/NAS/media create mask = 0777 directory mask = 0777 public = yes writable = yes printable = no guest ok = yes read only = no


После настройки samba можно приступить к установке рабочей лошадки по загрузке торрентов.

Настало время заняться Transmission

Устанавливаем:
apt-get install transmission-daemon
Настраиваем transmission-daemon /etc/transmission-daemon/settings.json:
{ "alt-speed-down": 50, "alt-speed-enabled": false, "alt-speed-time-begin": 540, "alt-speed-time-day": 127, "alt-speed-time-enabled": false, "alt-speed-time-end": 1020, "alt-speed-up": 50, "bind-address-ipv4": "0.0.0.0", "bind-address-ipv6": "::", "blocklist-enabled": true, "blocklist-url": "", "cache-size-mb": 2, "dht-enabled": true, "download-dir": "/home/NAS/torrents/Downloads", "download-limit": 100, "download-limit-enabled": 0, "encryption": 1, "idle-seeding-limit": 30, "idle-seeding-limit-enabled": false, "incomplete-dir": "/home/NAS/torrents/Downloading", "incomplete-dir-enabled": false, "lazy-bitfield-enabled": true, "lpd-enabled": true, "max-peers-global": 200, "message-level": 2, "open-file-limit": 32, "peer-limit-global": 200, "peer-limit-per-torrent": 60, "peer-port": 11523, "peer-port-random-high": 65535, "peer-port-random-low": 49152, "peer-port-random-on-start": false, "peer-socket-tos": 0, "pex-enabled": true, "port-forwarding-enabled": true, "preallocation": 2, "ratio-limit": 1, "ratio-limit-enabled": true, "rename-partial-files": true, "rpc-authentication-required": true, "rpc-bind-address": "0.0.0.0", "rpc-enabled": true, "rpc-password": "**********", "rpc-port": 9091, "rpc-username": "transmission", "rpc-whitelist": "127.0.0.1,192.168.0.100", "rpc-whitelist-enabled": false, "script-torrent-done-enabled": false, "script-torrent-done-filename": "", "speed-limit-down": 900, "speed-limit-down-enabled": true, "speed-limit-up": 100, "speed-limit-up-enabled": false, "start-added-torrents": true, "trash-original-torrent-files": true, "umask": 0, "upload-limit": 100, "upload-limit-enabled": 0, "upload-slots-per-torrent": 14 }

2.4 Сервер телефонии на базе Asterisk + FreePBX

Звонки - дело не дешевое, особенно когда по работе часто и в разные страны, при том что имеется vpn-туннели до работы - не развернуть сервер телефонии, было бы мягко сказать, странно. Исходя из выше указанной схемы поднимаем новую виртуальную машину и заводим ее сетевые интерфейсы в нужные нам VLAN. Саму установку asterisk + freepbx описывать не буду так как, до меня с этой задачей прекрасно справился siv237 и описал все в публикации Простая установка Asterisk + FreePBX для начинающих .

После установки заводим необходимые транки в интерфейсе FreePBX, настраиваем dial plan, создаем пользователя и радуемся жизни. По чудесному истечению обстоятельств мой основной провайдер предоставляет городской номер по sip, что собственно и стало основной причиной развертывания данного сервера.

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

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

2.5 TFTP сервер для загрузки по сети и настройки различного оборудования;

Если честно давно забыл про эту очень удобную функцию, раньше для меня это было избыточным, а потом просто вылетело из головы. Как-то после очередного просмотра моего любимого Хабра наткнулся на публикацию «Загрузочный сервер - как загрузочная флешка, только сервер и по сети» , написанную Romanenko_Eugene , с описанием всего этого. Лучше, чем он, я описать, наверно, не смогу, так что оставлю эту часть за ним. На базе данной статьи были собраны необходимые мне дистрибьютивы и я забыл, что такое загрузочная флешка.

2.6 Частное облако для хранения файлов на базе «owncloud»

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

В качестве платформы был выбран «owncloud», а в качестве внешних облачных провайдеров я использую box.com, dropbox, google drive, yandex disk, onedrive. Список обширный, но идея проста. Для начала ставим клиенты на машину и натравливаем их на синхронизацию в предварительно созданную под каждое облако директорию, затем поверх всего этого хозяйства ставим «owncloud».

Руководство по установке клиентов переписывать смысла нет, их можно найти на профильных сайтах. А все что касается установки «owncloud» описано BlackIce13 в публикации «Опыт установки ownCloud 6 на Debian 7 wheezy» . Нам же остается продумать что и куда синхронизировать, чтобы спать спокойно, имея у себя сервер с RAID 0.

2.7 HTTP прокси Ace Stream для просмотра TorrentTV

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

Держать включенным 750 ваттного монстра для раздачи телевидения на непосредственно телевизор довольно расточительно. После недолгих поисков было найдено решение - прокси, преобразующий torrent поток в http. Проблема решилась довольно быстро, теперь за 60 рублей в месяц можно смотреть гору каналов.

Единственный минус - довольно медленное переключение каналов.

Установка

Для начала установим vlc:

Apt-get install vlc
Скачаем aceproxy и acestream и поместим их в одну директорию:

Wget https://github.com/ValdikSS/aceproxy/archive/master.zip wget http://dl.acestream.org/debian/7/acestream_3.0.5.1_debian_7.4_x86_64.tar.gz
Создадим рядом несколько директорий:

Mkdir logs mkdir scripts
В директории./scripts создадим несколько скриптов:

Cd ./scripts nano aceproxy.sh #!/bin/sh python ./aceproxy/acehttp.py > ./logs/acehttp.log 2>&1 & nano acestream.sh #!/bin/sh ./acestream/acestreamengine --lib-path ./acestream --client-console > ./logs/acestream.log 2>&1 & nano vlc.sh #!/bin/sh vlc -I telnet --clock-jitter -1 --network-caching -1 --sout-mux-caching 2000 --telnet-password admin > ./logs/acevlc.log 2>&1 &

Перейдем в директорию выше и создадим скрипты для запуска и остановки трансляции:
cd ../ nano start.sh #!/bin/bash /bin/kill -9 `/bin/ps ax |/bin/grep acestream |/usr/bin/awk {"print $1"}` ./scripts/acestream.sh echo "Start acestream" sleep 1 /bin/kill -9 `/bin/ps ax |/bin/grep vlc |/usr/bin/awk {"print $1"}` ./scripts/vlc.sh echo "Start VLC" sleep 1 /bin/kill -9 `/bin/ps ax |/bin/grep acehttp |/usr/bin/awk {"print $1"}` ./scripts/aceproxy.sh echo "Start aceproxy" nano stop.sh #!/bin/bash /bin/kill -9 `/bin/ps ax |/bin/grep acestream |/usr/bin/awk {"print $1"}` echo "Stop acestream" sleep 1 /bin/kill -9 `/bin/ps ax |/bin/grep vlc |/usr/bin/awk {"print $1"}` echo "Stop VLC" sleep 1 /bin/kill -9 `/bin/ps ax |/bin/grep acehttp |/usr/bin/awk {"print $1"}` echo "Stop aceproxy"

Отредактируем конфигурацию aceproxy согласно wiki

Здравствуйте, мои дорогие читатели! Мы с вами много говорили о . Думаю, пришла пора поговорить о том, как создать свой сервер для сайта.

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

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

Что представляет собой домашний сервер?

Локальный сервер – это специализированное программное обеспечение, позволяющее управлять (создавать и размещать) персональными сайтами на домашнем оборудовании (локальном компьютере).

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

Что делать?

Отвечу на вопрос достаточно лаконично: скачать и установить необходимый программный набор компонентов. Но прежде чем это сделать, нужно оценить свои возможности, а точнее возможности вашего ПК. Для этого вам необходимо проверить его характеристики: объем оперативной памяти, показатели процессора и т.д.

Кроме того, вам нужен:

  • Активный статистический IP-адрес (чаще всего эта услуга у провайдеров платная, но, к сожалению, без него никак)
  • Бесперебойная высокая скорость приема данных и их передачи. У вас должен быть проверенный и надежный провайдер с минимально допустимой скоростью в 10 Мбит\сек. Идеальный показатель скорости – 100 Мбит\сек.

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

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

Инструкция

Устанавливаем многопользовательскую операционную систему Unix. К примеру, Apple Mac OS X или Линукс (кстати говоря, в этом вопросе и Виндовс не так уж плох, но я бы настоятельно рекомендовал установить все-таки Unix-систему).

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

Заходим в настройки программы (конфигурация Apache) и прописываем в разделе listen 80: ваш айпи-адресс.

Открываем порт №80 и вуаля — пользуемся сервером дома.

Теперь, прописав в адресной строке ваш IP-адрес, компьютер должен открыть конфигуратор Апаче. Поменять корневую директорию интернет-сайта можно через httpd.conf. Ну а если в планах открыть доступ к серверу не только через IP, но и через , тогда вам потребуется поднять DNS.

Внимание ! Не забудьте о том, что теперь ваш ПК (сервер) нельзя выключать. Если это сделать, ваши сайты в Глобальной сети станут недоступными для пользователей.

Я думаю, данного материала вполне достаточно, чтобы решить для себя: хотите ли вы по-прежнему сделать из своего ПК сервер или нет.

C уважением! Абдуллин Руслан

Статьи по теме: