mirror of
https://github.com/ada-dmitry/ada-dmitry.github.io.git
synced 2026-09-24 01:10:35 +00:00
Add notes from summer IT school and home server setup
- Created a new note on home server setup detailing the transition from old PCs to a mini-PC server using Proxmox, including networking and remote access solutions. - Added notes from the summer IT school covering various topics including IT infrastructure, automation, virtualization, and networking. - Included detailed explanations of IT infrastructure layers, hardware components, automation tools, and virtualization technologies. - Documented key concepts such as DevOps, SDN, NFV, and cloud models, along with practical scenarios and advantages of each technology.
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
---
|
||||
created: 04.08.2025
|
||||
title: Как Дима сервер домашний поднимал...
|
||||
layout: single
|
||||
|
||||
---
|
||||
Как я и обещал, запускаю небольшой цикл постов о моём маленьком проекте: "Домашняя виртуализация на базе мини-ПК"
|
||||
|
||||
|
||||
Пока я вижу сам цикл так:
|
||||
|
||||
1) Базовые знания (Что такое виртуализация, Proxmox и зачем оно вообще надо?)
|
||||
|
||||
2) Настройка и первый контейнер
|
||||
|
||||
3) А как работать не с домашнего ПК? (Всё, про удаленный доступ и с чем его едят)
|
||||
|
||||
4) Настройка git-сервера
|
||||
|
||||
5) Настройка NAS
|
||||
|
||||
6) Машинка для ботов
|
||||
|
||||
|
||||
|
||||
Начнём с базы, которая нам в будущем поможет чуть лучше понимать друг друга)
|
||||
|
||||
|
||||
|
||||
### Виртуализация
|
||||
|
||||
Представьте себе сервер, что первое приходит в голову? Наверное, огромные серверные стойки, большое количество данных, шумное помещение и ещё, может быть, невыносимый холод (надо ж охлаждать эту лабудень...)
|
||||
|
||||
В целом, всё верно, но тут стоит пояснить - сервером, по факту, можно назвать и компьютер, который стоит у вас дома, на работе или на учебе.
|
||||
|
||||
**Сервер -** это тот же комьютер, но нацеленный на круглосуточную работу, на нем не работает обычный пользователь (ну, точнее, может, но об этом в другой раз), на нем "_крутятся_" десятки, а то и сотни сервисов. Ну и главным отличием сервера от обычного ПК можно назвать "_избыточность_" - два блока питания, много плашек оперативной памяти, несколько процессоров (хотя тут спорно), т.е. всё работает на то, чтоб сервер не отвалился, если какая-то из комплектующих решит почить.
|
||||
|
||||
|
||||
|
||||
С сервером разобрались, просто очень мощный круглосуточно работающий и неломающийся (условно) компьютер, круто, классно, вопрос: "Почему мы не можем просто запускать на нём нужные нам программы, как мы это делаем обычно, они будут работать параллельно, как при классическом использовании?"
|
||||
Вопрос, сам по себе, очень логичный, но ответ из него вытащить сложно, тут нужно понимание того, а что вообще из себя представляют программы.
|
||||
|
||||
Сильно углубляться не будем, сойдемся на том, что программа (== сервис) - это рабочий, которому нужен определенный набор инструментов. Притом, разным рабочим нужны разные инструменты, но вот дилемма, одному рабочему удобно записывать планы в блокнот, а другом в заметки на телефоне. Суть одна, а вот версии "инструментария" разные. Ну, ещё программы могут очень ловко забирать друг у друга ресурсы, а это тоже плохо.
|
||||
|
||||
Мы можем, конечно, физически разносить программы, т.е. у нас один сервер крутит почту, например, второй - какой-нибудь сайт (типа телеграмма, почему нет), а третий пусть следит за этим всем (мониторинг). Проблема в том, что, например, мониторинг не так много ресурсов требует, а мы для него выделили целый отдельный сервер (от которого он кушает дай б-г 2% мощностей).
|
||||
|
||||
И вот тут на арену влетает магическое слово - **виртуализация.** Фактически, мы просто говорим серверу, что он теперь не просто комьютер, а множество комьютеров, объединенных физически. Мы четко делим сервер на отдельные - **изолированные** _ПК_, с разделением мощностей и инструментария. На каждую из таких ВМ (виртуальная машина - виртуальный ПК на сервере) мы ставим свою ОС (операционная система), свои инструменты, и разворачиваем приложение - победа!
|
||||
|
||||
|
||||
|
||||
На этом я закончу первый пост, он получился весьма объемным.
|
||||
|
||||
Следующим шагом для нас будет рассказ про конкретные виды виртуализаций, а пока, вам вопрос - **"Как называется программа, которая управляет виртуализацией и виртуальными машинами?"**
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
title: Коробочки-коробочки...
|
||||
layout: single
|
||||
---
|
||||
Мы возвращаемся к нашей эпопее с домашним сервером, напомню, мы в прошлый раз обсуждали, что такое *виртуализация* - это технология, с помощью которой мы можем на одном устройстве (сервере, ПК и т.д.) разместить множество "виртуальных устройств".
|
||||
|
||||
Сегодня мы поговорим о таких вещах, как *контейнеризация* и заденем при этом понятие *гипервизора*.
|
||||
|
||||
---
|
||||
|
||||
Начнем, пожалуй, как раз с *гипервизора*, кратко, емко, четко:
|
||||
## Гипервизоры
|
||||
|
||||
***Гипервизор*** - программа, позволяющая управлять виртуальными машинами и контейнерами (есть небольшое различие, но об этом дальше). На этом, в общем-то, всё, стоит ещё сказать, что гипервизоры бывают двух типов:
|
||||
|
||||
1) <u>*Bare-metal*</u> - т.е. гипервизоры представляющие собой "операционную систему", которая устанавливается напрямую на "железо". Это обеспечивает **наибольшую** производительность и совместимость, но, очевидно, что это сложнее, чем просто поставить VirtualBox)
|
||||
> Примеры: Proxmox, ESXi, oVirt(и производные)
|
||||
|
||||
2) *<u>Hosted</u>* - гипервизор, являющийся натурально программой для уже существующей системы. Такие гипервизоры проще в освоении и используются для пользовательского использования (на винду линукс накатить попробовать).
|
||||
Меньшая производительность т.к. комплектующие эмулируются для машин, но проще в использовании.
|
||||
> Примеры: VMWare Workstation, VirtualBox, QEMU/KVM VM Manager.
|
||||
|
||||
|
||||

