43 lines
71 KiB
HTML
43 lines
71 KiB
HTML
<!DOCTYPE html><html lang="en"> <head><!-- Global Metadata --><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" type="image/svg+xml" href="/favicon/favicon.ico"><meta name="generator" content="Astro v4.7.1"><link rel="preload" href="/fonts/atkinson-regular.woff" as="font" type="font/woff" crossorigin><link rel="preload" href="/fonts/atkinson-bold.woff" as="font" type="font/woff" crossorigin><!-- Canonical URL --><link rel="canonical" href="https://astro-sphere-demo.vercel.app/blog/"><!-- Primary Meta Tags --><title>Блог | Плата Управления РФ</title><meta name="title" content="Блог | Плата Управления РФ"><meta name="description" content="В этом разделе мы рассказываем о ходе наших работ."><!-- Open Graph / Facebook --><meta property="og:type" content="website"><meta property="og:url" content="https://astro-sphere-demo.vercel.app/blog/"><meta property="og:title" content="Блог | Плата Управления РФ"><meta property="og:description" content="В этом разделе мы рассказываем о ходе наших работ."><meta property="og:image" content="https://astro-sphere-demo.vercel.app/img04.jpg"><!-- Twitter --><meta property="twitter:card" content="summary_large_image"><meta property="twitter:url" content="https://astro-sphere-demo.vercel.app/blog/"><meta property="twitter:title" content="Блог | Плата Управления РФ"><meta property="twitter:description" content="В этом разделе мы рассказываем о ходе наших работ."><meta property="twitter:image" content="https://astro-sphere-demo.vercel.app/img04.jpg"><!-- Sitemap --><link rel="sitemap" href="/sitemap-index.xml"><!-- RSS Feed --><link rel="alternate" type="application/rss+xml" title="Блог | Плата Управления РФ" href="https://astro-sphere-demo.vercel.app/rss.xml"><!-- Global Scripts --><script src="/js/theme.js"></script><script src="/js/scroll.js"></script><script src="/js/animate.js"></script><!-- <ViewTransitions /> --><link rel="stylesheet" href="/_astro/_slug_.0h5GVtX4.css"><script type="module" src="/_astro/hoisted.BGfjo5mV.js"></script></head> <body> <header id="header" class="fixed top-0 w-full h-16 z-50 " data-astro-cid-3ef6ksr2> <div class="w-full h-full mx-auto px-5 max-w-screen-md"> <div class="relative h-full w-full" data-astro-cid-3ef6ksr2> <div class="absolute left-0 top-1/2 -translate-y-1/2 flex gap-1 font-semibold" data-astro-cid-3ef6ksr2> <a href="/" class="flex gap-1 text-current hover:text-black dark:hover:text-white transition-colors duration-300 ease-in-out" data-astro-cid-3ef6ksr2> <svg class="size-6 fill-current" data-astro-cid-3ef6ksr2> <use href="/static/logo.svg" data-astro-cid-3ef6ksr2></use> </svg> <div data-astro-cid-3ef6ksr2> Плата Управления РФ </div> </a> </div> <div class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" data-astro-cid-3ef6ksr2> <nav class="hidden md:flex items-center justify-center text-sm gap-1" data-astro-cid-3ef6ksr2> <a href="/" class="h-8 rounded-full px-3 text-current flex items-center justify-center transition-colors duration-300 ease-in-out hover:bg-black/5 dark:hover:bg-white/20 hover:text-black dark:hover:text-white" data-astro-cid-3ef6ksr2> Главная </a><a href="/work" class="h-8 rounded-full px-3 text-current flex items-center justify-center transition-colors duration-300 ease-in-out hover:bg-black/5 dark:hover:bg-white/20 hover:text-black dark:hover:text-white" data-astro-cid-3ef6ksr2> Работа </a><a href="/blog" class="h-8 rounded-full px-3 flex items-center justify-center transition-colors duration-300 ease-in-out bg-black dark:bg-white text-white dark:text-black" data-astro-cid-3ef6ksr2> Блог </a><a href="/projects" class="h-8 rounded-full px-3 text-current flex items-center justify-center transition-colors duration-300 ease-in-out hover:bg-black/5 dark:hover:bg-white/20 hover:text-black dark:hover:text-white" data-astro-cid-3ef6ksr2> Проекты </a> </nav> </div> <div class="buttons absolute right-0 top-1/2 -translate-y-1/2 flex gap-1" data-astro-cid-3ef6ksr2> <a href="/search" aria-label="Search blog posts and projects on Плата Управления РФ" class="hidden md:flex size-9 rounded-full p-2 items-center justify-center bg-transparent hover:bg-black/5 dark:hover:bg-white/20 stroke-current hover:stroke-black hover:dark:stroke-white border border-black/10 dark:border-white/25 transition-colors duration-300 ease-in-out" data-astro-cid-3ef6ksr2> <svg class="size-full" data-astro-cid-3ef6ksr2> <use href="/ui.svg#search" data-astro-cid-3ef6ksr2></use> </svg> </a> <a href="/rss.xml" target="_blank" aria-label="Rss feed for Плата Управления РФ" class="hidden md:flex size-9 rounded-full p-2 items-center justify-center bg-transparent hover:bg-black/5 dark:hover:bg-white/20 stroke-current hover:stroke-black hover:dark:stroke-white border border-black/10 dark:border-white/25 transition-colors duration-300 ease-in-out" data-astro-cid-3ef6ksr2> <svg class="size-full" data-astro-cid-3ef6ksr2> <use href="/ui.svg#rss" data-astro-cid-3ef6ksr2></use> </svg> </a> <button id="header-theme-button" aria-label="Toggle light and dark theme" class="hidden md:flex size-9 rounded-full p-2 items-center justify-center bg-transparent hover:bg-black/5 dark:hover:bg-white/20 stroke-current hover:stroke-black hover:dark:stroke-white border border-black/10 dark:border-white/25 transition-colors duration-300 ease-in-out" data-astro-cid-3ef6ksr2> <svg class="size-full block dark:hidden" data-astro-cid-3ef6ksr2> <use href="/ui.svg#sun" data-astro-cid-3ef6ksr2></use> </svg> <svg class="size-full hidden dark:block" data-astro-cid-3ef6ksr2> <use href="/ui.svg#moon" data-astro-cid-3ef6ksr2></use> </svg> </button> <button id="header-drawer-button" aria-label="Toggle drawer open and closed" class="flex md:hidden size-9 rounded-full p-2 items-center justify-center bg-transparent hover:bg-black/5 dark:hover:bg-white/20 stroke-current hover:stroke-black hover:dark:stroke-white border border-black/10 dark:border-white/25 transition-colors duration-300 ease-in-out" data-astro-cid-3ef6ksr2> <svg id="drawer-open" class="size-full" data-astro-cid-3ef6ksr2> <use href="/ui.svg#menu" data-astro-cid-3ef6ksr2></use> </svg> <svg id="drawer-close" class="size-full" data-astro-cid-3ef6ksr2> <use href="/ui.svg#x" data-astro-cid-3ef6ksr2></use> </svg> </button> </div> </div> </div> </header> <script>
|
||
function toggleDrawer() {
|
||
const drawer = document.getElementById("drawer")
|
||
const drawerButton = document.getElementById("header-drawer-button")
|
||
drawer?.classList.toggle("open")
|
||
drawerButton?.classList.toggle("open")
|
||
}
|
||
|
||
function initializeDrawerButton() {
|
||
const drawerButton = document.getElementById("header-drawer-button")
|
||
drawerButton?.addEventListener("click", toggleDrawer)
|
||
}
|
||
|
||
document.addEventListener("astro:after-swap", initializeDrawerButton)
|
||
initializeDrawerButton()
|
||
</script> <div id="drawer" class="fixed inset-0 h-0 z-40 overflow-hidden flex flex-col items-center justify-center md:hidden bg-neutral-100 dark:bg-neutral-900 transition-[height] duration-300 ease-in-out" data-astro-cid-hxtyo74s> <nav class="flex flex-col items-center space-y-2" data-astro-cid-hxtyo74s> <a href="/" class="flex items-center justify-center px-3 py-1 rounded-full text-current hover:text-black dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/20 transition-colors duration-300 ease-in-out" data-astro-cid-hxtyo74s> Главная </a><a href="/work" class="flex items-center justify-center px-3 py-1 rounded-full text-current hover:text-black dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/20 transition-colors duration-300 ease-in-out" data-astro-cid-hxtyo74s> Работа </a><a href="/blog" class="flex items-center justify-center px-3 py-1 rounded-full hover:text-black dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/20 transition-colors duration-300 ease-in-out pointer-events-none bg-black dark:bg-white text-white dark:text-black" data-astro-cid-hxtyo74s> Блог </a><a href="/projects" class="flex items-center justify-center px-3 py-1 rounded-full text-current hover:text-black dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/20 transition-colors duration-300 ease-in-out" data-astro-cid-hxtyo74s> Проекты </a> </nav> <div class="flex gap-1 mt-5" data-astro-cid-hxtyo74s> <a href="/search" aria-label="Search blog posts and projects on Плата Управления РФ" class="size-9 rounded-full p-2 items-center justify-center bg-transparent hover:bg-black/5 dark:hover:bg-white/20 stroke-current hover:stroke-black hover:dark:stroke-white border border-black/10 dark:border-white/25 transition-colors duration-300 ease-in-out" data-astro-cid-hxtyo74s> <svg class="size-full" data-astro-cid-hxtyo74s> <use href="/ui.svg#search" data-astro-cid-hxtyo74s></use> </svg> </a> <a href="/rss.xml" target="_blank" aria-label="Rss feed for Плата Управления РФ" class="size-9 rounded-full p-2 items-center justify-center bg-transparent hover:bg-black/5 dark:hover:bg-white/20 stroke-current hover:stroke-black hover:dark:stroke-white border border-black/10 dark:border-white/25 transition-colors duration-300 ease-in-out" data-astro-cid-hxtyo74s> <svg class="size-full" data-astro-cid-hxtyo74s> <use href="/ui.svg#rss" data-astro-cid-hxtyo74s></use> </svg> </a> <button id="drawer-theme-button" aria-label="Toggle light and dark theme" class="size-9 rounded-full p-2 items-center justify-center bg-transparent hover:bg-black/5 dark:hover:bg-white/20 stroke-current hover:stroke-black hover:dark:stroke-white border border-black/10 dark:border-white/25 transition-colors duration-300 ease-in-out" data-astro-cid-hxtyo74s> <svg class="block dark:hidden size-full" data-astro-cid-hxtyo74s> <use href="/ui.svg#sun" data-astro-cid-hxtyo74s></use> </svg> <svg class="hidden dark:block size-full" data-astro-cid-hxtyo74s> <use href="/ui.svg#moon" data-astro-cid-hxtyo74s></use> </svg> </button> </div> </div> <main> <div class="pt-36 pb-5"> <div class="w-full h-full mx-auto px-5 max-w-screen-md"> <div class="animate page-heading"> Блог </div> </div> </div> <div class="flex-1 py-5"> <div class="w-full h-full mx-auto px-5 max-w-screen-md"> <div class="animate"> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).load=e;window.dispatchEvent(new Event("astro:load"));})();;(()=>{var A=Object.defineProperty;var g=(a,o,i)=>o in a?A(a,o,{enumerable:!0,configurable:!0,writable:!0,value:i}):a[o]=i;var d=(a,o,i)=>(g(a,typeof o!="symbol"?o+"":o,i),i);{let a={0:t=>m(t),1:t=>i(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(i(t)),5:t=>new Set(i(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t)},o=t=>{let[l,e]=t;return l in a?a[l](e):void 0},i=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><script>window._$HY||(e=>{let t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host.nodeType?e.host:e.parentNode));["click", "input"].forEach((o=>document.addEventListener(o,(o=>{let a=o.composedPath&&o.composedPath()[0]||o.target,s=t(a);s&&!e.completed.has(s)&&e.events.push([s,o])}))))})(_$HY={events:[],completed:new WeakSet,r:{},fe(){}});</script><!--xs--><astro-island uid="stwnw" data-solid-render-id="s0" component-url="/_astro/Blog.B4uIamCS.js" component-export="default" renderer-url="/_astro/client.BfvbX4EV.js" props="{"tags":[1,[[0,"Активация windows"],[0,"Amentmen"],[0,"API"],[0,"BOT"],[0,"driver"],[0,"KMS"],[0,"Microsoft Office"],[0,"Monitoring"],[0,"Python"],[0,"Telegram"],[0,"Windows"],[0,"Windows 10"],[0,"Windows 11"],[0,"Windows server"],[0,"Zabbix"]]],"data":[1,[[0,{"id":[0,"04-office-2021.md"],"slug":[0,"04-office-2021"],"body":[0,"> Дисклаймер. Данная статья предоставляется в образовательных целях и не предполагает использование рассмотренного продукта для незаконной активации Windows или Office. Мы не поддерживает использование нелицензионного ПО ни в каком виде.\r\n\r\n# Качаем\r\n\r\nСкачайте Microsoft Office Deployment Tool \r\n\r\n> <https://www.microsoft.com/en-us/download/details.aspx?id=49117>\r\n\r\nЗапускаем файл **officedeploymenttool_17531-20046.exe** и распакуйте содержимое Office Click-to-Run Administrator Tool в локальный каталог на компьютере.\r\n\r\nВ каталоге установки находятся четыре XML файла с образцами конфигурации: __configuration-Office365-x64.xml__, __configuration-Office365-x86.xml__, __configuration-Office2021Enterprise.xml__ и __configuration-Office2021Enterprise.xml__. Программа setup.exe используется для загрузки дистрибутива и установки пакета Office на клиенте.\r\n\r\nПример конфигурационного файла *.xml:\r\n``` xml\r\n<Configuration>\r\n\t<Add OfficeClientEdition=\"64\" Channel=\"PerpetualVL2021\">\r\n\t\t<Product ID=\"ProPlus2021Volume\">\r\n\t\t\t<Language ID=\"en-us\" />\r\n\t\t</Product>\r\n\t\t<Product ID=\"VisioPro2021Volume\">\r\n\t\t\t<Language ID=\"en-us\" />\r\n\t\t</Product>\r\n\t\t<Product ID=\"ProjectPro2021Volume\">\r\n\t\t\t<Language ID=\"en-us\" />\r\n\t\t</Product>\r\n\t</Add>\r\n\t<!-- <RemoveMSI All=\"True\" /> -->\r\n\t<!-- <Display Level=\"None\" AcceptEULA=\"TRUE\" /> -->\r\n\t<!-- <Property Name=\"AUTOACTIVATE\" Value=\"1\" /> -->\r\n</Configuration>\r\n```\r\n\r\nРассмотрим основные параметры:\r\n\r\n- `OfficeClientEdition=\"64\"` – установка 64-битной версии Office 2021;;\r\n- `Channel=\"PerpetualVL2021\"` – установка Office 2021 по системе корпоративного лицензирования (Volume License);\r\n- `<Language ID=\"en-us\" />` — установка английской версии Office. Для русской версии укажите ru-ru;\r\n- `<!-- <RemoveMSI All=\"True\" /> -->` — удаление старых версий Office, установленных через Windows MSI. Этот параметр закомментирован, но его нужно включить перед установкой Office 2021, чтобы избежать ошибок;\r\n- `<Product ID=\"ProPlus2021Volume\" PIDKEY=\"\" >` — указание компонентов пакета Office (например, ProPlus2021Volume, ProjectPro2021Volume, VisioPro2021Volume), которые нужно установить. В параметре `PIDKEY=\"\"` можно указать ваш корпоративный ключ (обычно это MAK ключ);\r\n- Используя директиву `<ExcludeApp ID=\"PowerPoint\" />`, можно установить только выбранные приложения Office (по умолчанию установщик C2R устанавливает все приложения пакета Office).\r\n\r\nПодробное описание всех параметров:\r\n\r\n> <https://learn.microsoft.com/en-us/deployoffice/office2019/deploy#create-the-configurationxml>\r\n\r\nСоздание файла конфигурации под ваши конкретные параметры:\r\n\r\n> <https://config.office.com/>\r\n\r\nПосле создания XML файла, скачайте дистрибутив для установки Office 2021. Выполните команду:\r\n\r\n``` bash\r\nSetup.exe /download configuration-Office2021Enterprise.xml\r\n```\r\n- В случае неудачи скачивания, запустите VPN, можете воспользоваться нашим сервисом.\r\n\r\n> <https://t.me/Dig_for_bot>\r\n\r\nПосле завершения загрузки в каталоге Microsoft Office Deployment Tool появится папка Office (содержит cab и dat файлы для установки Office 2021) размером около 2 Гб.\r\n\r\n## Локальная установка \r\nДля начала установки Office 2021 выполните команду:\r\n``` bash\r\nSetup.exe /configure configuration-Office2021Enterprise.xml\r\n```\r\nПосле завершения установки Office 2021 Enterprise или любого другого пакета, вы можете активировать продукт.\r\n\r\n## Сетевая установка\r\nПолученный пакет можно использовать для установки Office 2021 на компьютеры пользователей. Чтобы каждый компьютер не загружал установочные файлы Office 2021 из сети CDN, а использовал локальную копию, укажите путь к каталогу с файлами установки Office в XML файле. Например:\r\n\r\n``` xml\r\n<Add SourcePath=\"\\\\FS1\\Distr\\Office2021\" OfficeClientEdition=\"64\" Channel=\"PerpetualVL2021\">\r\n```\r\nТеперь вы можете скопировать каталог Microsoft Office Deployment Tool с XML файлами и дистрибутивом Office 2021 в сетевой каталог или на сервер SCCM.\r\n"],"collection":[0,"blog"],"data":[0,{"title":[0,"Установливаем последний Microsoft Office с официального сайта."],"summary":[0,"Инструкция по установке последней версии Microsoft Office с официального сайта. В статье описаны шаги загрузки установочного файла, процесс установки и активации Office, а также советы по устранению возможных проблем."],"date":[3,"2024-06-12T21:00:00.000Z"],"tags":[1,[[0,"Microsoft Office"]]],"draft":[0,false]}],"render":[0,null]}],[0,{"id":[0,"03-BOT-Support.md"],"slug":[0,"03-bot-support"],"body":[0,"# Бот техподдержки пользователя\r\n\r\n<https://git.fipi.pro/Plata_Upravleniya_RF/Support-BOT>\r\n\r\nПользователи пишут свои вопросы боту компании, бот пересылает эти сообщения в чат поддержки, сотрудники поддержки отвечают на эти сообщения через reply. Основной плюс - анонимизация сотрудников поддержки.\r\n\r\nБот работает в режиме webhook, но может работать и в режиме polling.\r\n\r\nДля обхода запрета на пересылку сообщений у пользователя, бот копирует содержимое и уже затем отправляет его в чат поддержки.\r\n\r\nПо умолчанию бот отправляет сообщения в один чат поддержки с id, указанным в переменных окружения .env.\r\n\r\n## Бот умеет\r\n\r\n- Пересылать сообщения, документы, аудио и видео от пользователя в группу к администраторам и обратно\r\n- Выдавать информацию о пользователе из Telegram\r\n- Выдавать месячный отчет и отчет за указанный интервал дат по количеству обращений и общему числу сообщений и ответов\r\n- Банить и разбанивать пользователей\r\n\r\n## Типы контента, которые может пересылать бот\r\n\r\n- Текстовые сообщения\r\n- Фотографии\r\n- Группы фотографий (пересылаются по одной)\r\n- Видео\r\n- Аудиозаписи\r\n- Файлы\r\n\r\n## Разворачивание образа на личном или vps сервере\r\n\r\n### Настройка Nignx\r\n\r\nПредполагается, что у вас есть готовый настроенный VPS сервер с установленным nginx.\r\n\r\n1. Перейти в каталог nginx `sites-available`:\r\n\r\n``` sh\r\ncd /etc/nginx/sites-available/\r\n```\r\n\r\n2. Создайте файл с именем вашего домена:\r\n\r\n``` sh\r\nnano domain.example.com\r\n```\r\n\r\n3. Внутри файла напишите:\r\n\r\n``` sh\r\nserver {\r\n listen 80;\r\n\r\n server_name domain.example.com;\r\n\r\n location /telegram/ {\r\n proxy_set_header Host $http_host;\r\n proxy_set_header X-Real-IP $remote_addr;\r\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n proxy_set_header X-Forwarded-Proto $scheme;\r\n proxy_pass http://127.0.0.1:7772;\r\n }\r\n}\r\n```\r\n\r\n`server_name` - ваш домен с подключенным SSL сертификатом (например, Let's Encrypt). Вместо `/telegram/` можно написать любой путь, на который должны приниматься данные. Этот же путь нужно указать в `.env` файле.\r\n\r\n4. Создайте символическую ссылку в каталоге `sites-enabled`\r\n\r\n```sh\r\nsudo ln -s /etc/nginx/sites-available/domain.example.com /etc/nginx/sites-enabled/\r\n```\r\n5. Проверьте конфигурацию nginx на ошибки:\r\n```sh\r\nsudo nginx -t\r\n```\r\n\r\n6. Перезапустить службу nginx:\r\n```sh\r\nsudo systemctl restart nginx\r\n```\r\n\r\n7. Установить certbot:\r\n``` sh\r\nsudo apt install -y certbot python3-certbot-nginx\r\n```\r\n\r\n8. Установите HTTPS соединение, выпустив SSL сертификат с помощью certbot для вашего домена:\r\n```sh\r\nsudo certbot --nginx \r\n```\r\n9. Добавить автоматическое обновление сертификата:\r\n```sh\r\nsudo certbot renew --dry-run\r\n```\r\n\r\nМожно на всякий случай еще раз перезапустить nginx.\r\n\r\n### Запуск бота\r\n\r\n1. Создайте бота через BotFather (см. ниже), добавьте бота в группу с сотрудниками поддержки, дайте боту права администратора, узнайте id группы (см. ниже).\r\n2. Скопируйте этот репозиторий на сервер любым удобным способом.\r\n3. Создайте .env файл в корне со следующим содержанием:\r\n```sh\r\nTELEGRAM_TOKEN=<телеграм_токен_вашего_бота>\r\nGROUP_ID=<id_группы_или_супергруппы_в_телеграме>\r\nWEBHOOK_DOMAIN=domain.example.com\r\nWEBHOOK_PATH=/telegram/\r\nAPP_HOST=0.0.0.0\r\nAPP_PORT=7772\r\nDATABASE_URL=postgresql+asyncpg://<postgres_user>:<postgres_password>@<postgres_container_name>:5432/support_bot_db\r\nDB_HOST=<имя_контейнера_с_БД>\r\nDB_PORT=5432\r\nPOSTGRES_USER=<postgres_user>\r\nPOSTGRES_PASSWORD=<postgres_password>\r\nSTART_MESSAGE=<Приветственное сообщение бота, когда клиент нажимает кнопку start>\r\n```\r\nВ качестве теста логин пользователя БД, пароль и название БД можно указать postgres. Только для теста, не для продакшена!\r\n\r\n4. Запустить сборку docker-образа и его запуск из файла `docker-compose`:\r\n```sh\r\nsudo docker-compose up -d --build\r\n```\r\nКлюч `-d` для того чтобы контейнер запустился в фоне.\r\n\r\n5. Зайдите в контейнер с базой данных, создайте базу данных, выдайте права на нее пользователю (в данном случае postgres):\r\n```sh\r\ndocker exec -it support-bot-db psql -U postgres\r\n\\l #убеждаемся, что базы данных нет\r\ncreate database support_bot_db;\r\ngrant all privileges on database support_bot_db to postgres;\r\n\\q #выходим из psql\r\n```\r\n\r\n6. Применить миграции:\r\n```sh\r\ndocker exec -it support-bot alembic upgrade head\r\n```\r\n\r\n### Где что брать\r\n1. `WEBHOOK_DOMAIN` - домен с подключенным ssl сертификатом\r\n2. `WEBHOOK_PATH` - URL путь после домена. В данном случае `WEBHOOK_DOMAIN` + `WEBHOOK_PATH` будет `domain.example.com/telegram/`.\r\n3. Token получаем при создании бота через BotFather [BotFather](https://t.me/BotFather).\r\n4. Свой личный id или id группы можно узнать через бота [myidbot](https://t.me/myidbot). Узнать свой id - написать боту в личку, узнать id группы - добавить бота в чат группы (например группы поддержки), затем ввести команду `/getgroupid`.\r\n5. `APP_HOST` - IP, на котором будет работать приложение (по умолчанию на хосте `127.0.0.1`, `localhost` или можно указать `0.0.0.0`).\r\n6. `APP_PORT` - порт, который приложение будет использовать. Порт должен быть уникальным и не дублировать порты других приложений, работающих на сервере или в Docker.\r\n\r\n## Запуск в режиме polling (на локальном компьютере)\r\n1. Скопируйте репозиторий на локальный компьютер.\r\n2. Создайте файл `.env` (см. выше).\r\n3. В файле `.env` удалить (закомментировать) `WEBHOOK_DOMAIN`. Пропишите свои переменные окружения. Так же пропишите переменные окружения в файле `docker-compose-postgres-localhost.yaml`\r\n4. Установить виртуальное окружение, активировать его, \r\n установить зависимости из `requirements.txt`:\r\n```sh\r\npython -m venv venv\r\npip install -r requirements.txt\r\n```\r\n5. В докере запустить контейнер с базой данных из файла `docker-compose-postgres-localhost.yaml`: \r\n```sh\r\ndocker-compose -f docker-compose-postgres-localhost up -d\r\n```\r\n6. Применить миграцию.\r\n```sh\r\nalembic upgrade head\r\n```\r\n7. Если alembic ругается, что базы данных не существует, создайте ее вручную и выйдите из psql. Затем попробуйте выполнить миграцию повторно:\r\n```sh\r\ndocker exec -it postgres psql -U postgres\r\n# далее в psql\r\ncreate database support_bot_db;\r\ngrant all privileges on database support_bot_db to postgres;\r\n```\r\n8. Запустить `main.py`:\r\n```sh\r\npython main.py\r\n```\r\nДля запуска необходим python 3.9 или выше.\r\n \r\n## Команды бота\r\nВ **чате поддержки** доступны следующие команды:\r\n\r\n`/info` - Команда вводится через reply на вопрос пользователя и выдает информацию о нем (имя, фамилия, id, никнейм, а также количество сообщений от пользователя и ответов пользователю. Последние два берутся из созданной базы данных).\r\n\r\n`/report` - Отчет по количеству клиентов за месяц, сообщений от них и количество ответов администраторов.\r\n\r\n`/report 01.01.2020 15.06.2024` - Отчет за выбранный период. Две любые даты через пробел, по шаблону.\r\n\r\n`/ban` - Команда вводится через reply на вопрос пользователя. Банит пользователя. Сообщения от него будут игнорироваться ботом.\r\n`/unban` - Команда вводится через reply на вопрос пользователя. Разбанивает пользователя.\r\n\r\n`/banlist` - Список забаненных пользователей. Выводит список пользователей в формате `id - имя_фамилия`.\r\n\r\n`/registeradmin` - Регистрирует нового администратора в чате поддержки. Также администратор регистрируется автоматически, если ответит на сообщение клиента через reply. Это сделано на случай, если забыли зарегистрировать администратора, а он уже отвечает на сообщения.\r\n\r\n`/deleteadmin` - Удаляет права администратора у пользователя в чате поддержки. После удаления прав администратора нужно вручную удалить пользователя из группы Telegram.\r\n\r\n## Автозапуск бота \r\n1. Создание службы:\r\nСоздайте файл службы для вашего бота, например `my_bot.service`:\r\n```sh\r\nsudo nano /etc/systemd/system/my_bot.service\r\n```\r\n2. Редактирование службы:\r\nВнесите следующие настройки в файл службы:\r\n```sh\r\n[Unit]\r\nDescription=My Python Telegram Bot\r\nAfter=network.target\r\n\r\n[Service]\r\nUser=your_username\r\nGroup=your_groupname\r\nWorkingDirectory=/path/to/your/bot\r\nExecStart=/path/to/your/python /path/to/your/bot/main.py\r\nRestart=always\r\n\r\n[Install]\r\nWantedBy=multi-user.target\r\n```\r\nЗамените `your_username`, `your_groupname`, `/path/to/your/bot`, и `/path/to/your/python` на соответствующие значения для вашей среды. Убедитесь, что `ExecStart` указывает на правильный путь к вашему скрипту Python бота.\r\n\r\n3. Перезагрузка systemd:\r\nПосле того как вы сохранили изменения, перезагрузите systemd для применения новой службы:\r\n```sh\r\nsudo systemctl daemon-reload\r\n```\r\n4. Управление службой:\r\nТеперь вы можете управлять вашим ботом как службой. Например, чтобы запустить его и настроить автозапуск при загрузке системы, выполните следующие команды:\r\n```sh\r\nsudo systemctl start my_bot\r\nsudo systemctl enable my_bot\r\n```\r\nЧтобы проверить статус вашей службы, выполните:\r\n```sh\r\nsudo systemctl status my_bot\r\n```"],"collection":[0,"blog"],"data":[0,{"title":[0,"Хватит терять заявки пользователей"],"summary":[0,"Пора сделать бота для принятия заявок от пользователей всем IT отделом."],"date":[3,"2024-06-11T21:00:00.000Z"],"tags":[1,[[0,"Python"],[0,"Telegram"],[0,"BOT"]]],"draft":[0,false]}],"render":[0,null]}],[0,{"id":[0,"05-zabbix-api.md"],"slug":[0,"05-zabbix-api"],"body":[0,"\r\n# Пролог\r\n\r\nСобирать метрики со всех устройств в сети — это здорово, но не так уж приятно, если у вас уже есть более 10 устройств и вы только решили, что вам нужен мониторинг. А если устройств 100 и больше? Придется много клацать мышкой! Но что мы за админы, если не умеем правильно лениться? Давайте создадим небольшой скрипт, добавим его в GPO, и пусть часть работы за нас выполняет машина.\r\n\r\n## Подготовка\r\n1. На сервере Zabbix создаем новую группу, куда будут попадать новые хосты, например `NewHosts`. Запишите ID группы — он пригодится позже (в URL строке последние цифры и будут ID).\r\n\r\n2. Генерируем токен для подключения к Zabbix API. Для этого перейдите в настройки пользователя, пункт API Tokens.\r\n\r\n3. Определяем переменные сервера для скрипта:\r\n\r\n``` ps1\r\n# Zabbix server: \r\n$ZBX_SERVER = \"192.168.0.2:8080\"\r\n$ZBX_SERVER_INSTALL = \"192.168.0.2\"\r\n$ZBX_API = \"http://$ZBX_SERVER/api_jsonrpc.php\"\r\n$ZBX_TOKEN = \"b1c4f904b2b56a342912dd0c44c890cd35dcac1f69e72cb23c765d8feaf85f0a\"\r\n$ZBX_TEMPLATE = \"Windows by Zabbix agent\"\r\n$ZBX_HOSTGRP = \"NewHosts\"\r\n```\r\n\r\n- `$ZBX_SERVER` — адрес Zabbix-сервера для URL.\r\n- `$ZBX_SERVER_INSTALL` — адрес Zabbix-сервера для MSI пакета.\r\n- `$ZBX_API` — адрес API Zabbix-сервера.\r\n- `$ZBX_TOKEN` — токен API Zabbix, который мы сгенерировали на этапе подготовки.\r\n- `$ZBX_TEMPLATE` — шаблон мониторинга из Zabbix.\r\n- `$ZBX_HOSTGRP` — группа (NewHosts), которую создали на этапе подготовки.\r\n\r\n4. Определяем переменные хоста для скрипта:\r\n\r\n``` ps1\r\n# Host vars:\r\n$HOSTIP = (Get-NetIPAddress -AddressFamily IPv4 | Where-Object {$_.InterfaceAlias -imatch \"Ethernet\"}).IPAddress.toString()\r\n$HOSTDNS = ([System.Net.Dns]::GetHostByName($env:computerName).HostName).tolower()\r\n$HOSTNAME = $env:computerName.ToUpper()\r\n$AGENT_PORT = \"10050\"\r\n```\r\n\r\n- `$HOSTIP` — IP адрес устройства.\r\n- `$HOSTDNS` — DNS имя устройства.\r\n- `$HOSTNAME` — имя добавляемого устройства.\r\n- `$AGENT_PORT` — порт, на котором слушает Zabbix агент.\r\n\r\nЯ уже прописал скрипт для автоматического заполнения, но вы всегда можете взять отдельные куски кода и запустить их в терминале.\r\n\r\n5. Определяем функцию для регистрации нового хоста:\r\n\r\n``` ps1\r\nfunction RegisterNewHost() {\r\n $REQ_PARAMS = @{\r\n jsonrpc = \"2.0\"\r\n method = \"host.create\"\r\n params = @{\r\n host = $HOSTNAME\r\n interfaces = @(\r\n @{\r\n type = 1\r\n main = 1\r\n useip = 0\r\n ip = $HOSTIP\r\n dns = $HOSTDNS\r\n port = $AGENT_PORT\r\n }\r\n )\r\n groups = @(\r\n @{\r\n groupid = \"24\"\r\n }\r\n )\r\n templates = @(\r\n @{\r\n templateid = \"10081\"\r\n }\r\n )\r\n }\r\n id = 1\r\n auth = $ZBX_TOKEN\r\n } | ConvertTo-Json -Depth 5\r\n $uri = $ZBX_API\r\n $headers = @{\r\n \"Content-Type\" = \"application/json\"\r\n }\r\n $method = \"Post\"\r\n \r\n Invoke-WebRequest -Uri $uri -Headers $headers -Method $method -Body $REQ_PARAMS\r\n}\r\n```\r\n\r\n- `groupid` — укажите ID группы, созданной в начале.\r\n- `templateid` — укажите шаблон для добавления (по умолчанию 10081 \"Windows by Zabbix agent\").\r\n- `useip` — значение, определяющее, что будет идентификатором для хоста: =0 — DNS, =1 — IP адрес.\r\n\r\n6. Функция установки MSI пакета:\r\n\r\n``` ps1\r\nfunction InstallZbxAgent() {\r\n msiexec /i \\\\fs1\\soft\\zabbix_agent2-openssl.msi /qn SERVER=$ZBX_SERVER_INSTALL LISTENPORT=$AGENT_PORT HOSTNAME=$HOSTNAME\r\n}\r\n```\r\n\r\n- `\\\\fs1\\soft\\` — указываем путь до установочного файла.\r\n\r\nОсновные шаги выполнены. Осталось добавить в скрипт проверку на случай, если Zabbix агент уже установлен, и указать так называемый entry point для скрипта:\r\n\r\n``` ps1\r\nif (!(Test-Path -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Zabbix Agent\") -and !(Test-Path -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Zabbix Agent 2\")) {\r\n InstallZbxAgent\r\n RegisterNewHost\r\n}\r\n```\r\n\r\n### Готовый скрипт\r\n\r\n``` ps1\r\n# Zabbix server: \r\n$ZBX_SERVER = \"192.168.0.2:8080\"\r\n$ZBX_SERVER_INSTALL = \"192.168.0.2\"\r\n$ZBX_API = \"http://$ZBX_SERVER/api_jsonrpc.php\"\r\n$ZBX_TOKEN = \"b1c4f904b2b56a342912dd0c44c890cd35dcac1f69e72cb23c765d8feaf85f0a\"\r\n$ZBX_TEMPLATE = \"Windows by Zabbix agent\"\r\n$ZBX_HOSTGRP = \"NewHosts\"\r\n# Host vars:\r\n$HOSTIP = (Get-NetIPAddress -AddressFamily IPv4 | Where-Object {$_.InterfaceAlias -imatch \"Ethernet\"}).IPAddress.toString()\r\n$HOSTDNS = ([System.Net.Dns]::GetHostByName($env:computerName).HostName).tolower()\r\n$HOSTNAME = $env:computerName.ToUpper()\r\n$AGENT_PORT = \"10050\"\r\n\r\necho \"$HOSTIP/$HOSTNAME\"\r\n\r\nfunction RegisterNewHost() {\r\n $REQ_PARAMS = @{\r\n jsonrpc = \"2.0\"\r\n method = \"host.create\"\r\n params = @{\r\n host = $HOSTNAME\r\n interfaces = @(\r\n @{\r\n type = 1\r\n main = 1\r\n useip = 0\r\n ip = $HOSTIP\r\n dns = $HOSTDNS\r\n port = $AGENT_PORT\r\n }\r\n )\r\n groups = @(\r\n @{\r\n groupid = \"24\"\r\n }\r\n )\r\n templates = @(\r\n @{\r\n templateid = \"10081\"\r\n }\r\n )\r\n }\r\n id = 1\r\n auth = $ZBX_TOKEN\r\n } | ConvertTo-Json -Depth 5\r\n $uri = $ZBX_API\r\n $headers = @{\r\n \"Content-Type\" = \"application/json\"\r\n }\r\n $method = \"Post\"\r\n \r\n Invoke-WebRequest -Uri $uri -Headers $headers -Method $method -Body $REQ_PARAMS\r\n # Для отладки, можно удалить следующую строку.\r\n echo \"debug\" $REQ_PARAMS\r\n}\r\n\r\nRegisterNewHost\r\n\r\nfunction InstallZbxAgent() {\r\n\techo \"start install msi\"\r\n msiexec /i \\\\fs1\\soft\\zabbix_agent2-openssl.msi /qn SERVER=$ZBX_SERVER_INSTALL LISTENPORT=$AGENT_PORT HOSTNAME=$HOSTNAME\r\n}\r\n\r\nInstallZbxAgent\r\n\r\nif (!(Test-Path -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Zabbix Agent\") -and !(Test-Path -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Zabbix Agent 2\")) {\r\n InstallZbxAgent\r\n RegisterNewHost\r\n}\r\n```\r\n\r\n### Добавляем скрипт в политику\r\n\r\n``` bash\r\n## Script name:\r\n%windir%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\r\n## Script parameters:\r\n-Noninteractive -ExecutionPolicy Bypass -Noprofile -file \"\\\\DC1\\NETLOGON\\zbx_agent_install.ps1\"\r\n```\r\n\r\nНастройка завершена. Подключаемся к любому хосту и обновляем политики с помощью команды `gpupdate /force`.\r\n\r\nВыводим список всех политик с помощью команды `gpresult /R /scope:computer`.\r\n\r\nПроверяем установку на Windows и добавление устройства на сервере."],"collection":[0,"blog"],"data":[0,{"title":[0,"Групповые политики GPO для Zabbix Agent с использованием магии API"],"summary":[0,"Краткое руководство по созданию скрипта для автоматизации добавления новых устройств в доменной сети"],"date":[3,"2024-06-11T21:00:00.000Z"],"tags":[1,[[0,"Windows"],[0,"Zabbix"],[0,"API"],[0,"Monitoring"]]],"draft":[0,false]}],"render":[0,null]}],[0,{"id":[0,"02-KMS-service.md"],"slug":[0,"02-kms-service"],"body":[0,"> Дисклаймер. Данная статья предоставляется в образовательных целях и не предполагает использование рассмотренного продукта для незаконной активации Windows или Office. Мы не поддерживает использование нелицензионного ПО ни в каком виде.\r\n\r\nВ данной статье будет описан процесс настройки сервера активации продуктов Microsoft в небольшой корпоративной сети с использованием дистрибутива от @Wind4, доступного на GitHub по ссылке <https://github.com/Wind4/vlmcsd>. Для этого потребуется операционная система Debian/Ubuntu, CentOS/Fedora или любая другая по вашему усмотрению, включая даже BusyBox, если вы имеете достаточные навыки для работы с ним.\r\n# Установка\r\n### Система требований\r\n| \t\t\t\t\t| \t\t\t\t\t\t\t\t\t|\r\n| --------- | ----------------- |\r\n| Процессор | 1 ядро / > 2 Ггц\t|\r\n| Озу \t\t\t| > 1Гб\t\t\t \t\t\t\t|\r\n\r\nЭтого достаточно для создания только KMS-сервера, но ничто не мешает использовать этот сервер для размещения ботов и других полезных инструментов, не забудьте увеличить мощность по потребности.\r\n\r\n- Далее все делаем из под **root** прав.\r\n\r\n## Шаг первый, подготовка\r\n### CentOS\\Fedora\\RHEL\r\n``` sh\r\ndnf update\r\ndnf install git gcc make netstat \r\n```\r\n### debian\\Ubuntu\r\n``` sh\r\napt update\r\napt install git gcc make netstat\r\n```\r\n#### Установки сетевого экрана (firewall)\r\n``` sh\r\napt install iptables\r\n```\r\n\r\nили \r\n\r\n``` sh\r\napt install firewalld\r\n```\r\n\r\nсмотря кому что нравиться, **можно и без него**.\r\n\r\n## Шаг второй\r\n``` sh\r\ngit clone https://github.com/Wind4/vlmcsd\r\ncd vlmcsd\r\nmake\r\ncd bin\r\n./vlmcsd\r\n```\r\nДалее наблюдаем ответ сервера\r\n>Connecting to 127.0.0.1:1688 ... successful\r\n>Sending activation request (KMS V6) 1 of 1 -> 55041-00206-559-475403-03-1076-6002.0000-1482020 (3A1C049600B60076)\r\n\r\nПо умолчанию vlmcsd слушает на стандартном порту KMS — TCP/1688. \r\n\r\n## Шаг третий firewall\r\n\r\nЕсли вы не хотите затруднять себя настройкой firewalld\\iptables, можно пропустить этот шаг. Однако, если вам необходимо разрешить подключения клиентов к серверу через firewalld\\iptables, вам нужно выполнить следующие команды:\r\n\r\n**firewall-cmd**\r\n``` sh\r\nfirewall-cmd --list-port\r\nfirewall-cmd --zone=public --add-port=1688/tcp\r\nfirewall-cmd --reload\r\nnetstat -ntlp | grep LISTEN\r\n```\r\n**iptables**\r\n``` sh\r\niptables -A INPUT -p tcp --dport 1688 -j ACCEPT\r\nservice iptables save\r\nservice iptables restart\r\nnetstat -ntlp | grep LISTEN\r\n```\r\n\r\n## Шаг четвертый Автозапуск демона\r\n\r\nДелаем автоматический старт при запуске сервера\r\n``` sh\r\ncp vlmcsd /usr/bin\r\ncp vlmcs /usr/bin\r\ntouch /etc/systemd/system/kms-autostart.service\r\nchmod 664 /etc/systemd/system/kms-autostart.service\r\nnano /etc/systemd/system/kms-autostart.service\r\n```\r\n\r\nДобавляем в файл следущие параметры\r\n``` sh\r\n[Unit]\r\nDescription=Microsoft KMS Server\r\nAfter=network.target\r\nAfter=network-online.target\r\nWants=network-online.target\r\n \r\n[Service]\r\nType=oneshot\r\nExecStart=/usr/bin/vlmcsd\r\nRemainAfterExit=yes\r\nLimitNOFILE=65536\r\n \r\n[Install]\r\nWantedBy=multi-user.target\r\n```\r\n\r\nВыпускаем демона\r\n``` sh\r\nsystemctl daemon-reload\r\nsystemctl start kms-autostart.service\r\nsystemctl status kms-autostart.service\r\nsystemctl enable kms-autostart.service\r\n```\r\n## Шаг пятый, запись на DNS сервер в доменной сети\r\n\r\nКоманада для **PowerShell**\r\n``` ps1\r\nAdd-DnsServerResourceRecord -Srv -Name \"_VLMCS._tcp\" -ZoneName \"fipi.pro\" -DomainName \"192.168.0.2\" -Priority 0 -Weight 0 -Port 1688\r\n```\r\nРедактируйте под себя. \r\n- ZoneName \"fipi.pro\" – Зона в вашей доменной сети. \r\n- 192.168.0.2 – IP адрес вашего Linux сервера со службой KMS.\r\n\r\nТеперь все хосты Windows (и Office) в домене будут автоматически активироваться на KMS сервере, если на них установлен публичный ключ корпоративной активации (GVLK). \r\n\r\n### Вот краткий список часто исполбзуюмых ключей.\r\n| Operating system edition\t\t\t\t| KMS Client Product Key\t\t\t\t|\r\n| ------------------------------- | -----------------------------\t|\r\n| Windows Server 2022 Standard \t\t| VDYBN-27WPP-V4HQT-9VMD4-VMK7H |\r\n| Windows Server 2022 Datacenter\t| WX4NM-KYWYW-QJJR4-XV3QB-6VM33\t|\r\n| Windows 11 \\ 10 Pro\t\t\t\t\t\t\t| W269N-WFGWX-YVC9B-4J6C9-T83GX\t|\r\n| Windows 8.1 Pro\t\t\t\t\t\t\t\t\t| GCRJD-8NW9H-F2CDX-CCM8D-9D6T9\t|\r\n| Windows 7 Professional\t\t\t\t\t| FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4\t|\r\n\r\nВ для остальных версий ключи подбирайте здесь:\r\n> <https://docs.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys>\r\n## Шаг активации клинтов\r\n\r\nДля ручной активации Windows нужно задать GVLK ключ для вашей версии Windows, адрес сервера KMS активации и выполнить команду активации. Используются следующие команды (например, для Windows Server 2022 Std):\r\n\r\nКоманада для **PowerShell** от ***прав Администратора***\r\n``` ps1\r\nslmgr.vbs -ipk VDYBN-27WPP-V4HQT-9VMD4-VMK7H\r\nslmgr.vbs -skms 192.168.0.2\r\nslmgr.vbs -ato\r\n```\r\nДля Активации Microsoft Office 2021/2019\r\n\r\n``` ps1\r\ncd C:\\Program Files\\Microsoft Office\\Office16\r\ncscript ospp.vbs /sethst: 192.168.0.2\r\ncscript ospp.vbs /act\r\n```\r\n\r\nВ некоторых версия windows команда будет такая \r\n\r\n``` ps1\r\ncd 'C:\\Program Files\\Microsoft Office\\Office16\\'\r\ncscript ospp.vbs /sethst: 192.168.0.2\r\ncscript ospp.vbs /act\r\n```\r\n\r\nДля Активации Microsoft Office 2016\r\n\r\n``` ps1\r\ncd C:\\Program Files\\Microsoft Office\\Office15\r\ncscript ospp.vbs /sethst: 192.168.0.2\r\ncscript ospp.vbs /act\r\n```\r\n\r\n## Шаг активации Windows server 2022 \r\n\r\nКачаем оригинальную версию Winodws Server 2022\r\n> <https://www.microsoft.com/ru-ru/evalcenter/evaluate-windows-server-2022>\r\n\r\nИ до ввода ключа активации получаем ServerStandardEval\r\n\r\nПроверяем возможные версии для обновления:\r\n``` ps1\r\nDISM /online /Get-TargetEditions\r\n```\r\nВ данном случае мы хотим выполнить апгрейд Eval редакции до Retail версии Windows Server 2022 Standard. Найдите и скопируйте GVLK ключ для этой версии и редакции Windows Server из таблицы и выполните команду:\r\n``` ps1\r\ndism /online /set-edition:ServerStandard /productkey:xxxxx-xxxxx-xxxxx-xxxxx-xxxxx /accepteula\r\n```\r\nПерезагружаемся и деалем активацию как было описанно выше.\r\n``` ps1\r\nslmgr /skms 192.168.0.2:1688\r\nslmgr /ato\r\n```\r\n\r\n#### Вдруг пригодиться\r\n\r\nУдалите текущий GVLK ключ:\r\n``` ps1\r\nslmgr.vbs /upk\r\nslmgr.vbs /cpky\r\n```\r\n\r\nПроверьте, что Windows активирована:\r\n``` ps1\r\nGet-CimInstance SoftwareLicensingProduct -Filter \"Name like 'Windows%'\" | where { $_.PartialProductKey } | select Description, LicenseStatus\r\n```\r\n"],"collection":[0,"blog"],"data":[0,{"title":[0,"Активация Windows в организации через KMS server"],"summary":[0,"Небольшой гайд об активации операционной windows 7/8/10/11 server без установки crack и отключения антивируса."],"date":[3,"2024-06-10T21:00:00.000Z"],"tags":[1,[[0,"Windows 11"],[0,"Windows 10"],[0,"Windows server"],[0,"KMS"],[0,"Активация windows"]]],"draft":[0,false]}],"render":[0,null]}],[0,{"id":[0,"01-driver-amentmen-x99-a4-update-w11/index.md"],"slug":[0,"01-driver-amentmen-x99-a4-update-w11"],"body":[0,"\r\nЕсть много способов установить и обновить Windows 11 на материнской плате Amentmen X99-A4, даже если она не поддерживается. Ниже приведен пример одного из способов:\r\n\r\n1. Перейдите на официальный сайт и скачайте MediaCreationTool_Win11_23H2 (https://go.microsoft.com/fwlink/?linkid=2156295). Установите программу, загрузите образ и сохраните его в файл формата .iso.\r\n\r\n2. Скачайте архив с GitHub по ссылке https://github.com/AveYo/MediaCreationTool.bat и распакуйте. Перейдите в папку bypass11 и запустите файл Skip_TPM_Check_on_Dynamic_Update.cmd от имени администратора. Дождитесь завершения процесса.\r\n\r\n3. Затем монтируйте скачанный образ Windows 11 (щелкните правой кнопкой мыши => Монтировать), затем откройте \"Этот компьютер\" => \"Смонтированный образ\" => setup.exe и выполните обновление системы.\r\n\r\nСсылки на архивы с драйверами:\r\n-\tДрайвер на сетевую карту: https://disk.yandex.ru/d/gvl5SqdGy7ZUiQ\r\n-\tДрайвер на аудио карту: https://disk.yandex.ru/d/mybkjx8jN7R1IQ\r\n-\tДрайвер на чипсет: https://disk.yandex.ru/d/Jloa3jtzhkSyAg"],"collection":[0,"blog"],"data":[0,{"title":[0,"Драйвера Amentmen X99-A4 + обновление до Windows 11"],"summary":[0,"Техподдержка через WhatsApp предоставила драйверы для аудио и сетевой карты, которые были автоматически обновлены с Microsoft, а драйвер для чипсета загружен с официального сайта Intel."],"date":[3,"2024-05-22T21:00:00.000Z"],"tags":[1,[[0,"Amentmen"],[0,"Windows 11"],[0,"driver"]]],"draft":[0,false]}],"render":[0,null]}]]]}" ssr="" client="load" opts="{"name":"Blog","value":true}" await-children=""><div data-hk="s00-0-0-0" class="grid grid-cols-1 sm:grid-cols-3 gap-6"><div class="col-span-3 sm:col-span-1"><div class="sticky top-24"><div class="text-sm font-semibold uppercase mb-2 text-black dark:text-white">Filter</div><ul class="flex flex-wrap sm:flex-col gap-1.5"><li data-hk="s00-0-0-1-0"><button class="w-full px-2 py-1 rounded whitespace-nowrap overflow-hidden overflow-ellipsis flex gap-2 items-center bg-black/5 dark:bg-white/10 hover:bg-black/10 hover:dark:bg-white/15 transition-colors duration-300 ease-in-out"><svg class="size-5 fill-black/50 dark:fill-white/50 transition-colors duration-300 ease-in-out"><use href="/ui.svg#square" class="block"></use><use href="/ui.svg#square-check" class="hidden"></use></svg><!--$-->Активация windows<!--/--></button></li><li data-hk="s00-0-0-1-1"><button class="w-full px-2 py-1 rounded whitespace-nowrap overflow-hidden overflow-ellipsis flex gap-2 items-center bg-black/5 dark:bg-white/10 hover:bg-black/10 hover:dark:bg-white/15 transition-colors duration-300 ease-in-out"><svg class="size-5 fill-black/50 dark:fill-white/50 transition-colors duration-300 ease-in-out"><use href="/ui.svg#square" class="block"></use><use href="/ui.svg#square-check" class="hidden"></use></svg><!--$-->Amentmen<!--/--></button></li><li data-hk="s00-0-0-1-2"><button class="w-full px-2 py-1 rounded whitespace-nowrap overflow-hidden overflow-ellipsis flex gap-2 items-center bg-black/5 dark:bg-white/10 hover:bg-black/10 hover:dark:bg-white/15 transition-colors duration-300 ease-in-out"><svg class="size-5 fill-black/50 dark:fill-white/50 transition-colors duration-300 ease-in-out"><use href="/ui.svg#square" class="block"></use><use href="/ui.svg#square-check" class="hidden"></use></svg><!--$-->API<!--/--></button></li><li data-hk="s00-0-0-1-3"><button class="w-full px-2 py-1 rounded whitespace-nowrap overflow-hidden overflow-ellipsis flex gap-2 items-center bg-black/5 dark:bg-white/10 hover:bg-black/10 hover:dark:bg-white/15 transition-colors duration-300 ease-in-out"><svg class="size-5 fill-black/50 dark:fill-white/50 transition-colors duration-300 ease-in-out"><use href="/ui.svg#square" class="block"></use><use href="/ui.svg#square-check" class="hidden"></use></svg><!--$-->BOT<!--/--></button></li><li data-hk="s00-0-0-1-4"><button class="w-full px-2 py-1 rounded whitespace-nowrap overflow-hidden overflow-ellipsis flex gap-2 items-center bg-black/5 dark:bg-white/10 hover:bg-black/10 hover:dark:bg-white/15 transition-colors duration-300 ease-in-out"><svg class="size-5 fill-black/50 dark:fill-white/50 transition-colors duration-300 ease-in-out"><use href="/ui.svg#square" class="block"></use><use href="/ui.svg#square-check" class="hidden"></use></svg><!--$-->driver<!--/--></button></li><li data-hk="s00-0-0-1-5"><button class="w-full px-2 py-1 rounded whitespace-nowrap overflow-hidden overflow-ellipsis flex gap-2 items-center bg-black/5 dark:bg-white/10 hover:bg-black/10 hover:dark:bg-white/15 transition-colors duration-300 ease-in-out"><svg class="size-5 fill-black/50 dark:fill-white/50 transition-colors duration-300 ease-in-out"><use href="/ui.svg#square" class="block"></use><use href="/ui.svg#square-check" class="hidden"></use></svg><!--$-->KMS<!--/--></button></li><li data-hk="s00-0-0-1-6"><button class="w-full px-2 py-1 rounded whitespace-nowrap overflow-hidden overflow-ellipsis flex gap-2 items-center bg-black/5 dark:bg-white/10 hover:bg-black/10 hover:dark:bg-white/15 transition-colors duration-300 ease-in-out"><svg class="size-5 fill-black/50 dark:fill-white/50 transition-colors duration-300 ease-in-out"><use href="/ui.svg#square" class="block"></use><use href="/ui.svg#square-check" class="hidden"></use></svg><!--$-->Microsoft Office<!--/--></button></li><li data-hk="s00-0-0-1-7"><button class="w-full px-2 py-1 rounded whitespace-nowrap overflow-hidden overflow-ellipsis flex gap-2 items-center bg-black/5 dark:bg-white/10 hover:bg-black/10 hover:dark:bg-white/15 transition-colors duration-300 ease-in-out"><svg class="size-5 fill-black/50 dark:fill-white/50 transition-colors duration-300 ease-in-out"><use href="/ui.svg#square" class="block"></use><use href="/ui.svg#square-check" class="hidden"></use></svg><!--$-->Monitoring<!--/--></button></li><li data-hk="s00-0-0-1-8"><button class="w-full px-2 py-1 rounded whitespace-nowrap overflow-hidden overflow-ellipsis flex gap-2 items-center bg-black/5 dark:bg-white/10 hover:bg-black/10 hover:dark:bg-white/15 transition-colors duration-300 ease-in-out"><svg class="size-5 fill-black/50 dark:fill-white/50 transition-colors duration-300 ease-in-out"><use href="/ui.svg#square" class="block"></use><use href="/ui.svg#square-check" class="hidden"></use></svg><!--$-->Python<!--/--></button></li><li data-hk="s00-0-0-1-9"><button class="w-full px-2 py-1 rounded whitespace-nowrap overflow-hidden overflow-ellipsis flex gap-2 items-center bg-black/5 dark:bg-white/10 hover:bg-black/10 hover:dark:bg-white/15 transition-colors duration-300 ease-in-out"><svg class="size-5 fill-black/50 dark:fill-white/50 transition-colors duration-300 ease-in-out"><use href="/ui.svg#square" class="block"></use><use href="/ui.svg#square-check" class="hidden"></use></svg><!--$-->Telegram<!--/--></button></li><li data-hk="s00-0-0-1-10"><button class="w-full px-2 py-1 rounded whitespace-nowrap overflow-hidden overflow-ellipsis flex gap-2 items-center bg-black/5 dark:bg-white/10 hover:bg-black/10 hover:dark:bg-white/15 transition-colors duration-300 ease-in-out"><svg class="size-5 fill-black/50 dark:fill-white/50 transition-colors duration-300 ease-in-out"><use href="/ui.svg#square" class="block"></use><use href="/ui.svg#square-check" class="hidden"></use></svg><!--$-->Windows<!--/--></button></li><li data-hk="s00-0-0-1-11"><button class="w-full px-2 py-1 rounded whitespace-nowrap overflow-hidden overflow-ellipsis flex gap-2 items-center bg-black/5 dark:bg-white/10 hover:bg-black/10 hover:dark:bg-white/15 transition-colors duration-300 ease-in-out"><svg class="size-5 fill-black/50 dark:fill-white/50 transition-colors duration-300 ease-in-out"><use href="/ui.svg#square" class="block"></use><use href="/ui.svg#square-check" class="hidden"></use></svg><!--$-->Windows 10<!--/--></button></li><li data-hk="s00-0-0-1-12"><button class="w-full px-2 py-1 rounded whitespace-nowrap overflow-hidden overflow-ellipsis flex gap-2 items-center bg-black/5 dark:bg-white/10 hover:bg-black/10 hover:dark:bg-white/15 transition-colors duration-300 ease-in-out"><svg class="size-5 fill-black/50 dark:fill-white/50 transition-colors duration-300 ease-in-out"><use href="/ui.svg#square" class="block"></use><use href="/ui.svg#square-check" class="hidden"></use></svg><!--$-->Windows 11<!--/--></button></li><li data-hk="s00-0-0-1-13"><button class="w-full px-2 py-1 rounded whitespace-nowrap overflow-hidden overflow-ellipsis flex gap-2 items-center bg-black/5 dark:bg-white/10 hover:bg-black/10 hover:dark:bg-white/15 transition-colors duration-300 ease-in-out"><svg class="size-5 fill-black/50 dark:fill-white/50 transition-colors duration-300 ease-in-out"><use href="/ui.svg#square" class="block"></use><use href="/ui.svg#square-check" class="hidden"></use></svg><!--$-->Windows server<!--/--></button></li><li data-hk="s00-0-0-1-14"><button class="w-full px-2 py-1 rounded whitespace-nowrap overflow-hidden overflow-ellipsis flex gap-2 items-center bg-black/5 dark:bg-white/10 hover:bg-black/10 hover:dark:bg-white/15 transition-colors duration-300 ease-in-out"><svg class="size-5 fill-black/50 dark:fill-white/50 transition-colors duration-300 ease-in-out"><use href="/ui.svg#square" class="block"></use><use href="/ui.svg#square-check" class="hidden"></use></svg><!--$-->Zabbix<!--/--></button></li></ul></div></div><div class="col-span-3 sm:col-span-2"><div class="flex flex-col"><div class="text-sm uppercase mb-2">SHOWING <!--$-->0<!--/--> OF <!--$-->5<!--/--> POSTS</div><ul class="flex flex-col gap-3"></ul></div></div></div><!--astro:end--></astro-island> </div> </div> </div> </main> <footer class="relative bg-white dark:bg-black"> <div class="animate"> <section class="py-5"> <div class="w-full h-full mx-auto px-5 max-w-screen-md"> <div class="flex items-center justify-center sm:justify-end"> <button id="back-to-top" aria-label="Back to top of page" class="group flex w-fit p-1.5 gap-1.5 text-sm items-center border rounded hover:bg-black/5 hover:dark:bg-white/10 border-black/15 dark:border-white/20 transition-colors duration-300 ease-in-out"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="stroke-current group-hover:stroke-black group-hover:dark:stroke-white rotate-90"> <line x1="19" y1="12" x2="5" y2="12" class="scale-x-0 group-hover:scale-x-100 translate-x-3 group-hover:translate-x-0 transition-all duration-300 ease-in-out"></line> <polyline points="12 19 5 12 12 5" class="translate-x-1 group-hover:translate-x-0 transition-all duration-300 ease-in-out"></polyline> </svg> <div class="w-full group-hover:text-black group-hover:dark:text-white transition-colors duration-300 ease-in-out">
|
||
В начало
|
||
</div> </button> </div> </div> </section> <section class=" py-5 overflow-hidden whitespace-nowrap border-t border-black/10 dark:border-white/25"> <div class="w-full h-full mx-auto px-5 max-w-screen-md"> <div class="grid grid-cols-1 sm:grid-cols-2 gap-3"> <div class="flex flex-col items-center sm:items-start"> <a href="/" class="flex gap-1 w-fit font-semibold text-current hover:text-black dark:hover:text-white transition-colors duration-300 ease-in-out"> <svg class="size-6 fill-current"> <use href="/brand.svg#brand"></use> </svg> Плата Управления РФ </a> </div> <div class="flex gap-2 justify-center sm:justify-end items-center"> <span class="relative flex h-3 w-3"> <span class="animate-ping absolute inline-flex h-full w-full rounded-full bg-green-300"></span> <span class="relative inline-flex rounded-full h-3 w-3 bg-green-500"></span> </span>
|
||
Все системы в норме
|
||
</div> </div> </div> </section> <section class=" py-5 overflow-hidden whitespace-nowrap border-t border-black/10 dark:border-white/25"> <div class="w-full h-full mx-auto px-5 max-w-screen-md"> <div class="h-full grid grid-cols-1 sm:grid-cols-2 gap-3"> <div class="order-2 sm:order-1 flex flex-col items-center justify-center sm:items-start"> <div class="legal"> <a href="/legal/terms" class="text-current hover:text-black dark:hover:text-white transition-colors duration-300 ease-in-out">
|
||
Условия использования
|
||
</a> |
|
||
<a href="/legal/privacy" class="text-current hover:text-black dark:hover:text-white transition-colors duration-300 ease-in-out">
|
||
Конфиденциальности
|
||
</a> </div> <div class="text-sm mt-2">
|
||
© 2024 | @iTKeyS
|
||
</div> </div> <div class="order-1 sm:order-2 flex justify-center sm:justify-end"> <div class="flex flex-wrap gap-1 items-center justify-center"> <a href="mailto:krasilnikoff.tihon@gmail.com" target="_blank" aria-label="Плата Управления РФ on Email" class="group size-10 rounded-full p-2 items-center justify-center hover:bg-black/5 dark:hover:bg-white/20 blend"> <svg class="size-full fill-current group-hover:fill-black group-hover:dark:fill-white blend"> <use href="/social.svg#email"></use> </svg> </a><a href="https://git.fipi.pro/Plata_Upravleniya_RF" target="_blank" aria-label="Плата Управления РФ on Github" class="group size-10 rounded-full p-2 items-center justify-center hover:bg-black/5 dark:hover:bg-white/20 blend"> <svg class="size-full fill-current group-hover:fill-black group-hover:dark:fill-white blend"> <use href="/social.svg#github"></use> </svg> </a><a href="https://www.youtube.com/@plata_upravleniya_rf" target="_blank" aria-label="Плата Управления РФ on YouTube" class="group size-10 rounded-full p-2 items-center justify-center hover:bg-black/5 dark:hover:bg-white/20 blend"> <svg class="size-full fill-current group-hover:fill-black group-hover:dark:fill-white blend"> <use href="/social.svg#youtube"></use> </svg> </a><a href="https://t.me/plata_upravleniya_rf" target="_blank" aria-label="Плата Управления РФ on Telegram" class="group size-10 rounded-full p-2 items-center justify-center hover:bg-black/5 dark:hover:bg-white/20 blend"> <svg class="size-full fill-current group-hover:fill-black group-hover:dark:fill-white blend"> <use href="/social.svg#telegram"></use> </svg> </a><a href="https://t.me/plata_upravleniya_rf_bot" target="_blank" aria-label="Плата Управления РФ on Telegram BOT" class="group size-10 rounded-full p-2 items-center justify-center hover:bg-black/5 dark:hover:bg-white/20 blend"> <svg class="size-full fill-current group-hover:fill-black group-hover:dark:fill-white blend"> <use href="/social.svg#telegram"></use> </svg> </a> </div> </div> </div> </div> </section> </div> </footer> <script>
|
||
function goBackToTop(event) {
|
||
event.preventDefault()
|
||
window.scrollTo({
|
||
top: 0,
|
||
behavior: "smooth"
|
||
})
|
||
}
|
||
|
||
function inintializeBackToTop() {
|
||
const backToTop = document.getElementById("back-to-top")
|
||
backToTop?.addEventListener("click", goBackToTop)
|
||
}
|
||
|
||
document.addEventListener("astro:after-swap", inintializeBackToTop)
|
||
inintializeBackToTop()
|
||
</script> </body></html> |