Как сделать vps сервер дома
Completing the CAPTCHA proves you are a human and gives you temporary access to the web property.
What can I do to prevent this in the future?
If you are on a personal connection, like at home, you can run an anti-virus scan on your device to make sure it is not infected with malware.
If you are at an office or shared network, you can ask the network administrator to run a scan across the network looking for misconfigured or infected devices.
Another way to prevent getting this page in the future is to use Privacy Pass. You may need to download version 2.0 now from the Chrome Web Store.
Cloudflare Ray ID: 71af258b797e777d • Your IP : 82.102.23.104 • Performance & security by Cloudflare
Уютный VPS-сервер для маленьких проектов: как настроить

Мне всегда хотелось иметь в сети личное пространство. Место, где все было бы устроено как мне удобно. Наилучшим решением мне виделся недорогой VPS, который я мог бы обустраивать в соответствии со своими потребностями. Долго я не мог подступиться к решению этой задачи, но как-то незаметно подобрался набор инструментов, который позволил организовать именно такую программную среду, как мне хотелось.
Если вам тоже хочется создать в сети свое личное пространство, но вы не знаете, с чего начать, или вам просто интересны такие замечательные программные продукты как Docker, Portainer, Traefik – добро пожаловать под кат.
Введение
Признаться честно, я не очень люблю командную строку. То есть, мне нравится сама идея легкого минималистичного универсального интерфейса, практически не требующего ресурсов, но черное окно с мигающим курсором вызывает у меня фрустрацию и чувство беспомощности. И я даже знаю откуда это у меня.
Когда я учился в институте (это то время, когда у меня в городе только появился интернет по карточкам и первое интернет-кафе), мой друг, который к тому времени умудрился устроится лаборантом на кафедру информатики, активно пытался подсадить меня на Линукс. И вот я, считающий себя продвинутым компьютерщиком, имеющий опыт, наверное, сотни установок винды, прихожу домой после института и уверенным движением вставляю в дисковод диск с дистрибутивом линукс… И что? И ничего.
Я уже за давностью лет не помню всех подробностей, наверно мне даже удалось его установить, но дальше был провал – я просто не понимал, что делать. Привычный способ, который работал в винде – рыться в панели управления рандомно включая разные настройки пока все не заработает (или сломается окончательно, но тогда можно было переустановить винду и начать все снова) тут не действовал. Все, что у меня было, это консоль, которая раз за разом отвергала мои попытки что-то настроить. Помню, что у меня была даже книга по линуксу, которая тоже никак не помогала — команды, которые там были приведены, в большинстве своем почему-то не работали. В общем, промучившись несколько дней я тогда решил для себя, что линукс, это какая-то ерунда, и с облегчением вернулся к привычной винде.
Были и еще попытки освоить линукс, жизнь раз за разом сводила меня с его фанатами, которые пытались меня перетянуть в свой лагерь, я даже как-то попытался поставить генту (неудачно естественно, хотя у меня была распечатка с пошаговым руководством как это сделать), но проклятье консоли витало надо мной и с каждой неудачей то самое чувство беспомощности все усиливалось. После графического интерфейса винды, где все настройки перед тобой как на ладони, сталкиваясь с консолью я чувствовал себя ослепшим, пытающимся найти дорогу на ощупь в незнакомом месте. Так что я очень долго оставался приверженцем технологического стека Microsoft, программировал на .net, используя VisualStudio (она шикарна, и никакой консоли). Прошу не судить строго, возможно, если бы в то время у меня была возможность поставить линукс на виртуалку, чтобы спокойно с ней разбираться и приличный интернет под рукой, эта история приняла бы совсем другой оборот.
Сейчас все поменялось. С приходом в нашу жизнь веба в его современном виде я пересел на Node.js и волей-неволей стал проникаться идеологией консоли и Linux. Для хостинга своих разработок мне понадобился VPS, и тут оказалось, что VPS с виндой стоят гораздо дороже, так что моя жаба перевесила мои фрустрации относительно консоли, да и наличие скоростного интернета позволило мгновенно находить ответы на возникающие вопросы.
Я научился пользоваться ssh, осознал силу git и стал активно пользоваться docker’ом, но мне все также нравится использовать для своих задач графический интерфейс, и в этой статье я хочу вас познакомить с замечательным набором инструментов, которые позволяют решать мне мои повседневные задачи, не обращаясь лишний раз к консоли.
Подготовка
Я создал VPS минимальной конфигурации (vCPU: 1 core, RAM: 1 ГБ, NVMe: 20 ГБ) на macloud. Для установки на VPS я выбрал дистрибутив Debian 10. При установке я сразу добавил через панель управления SSH-ключ, чтобы было удобно заходить в консоль с помощью SSH-клиента. Для дальнейших экспериментов понадобится следующее:
- Обновить систему
- Установить docker и docker-compose
- Включить файл подкачки.
Устанавливаем необходимые зависимости:
Добавляем официальный GPG ключ Docker’а:
Теперь осталось обновить список пакетов:
и установить докер:
Проверить, что все корректно установилось можно, запустив команду:
Если появилось приветствие, значит все прошло хорошо. У меня на момент написания данной статьи установилась следующая версия:
Теперь надо установить docker-compose. Для этого воспользуемся официальной инструкцией:
Для начала нам нужно получить ссылку на свежий релиз docker-compose. Список релизов можно посмотреть тут: https://github.com/docker/compose/releases
На момент написания статьи наиболее свежей была версия 1.29.2. Нам нужна версия для linux, поэтому выбираем файл с названием docker-compose-Linux-x86_64. Скопируем ссылку на него. Теперь надо в консоли ввести следующую команду (вставьте в нужное место ссылку, полученную выше):
В моем случае получилось:
Запустим команду и загрузится бинарный файл docker-compose.
Последний шаг – надо установить для него разрешение на исполнение. Это можно сделать следующей командой:
Если всё прошло нормально, то на этом процесс установки окончен, теперь можно проверить версию docker-compose. У меня получилось вот так:
Последний шаг – это включение файла подкачки, учитывая малый объем памяти он точно не будет лишним:
Создадим файл размером 4 Гб
Назначим ему необходимые права:
Инициализируем его как файл подкачки:
Проверить, появился ли файл подкачки в системе можно командой free. У меня все получилось:
Осталось последнее действие: для того, чтобы файл подкачки оставался активным после перезагрузки надо добавить в файл /etc/fstab следующую строку:
Для подобных задач мне нравится использовать файловый менеджер Midnight Commander. Это консольный файловый менеджер с классическим интерфейсом. Если вы сталкивались с Norton Commander/FAR/TotalCommander – вы легко поймете, как им пользоваться. Установить его можно следующей командой:
А запустить с помощью команды
Увидим до боли знакомую картину:

Теперь найдем нужный файл и отредактируем его:

На этом предварительная настройка закончена, можно двигаться дальше.
Portainer
Первый инструмент, с которым мне бы хотелось вас познакомить – это Portainer. Portainer – это инструмент для управления контейнерами в Docker, Swarm, Kubernetes и Azure ACI. Как написано в документации Portainer’а:
«Отрицая необходимость для пользователей использовать интерфейс командной строки, писать YAML или понимать манифесты, Portainer делает развертывание приложений и устранение неполадок настолько простым, что любой может это сделать».
Для моих целей Portainer подходит просто идеально. Давайте познакомимся с ним поближе. В соответствии с документацией https://documentation.portainer.io/v2.0/deploy/ceinstalldocker/ проще всего это сделать следующим образом:
Создадим том для хранения данных:
Теперь можно запустить Portainer следующей командой:
После запуска Portainer будет доступен по адресу http://<ip серевера>:9000/
При первом запуске Portainer попросит вас указать пароль администратора, после чего спросит, каким образом подключится к окружению:

Я выбрал вариант подключится к локальному Docker’у, после чего появился домашний экран Portainer’а:

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

Здесь мы можем управлять всеми аспектами работы Docker’а. Давайте посмотрим, что у нас в контейнерах:

Здесь пока один контейнер – это сам Portainer. Интерфейс очень удобно позволяет просматривать и управлять контейнерами, а также есть возможность добавлять новые. Можете пройтись по остальным вкладкам и убедится, насколько удобный и продуманный интерфейс имеет Portainer.
Наибольший интерес представляет вкладка Stacks. Стэк – это совокупность взаимосвязанных контейнеров, которые запускаются и работают совместно. По сути, это тоже самое, что композиция Docker Compose, конфигурацию которой мы описываем в файле docker-compose.yml и потом запускаем командой docker-compose up.
Portainer дает возможность добавить стек в систему различными путями, начиная с редактирования с помощью встроенного редактора и заканчивая загрузкой с github.