|
||||
|
||||
## Контейнеризация
|
||||
|
||||
Как мы уже говорили, очень круто изолировать каждую программу в отдельной машине, отдельный инструментарий и всё такое, но в чем же проблема?
|
||||
|
||||
А проблема в том, что мы для каждой программки поднимаем *полноценную (иногда урезанную) ОС*, со своим ядром, своими особенностями и т.д.
|
||||
|
||||
И, разумеется, это всё надо питать ресурсами, что дорого, очень дорого, особенно, если у нас отказоустойчивый кластер с *десятками*, а то и *сотнями* машин.
|
||||
|
||||
**Какой же выход?** А очень простой, давайте не поднимать для каждой "машины" отдельную ОС с ядром, а использовать одно - которое предоставляет ОС сервера, а приложения запускать в изолированных "окружениях".
|
||||
|
||||
|
||||
> [!info] Пример
|
||||
> Я не уверен, что смогу объяснить, как это работает, простым языком, но просто представьте, что мы работаем в ресторане и наша задача держать сырье (продукты) в холоде, чтоб те не испортились.
|
||||
>
|
||||
> Вот виртуализация, это если мы для каждого ящика с продуктами будем покупать отдельный холодильник, да, это круто, что выход из строя одного холодильника не повлияет на другие, но пипец, как затратно и по деньгам и по электричеству.
|
||||
>
|
||||
> С другой же стороны, мы можем выделить целую комнату под холодильник, там наладить централизованное охлаждение и туда уже сгружать ящики с продуктами, вот это контейнеризация, когда мы отдельные ящики охлаждаем общей системой.
|
||||
|
||||
|
||||
> К слову, почему я сказал, что гипервизоры для контейнеров и виртуалок отличаются? В сущности, для контейнеров нет как таковой системы, но есть CRI - Container Runtime Interface, то, с помощью чего, контейнеры и запускаются.
|
||||
> ВМ такого не надо, у них у каждой своё ядро. (Но я не хочу разделять понятия, потому что сейчас гипервизоры универсальны и имеют как среду для ВМ, так и CRI)
|
||||
>
|
||||
> <img src="../assets/images/hs2/serv_container1.png" alt="Описание" width="30%">
|
||||
|
||||
В общем-то, на этом всё, но напоследок скажу, что в продакшене часто используют смешанный тип, т.е. мы на виртуализации разворачиваем среду для контейнеризации и в машинах разворчиваем контейнеры смежных приложений, так мы изолируем группы программ друг от друга.
|
||||
|
||||
Спасибо за внимание, в следующей статье мы уже перейдем к конкретным решениям, которые использую я.
|
||||
@@ -0,0 +1,110 @@
|
||||
---
|
||||
title: Новое начало
|
||||
layout: single
|
||||
---
|
||||
|
||||
Доброго вечера, коллеги!
|
||||
|
||||
Перейдем таки к конкретике:
|
||||
Изначально, я хотел старый компьютер превратить в сервер (ну вот страсть у меня появилась, ничего не поделать)
|
||||
|
||||
Взял я несколько старых ПК, в т.ч. с дачи, вытащил из них всё, что можно вытащить.
|
||||
Собрал, по итогу, страшную штуку, которую положил себе под кровать в общежитии (поменял ещё кулеры, чтоб не шумел), но надежды не увенчались успехом, соседу не понравился шум ПК(хоть его и не было слышно...). Ладно, подумал было я, сервер, работающий только днем - не сервер.
|
||||
|
||||
Отложил я идею, все комплектующие из сервера в основной ПК, все харды (HDD), оперативную память, сделал себе убер-машину.
|
||||
|
||||
Прошло пару месяцев и вот я загорелся идеей купить мини-пк (те, что ставят в офисе обычным работника, которым не нужны огромные мощности, но вашна компактность) и на базе него сделать домашний сервер.
|
||||
|
||||
Спустя некоторое время поисков, я нашел хороший вариант, а именно - китайский мини-пк с неплохими характеристиками и аж 4-мя слотами под m.2 SSD (потом расскажу, зачем и что это вообще такое)
|
||||
|
||||

