как сделать vps на своем компьютере

Содержание
  1. Как создать виртуальный сервер на компьютере легко с нуля
  2. Необходимая подготовка
  3. Как сделать VPS на своём компьютере
  4. Создание виртуальной машины и установка ОС
  5. Настройка сетевого адаптера
  6. Наш рейтинг
  7. Как можно создать виртуальный VPS сервер без труда
  8. Актуальность вопроса
  9. Пошаговое руководство по созданию VPS
  10. Подготовка
  11. Порядок действий
  12. Завершение
  13. Заключение
  14. Сам себе VDS-провайдер
  15. Считаем, сколько у нас мидихлориан
  16. Выбираем подходящее тело
  17. Процессор
  18. Память
  19. IP-адреса
  20. Пробуждаем силу
  21. Приступаем к установке Proxmox
  22. Отправляемся покорять далёкую галактику
  23. Мониторинг
  24. Создаём собственный VPN сервис за 5 минут
  25. Немного предыстории
  26. Какой VPS сервер выбрать и как подключиться к серверу
  27. Аренда сервера VPS
  28. Подключение к серверу VPS
  29. Как создать OpenVPN сервер за 5 минут
  30. Настройка OpenVPN для фильтрации только заблокированных сайтов
  31. Уютный VPS-сервер для маленьких проектов: как настроить
  32. Введение
  33. Подготовка
  34. Portainer
  35. Traefik
  36. Visual Studio Code Server
  37. KeyCloak
  38. Выводы

Как создать виртуальный сервер на компьютере легко с нуля

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

Необходимая подготовка

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

Как сделать VPS на своём компьютере

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

Создание виртуальной машины и установка ОС

install virtualbox fedora2

Итак, чтобы решить вопрос как создать VPS сервер на своём компьютере нужно выполнить следующие шаги:

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

Настройка сетевого адаптера

Дальнейшим этапом решения вопроса о том, как сделать VPS на своём компьютере является настройка сетевого адаптера:

ava2

После этого решение вопроса, как создать VDS сервер на своём компьютере будет решён. При желании можно создать несколько дополнительных машин. А подключаться к ним можно любым удобным способом, например, используя Remote Desktop Protocol.

Наш рейтинг

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

Хостинг-провайдер Узнать подробнее
1. VDSina — на рынке с 2013 года, цены от 249 руб. Перейти на хостинг
2. FirstVDS — (на рынке с 2002 года, цены от 159 руб.) Перейти на хостинг
3. Fozzy — (на рынке с 2012 года, цены от 299 руб.) Перейти на хостинг
4. Макхост — (на рынке с 2004 года, цены от 879 руб.) Перейти на хостинг
5. Reg.Ru — (на рынке с 2006 года, цены от 179 руб.) Перейти на хостинг

Здесь представлен наш рейтинг, который мы составляли, предъявляя к компаниям серьёзные, но объективные требования и оценивая их по многим параметрам.

Источник

Как можно создать виртуальный VPS сервер без труда

nastrojka vps vds servera s nulya hostap

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

Актуальность вопроса

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

vds hostap 1

Уже тогда, когда проект будет полностью отшлифован, можно будет перенести свой сайт на VDS понравившегося хостера.

Пошаговое руководство по созданию VPS

Процесс, посвящённый тому, чтобы создать свой VPS сервер состоит из нескольких этапов и далее в пошаговой инструкции будет представлена информация о том, как их успешно выполнить. Рассматриваемый способ берёт за образец порядок действий выполняемых при помощи панели управления сервиса Airnode.

Подготовка

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

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

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

В панели управления, в категории «Серверы» следует кликнуть по кнопке «Создать сервер» и откроется новое окно с несколькими вкладками.

Порядок действий

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

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

Завершение

После того, как каждая вкладка будет заполнена и настроена соответствующим образом, следует нажать на кнопку «Создать сервер». Через некоторое время сервер должен стать активным, если же кнопка будет неактивной, то следует перепроверить все шаги. В последствии, при желании можно перенести свой ресурс на полноценный VDS хостинг.

Заключение

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