Для определения стека используется формат docker-compose, именно он работает здесь под капотом. Мне при помощи этой функции удобнее всего построить из контейнеров необходимую инфраструктуру.
На этом предлагаю пока отвлечься от изучения возможностей portainer’а. Думаю, вы уже увидели, что это серьезный инструмент, благодаря которому можно практически полностью отказаться от использования CLI docker’а. Давайте теперь кратко рассмотрим, что же я хочу получить в результате на этом VPS.
У меня периодически возникает потребность в разработке «быстрых» проектов. Я так называю проекты, которые не требуют глубокой проработки. Это могут быть эксперименты, небольшие сайты, боты, сборщики информации и т.п. Все то, что не требует выстраивания цепочки CI/CD. Мне было бы крайне удобно разрабатывать и отлаживать такие приложения прямо там, где они будут работать. Также у меня довольно часто бывает ситуация, когда я нахожусь вдали от своего рабочего места с настроенной средой разработки, и, если что-то в этих моих проектах начинает работать не так как надо, хотелось бы иметь возможность быстро разобраться в ситуации и пофиксить проблему, или просто поработать над проектами пока есть свободная минутка с любого компьютера, даже если на нем нет ничего, кроме браузера и доступа в интернет.
Для удобства доступа у меня есть купленное доменное имя, и я хочу настроить для различных инструментов домены третьего уровня, так, чтобы например portainer был доступен по адресу portainer.example.com. Также я хочу, чтобы всё работало через https, и, чтобы не заморачиваться с покупкой сертификатов SSL, воспользоваться Let’s Encrypt. Еще одно требование, чтобы всё, к чему не предполагается публичный доступ было закрыто аутентификацией.
Для того, чтобы всё это реализовать, давайте познакомимся со следующим замечательным инструментом. Это…
Traefik
Traefik — это реверсивный прокси-сервер, который заточен для работы с контейнерами. Для меня важны следующие его возможности:
- обновление конфигурации «на лету»
- поддержка docker’а в качестве провайдера конфигурации
- работа с Let’s encrypt из коробки
Чтобы процесс получения сертификата Let’s encrypt прошел успешно, перед запуском надо убедится, что записи DNS корректно настроены. Я для этих целей использую cloudflare, и в нем конфигурация должна выглядеть примерно так:

В графе «Content» должен находится адрес нашего VPS.
Если теперь скопировать получившийся docker-compose.yml на сервер выполнить следующую команду:
То после запуска по адресу portainer.example.com будет такая картина:

Причем он уже будет защищен сертификатом Let’s Encrypt:

У traefik есть очень удобный дашборд, который помогает понять, правильно ли применились настройки конфигурации. Для того, чтобы его активировать, надо добавить в docker-compose.yml следующие строки:
Также надо в настройках DNS добавить домен третьего уровня traefik.example.com. Это можно сделать по аналогии с тем, как ранее был добавлен домен для portainer. После применения настроек по адресу traefik.example.com увидим дашборд:

Как видите, Traefik оказался замечательным инструментом. Он работает в тесной связке с docker’ом, а его возможности динамической конфигурации позволяют полностью отказаться от использования конфигурационных файлов для настроек роутинга. Вместо этого мы просто прописываем все необходимые параметры в качестве labels для настраиваемого сервиса, так что все настройки оказываются в одном месте.
Теперь предлагаю немного отвлечься от настройки базовых сервисов и добавить в систему среду разработки. Это будет…
Visual Studio Code Server
Для меня всегда среда разработки или IDE, была чем-то таким серьезным. Мощный программный пакет, который устанавливается на машине разработчика, занимает много гигабайт на диске и в оперативной памяти. Пример такой IDE, которой я пользовался много лет, и до сих пор считаю, что это лучший выбор, если вы работаете со стеком технологий Microsoft, это Microsoft VisualStudio. Когда я начал изучать Node.js, я открыл для себя VSCode, и, несмотря на родственные названия, это совсем другая IDE, с совершенно иной концепцией и возможностями. Тот факт, что для отображения своего интерфейса VSCode использует движок Chrome, позволяет разнести интерфейс и сам VSCode. Благодаря такой архитектуре возник Visual Studio Code Server, который может работать на VPS, при этом интерфейс VSCode будет доступен через браузер. И нет, это не очередной онлайн редактор кода, это полноценная IDE VSCode, которая обладает всеми ее замечательными возможностями.
Чтобы добавить VSCode Server на свой VPS я в Portainer’е создам новый stack, назову его code-server и добавлю туда следующую конфигурацию:

