[{"data":1,"prerenderedAt":211},["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/installation":106,"i-lucide:copy":207,"i-lucide:link":209},[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":12,"body":109,"description":199,"extension":200,"meta":201,"navigation":202,"order":14,"path":72,"section":5,"seo":203,"seoTitle":204,"stem":205,"__hash__":206},"docsHy/hy/docs/installation.md",{"type":110,"value":111,"toc":193},"minimark",[112,122,126,159,162,165,168,170,173,175,178,189],[113,114,115,116,121],"p",{},"Տեղադրեք սերվերի վրա, որը դուք եք կառավարում, root մուտքով և ",[117,118,120],"a",{"href":119},"/platforms","աջակցվող հարթակներից","\nմեկով։",[123,124,77],"h2",{"id":125},"գործարկել-տեղադրիչը",[127,128,133],"pre",{"className":129,"code":130,"language":131,"meta":132,"style":132},"language-bash shiki shiki-themes github-light github-dark","curl -sSL https://get.maran.innovayse.com | bash\n","bash","",[134,135,136],"code",{"__ignoreMap":132},[137,138,140,144,148,152,156],"span",{"class":139,"line":10},"line",[137,141,143],{"class":142},"sScJk","curl",[137,145,147],{"class":146},"sj4cs"," -sSL",[137,149,151],{"class":150},"sZZnC"," https://get.maran.innovayse.com",[137,153,155],{"class":154},"szBVR"," |",[137,157,158],{"class":142}," bash\n",[113,160,161],{},"Տեղադրիչը ստուգում է համակարգը մինչև որևէ բան փոխելը՝ դիստրիբուտիվը և նրա տարբերակը աջակցության\nաղյուսակի հետ, հիշողության ու սկավառակի շեմերը, անհրաժեշտ պորտերը և ազատ տեղը պահուստային\nպատճենների ֆայլային համակարգում։ Այն հավաքում է բոլոր ձախողումները և դուրս է գալիս մեկ անգամ, այնպես\nոր ցուցակն ուղղվում է ամբողջությամբ, ոչ թե մեկ խնդիր մեկ գործարկման դիմաց։",[113,163,164],{},"Եթե ստուգումներն անցնում են, այն տեղադրում է ստորագրված թողարկման փաթեթները, խստացնում systemd\nմիավորները և տեղադրում այն, ինչ պետք է հոսթինգի սերվերին՝ վեբ-սերվեր, PostgreSQL վահանակի սեփական\nտվյալների համար, բազաների սերվեր հաշիվների համար, ֆայլերի փոխանցում, firewall և ժամանակացույց։",[123,166,82],{"id":167},"առաջին-ադմինիստրատորը",[113,169,84],{},[123,171,87],{"id":172},"առաջին-մուտքից-հետո",[113,174,89],{},[123,176,92],{"id":177},"թարմացումներ-և-հետգլորում",[113,179,180,181,184,185,188],{},"Թարմացումները ստորագրված են և կատարվում են վահանակից կամ ",[134,182,183],{},"maran"," հրամանի տողի գործիքով։ Որևէ բան\nփոխարինելուց առաջ թարմացումն արխիվացնում է բազան, իսկ ",[134,186,187],{},"maran rollback","-ը վերադարձնում է նախորդ\nտարբերակը՝ այդ արխիվն օգտագործելով որպես ապահովագրություն։ Անվտանգության շտկումները լռելյայն\nտեղադրվում են ինքնաշխատ, և դա կարելի է անջատել։",[190,191,192],"style",{},"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);}",{"title":132,"searchDepth":14,"depth":14,"links":194},[195,196,197,198],{"id":125,"depth":14,"text":77},{"id":167,"depth":14,"text":82},{"id":172,"depth":14,"text":87},{"id":177,"depth":14,"text":92},"Maran-ի տեղադրումը մաքուր սերվերի վրա, ինչ է տեղադրիչն առաջինը ստուգում և ինչպես է ստեղծվում առաջին ադմինիստրատորը։","md",{},true,{"title":12,"description":199},"Maran-ի տեղադրումը Linux սերվերի վրա","hy/docs/installation","cR93UCGdHlQg2aWm-4thnAO17MUt8Tm-rE2nwHWE2LI",{"left":96,"top":96,"width":97,"height":97,"rotate":96,"vFlip":98,"hFlip":98,"body":208},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/>\u003C/g>",{"left":96,"top":96,"width":97,"height":97,"rotate":96,"vFlip":98,"hFlip":98,"body":210},"\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>",1790166393139]