Хостинг-провайдер Узнать подробнее
1. VDSina — на рынке с 2013 года, цены от 249 руб. Перейти на хостинг
2. FirstVDS — (на рынке с 2002 года, цены от 159 руб.) Перейти на хостинг
3. Fozzy — (на рынке с 2012 года, цены от 299 руб.) Перейти на хостинг
4. Макхост — (на рынке с 2004 года, цены от 879 руб.) Перейти на хостинг
5. Reg.Ru — (на рынке с 2006 года, цены от 179 руб.) Перейти на хостинг

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

Источник

Сам себе VDS-провайдер

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

Считаем, сколько у нас мидихлориан

Для начала нужно узнать суммарную стоимость аренды парка VDS и реальный расход ресурсов процессора, оперативной/постоянной памяти, количество IP. Выяснить частоту процессора, который выделен вашим VDS. Тут у всех хостеров индивидуально — смотрим графики, считаем цены.

Выбираем подходящее тело

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

Процессор

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

Память

10 GB жёсткого диска. Эти дополнительные ресурсы нужны для работы ОС и панели управления гипервизором. Если собираетесь увеличивать количество контента — заложите запас ресурсов для роста проекта.

IP-адреса

Как и в случае с памятью, берём столько же адресов, как на VDS-ках + 1 под сам дедик.

Заказываем сервер, соответствующий нашим запросам, и с учётом упомянутых нюансов. В качестве ОС выбираем Debian 9, именно под эту ОС делают годную панель управления Proxmox.

Пробуждаем силу

Спустя некоторое время у нас на руках будет root-доступ на новенький дедик.
Пора сказать пару слов о теплой, ламповой и бесплатной панели управления гипервизором Proxmox. Да, сама панель бесплатна — разработчики зарабатывают на подписке. Подписчики, в свою очередь, получают более стабильную версию панели и возможность добавить больше нод в кластерном режиме. Но для нашей цели с головой хватит бесплатной версии.

Относительно недавно панель крупно обновилась, сейчас выглядит весьма современно и функционально. Поддерживает KVM и LXC-виртуализации, позволяет организовать своё ceph-облако, поддерживает возможность резервирования, словом умеет все, что может понадобиться рядовому пользователю VDS-хостинга.

Приступаем к установке Proxmox

Подключаемся к серверу по ssh, используя putty или другой ssh-клиент и последовательно выполняем команды:

После завершения установки заходим в Proxmox, для авторизации обращаемся браузером на 8006 порт дедика https://IP-дедика:8006

image loader

Входим также под root, интерфейс вполне прилично переведён на великий и могучий — можно спокойно пользоваться.

Как только залогинитесь, увидите сообщение с намёком подписаться. Делать это необязательно — панель не перестанет работать как в случае с триальными версиями программ.

image loader

Перед созданием первой VDS на новом сервере нужно настроить сетевой мост, чтобы все было по-взрослому. На этом этапе может понадобиться KVM или ipmi-kvm (если что-то пойдёт не так, и нужно будет восстанавливать доступность дедика по сети).

Возвращаемся в ssh и редактируем конфиг /etc/network/interfaces посредством плебейского nano или православного vim. Приводим конфиг к этому виду:

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

После запуска сервера вновь обращаемся к SSH, чтобы скачать ISO-образы операционок для будущих VDS, а также образ sysrescuecd. Образы нужно сложить в директорию /var/lib/vz/template/iso
Для загрузки используем wget и прямые ссылки. Можно не скачивать образы систем, если вы хотите просто перенести существующие VDS на дедик. Но образ sysrescuecd может понадобиться для обслуживания VDS, поэтому очень рекомендуем скачать его сразу.

Отправляемся покорять далёкую галактику

Пришло время создавать на нашем дедике VDS: жмём кнопку «Создать VM» в правом верхнем углу панели Proxmox, заполняем поля на всех вкладках, используя данные любой из старых VDS. Формат образа выбираем qcow2.

image loader

Образы дисков будут создаваться по пути /var/lib/vz/images/[тут ID новой VDS].

