[{"data":1,"prerenderedAt":327},["ShallowReactive",2],{"docs-navigation-hy":3,"docs-search-hy":22,"i-lucide:search":95,"i-lucide:sun":100,"i-lucide:menu":102,"i-lucide:chevron-down":104,"docs-hy-/docs/architecture":106,"i-lucide:link":325},[4,15],{"section":5,"items":6},"Սկսելու համար",[7,11],{"title":8,"path":9,"order":10},"Ներածություն","/docs",1,{"title":12,"path":13,"order":14},"Տեղադրում","/docs/installation",2,{"section":16,"items":17},"Ինչպես է աշխատում",[18],{"title":19,"path":20,"order":21},"Ինչպես է այն կառուցված","/docs/architecture",3,[23,27,32,37,42,47,52,56,61,66,71,75,80,85,90],{"id":24,"title":19,"titles":25,"content":26,"level":10},"/hy/docs/architecture",[],"Maran-ով սերվերի երեք գործընթացը, նրանց միջև պայմանագիրը և կանոնները, որոնք որոշում են, թե ինչ է թույլատրված root դեմոնին։ Maran-ով սերվերի վրա աշխատում է ուղիղ երեք գործընթաց։ Նրանց միջև բաժանումը արտադրանքի գլխավոր\nնախագծային որոշումն է, և ստորև բերված կանոնների մեծ մասը բխում է դրանից։",{"id":28,"title":29,"titles":30,"content":31,"level":14},"/hy/docs/architecture#երեք-գործընթացը","Երեք գործընթացը",[19],"ԳործընթացԱշխատում էՊահում էmaran-apiոչ արտոնյալ համակարգային օգտվողի անունիցամբողջ բիզնես-տրամաբանությունը և բազայի միակ միացումըmaran-agentroot-ի անունիցոչինչ — այն վիճակ չի պահում, չունի բազա և սեփական կարգավորումPostgreSQLսեփական օգտվողի անունիցվահանակի տվյալները՝ unix-սոկետի վրա, առանց TCP պորտի ընդհանրապես Վահանակը երբեք չի դիպչում համակարգին։ Գործակալը ոչինչ չի որոշում։ Ահա ամբողջ ձևը․ գործընթացը, որը\nգիտի, թե ինչ պետք է տեղի ունենա, արտոնություններ չունի, իսկ արտոնություններով գործընթացը գիտի միայն,\nթե ինչպես կատարել ֆիքսված ցուցակը։",{"id":33,"title":34,"titles":35,"content":36,"level":14},"/hy/docs/architecture#պայմանագիրը-նրանց-միջև","Պայմանագիրը նրանց միջև",[19],"Նրանք խոսում են unix-սոկետով, և փոխանցվում է անվանված գործողություն՝ տիպավորված և ստուգված\nարգումենտներով։ Այստեղից երեք հատկություն, և յուրաքանչյուրը կանոն է, ոչ թե սովորություն․ Չկա գործողություն, որը գործարկում է կանչողի փոխանցած ծրագիրը։ Ո՛չ սահմանափակված, ո՛չ սպիտակ\nցուցակից — ոչ մեկը։ Ուստի այն, ինչ կարելի է ստիպել անել root գործընթացին, վերջավոր է, գրված և\nստուգելի։Փոխանակման մեջ ոչ մի տեղ shell-տող չկա։ Դոմենը չի պաշտպանվում կարգավորման ֆայլ ընկնելուց\nառաջ․ այն ստուգվում է որպես դոմեն՝ տառեր, թվեր, գծիկներ և կետեր, ուստի այնտեղ տողի փոխադրման նիշ\nչկա, որ ավարտի մեկ դիրեկտիվը և սկսի կանչողի ընտրած մյուսը։Գործակալը ստուգում է, թե ով է հարցնում։ Սոկետի վրա գործընկերոջ հավաստագրերը կարդացվում են\nմինչև գործողությունը դիտարկելը, այնպես որ դեմոնը գիտի, թե որ գործընթացն է մյուս ծայրում, փոխանակ\nհավատա իրեն ասվածին։",{"id":38,"title":39,"titles":40,"content":41,"level":14},"/hy/docs/architecture#կարգավորման-ֆայլի-գրառումը","Կարգավորման ֆայլի գրառումը",[19],"Յուրաքանչյուր արտոնյալ գրառում ընթանում է նույն հերթականությամբ, և հերթականությունն էլ հենց էությունն\nէ․ գեներացնել ժամանակավոր ֆայլում;fsync;ատոմային կերպով վերանվանել տեղում;թույլ տալ, որ արդյունքը ստուգի հենց ծառայությունը՝ nginx -t, ոչ թե մեր կանոնավոր\nարտահայտությունը;վերբեռնել;հետ գլորել ֆայլը, եթե ստուգումը կամ վերբեռնումը մերժել է։ Մեկ վատ գեներացիան չի կարող տապալել սերվերի մյուս կայքերը, որովհետև գեներացիայի որակի մասին դատում է\nսերվերի սեփական վերլուծիչը։",{"id":43,"title":44,"titles":45,"content":46,"level":14},"/hy/docs/architecture#մեկուսացում-հաշիվների-միջև","Մեկուսացում հաշիվների միջև",[19],"Հաշիվը իրական Linux օգտվող է՝ իր տնային պանակով և ֆայլային համակարգի իրավունքներով։Նրա PHP-ն աշխատում է սեփական php-fpm լողավազանում սեփական uid-ի տակ, և ֆայլային\nգործողությունները գնում են այդ օգտվողից՝ երբեք ոչ root-ից։Վարձակալների աղյուսակները սահմանափակված են հաշվով բազայի մակարդակում՝ հարցումների\nֆիլտրերով, որոնք ավտոմատ թեստը ստուգում է՝ շրջանցելով ամբողջ մոդելը։Ուրիշի ռեսուրսի հարցումը պատասխանում է 404, ոչ թե 403, ուստի սխալը երբեք չի հաստատում, որ տողը\nգոյություն ունի։",{"id":48,"title":49,"titles":50,"content":51,"level":14},"/hy/docs/architecture#ինչ-գիտակցաբար-չկա","Ինչ գիտակցաբար չկա",[19],"Ո՛չ հաղորդագրությունների բրոքեր, ո՛չ sidecar, ո՛չ երկրորդ դեմոն։ Ֆոնային աշխատանքը գնում է\nPostgreSQL-ում պահվող հուսալի հերթերով, և Maran-ի տեղադրումը սերվերին չի ավելացնում ոչինչ, ինչ չկա\nվերևի աղյուսակում — բացառությամբ մեկի, որը օպերատորն ինքն է միացնում՝ FTPS ծառայությունը։ Վճարովի մոդուլներն էլ դա չեն փոխում․ դրանք C# մոդուլներ են, որոնք վարում են բաց գործակալի մեջ արդեն\nկոմպիլացված գործողությունները։ Գործակալը երբեք արտաքին կոդ չի բեռնում — ուստի արտոնագիրը չի\nկարող նոր արտոնյալ հնարավորություն ավելացնել։",{"id":53,"title":8,"titles":54,"content":55,"level":10},"/hy/docs",[],"Ինչ է Maran-ը, որ երեք գործընթացն է աշխատում սերվերի վրա և ինչ root դեմոնը չի անի՝ ներառյալ ինչու այն shell-հրամաններ չի ընդունում։ Maran-ը վեբ-հոսթինգի կառավարման վահանակ է Linux սերվերների համար։ Տեղադրեք այն սերվերի վրա և\nկառավարեք կայքերը, PHP-ի տարբերակները, SSL վկայագրերը, տվյալների բազաները, ֆայլերը, պահուստային\nպատճեններն ու firewall-ը բրաուզերից՝ առանձին կաբինետով յուրաքանչյուր հոսթինգի հաճախորդի համար և\nAPI-ով, որով բիլինգի համակարգն ինքն է ստեղծում հաշիվները։",{"id":57,"title":58,"titles":59,"content":60,"level":14},"/hy/docs#երեք-գործընթաց-և-root-ը-միայն-մեկի-մոտ","Երեք գործընթաց, և root-ը միայն մեկի մոտ",[8],"Maran-ով սերվերի վրա աշխատում է ուղիղ երեք գործընթաց, և նրանց միջև բաժանումը արտադրանքի գլխավոր\nորոշումն է․ maran-api — ինքը վահանակը։ Ամբողջ բիզնես-տրամաբանությունն այստեղ է, և միայն այն է դիմում\nտվյալների բազային։ Աշխատում է ոչ արտոնյալ համակարգային օգտվողի անունից։maran-agent — միակ գործընթացը root-ով։ Այն վիճակ չի պահում, չունի բազա և սեփական\nկարգավորման ֆայլեր, և միայն այն է դիպչում վեբ-սերվերին, php-fpm-ին, բազաների սերվերին, SSH-ին և\nֆայլերի փոխանցմանը, ժամանակացույցին, firewall-ին և վկայագրերին։PostgreSQL — հասանելի է միայն maran-api-ից, unix-սոկետով, առանց TCP պորտի ընդհանրապես։ Վահանակը գործակալից խնդրում է անվանված գործողություններ unix-սոկետով՝ տիպավորված և ստուգված\nարգումենտներով։ Չկա գործողություն, որը գործարկում է կանչողի փոխանցած ծրագիրը, և նրանց միջև ոչ մի\nտեղ shell-տող չկա․ այն, ինչ կարելի է ստիպել անել root գործընթացին, վերջավոր է, գրված և ստուգելի։",{"id":62,"title":63,"titles":64,"content":65,"level":14},"/hy/docs#ինչ-է-հոսթինգի-հաշիվը","Ինչ է հոսթինգի հաշիվը",[8],"Իրական Linux օգտվող՝ իր տնային պանակով և ֆայլային համակարգի իրավունքներով։ Նրա PHP-ն աշխատում է\nսեփական լողավազանում սեփական uid-ի տակ, և ֆայլային գործողությունները գնում են նույն uid-ից, երբեք ոչ\nroot-ից։ Վարձակալին պատկանող յուրաքանչյուր աղյուսակ սահմանափակված է հաշվով հենց բազայի մակարդակում, և\nուրիշի ռեսուրսի հարցումը պատասխանում է 404, ոչ թե 403 — սխալը երբեք չի հաստատում, որ տողը գոյություն\nունի։",{"id":67,"title":68,"titles":69,"content":70,"level":14},"/hy/docs#ոչ-բրոքերներ-ոչ-sidecar-ներ","Ոչ բրոքերներ, ոչ sidecar-ներ",[8],"Ֆոնային աշխատանքը գնում է PostgreSQL-ում պահվող հուսալի հերթերով։ Maran-ի տեղադրումը սերվերին չի\nավելացնում ո՛չ հաղորդագրությունների բրոքեր, ո՛չ sidecar, ո՛չ երկրորդ դեմոն։",{"id":72,"title":12,"titles":73,"content":74,"level":10},"/hy/docs/installation",[],"Maran-ի տեղադրումը մաքուր սերվերի վրա, ինչ է տեղադրիչն առաջինը ստուգում և ինչպես է ստեղծվում առաջին ադմինիստրատորը։ Տեղադրեք սերվերի վրա, որը դուք եք կառավարում, root մուտքով և աջակցվող հարթակներից\nմեկով։",{"id":76,"title":77,"titles":78,"content":79,"level":14},"/hy/docs/installation#գործարկել-տեղադրիչը","Գործարկել տեղադրիչը",[12],"curl -sSL https://get.maran.innovayse.com | bash Տեղադրիչը ստուգում է համակարգը մինչև որևէ բան փոխելը՝ դիստրիբուտիվը և նրա տարբերակը աջակցության\nաղյուսակի հետ, հիշողության ու սկավառակի շեմերը, անհրաժեշտ պորտերը և ազատ տեղը պահուստային\nպատճենների ֆայլային համակարգում։ Այն հավաքում է բոլոր ձախողումները և դուրս է գալիս մեկ անգամ, այնպես\nոր ցուցակն ուղղվում է ամբողջությամբ, ոչ թե մեկ խնդիր մեկ գործարկման դիմաց։ Եթե ստուգումներն անցնում են, այն տեղադրում է ստորագրված թողարկման փաթեթները, խստացնում systemd\nմիավորները և տեղադրում այն, ինչ պետք է հոսթինգի սերվերին՝ վեբ-սերվեր, PostgreSQL վահանակի սեփական\nտվյալների համար, բազաների սերվեր հաշիվների համար, ֆայլերի փոխանցում, firewall և ժամանակացույց։",{"id":81,"title":82,"titles":83,"content":84,"level":14},"/hy/docs/installation#առաջին-ադմինիստրատորը","Առաջին ադմինիստրատորը",[12],"Ավարտին տեղադրիչը տպում է միանվագ հղում։ Այն բրաուզերում բացելը առաջին ադմինիստրատորին ստեղծելու\nմիակ ձևն է․ ուրիշ ոչինչ դա չի կարող անել, և հղումը սպառվում է օգտագործման պահին։",{"id":86,"title":87,"titles":88,"content":89,"level":14},"/hy/docs/installation#առաջին-մուտքից-հետո","Առաջին մուտքից հետո",[12],"Միացրեք երկգործոն նույնականացումը և ստեղծեք առաջին հոսթինգի հաշիվը։ Հաշիվը իրական Linux օգտվող է՝ իր\nտնային պանակով, իր php-fpm լողավազանով և սակագնի քվոտայով, և վահանակով ստեղծելն էլ հենց այն է, ինչ\nստեղծում է այն հոսթի վրա։",{"id":91,"title":92,"titles":93,"content":94,"level":14},"/hy/docs/installation#թարմացումներ-և-հետգլորում","Թարմացումներ և հետգլորում",[12],"Թարմացումները ստորագրված են և կատարվում են վահանակից կամ maran հրամանի տողի գործիքով։ Որևէ բան\nփոխարինելուց առաջ թարմացումն արխիվացնում է բազան, իսկ maran rollback-ը վերադարձնում է նախորդ\nտարբերակը՝ այդ արխիվն օգտագործելով որպես ապահովագրություն։ Անվտանգության շտկումները լռելյայն\nտեղադրվում են ինքնաշխատ, և դա կարելի է անջատել։ html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"left":96,"top":96,"width":97,"height":97,"rotate":96,"vFlip":98,"hFlip":98,"body":99},0,24,false,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m21 21l-4.34-4.34\"/>\u003Ccircle cx=\"11\" cy=\"11\" r=\"8\"/>\u003C/g>",{"left":96,"top":96,"width":97,"height":97,"rotate":96,"vFlip":98,"hFlip":98,"body":101},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"4\"/>\u003Cpath d=\"M12 2v2m0 16v2M4.93 4.93l1.41 1.41m11.32 11.32l1.41 1.41M2 12h2m16 0h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41\"/>\u003C/g>",{"left":96,"top":96,"width":97,"height":97,"rotate":96,"vFlip":98,"hFlip":98,"body":103},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 5h16M4 12h16M4 19h16\"/>",{"left":96,"top":96,"width":97,"height":97,"rotate":96,"vFlip":98,"hFlip":98,"body":105},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m6 9l6 6l6-6\"/>",{"doc":107,"isFallback":98},{"id":108,"title":19,"body":109,"description":317,"extension":318,"meta":319,"navigation":320,"order":21,"path":24,"section":16,"seo":321,"seoTitle":322,"stem":323,"__hash__":324},"docsHy/hy/docs/architecture.md",{"type":110,"value":111,"toc":309},"minimark",[112,116,120,181,193,196,204,226,229,232,260,263,266,296,299,302],[113,114,115],"p",{},"Maran-ով սերվերի վրա աշխատում է ուղիղ երեք գործընթաց։ Նրանց միջև բաժանումը արտադրանքի գլխավոր\nնախագծային որոշումն է, և ստորև բերված կանոնների մեծ մասը բխում է դրանից։",[117,118,29],"h2",{"id":119},"երեք-գործընթացը",[121,122,123,139],"table",{},[124,125,126],"thead",{},[127,128,129,133,136],"tr",{},[130,131,132],"th",{},"Գործընթաց",[130,134,135],{},"Աշխատում է",[130,137,138],{},"Պահում է",[140,141,142,157,170],"tbody",{},[127,143,144,151,154],{},[145,146,147],"td",{},[148,149,150],"code",{},"maran-api",[145,152,153],{},"ոչ արտոնյալ համակարգային օգտվողի անունից",[145,155,156],{},"ամբողջ բիզնես-տրամաբանությունը և բազայի միակ միացումը",[127,158,159,164,167],{},[145,160,161],{},[148,162,163],{},"maran-agent",[145,165,166],{},"root-ի անունից",[145,168,169],{},"ոչինչ — այն վիճակ չի պահում, չունի բազա և սեփական կարգավորում",[127,171,172,175,178],{},[145,173,174],{},"PostgreSQL",[145,176,177],{},"սեփական օգտվողի անունից",[145,179,180],{},"վահանակի տվյալները՝ unix-սոկետի վրա, առանց TCP պորտի ընդհանրապես",[113,182,183,184,188,189,192],{},"Վահանակը երբեք չի դիպչում համակարգին։ Գործակալը ոչինչ չի որոշում։ Ահա ամբողջ ձևը․ գործընթացը, որը\nգիտի, թե ",[185,186,187],"em",{},"ինչ"," պետք է տեղի ունենա, արտոնություններ չունի, իսկ արտոնություններով գործընթացը գիտի միայն,\nթե ",[185,190,191],{},"ինչպես"," կատարել ֆիքսված ցուցակը։",[117,194,34],{"id":195},"պայմանագիրը-նրանց-միջև",[113,197,198,199,203],{},"Նրանք խոսում են unix-սոկետով, և փոխանցվում է ",[200,201,202],"strong",{},"անվանված գործողություն՝ տիպավորված և ստուգված\nարգումենտներով","։ Այստեղից երեք հատկություն, և յուրաքանչյուրը կանոն է, ոչ թե սովորություն․",[205,206,207,214,220],"ul",{},[208,209,210,213],"li",{},[200,211,212],{},"Չկա գործողություն, որը գործարկում է կանչողի փոխանցած ծրագիրը։"," Ո՛չ սահմանափակված, ո՛չ սպիտակ\nցուցակից — ոչ մեկը։ Ուստի այն, ինչ կարելի է ստիպել անել root գործընթացին, վերջավոր է, գրված և\nստուգելի։",[208,215,216,219],{},[200,217,218],{},"Փոխանակման մեջ ոչ մի տեղ shell-տող չկա։"," Դոմենը չի պաշտպանվում կարգավորման ֆայլ ընկնելուց\nառաջ․ այն ստուգվում է որպես դոմեն՝ տառեր, թվեր, գծիկներ և կետեր, ուստի այնտեղ տողի փոխադրման նիշ\nչկա, որ ավարտի մեկ դիրեկտիվը և սկսի կանչողի ընտրած մյուսը։",[208,221,222,225],{},[200,223,224],{},"Գործակալը ստուգում է, թե ով է հարցնում։"," Սոկետի վրա գործընկերոջ հավաստագրերը կարդացվում են\nմինչև գործողությունը դիտարկելը, այնպես որ դեմոնը գիտի, թե որ գործընթացն է մյուս ծայրում, փոխանակ\nհավատա իրեն ասվածին։",[117,227,39],{"id":228},"կարգավորման-ֆայլի-գրառումը",[113,230,231],{},"Յուրաքանչյուր արտոնյալ գրառում ընթանում է նույն հերթականությամբ, և հերթականությունն էլ հենց էությունն\nէ․",[233,234,235,238,244,247,254,257],"ol",{},[208,236,237],{},"գեներացնել ժամանակավոր ֆայլում;",[208,239,240,243],{},[148,241,242],{},"fsync",";",[208,245,246],{},"ատոմային կերպով վերանվանել տեղում;",[208,248,249,250,253],{},"թույլ տալ, որ արդյունքը ստուգի հենց ծառայությունը՝ ",[148,251,252],{},"nginx -t",", ոչ թե մեր կանոնավոր\nարտահայտությունը;",[208,255,256],{},"վերբեռնել;",[208,258,259],{},"հետ գլորել ֆայլը, եթե ստուգումը կամ վերբեռնումը մերժել է։",[113,261,262],{},"Մեկ վատ գեներացիան չի կարող տապալել սերվերի մյուս կայքերը, որովհետև գեներացիայի որակի մասին դատում է\nսերվերի սեփական վերլուծիչը։",[117,264,44],{"id":265},"մեկուսացում-հաշիվների-միջև",[205,267,268,275,282,289],{},[208,269,270,271,274],{},"Հաշիվը ",[200,272,273],{},"իրական Linux օգտվող"," է՝ իր տնային պանակով և ֆայլային համակարգի իրավունքներով։",[208,276,277,278,281],{},"Նրա PHP-ն աշխատում է ",[200,279,280],{},"սեփական php-fpm լողավազանում սեփական uid-ի տակ",", և ֆայլային\nգործողությունները գնում են այդ օգտվողից՝ երբեք ոչ root-ից։",[208,283,284,285,288],{},"Վարձակալների աղյուսակները սահմանափակված են հաշվով ",[200,286,287],{},"բազայի մակարդակում","՝ հարցումների\nֆիլտրերով, որոնք ավտոմատ թեստը ստուգում է՝ շրջանցելով ամբողջ մոդելը։",[208,290,291,292,295],{},"Ուրիշի ռեսուրսի հարցումը պատասխանում է ",[200,293,294],{},"404, ոչ թե 403",", ուստի սխալը երբեք չի հաստատում, որ տողը\nգոյություն ունի։",[117,297,49],{"id":298},"ինչ-գիտակցաբար-չկա",[113,300,301],{},"Ո՛չ հաղորդագրությունների բրոքեր, ո՛չ sidecar, ո՛չ երկրորդ դեմոն։ Ֆոնային աշխատանքը գնում է\nPostgreSQL-ում պահվող հուսալի հերթերով, և Maran-ի տեղադրումը սերվերին չի ավելացնում ոչինչ, ինչ չկա\nվերևի աղյուսակում — բացառությամբ մեկի, որը օպերատորն ինքն է միացնում՝ FTPS ծառայությունը։",[113,303,304,305,308],{},"Վճարովի մոդուլներն էլ դա չեն փոխում․ դրանք C# մոդուլներ են, որոնք վարում են բաց գործակալի մեջ արդեն\nկոմպիլացված գործողությունները։ ",[200,306,307],{},"Գործակալը երբեք արտաքին կոդ չի բեռնում"," — ուստի արտոնագիրը չի\nկարող նոր արտոնյալ հնարավորություն ավելացնել։",{"title":310,"searchDepth":14,"depth":14,"links":311},"",[312,313,314,315,316],{"id":119,"depth":14,"text":29},{"id":195,"depth":14,"text":34},{"id":228,"depth":14,"text":39},{"id":265,"depth":14,"text":44},{"id":298,"depth":14,"text":49},"Maran-ով սերվերի երեք գործընթացը, նրանց միջև պայմանագիրը և կանոնները, որոնք որոշում են, թե ինչ է թույլատրված root դեմոնին։","md",{},true,{"title":19,"description":317},"Ճարտարապետություն — երեք գործընթաց, root-ը մեկի մոտ","hy/docs/architecture","ADM9HgaSLb4sPnZ0N1g2JvB-ifpa5tEN2unVvrCTPds",{"left":96,"top":96,"width":97,"height":97,"rotate":96,"vFlip":98,"hFlip":98,"body":326},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"/>\u003Cpath d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"/>\u003C/g>",1790166393329]