|
||||
|
||||
Значит, недолго думая, я его заказал, он пришел, круто, классно, что дальше?
|
||||
|
||||
А дальше, мы начинаем новую главу нашего рассказа:
|
||||
|
||||
## Proxmox
|
||||
|
||||
Как я уже рассказывал, существует несколько видов [[Коробочки-коробочки...#Гипервизоры|гипервизоров]], мы поставим на наш сервер гипервизор первого типа, т.е. непосредственно на "железо".
|
||||
Это нам позволяет независимо друг от друга запускать ВМ-ки и контейнеры.
|
||||
Что такое конкретно ***Proxmox***? Это Open-Source решение для виртуализации, т.е. бесплатное, т.е. разрабатывается открытым сообществом (ну, сейчас уже не совсем, но так или иначе).
|
||||
Почему именно это решение? Есть oVirt, который тоже бесплатный, но это прям совсем Enterprise решение, там очень много фишек, которые обычному пользователю не нужны, да и Proxmox с этой точки зрения более *коробочное* решение.
|
||||
|
||||

|
||||
|
||||
Вот как выглядит установленный Proxmox (ну, точнее уже с несколькими развернутыми контейнерами).
|
||||
Тут вы сможете обнаружить список уже развернутых систем, краткую сводку по системе и много-много другое. Интерфейс слегка страшный, но только на первый взгляд.
|
||||
|
||||
Идем дальше, кратко расскажу, как я (и вы) получили доступ к этому сайту (у меня есть ещё несколько, но они скрыты от публики)
|
||||
|
||||
Представьте, у вас есть комьютер в домашней сети. У него есть опредлеленный ip-адрес (его ему выдал DHCP-сервер, но об этом в другой раз) формата `192.168.*.*`, это его внутренний ip, т.е. он за NAT'ом
|
||||
|
||||
> [!info] NAT
|
||||
> NAT (Network Address Translation) — это как переводчик между твоей домашней сетью и Интернетом.
|
||||
> Внутри дома у всех устройств есть свои «внутренние» IP-адреса, которые снаружи никто не видит.
|
||||
> Когда ты выходишь в Интернет, роутер меняет этот адрес на один «внешний» общий для всей сети.
|
||||
|
||||
Если ещё проще, то он просто маскирует твой личный ip под общий для всей сети. Более того, ip твоего роутера тоже не статичный *зачастую*, а динамический, выдаваемый провайдером.
|
||||
|
||||
---
|
||||
|
||||
Итого, у нашего сервера постоянно меняющийся ip, к которому мы не можем обращаться из интернета (это круто, да, безопасность, но вопрос об удаленном доступе уходит сам собой:)).
|
||||
Что делать? Вариантов несколько, но практически везде, кодовое слово "*туннель*":
|
||||
|
||||
1) Tailscale - это готовое решения для создания виртуальной локальной сети (каждому устройству в сети выдается "виртуальный ip")
|
||||
|
||||
***Плюсы***: Быстро, бесплатно, почти автоматически.
|
||||
|
||||
|
||||
***Минусы***: Никакой гибкости, решение только для индивидуального доступа (вот такой сайт не сделать), безопасность перекладывается на внешнего вендора.
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
2) VPS - сервер
|
||||
|
||||
|
||||
**Решение**: Мы покупаем маленький внешний сервер у провайдера (в моем случае Timecloud.Web, *не реклама*, у них явно маркетинг не на мой канал направлен), у него есть белый IP.
|
||||
Что дальше? А дальше, мы поднимаем на этом VPS "обратный прокси", т.е. веб-сервер, но который не сам по себе будет выводить картинку, а "переадресовывать" запросы пользователя на наш внутренний сервер.
|
||||
|
||||
|
||||
***Плюсы***: Гибко, интересно.
|
||||
|
||||
|
||||
***Минусы***: Стоит денег, сложно в настройке, безопасность ложится на нас.
|
||||
|
||||
> VPS (Virtual Private Server) — это как отдельный «компьютер» внутри большого компьютера, который тебе сдают в аренду.
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
Как вы понимаете, я - мазозист и выбрал VPS (ну, ещё мне нужен был вывод сайта в публичное поле).
|
||||
|
||||
Но вот проблема, наш VPS точно так же не видит нащ сервер, что делать? ТУННЕЛЬ!
|
||||
|
||||
Мы поднимаем буквально VPN (Virtual Private Network) - проще говоря, делаем такой же tailscale, но сами)
|
||||
|
||||
Вот поднимаем туннель, т.е. зашифрованное соединение между двумя клиентами (peer2peer), они друг друга видят, притом VPS может свободно обращаться устройствам внутри сервера, что нам и нужно.
|
||||
|
||||
Не буду углубляться в детали происходящего, но я использую WireGuard, как туннель.
|
||||
|
||||