Запрашиваем у VDS-хостера образы в формате qcow2 и загружаем их вместо ранее созданных. Выбираем VDS в левом списке и запускаем её кнопкой «Старт». Теперь мы получили свой виртуальный сервер со всеми проектами, остаётся только поправить настройки сети в самой VDS и сменить DNS на IP новой виртуалки. Сделать эти настройки можно через VNC, который доступен по кнопке «Консоль».

Мониторинг

Завершив перенос и сменив DNS, начинаем отслеживать показатели нагрузки. Это не обязательно, но полезно. Для такого мониторинга можно просмотреть общую сводку кластера.

image loader

В сводке ноды более подробная информация:

image loader

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

Минусы у дедика тоже, конечно, есть, но Proxmox помогает их нивелировать. Первое — это если ляжет дедик, полягут все VDS. Проблема решается резервированием, но понадобится больше дедиков. Ещё при использовании выделенного сервера нужно настроить raid 1 и следить за состоянием дисков при помощи smartd (и это Proxmox умеет). В случае с VDS эта же проблема решается заказом виртуалок у нескольких провайдеров, но это не очень удобно.

Переход на выделенный сервер — это разумный шаг, когда стоимость арендуемых VDS сопоставима с ценой выделенного сервера. Выбрать готовую конфигурацию или собрать свой дедик вы можете на FirstDEDIC. Хотите, чтобы проекты летали — выбирайте скоростные NVMe-диски (быстрее SSD в 2-3 раза).

Источник

Создаём собственный VPN сервис за 5 минут

Немного предыстории

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

Разрабатываются новые технологии для VPN, появляются новые механизмы обхода блокировок типа SmartDNS. Как раз такой услугой воспользовался недавно. Работает хорошо, удобно было добавить DNS в роутер, но адреса обхода очень ограничены. В моем случае поддержка пошла на встречу и вместе мы смогли добавить сервис Кинопоиск от Яндекса. Правда, почти сразу я понял, что хочется большего, хочется самому управлять трафиком. Плюс лично мне не интересны VPN, направляющие весь трафик. Они снижают скорость, не так удобны для просмотра местных сайтов. К тому же мне надо этот трафик пропустить через роутер (в первую очередь для полной работы Яндекс Станции). Сейчас нахожусь в Молдове, здесь сайты не блокируют, но некоторые российские сервисы недоступны.

Какой VPS сервер выбрать и как подключиться к серверу

Само создание OpenVPN сервера займет меньше 5 минут, но сначала мы рассмотрим аренду сервера и подключение к нему.

Аренда сервера VPS

В первую очередь нужно арендовать VPS сервер. VPS сервер – виртуальный выделенный сервер, который соответствует физическому серверу, т.е пользователь получает root-доступ к операционной системе, IP-адресам и т.д.
Тут зависит от ваших целей, стоимости сервера, и того какие именно услуги этот сервер может поддерживать (например, не все хостинг-провайдеры разрешают использование VPN-серверов, поэтому перед заказом услуги предварительно у тех. поддержки узнайте разрешают ли они использование VPN сервера). Если вы хотите получить доступ к российским сайтам, то вы, конечно, можете выбрать европейские сервера, но на мой взгляд, стоит выбрать российские сервера, для получения полного доступа к сервисам. В таком случае (повторюсь, для доступа к российским серверам) рекомендую обратить внимание на следующую статью, в которой были протестированы некоторые российские хостинг-провайдеры: Обзор дешевых VPS-серверов. Я же воспользовался услугами хостинг-провайдера VDS.SH. С учетом того, что не все провайдеры разрешают использование VPS в качестве VPN сервера, перечислю тех, кто точно разрешает:

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

Для тех, кому нужен доступ к заблокированным в РФ сайтам, нужно брать сервер за пределами России. Это может быть DigitalOcean или linode – из недорогих хостингов.

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

Подключение к серверу VPS

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

Подключаться к серверу будем с помощью ssh клиента PuTTY, а скачивать нужные файлы (клиентские ovpn файлы) с помощью ftp-клиента FileZilla.