Также перед запуском надо не забыть добавить в записи DNS домен третьего уровня code.example.com. Теперь осталось нажать кнопку Deploy the stack.
После окончания процесса в portainer’е появится новый stack, и, если мы зайдем по адресу code.example.com, то увидим такую картину (я сразу включил dark theme):

Здесь можно вести разработку также как в десктопной версии VSCode. По большому счету, единственное отличие, с которым я столкнулся, это разница в дефолтных биндингах некоторых сочетаний клавиш, но к этому быстро привыкаешь в процессе использования.
Для удобства я подключил к контейнеру code-server’a том, который смонтировал в директорию /app, так что создавать или клонировать из репозитория проекты лучше всего там, в таком случае данные не пропадут даже при пересоздании контейнера.
В данном образе уже установлен Node.js, так что мне не пришлось ничего делать, и я могу сразу приступить к работе над своими проектами. Если же вам в работе нужны другие ЯП, то обратите внимание, что создатели данного образа поддерживают каталог модов, которые позволяют добавить поддержку различных платформ. О том, как их использовать, можно почитать в описании образа на Docker Hub, а со списком официальных модов можно ознакомиться здесь: mods.linuxserver.io/?mod=code-server
Обратите также внимание на то, что в настройках контейнера указан пароль sudo. Для демонстрации я оставил его простым, но на практике лучше сделать его сложным, а еще лучше использовать свойство SUDO_PASSWORD_HASH, чтобы не хранить пароль в открытом виде. Как это сделать, можно почитать в описании образа здесь: hub.docker.com/r/linuxserver/code-server.
Как вы наверное уже заметили – на данный момент доступ к code-server никак не защищен и сейчас любой, кто зайдет по адресу code.example.com получит доступ. Это очень плохой вариант, и, хотя в настройках образа можно включить доступ по паролю, мне бы хотелось иметь единый логин для доступа ко всем ресурсам, расположенным на сервере. Для этого предлагаю познакомиться со следующим инструментом. Это будет…
KeyCloak
KeyCloak – это современный инструмент для организации доступа к распределенным системам с использованием технологии единого входа. На самом деле это единственный свободный инструмент с настолько мощной функциональностью, который мне удалось найти. Если знаете достойную альтернативу, обязательно напишите об этом в комментариях.
Для того, чтобы добавить его в мою систему, я создал в portainer’е новый стек с названием auth и добавил в него следующую конфигурацию:

После нажатия кнопки Deploy the stack, KeyCloak будет доступен по адресу auth.example.com. Если мы зайдем туда, нас встретит приветственное окно KeyCloak:

Зайдем в консоль администратора:

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

Рекомендации по первоначальной настройке KeyCloak для docker’а можно подчерпнуть в официальной документации вот здесь www.keycloak.org/getting-started/getting-started-docker.
Вкратце, надо создать новый пользовательский Realm, в нем создать пользователя и добавить нового клиента.
Для клиента необходимо установить Access Type: confidential и добавить в Valid Redirect URIs наши домены, пока это будут «https://traefik.example.com/*» и « code.example.com*»:

После установки Access Type: confidential появится вкладка Credentials, в которой можно будет забрать Secret, он нам пригодится далее при настройке.
На этом пока закончим настройку KeyCloak. Теперь нам надо подружить его с Traefik’ом. Напомню, что мы хотим закрыть от неаутентифицированных пользователей доступ к узлам code.example.com и traefik.example.com. Для этих целей у traefik есть ForwardAuth middleware, которое позволяет организовать авторизацию через внешний сервис. Чтобы обеспечить его взаимодействие KeyCloak нам понадобится промежуточный сервис, я буду использовать github.com/thomseddon/traefik-forward-auth. Он доступен также в качестве образа на Docker Hub, поэтому я просто дополню конфигурацию стека auth в portainer’е таким сервисом:
Здесь в переменной PROVIDERS_OIDC_ISSUER_URL должен быть путь к ранее созданному нами Realm в Keycloak, PROVIDERS_OIDC_CLIENT_ID должен содержать имя клиента, созданного мной ранее в данном realm’е, а PROVIDERS_OIDC_CLIENT_SECRET надо взять из вкладки Credentials данного клиента. В переменной SECRET надо забить рандомную строку.
Теперь, чтобы закрыть сервис, роутинг в который обеспечивает Traefik достаточно добавить к нему в labels следующую строку:
Для начала я решил закрыть аутентификацией code server, для чего зашел в его стек и дополнил его конфигурацию. Получилось следующее (для краткости привожу только секцию labels):
Нажмем кнопку Update Stack и попробуем зайти по адресу code.example.com. Если все сделано правильно, то появится окно логина:

После ввода корректных имени пользователя и пароля (которые до этого настроил в KeyCloak) я попал в интерфейс Code server. Все работает!
Подобным образом я закрыл от посторонних глаз дашборд traefik’а. Для этого пришлось сходить в консоль (Portainer не может вносить изменения в конфигурацию стека, который был создан не им, а Traefik я поднимал из консоли) и аналогичным образом отредактировать docker-compose.yml:
Для проверки я зашел по адресу traefik.example.com. Чтобы удостоверится, что все работает как надо, мне пришлось открыть окно браузера в режиме инкогнито, иначе система меня узнавала и не спрашивала пароль, поскольку я ранее уже логинился для доступа к code-server и поэтому KeyCloak аутентифицировал меня автоматически.
Таким образом, при помощи связки KeyCloak и Traefik мне удалось защитить от несанкционированного доступа чувствительные элементы моей системы. Преимущество данного подхода в том, что он позволяет сделать это даже там, где не предусмотрены собственные механизмы аутентификации. Есть конечно и недостатки — KeyCloak достаточно тяжелый, занимает много ресурсов, в первую очередь памяти, да и по возможностям это явный overkill, мне скорее всего не потребуется большая часть того, что он умеет. В качестве альтернативы можно бы было использовать облачный сервис, например traefik-forward-auth имеет встроенную поддержку Google OAuth.
Выводы
В этой статье мы познакомились с набором инструментов, совместное использование которых позволяет во многом упростить и автоматизировать широкий спектр задач, которые возникают сегодня в практике многих ИТ-шников. Такие настройки, как:
- Подключение доменных имен
- Настройка TLS
- Получение и установка сертификатов
- Аутентификация
Конечно, при настройке мне пришлось многое делать из консоли, но в дальнейшем, при повседневном использовании построенная система позволит мне сократить ее использование, что для меня несомненно плюс.
Когда я писал эту статью, главной сложностью было собрать всю необходимую информацию воедино. Многие вещи из документации неочевидны и зачастую чтобы добиться того, чтобы система заработала нужным образом приходилось искать решение проблемы по различным issues на github и вопросам со stackoverflow. Поэтому я постарался ряд моментов осветить более подробно, и надеюсь, кому-нибудь мои изыскания помогут лучше разобраться в описываемых продуктах.
Также искренне рассчитываю на конструктивную критику в комментариях, и идеи, как можно сделать то, что я попытался здесь реализовать, лучше. Например, очень хотелось бы найти более легковесную альтернативу KeyCloak, потому как он несколько тяжеловат для такого рода задач.
Для удобства файлы конфигураций я разместил в репозитории вот тут: https://github.com/debagger/vps-docker-workspace
Благодарю за внимание!
Облачные серверы от Маклауд быстрые и безопасные.
Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!
Как создать свой собственный VPS сервер на домашнем ПК

Наверняка у многих из нас есть старые компьютеры или ноутбуки, которые вроде бы больше не нужны, но выбросить жалко. Сегодня мы разберемся, как их можно использовать в хозяйстве, используя в качестве удаленных рабочих столов для установки терминалов с советниками для автоматического трейдинга.
А если точнее – будет инструкция, как создать свой собственный VPS сервер на домашнем ПК с блекджеком и… ну вы поняли).
Мы рассмотрим несколько простых вариантов “без заморочек” со всеми плюсами, минусами и ограничениями, а так же один не самый простой вариант, прелесть которого обнаруживается, если вы собираетесь работать с тремя – четырьмя терминалами.
Простые варианты
Вариант 1. Подключение по протоколу RDP.
Этот вариант подходит не всем. Дело в том, что, во-первых, настроить подключение по протоколу RDP можно только в Windows 7/8/10 версий Pro, Ultimate и Enterprise. Если у вас версия Starter или Home, придется переустанавливать систему, что часто довольно неудобно. Ну и во-вторых, вам нужен “белый” ip, чтобы использовать RDP протокол.
На сегодняшний день для домашних и частных сетей выделены и зарезервированы несколько диапазонов серых IP адресов:
- с 10.0.0.0 по 10.255.255.255 – используется на предприятиях и крупных компаниях;
- c 172.16.0.0. по 172.31.255.255 – так же используются в производственных и корпоративных сферах;
- с 192.168.0.0. по 192.168.255.255 – домашние и малые корпоративные сети.
Узнать ваш ip адрес можно из консоли. Нажмите Win+R, в появившемся окне введите cmd и в консоли впечатайте ipconfig. Найдите значение IPv4 – это и есть ваш ip адрес. Если он входит в один из диапазонов, указанных выше – ваш ip-адрес серый. Но это не страшно, вы всегда можете приобрести у вашего провайдера белый ip-адрес за символические 2-10 долларов в месяц.
Чтобы настроить удаленный доступ в Windows 10, зайдите в “Параметры”->”Система”->”Удаленный рабочий стол” и включите переключатель.

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