|
||||
|
||||
Притом, что удобно, мы этот самый WG используем и как способ защиты от нежелательных гостей, ведь мы можем настроить наши сайты так, чтобы они пускали к себе только пользователей, которые тоже являются участниками это приватной сети. Кайфы, да?
|
||||
Отвечу за вас, да!
|
||||
|
||||
У нас есть классный способ "проникать" на наши ресурсы, притом четко разграничивать доступы (вы этот сайт видите, а некоторые не видите).
|
||||
|
||||
Последнее, что я опишу в этой огромной статье - это домен - dg.ada-dev.ru (dg - digitalgarden).
|
||||
В данном случае, это поддомен домена ada-dev.ru, который зарегистрирован на меня в том же TimeCloud.Web.
|
||||
На него я выписываю сертификаты, поэтому на вас не ругается браузер, когда вы заходите на этот сайт по http**s**, что делает наше с вами соединение безопасным)
|
||||
|
||||
На этом на сегодня все, рассказывайте, что было понятно, что не понятно, что пояснить, куда что добавить и о чем сделать следующую статью:
|
||||
1) Продолжаем про сервер
|
||||
2) Поговорим о сторонних вещах (DNS, DHCP, или что-то ещё)
|
||||
|
||||
Всем спокойной ночи и прекрасных выходных!
|
||||
|
||||

|
||||
Reference in New Issue
Block a user