Запускаем приложение PuTTY, в графе Host Name вводим ip адрес нашего сервера (эти данные мы получили сразу после регистрации сервера), порт 22.

Далее нажимаем на Open и в появившемся окне нажмите на ДА. Откроется новое окно, в котором нужно ввести имя пользователя и пароль, которые мы получили на электронный адрес. Процесс ввода пароля не будет отображаться, но введя его все равно нажмите на Enter. Теперь мы подключились к нашему серверу.

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

Подключение с помощью FileZilla. Открываем FileZilla: Файл > Менеджер сайтов > Новый сайт > Протокол указываем SFTP, Хост – IP адрес сервера, а также Имя пользователя и пароль, полученные по почте.

Как создать OpenVPN сервер за 5 минут

На самом деле на установку OpenVPN сервера уйдет меньше 5 минут. Установка сервера будет рассматриваться на VPS с операционной системой Ubuntu, для Debian команды идентичны, но скорее всего без sudo (как правило он не предустановлен).

Устанавливаем утилиты, которые нам пригодятся:

Для операционных систем, версии которых не ниже Ubuntu 18.04, Debian 9, CentOS 7. Допускаются данные версии и выше. Скрипт автоматической установки OpenVPN:

Во время установки будет задано несколько вопросов с уже готовым по умолчанию ответом. Можно соглашаться, можно отредактировать и выбрать свой вариант. Протокол соединения, рекомендую, использовать udp. В качестве DNS использую Яндекс DNS (77.88.8.8). Последним вопросом будет предложено задать имя клиентского файла ovpn, который затем будет расположен в директории Root.

Повторный запуск скрипта позволяет:

Для операционных систем, версии которых ниже ранее перечисленных. Выполнять нужно следующий скрипт:

Этот скрипт подойдет для операционных систем не выше, но в том числе, Ubuntu 16.04, Debian 8, Centos 6.

Являясь обладателем роутера ASUS RT-AC59U, который поддерживает клиентские VPN, меня интересовало подключение через роутер. Опытным путем выяснил, что OpenVPN клиент роутера поддерживает подключение, созданное на сервере версии только Ubuntu 16.04.

После установки скрипта VPN уже готов и запущен. Можно с помощью FileZilla скачать файл ovpn и импортировать в нужное устройство. Как импортировать ovpn можно посмотреть на примере статьи: Настройка OpenVPN. Подключение к бесплатным серверам VPN Gate.

По умолчанию через VPN будет проходить весь трафик.

Настройка OpenVPN для фильтрации только заблокированных сайтов

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

Подключившись по PuTTY к серверу, открываем ранее установленный файловый менеджер mc (запускается командой: mc). Переходим к директории: /etc/openvpn/server/

Находим строчку push «redirect-gateway def1 bypass-dhcp» и закомментируем её, добавив перед ней значок #. Данную строчку можно и вовсе удалить. Именно она отвечает за то, чтобы весь трафик шел через VPN.

Затем нам нужно добавить ip адреса, которые будут идти через VPN. Узнать IP адрес сайта можно с помощью Командной строки, командой:

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

Адреса без букв, будут являться адресами IPv4, которые нам нужны. Добавлять адреса в конце файла server.conf нужно следующим образом:

где 5.45.192.0 добавленный нами ip адрес.

Добавив адреса, нажимаем ctrl+O, затем ctrl+ X, для сохранения внесенных изменений и закрытия редактора.

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

Скриншот моего файла server.conf.

После внесения изменений в server.conf нужно перезапустить VPN сервер. Для Ubuntu 18.04, Debian 9, Centos 7 и выше:

Для Ubuntu 16.04, Debian 8, Centos 6 и ниже:

Существует еще один скрипт для автоматической установки OpenVPN сервера:

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

Источник

Уютный VPS-сервер для маленьких проектов: как настроить

image loader

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

Если вам тоже хочется создать в сети свое личное пространство, но вы не знаете, с чего начать, или вам просто интересны такие замечательные программные продукты как Docker, Portainer, Traefik – добро пожаловать под кат.

Введение

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

