Compare commits

..

3 Commits

5 changed files with 214 additions and 175 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

View File

@@ -0,0 +1,38 @@
---
title: Чем мне так понравился Proxmox и почему тебе тоже стоит его попробовать
published: 2026-04-09T14:10:00.000+04:00
cover: /images/192.168.0.5_8006_.png
tags:
- Linux
draft: false
---
При очередном обновлении домашнего сервера мне досталась машина с двумя Enthernet портами, поэтому после недолгих раздумий было решено заменить мой посредственный роутер от TP-Link и совместить в одном устройстве 2 функции - Gateway домашней сети и домашний сервер с полезными сервисами.
Я не большой специалист в сетевом оборудовании и софте, но обзорный диалог с Gemini показал, что самый интересный для меня вариант - это специализированная ОС, я выбрал [OPNsense](https://opnsense.org). Однако мне хотелось бы сохранить все настроенные сервисы, которые я запускал в Docker, а OPNsense был построен на базе BSD.\
\
Хочется и OPNsense с готовыми инструментами настройки сети, и Linux с его Docker, а ещё желательно чтобы можно было независимо это дело обновлять. Как говорится вообще нельзя, но если очень хочется - то можно!\
\
Не буду тут рассказывать как поставить [Proxmox](https://www.proxmox.com/), такая инструкция всё равно быстро устареет, а актуальный аналог всегда легко найдётся в интернете. Я лучше расскажу о плюсах лично для меня.
### Динамические мощности под каждую систему
У меня сейчас 2 виртуальные машины, и в момент их создания я лишь отдалённо понимал насколько мощный процессор и какой объём памяти им нужен. Но с Proxmox я могу менять их динамически между перезагрузками ОС. Так оказалось что OPNsense работает и на 512мб памяти, но для Web интерфейса очень нужно хотя бы 1Гб, а вот ядро можно оставить и одно. Для моей основной виртуальной машины Linux не хватило 4Гб оперативной памяти в пике - не проблема, два клика и уже их уже 6.
### Бекапы
Бекап виртуальной машины за 3 минуты и восстановление за секунды - это порадовало. Пока работаем без сбоев, но функция опробовала и заслуживает лайка
### Быстрый безголовый сервер в 2 клика
Отдельная крутая функция - LXC контейнер. Пока того как я освободил роутер было решено его перепрошить, нужен был TFTP-сервер. Запустил его в Proxmox за 1 минуту, сделал всё необходимое и просто удалил.
### И даже больше...
Сейчас у меня всего 1 сервер с Proxmox, а ведь на полную он раскрывается именно в кластере! Можно будет настраивать отказоустойчивость, распределённое сетевое файловое хранилище, перемещать ВМ с одного сервера на другой без остановки... звучит как магия.
Следующий эксперимент - поставить Windows внутрь Proxmox. Во-первых так одно физическое устройство можно поделить на два рабочих места, во-вторых рядом с рабочей виндой так же удобно запускать ВМ и LXC например под бекенд или базу данных.
### Вердикт
Всем рекомендую попробовать Proxmox на домашнем сервере, а сам буду изучать гипервизоры дальше, и может быть попробую ESXi

View File

@@ -1,11 +1,12 @@
{ {
"sourceCode": "https://git.stepanovplaton.ru/StepanovPlaton/OSin1000Lines", "sourceCode": "https://git.stepanovplaton.ru/StepanovPlaton/OSin1000Lines",
"endDate": "2026-02-15T08:00:00.000+04:00",
"featured": false, "featured": false,
"startDate": "2026-02-03T08:00:00.000+04:00", "startDate": "2026-02-03T08:00:00.000+04:00",
"techStack": [ "techStack": [
"C" "C"
], ],
"status": "in-progress", "status": "completed",
"title": "OSin1000Lines", "title": "OSin1000Lines",
"tags": [], "tags": [],
"description": "Операционная система для QEMU RISC-V в 1000 строк кода на С", "description": "Операционная система для QEMU RISC-V в 1000 строк кода на С",

View File

@@ -1,194 +1,194 @@
site: site:
siteURL: "https://stepanovplaton.ru/" siteURL: "https://stepanovplaton.ru/"
title: "Степанов Платон" title: "Степанов Платон"
subtitle: "" subtitle: ""
lang: "ru" lang: "ru"
translate: translate:
enable: false enable: false
service: "client.edge" service: "client.edge"
showSelectTag: false showSelectTag: false
autoDiscriminate: true autoDiscriminate: true
ignoreClasses: ignoreClasses:
- "ignore" - "ignore"
- "banner-title" - "banner-title"
- "banner-subtitle" - "banner-subtitle"
ignoreTags: ignoreTags:
- "script" - "script"
- "style" - "style"
- "code" - "code"
- "pre" - "pre"
timeZone: 4 timeZone: 4
font: font:
"Example - ZenMaruGothic": "Example - ZenMaruGothic":
src: "https://fonts.googleapis.com/css2?family=Zen+Maru+Gothic&display=swap" src: "https://fonts.googleapis.com/css2?family=Zen+Maru+Gothic&display=swap"
family: "Zen Maru Gothic" family: "Zen Maru Gothic"
themeColor: themeColor:
hue: 90 hue: 90
fixed: true fixed: true
defaultTheme: "dark" defaultTheme: "dark"
wallpaper: wallpaper:
mode: "fullscreen" mode: "fullscreen"
src: src:
desktop: desktop:
- "/assets/images/banner1.png" - "/assets/images/banner1.png"
mobile: mobile:
- "/assets/images/banner1.png" - "/assets/images/banner1.png"
position: "center" position: "center"
carousel: carousel:
enable: false enable: false
interval: 12 interval: 12
kenBurns: true kenBurns: true
banner: banner:
homeText: homeText:
enable: true
title: "Степанов Платон"
subtitle:
- "Программный инженер, разработчик"
typewriter:
enable: true
speed: 111
deleteSpeed: 51
pauseTime: 3000
credit:
enable: false
text: "Describe"
url: ""
navbar:
transparentMode: "semifull"
waves:
enable: true
performanceMode: false
fullscreen:
zIndex: -1
opacity: 0.7
blur: 1
navbar:
transparentMode: "semi"
loadingOverlay:
enable: true enable: true
title: title: "Степанов Платон"
enable: true subtitle:
content: "Загрузка..." - "Программный инженер, разработчик"
interval: 1.5 typewriter:
spinner: enable: true
enable: true speed: 111
interval: 1.5 deleteSpeed: 51
favicon: pauseTime: 3000
- src: "/favicon/favicon.ico" credit:
theme: "light" enable: false
sizes: "96x96" text: "Describe"
- src: "/favicon/favicon.ico" url: ""
theme: "dark" navbar:
sizes: "96x96" transparentMode: "semifull"
bangumi: waves:
userId: "your-bangumi-id" enable: true
generateOgImages: false performanceMode: false
fullscreen:
zIndex: -1
opacity: 0.2
blur: 1
navbar:
transparentMode: "semi"
loadingOverlay:
enable: true
title:
enable: true
content: "Загрузка..."
interval: 1.5
spinner:
enable: true
interval: 1.5
favicon:
- src: "/favicon/favicon.ico"
theme: "light"
sizes: "96x96"
- src: "/favicon/favicon.ico"
theme: "dark"
sizes: "96x96"
bangumi:
userId: "your-bangumi-id"
generateOgImages: false
umami: umami:
enabled: false enabled: false
baseUrl: "https://api.umami.is" baseUrl: "https://api.umami.is"
apiKey: "" apiKey: ""
scripts: "" scripts: ""
navbar: navbar:
links: links:
- "Projects" - "Projects"
- "Skills" - "Skills"
- "Timeline" - "Timeline"
# - "Diary" # - "Diary"
- "Albums" - "Albums"
# - "Friends" # - "Friends"
- "WorthMentioning" - "WorthMentioning"
- "About" - "About"
sidebar: sidebar:
components: components:
left: left:
- type: "profile" - type: "profile"
position: "top" position: "top"
#- #-
# type: "announcement" # type: "announcement"
# position: "top" # position: "top"
- type: "categories" - type: "categories"
position: "sticky" position: "sticky"
responsive: responsive:
collapseThreshold: 5 collapseThreshold: 5
- type: "tags" - type: "tags"
position: "sticky" position: "sticky"
responsive: responsive:
collapseThreshold: 20 collapseThreshold: 20
right: right:
- type: "toc" - type: "toc"
position: "sticky" position: "sticky"
customProps: customProps:
depth: 3 depth: 3
#- type: "statistics" #- type: "statistics"
# position: "sticky" # position: "sticky"
profile: profile:
avatar: "/assets/images/avatar.jpg" avatar: "/assets/images/avatar.jpg"
name: "Степанов Платон" name: "Степанов Платон"
bio: "Приятно познакомиться!" bio: "Приятно познакомиться!"
links: links:
- name: "Git" - name: "Git"
icon: "fa6-brands:git-alt" icon: "fa6-brands:git-alt"
url: "https://git.stepanovplaton.ru" url: "https://git.stepanovplaton.ru"
- name: "Telegram" - name: "Telegram"
icon: "fa6-brands:telegram" icon: "fa6-brands:telegram"
url: "https://t.me/StepanovPlaton" url: "https://t.me/StepanovPlaton"
- name: "HeadHunter" - name: "HeadHunter"
rawIcon: '<svg width="25" height="25" viewBox="0 0 400 400" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M400 200C400 310.457 310.457 400 200 400C89.5431 400 0 310.457 0 200C0 89.5431 89.5431 0 200 0C310.457 0 400 89.5431 400 200ZM160.34 161.226C146.98 161.226 136.74 166.526 130.84 176.486V127.126H99.8802V262.406H130.84V214.846C130.84 203.766 133.16 196.666 136.64 192.486C140.02 188.326 144.76 186.706 149.9 186.706C154.44 186.706 158.02 188.126 160.54 190.686C163.06 193.346 164.5 197.406 164.5 203.086V262.286H195.46V197.126C195.46 186.046 192.18 177.046 185.98 170.786C179.88 164.546 171.08 161.226 160.34 161.226ZM299.58 170.886C293.38 164.626 284.58 161.226 273.84 161.226C260.48 161.226 250.24 166.526 244.34 176.486V127.126H213.38V262.406H244.34V214.846C244.34 203.766 246.66 196.666 250.14 192.486C253.52 188.326 258.26 186.706 263.4 186.706C267.94 186.706 271.52 188.126 274.04 190.686C276.56 193.346 278 197.406 278 203.086V262.286H308.96V197.126C308.98 186.046 305.68 177.046 299.58 170.886Z" fill="currentColor"/></svg>' rawIcon: '<svg width="25" height="25" viewBox="0 0 400 400" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M400 200C400 310.457 310.457 400 200 400C89.5431 400 0 310.457 0 200C0 89.5431 89.5431 0 200 0C310.457 0 400 89.5431 400 200ZM160.34 161.226C146.98 161.226 136.74 166.526 130.84 176.486V127.126H99.8802V262.406H130.84V214.846C130.84 203.766 133.16 196.666 136.64 192.486C140.02 188.326 144.76 186.706 149.9 186.706C154.44 186.706 158.02 188.126 160.54 190.686C163.06 193.346 164.5 197.406 164.5 203.086V262.286H195.46V197.126C195.46 186.046 192.18 177.046 185.98 170.786C179.88 164.546 171.08 161.226 160.34 161.226ZM299.58 170.886C293.38 164.626 284.58 161.226 273.84 161.226C260.48 161.226 250.24 166.526 244.34 176.486V127.126H213.38V262.406H244.34V214.846C244.34 203.766 246.66 196.666 250.14 192.486C253.52 188.326 258.26 186.706 263.4 186.706C267.94 186.706 271.52 188.126 274.04 190.686C276.56 193.346 278 197.406 278 203.086V262.286H308.96V197.126C308.98 186.046 305.68 177.046 299.58 170.886Z" fill="currentColor"/></svg>'
url: "/assets/Резюме_Степанов_Платон.pdf" url: "/assets/Резюме_Степанов_Платон.pdf"
- name: "Email" - name: "Email"
icon: "material-symbols:mail-outline" icon: "material-symbols:mail-outline"
copy: "mail2platon@yandex.ru" copy: "mail2platon@yandex.ru"
announcement: announcement:
enable: false enable: false
post: post:
showLastModified: true showLastModified: true
showCoverInContent: false showCoverInContent: false
expressiveCode: expressiveCode:
theme: "github-dark" theme: "github-dark"
license: license:
enable: true enable: true
name: "CC BY-NC-SA 4.0" name: "CC BY-NC-SA 4.0"
url: "https://creativecommons.org/licenses/by-nc-sa/4.0/" url: "https://creativecommons.org/licenses/by-nc-sa/4.0/"
comment: comment:
enable: false enable: false
twikoo: twikoo:
envId: "https://twikoo.vercel.app" envId: "https://twikoo.vercel.app"
lang: "en" lang: "en"
footer: footer:
enable: false enable: false
particle: particle:
enable: false enable: false
musicPlayer: musicPlayer:
enable: true enable: true
mode: "local" mode: "local"
local: local:
playlist: playlist:
- id: 1 - id: 1
title: "Children of the Omnissiah (Warhammer 40,000: Mechanicus OST)" title: "Children of the Omnissiah (Warhammer 40,000: Mechanicus OST)"
artist: "Guillaume David" artist: "Guillaume David"
cover: "assets/images/war.jpg" cover: "assets/images/war.jpg"
url: "assets/music/war.mp3" url: "assets/music/war.mp3"
duration: 106 duration: 106
- id: 2 - id: 2
title: "Move (Rimworld P-Music)" title: "Move (Rimworld P-Music)"
artist: "Peppsen" artist: "Peppsen"
cover: "assets/images/rimworld.jpg" cover: "assets/images/rimworld.jpg"
url: "assets/music/rimworld.mp3" url: "assets/music/rimworld.mp3"
duration: 204 duration: 204
- id: 3 - id: 3
title: "Reflecting" title: "Reflecting"
artist: "Michael Regner" artist: "Michael Regner"
cover: "assets/images/reflecting.jpg" cover: "assets/images/reflecting.jpg"
url: "assets/music/reflecting.mp3" url: "assets/music/reflecting.mp3"
duration: 90 duration: 90
autoplay: false autoplay: false
pio: pio:
enable: false enable: false