Для подключения потребуется ввести в утилиту “Удаленный рабочий стол” название компьютера:

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

После этого вы не сможете использовать программу, не оплатив хотя бы месяц использования. Но, к счастью, есть и другие, не менее удобные программы с бесплатным использованием.
Вариант 3. Подключение с помощью LiteManager.
Одна из бесплатных программ. Поддерживает неограниченное количество подключений. Из особенностей – программа разделена на клиентскую и серверную части. Серверная устанавливается на машине, к которой вы собираетесь подключаться, а клиентская служит для доступа к подключенным машинам и управления ими.

Программа проста в установке и управлении, а качество соединения вполне достаточное для удаленной работы с терминалами.
Вариант 4. Подключение с помощью Chrome Remote Desktop.
Это самый простой вариант из всех возможных. Все, что вам нужно иметь – аккаунт Google и возможность установить на компьютере браузер Chrome. После установки браузера и регистрации учетной записи, переходим в меню расширений:

Оттуда переходим в интернет-магазин Chrome и ищем расширение под названием Chrome Remote Desktop. После установки расширения машина автоматически добавится в список доступных.

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

Но что же делать, если нам нужно много терминалов на каждом компьютере? Устанавливать каждый из них отдельно, перетаскивая все индикаторы, советники, заново все настраивая и оптимизируя? К счастью, этого не требуется. Дальше я расскажу про немного более сложный способ, использующий виртуальные машины.
Прелесть виртуальной машины в том, что вы можете настроить всю систему один раз, а затем буквально двумя кнопками создать абсолютный клон
Прежде чем начать, нужно запастись некоторым софтом. Вам понадобятся всего две вещи: образ операционной системы для установки на виртуальную машину (подойдет любой образ Windows, но в видео я использую Windows 7) и специальная программа под названием Virtual Box.
Программу вы можете скачать тут, она совершенно бесплатна. Еще вам понадобится Extension Pack, который вы найдете также по ссылке выше. Расписывать установку программ я не буду – все стандартно и совсем несложно.
Создание виртуальной машины


Нажимаем кнопку Создать и видим следующее окно:

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

Снова жмем Создать, и наша новая виртуальная машина появится в списке:

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

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

После того, как Windows установлен, настало время настроить сетевой адаптер. Для этого жмем на нашу машину в списке и выбираем пункт «Настроить».

Вы увидите такое окно:

Переходим в настройку сети:

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

Тут нам нужно зайти на вкладку Доступ и поставить параметры, как показано на рисунке ниже:

Далее настраиваем адаптер виртуальной машины (2).

Выделяем пункт IPv4 и жмем кнопку Свойства:

Заполняем появившееся окно:

Теперь запустим виртуальную машину и уже на ней настроим адаптер:

Снова выберем настройку IPv4 и нажмем кнопку Свойства:

Настройки будут следующими:

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

Теперь зайдем на виртуальной машине в Панель управления – Система и безопасность – Система – Настройка удаленного доступа:

На этом настройка закончена, можно проверить подключение по rdp. Для этого сверните окно с виртуальной машиной и на основной машине нажмите Win+R, введя в появившемся окне mstsc и нажав Enter:

Вы увидите окно подключения к удаленному рабочему столу:

Введем ip, который установили тут:

И подключимся к виртуальной машине через rdp.
Чтобы окно виртуальной машины не мешало, вы можете запустить ее в фоновом режиме. Для этого выключите машину, а затем нажмите Запустить – Запустить в фоновом режиме:

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

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

Вы увидите вот такое окно:

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

Кстати, если у вас белый ip, вы можете получать доступ из интернета к каждой из ваших виртуальных машин, что может быть довольно удобно. Чтобы настроить виртуальную машину для этого, достаточно перейти в настройки->Дисплей->Удаленный доступ и включить галочку:

Далее в окне утилиты Удаленный рабочий стол нужно указать ваш ip и порт после двоеточия (:3389).
Заключение

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