Когда я учился в институте (это то время, когда у меня в городе только появился интернет по карточкам и первое интернет-кафе), мой друг, который к тому времени умудрился устроится лаборантом на кафедру информатики, активно пытался подсадить меня на Линукс. И вот я, считающий себя продвинутым компьютерщиком, имеющий опыт, наверное, сотни установок винды, прихожу домой после института и уверенным движением вставляю в дисковод диск с дистрибутивом линукс… И что? И ничего.

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

Сейчас все поменялось. С приходом в нашу жизнь веба в его современном виде я пересел на Node.js и волей-неволей стал проникаться идеологией консоли и Linux. Для хостинга своих разработок мне понадобился VPS, и тут оказалось, что VPS с виндой стоят гораздо дороже, так что моя жаба перевесила мои фрустрации относительно консоли, да и наличие скоростного интернета позволило мгновенно находить ответы на возникающие вопросы.

Я научился пользоваться ssh, осознал силу git и стал активно пользоваться docker’ом, но мне все также нравится использовать для своих задач графический интерфейс, и в этой статье я хочу вас познакомить с замечательным набором инструментов, которые позволяют решать мне мои повседневные задачи, не обращаясь лишний раз к консоли.

Подготовка

Я создал VPS минимальной конфигурации (vCPU: 1 core, RAM: 1 ГБ, NVMe: 20 ГБ) на macloud. Для установки на VPS я выбрал дистрибутив Debian 10. При установке я сразу добавил через панель управления SSH-ключ, чтобы было удобно заходить в консоль с помощью SSH-клиента. Для дальнейших экспериментов понадобится следующее:

Устанавливаем необходимые зависимости:

Добавляем официальный 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 – вы легко поймете, как им пользоваться. Установить его можно следующей командой:

А запустить с помощью команды

Увидим до боли знакомую картину:

image loader

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

image loader

На этом предварительная настройка закончена, можно двигаться дальше.

Portainer

Первый инструмент, с которым мне бы хотелось вас познакомить – это Portainer. Portainer – это инструмент для управления контейнерами в Docker, Swarm, Kubernetes и Azure ACI. Как написано в документации Portainer’а:

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

Для моих целей Portainer подходит просто идеально. Давайте познакомимся с ним поближе. В соответствии с документацией https://documentation.portainer.io/v2.0/deploy/ceinstalldocker/ проще всего это сделать следующим образом:

Создадим том для хранения данных:

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

После запуска Portainer будет доступен по адресу http:// :9000/

При первом запуске Portainer попросит вас указать пароль администратора, после чего спросит, каким образом подключится к окружению:

image loader

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

image loader

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

Зайдем в него, и увидим удобный дэшбоард со сводной информацией:

image loader

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

image loader

Здесь пока один контейнер – это сам Portainer. Интерфейс очень удобно позволяет просматривать и управлять контейнерами, а также есть возможность добавлять новые. Можете пройтись по остальным вкладкам и убедится, насколько удобный и продуманный интерфейс имеет Portainer.

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

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

image loader

Для определения стека используется формат docker-compose, именно он работает здесь под капотом. Мне при помощи этой функции удобнее всего построить из контейнеров необходимую инфраструктуру.

На этом предлагаю пока отвлечься от изучения возможностей portainer’а. Думаю, вы уже увидели, что это серьезный инструмент, благодаря которому можно практически полностью отказаться от использования CLI docker’а. Давайте теперь кратко рассмотрим, что же я хочу получить в результате на этом VPS.

У меня периодически возникает потребность в разработке «быстрых» проектов. Я так называю проекты, которые не требуют глубокой проработки. Это могут быть эксперименты, небольшие сайты, боты, сборщики информации и т.п. Все то, что не требует выстраивания цепочки CI/CD. Мне было бы крайне удобно разрабатывать и отлаживать такие приложения прямо там, где они будут работать. Также у меня довольно часто бывает ситуация, когда я нахожусь вдали от своего рабочего места с настроенной средой разработки, и, если что-то в этих моих проектах начинает работать не так как надо, хотелось бы иметь возможность быстро разобраться в ситуации и пофиксить проблему, или просто поработать над проектами пока есть свободная минутка с любого компьютера, даже если на нем нет ничего, кроме браузера и доступа в интернет.

Для удобства доступа у меня есть купленное доменное имя, и я хочу настроить для различных инструментов домены третьего уровня, так, чтобы например portainer был доступен по адресу portainer.example.com. Также я хочу, чтобы всё работало через https, и, чтобы не заморачиваться с покупкой сертификатов SSL, воспользоваться Let’s Encrypt. Еще одно требование, чтобы всё, к чему не предполагается публичный доступ было закрыто аутентификацией.

Для того, чтобы всё это реализовать, давайте познакомимся со следующим замечательным инструментом. Это…

Traefik

Traefik — это реверсивный прокси-сервер, который заточен для работы с контейнерами. Для меня важны следующие его возможности:

Чтобы процесс получения сертификата Let’s encrypt прошел успешно, перед запуском надо убедится, что записи DNS корректно настроены. Я для этих целей использую cloudflare, и в нем конфигурация должна выглядеть примерно так:

image loader

В графе «Content» должен находится адрес нашего VPS.

Если теперь скопировать получившийся docker-compose.yml на сервер выполнить следующую команду:

То после запуска по адресу portainer.example.com будет такая картина:

image loader

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

image loader

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

Также надо в настройках DNS добавить домен третьего уровня traefik.example.com. Это можно сделать по аналогии с тем, как ранее был добавлен домен для portainer. После применения настроек по адресу traefik.example.com увидим дашборд:

image loader

Как видите, 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 и добавлю туда следующую конфигурацию:

image loader

Также перед запуском надо не забыть добавить в записи DNS домен третьего уровня code.example.com. Теперь осталось нажать кнопку Deploy the stack.

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

image loader

Здесь можно вести разработку также как в десктопной версии 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 и добавил в него следующую конфигурацию:

image loader

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

image loader

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

image loader

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

image loader

Рекомендации по первоначальной настройке KeyCloak для docker’а можно подчерпнуть в официальной документации вот здесь www.keycloak.org/getting-started/getting-started-docker.

Вкратце, надо создать новый пользовательский Realm, в нем создать пользователя и добавить нового клиента.

Для клиента необходимо установить Access Type: confidential и добавить в Valid Redirect URIs наши домены, пока это будут «https://traefik.example.com/*» и « code.example.com*»:

image loader

После установки 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. Если все сделано правильно, то появится окно логина:

image loader

После ввода корректных имени пользователя и пароля (которые до этого настроил в KeyCloak) я попал в интерфейс Code server. Все работает!

Подобным образом я закрыл от посторонних глаз дашборд traefik’а. Для этого пришлось сходить в консоль (Portainer не может вносить изменения в конфигурацию стека, который был создан не им, а Traefik я поднимал из консоли) и аналогичным образом отредактировать docker-compose.yml:

Для проверки я зашел по адресу traefik.example.com. Чтобы удостоверится, что все работает как надо, мне пришлось открыть окно браузера в режиме инкогнито, иначе система меня узнавала и не спрашивала пароль, поскольку я ранее уже логинился для доступа к code-server и поэтому KeyCloak аутентифицировал меня автоматически.

Таким образом, при помощи связки KeyCloak и Traefik мне удалось защитить от несанкционированного доступа чувствительные элементы моей системы. Преимущество данного подхода в том, что он позволяет сделать это даже там, где не предусмотрены собственные механизмы аутентификации. Есть конечно и недостатки — KeyCloak достаточно тяжелый, занимает много ресурсов, в первую очередь памяти, да и по возможностям это явный overkill, мне скорее всего не потребуется большая часть того, что он умеет. В качестве альтернативы можно бы было использовать облачный сервис, например traefik-forward-auth имеет встроенную поддержку Google OAuth.

Выводы

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

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

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

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

Для удобства файлы конфигураций я разместил в репозитории вот тут: https://github.com/debagger/vps-docker-workspace

Благодарю за внимание!

Облачные серверы от Маклауд быстрые и безопасные.

Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!

Источник

Поделиться с друзьями
DOMA35.RU