[{"data":1,"prerenderedAt":497},["ShallowReactive",2],{"releases-index-hy":3,"i-lucide:search":488,"i-lucide:sun":493,"i-lucide:menu":495},[4,84],{"id":5,"title":6,"body":7,"channel":72,"date":73,"description":74,"extension":75,"meta":76,"navigation":77,"path":78,"seo":79,"seoTitle":80,"stem":81,"version":82,"__hash__":83},"releasesHy/hy/releases/0.1.0.md","Maran 0.1.0 — հիմք",{"type":8,"value":9,"toc":66},"minimark",[10,14,19,53,57],[11,12,13],"p",{},"Կմախք, ոչ թե արտադրանք, որը կդնեիք հոսթինգի հաճախորդների առջև։ Այն այնուամենայնիվ հրապարակված է\nորպես թողարկում, որովհետև հետագա ամեն ինչ կառուցված է այստեղ կայացված որոշումների վրա։",[15,16,18],"h2",{"id":17},"ինչ-է-ներառում","Ինչ է ներառում",[20,21,22,30,36,42,48],"ul",{},[23,24,25,29],"li",{},[26,27,28],"strong",{},"Պայմանագիրը"," վահանակի և root գործակալի միջև՝ տիպավորված գործողությունները, որոնցով նրանք\nփոխանակվում են unix-սոկետով։",[23,31,32,35],{},[26,33,34],{},"Rust գործակալի կմախքը",", ներառյալ սոկետի վրա գործընկերոջ հավաստագրերի ստուգումը․ գործակալը գիտի,\nոր գործընթացն է իրեն դիմում, նախքան որևէ բան անելը։",[23,37,38,41],{},[26,39,40],{},"C# մոդուլային մոնոլիտը",", որը դարձավ վահանակը։",[23,43,44,47],{},[26,45,46],{},"Vue-ի թաղանթը",", որի վրա կառուցված է ինտերֆեյսը։",[23,49,50],{},[26,51,52],{},"Մշակման միջավայրը և CI-ն։",[15,54,56],{"id":55},"ինչ-չի-ներառում","Ինչ չի ներառում",[11,58,59,60,65],{},"Հոսթինգի ոչ մի հնարավորություն։ Հաշիվները, կայքերը, PHP լողավազանները, SSL-ը, բազաները, ֆայլերի\nփոխանցումը, պահուստավորումը, firewall-ը և մոնիտորինգը կառուցվել են այս պիտակից հետո և նրա մեջ չեն\nմտնում։ Դրանք ճանապարհին են դեպի առաջին ֆունկցիոնալ թողարկումը․ ինչ է հրապարակված՝ տեսեք\n",[61,62,64],"a",{"href":63},"/releases","թողարկումներում","։",{"title":67,"searchDepth":68,"depth":68,"links":69},"",2,[70,71],{"id":17,"depth":68,"text":18},{"id":55,"depth":68,"text":56},"stable","2026-08-29","Առաջին նշված տարբերակը՝ պայմանագիրը, Rust գործակալի կմախքը, C# մոնոլիտը, Vue-ի թաղանթը և մշակման միջավայրը։","md",{},true,"/hy/releases/0.1.0",{"title":6,"description":74},"Maran 0.1.0 — հիմքի թողարկում","hy/releases/0.1.0","0.1.0","qASgxyfYhFZV5db7mibdy1snwKspMZFR7Agx1YcxoNk",{"id":85,"title":86,"body":87,"channel":479,"date":480,"description":481,"extension":75,"meta":482,"navigation":77,"path":483,"seo":484,"seoTitle":86,"stem":485,"version":486,"__hash__":487},"releasesHy/hy/releases/1.0.0-beta.1.md","Maran 1.0.0-beta.1 — առաջին տեղադրելի թողարկումը",{"type":8,"value":88,"toc":471},[89,95,98,102,138,152,155,159,167,247,274,277,321,333,337,399,403,406,410,413,453,456,460,467],[11,90,91,92],{},"Առաջին թողարկումը, որը տեղադրվում է սերվերի վրա և հոսթինգի հաշիվը տանում է սկզբից մինչև վերջ։\nՀրապարակված է որպես բետա, և բառը նշանակում է հենց այն, ինչ նշանակում է․ ",[26,93,94],{},"դեռ մի՛ տեղավորեք դրա\nվրա ուրիշի հաճախորդներին։",[11,96,97],{},"Ծրագիրը տեղադրվում է, աշխատում է և անում այն, ինչ գրված է իր էկրաններին։ Երեք բան, որոնց համար\nվճարովի հոսթինգ արտադրանքը պարտավոր է վստահելի լինել, փորձարկվել է միայն նախագծի սեփական\nկոնտեյներներում — ոչ մի վկայագիր չի թողարկվել իրական հավաստագրող կենտրոնի կողմից, ոչ մի սկավառակային\nսահմանաչափ չի կիրառվել իրական ֆայլային համակարգի կողմից, և ոչ մի վերականգնում չի կատարվել իրական\nսարքավորման վրա։ Սրանք հայտնի սխալներ չեն — սրանք պնդումներ են, որոնք դեռ ոչ ոք չի ստուգել այնտեղ,\nորտեղ դա կարևոր է։",[15,99,101],{"id":100},"տեղադրում","Տեղադրում",[103,104,108],"pre",{"className":105,"code":106,"language":107,"meta":67,"style":67},"language-bash shiki shiki-themes github-light github-dark","curl -sSL https://get.maran.innovayse.com | sudo bash\n","bash",[109,110,111],"code",{"__ignoreMap":67},[112,113,116,120,124,128,132,135],"span",{"class":114,"line":115},"line",1,[112,117,119],{"class":118},"sScJk","curl",[112,121,123],{"class":122},"sj4cs"," -sSL",[112,125,127],{"class":126},"sZZnC"," https://get.maran.innovayse.com",[112,129,131],{"class":130},"szBVR"," |",[112,133,134],{"class":118}," sudo",[112,136,137],{"class":126}," bash\n",[11,139,140,141,144,145,151],{},"Տեղադրիչը ներբեռնում է այն արտեֆակտները, որոնք նշված են նախագծի թողարկման բանալիով ստորագրված\nմանիֆեստում, և մերժում է ամեն ինչ, ինչի ստորագրությունը կամ ստուգիչ գումարը չի համընկնում։\nՄանիֆեստը և դրանում նշված արտեֆակտները հրապարակված են ",[109,142,143],{},"releases.maran.innovayse.com"," հասցեում, իսկ\nայն պիտակի ելակետային կոդը, որից հավաքվել է թողարկումը՝ ",[61,146,150],{"href":147,"rel":148},"https://github.com/innovayse/maran",[149],"nofollow","GitHub","-ում։",[11,153,154],{},"Նայեք, թե ինչ է անելու տեղադրիչը, նախքան այն root-ով գործարկելը — ինչպես ցանկացած սցենարի դեպքում,\nորին հանձնում եք ձեր սերվերը․ ներբեռնեք, կարդացեք, հետո գործարկեք։",[15,156,158],{"id":157},"ֆայլերը-և-ինչպես-ինքներդ-ստուգել-դրանք","Ֆայլերը և ինչպես ինքներդ ստուգել դրանք",[11,160,161,162,166],{},"Այն ամենը, ինչ ներբեռնում է տեղադրիչը, հրապարակված է\n",[61,163,143],{"href":164,"rel":165},"https://releases.maran.innovayse.com",[149],"-ում և թվարկված է նախագծի\nթողարկման բանալիով ստորագրված մանիֆեստում։",[168,169,170,186],"table",{},[171,172,173],"thead",{},[174,175,176,180,183],"tr",{},[177,178,179],"th",{},"Ֆայլ",[177,181,182],{},"Չափ",[177,184,185],{},"SHA-256",[187,188,189,209,228],"tbody",{},[174,190,191,201,204],{},[192,193,194],"td",{},[61,195,198],{"href":196,"rel":197},"https://releases.maran.innovayse.com/beta/agent-x86_64.tar.gz",[149],[109,199,200],{},"agent-x86_64.tar.gz",[192,202,203],{},"2.9 MB",[192,205,206],{},[109,207,208],{},"f9a57621ef349cb1bfc2df5f7f812685fb3a5a690834b18bd1ae8df2493fbadc",[174,210,211,220,223],{},[192,212,213],{},[61,214,217],{"href":215,"rel":216},"https://releases.maran.innovayse.com/beta/api-x86_64.tar.gz",[149],[109,218,219],{},"api-x86_64.tar.gz",[192,221,222],{},"25.4 MB",[192,224,225],{},[109,226,227],{},"6f367807e265d06bee9db37d692d0748c5fb815967965c0e59675a0b8468c799",[174,229,230,239,242],{},[192,231,232],{},[61,233,236],{"href":234,"rel":235},"https://releases.maran.innovayse.com/beta/frontend-x86_64.tar.gz",[149],[109,237,238],{},"frontend-x86_64.tar.gz",[192,240,241],{},"340 KB",[192,243,244],{},[109,245,246],{},"27879087ddb1a0d1e05e92b9b0b4dec6da21a99263388a74e122681ada828009",[11,248,249,250,257,258,265,266,273],{},"Ստորագրված ցանկը ",[61,251,254],{"href":252,"rel":253},"https://releases.maran.innovayse.com/beta/manifest.json",[149],[109,255,256],{},"manifest.json","-ն է,\nկողքին՝ ",[61,259,262],{"href":260,"rel":261},"https://releases.maran.innovayse.com/beta/manifest.json.sig",[149],[109,263,264],{},"manifest.json.sig",", իսկ\n",[61,267,270],{"href":268,"rel":269},"https://releases.maran.innovayse.com/beta/integrity-manifest.json",[149],[109,271,272],{},"integrity-manifest.json","-ը\nգրանցում է արխիվների ներսի ամեն ֆայլ, ոչ միայն արխիվները։",[11,275,276],{},"Եթե չեք ուզում որևէ բան խողովակով ուղարկել root-shell — նույն տեղադրումն առանց դրա․",[103,278,280],{"className":105,"code":279,"language":107,"meta":67,"style":67},"curl -O https://releases.maran.innovayse.com/installer/maran-installer.tar.gz\ntar -xzf maran-installer.tar.gz\nsudo bash installer/install.sh --channel beta\n",[109,281,282,292,303],{"__ignoreMap":67},[112,283,284,286,289],{"class":114,"line":115},[112,285,119],{"class":118},[112,287,288],{"class":122}," -O",[112,290,291],{"class":126}," https://releases.maran.innovayse.com/installer/maran-installer.tar.gz\n",[112,293,294,297,300],{"class":114,"line":68},[112,295,296],{"class":118},"tar",[112,298,299],{"class":122}," -xzf",[112,301,302],{"class":126}," maran-installer.tar.gz\n",[112,304,306,309,312,315,318],{"class":114,"line":305},3,[112,307,308],{"class":118},"sudo",[112,310,311],{"class":126}," bash",[112,313,314],{"class":126}," installer/install.sh",[112,316,317],{"class":122}," --channel",[112,319,320],{"class":126}," beta\n",[11,322,323,324,327,328,65],{},"Հանրային բանալին, որով ստուգում է տեղադրիչը, գալիս է հենց այդ փաթեթի ներսում՝\n",[109,325,326],{},"installer/keys/release-signing.pub","։ Արժե ուղիղ ասել․ նույն հոսթից ներբեռնված բանալիով ստուգված\nստորագրությունն ապացուցում է միայն, որ երկուսն էլ նույն տեղից են եկել։ Ավելին ապացուցելու համար\nհամեմատեք այդ բանալին ",[61,329,332],{"href":330,"rel":331},"https://github.com/innovayse/maran/blob/main/installer/keys/release-signing.pub",[149],"պահեստարանի պատճենի հետ",[15,334,336],{"id":335},"ինչ-է-ստանում-սերվերը","Ինչ է ստանում սերվերը",[20,338,339,345,351,357,363,369,375,393],{},[23,340,341,344],{},[26,342,343],{},"Հոսթինգի հաշիվները իրական Linux օգտատերեր են։"," Հաշիվ ստեղծելը սերվերի վրա ստեղծում է\nհամակարգային օգտատեր, տնային պանակ և սակագնի սկավառակային սահմանաչափ․ կասեցումը, վերականգնումը և\nջնջումը նույնպես հասնում են հոսթին։ Նախ գործում է գործակալը, հետո հայտնվում է տողը բազայում —\nուստի վահանակը երբեք չի հայտարարում հաշիվ, որը սերվերի վրա չկա։",[23,346,347,350],{},[26,348,349],{},"Կայքեր"," — ստատիկ, PHP և հակադարձ պրոքսի — տիրույթների կեղծանուններով և փաստաթղթերի արմատով\nհաշվի տնային պանակի ներսում։ Գործակալը կազմում է կարգավորումը, ստիպում սերվերի սեփական\nվավերացնողին ստուգել արդյունքը և հետ գլորում ֆայլը, եթե ստուգումը կամ վերաբեռնումը մերժել են —\nուստի վատ կազմումը չի կարող տապալել սերվերի մյուս կայքերը։",[23,352,353,356],{},[26,354,355],{},"PHP-ի մի քանի տարբերակ միաժամանակ","՝ յուրաքանչյուր հաշվի համար առանձին պուլ ըստ տարբերակի,\nաշխատելով հենց այդ հաշվի Linux օգտատիրոջ անունից։ Հաճախորդը կարող է փոխել թույլատրված\nկարգավորումների ենթաբազմությունը․ ցանկից դուրս անունը մերժվում է, ոչ թե լուռ անտեսվում։",[23,358,359,362],{},[26,360,361],{},"SSL"," ACME-ով HTTP-01 ստուգմամբ, սեփական վկայագրերի վերբեռնում և թարմացում ժամկետի լրանալուց\nերեսուն օր առաջ։ Բանալիները գրվում են միայն root-ին հասանելի պահեստում՝ տնային պանակներից դուրս,\nքանի որ կայքի PHP-ն աշխատում է հաճախորդի անունից։",[23,364,365,368],{},[26,366,367],{},"Տվյալների բազաներ","՝ յուրաքանչյուրի համար առանձին օգտատեր, սակագնի սահմանաչափեր և չափի ցուցում։\nԳաղտնաբառը գեներացվում է, ցուցադրվում մեկ անգամ և չի պահվում — ուստի վերականգնումը վերականգնում չէ,\nայլ վերականգնում նորից սահմանելով։",[23,370,371,374],{},[26,372,373],{},"Ֆայլերի փոխանցում"," — SFTP հոսթի սեփական OpenSSH-ով, յուրաքանչյուր մուտք փակված է jail-ում, որի\nներսում ամրակցված է հաշվի իրական տնային պանակը, նույն uid-ով և առանց shell-ի։ FTPS-ը մատակարարվում\nէ տեղադրված, բայց անջատված․ ոչինչ չի լսում, մինչև ադմինիստրատորը այն չմիացնի։",[23,376,377,380,381,384,385,388,389,392],{},[26,378,379],{},"Պահուստային պատճեններ",", միայն ավելացվող ",[26,382,383],{},"աուդիտի մատյան"," ամեն մուտքի և ամեն փոփոխության\nհամար, ",[26,386,387],{},"տեղեկամատյանների"," կենդանի դիտում, պատնեշ, մոնիթորինգ և ",[109,390,391],{},"maran"," հրամանային գործիքը։",[23,394,395,398],{},[26,396,397],{},"Մուտք վահանակ"," Argon2id-ով, կարճատև հասանելիության նշաններով, refresh-նշանների ռոտացիայով, որտեղ\nկրկնակի օգտագործված նշանը չեղարկում է ամբողջ ընտանիքը, TOTP՝ վերականգնման կոդերով, և սեսիաներով,\nորոնք կարելի է չեղարկել մեկ առ մեկ կամ բոլորը միանգամից։",[15,400,402],{"id":401},"ինչ-է-այն-միտումնավոր-չանում","Ինչ է այն միտումնավոր չանում",[11,404,405],{},"DNS, փոստ և տվյալների բազայի վեբ-կառավարիչ։ Յուրաքանչյուրը բացակայում է որոշմամբ, ոչ թե\nանավարտության պատճառով․ բազայի կառավարիչը նախատեսված է որպես առանձին տեղակայում՝ սեփական հասցեով և\nսեփական նույնականացմամբ, ոչ թե այստեղ կիսատ արված։",[15,407,409],{"id":408},"նախքան-այնտեղ-տեղադրելը-որտեղ-դա-կարևոր-է","Նախքան այնտեղ տեղադրելը, որտեղ դա կարևոր է",[11,411,412],{},"Երեք սահմանափակում արժե իմանալ նախապես — այլապես օպերատորը դրանք կիմանա դժվար ճանապարհով։",[20,414,415,429,435],{},[23,416,417,420,421,424,425,428],{},[26,418,419],{},"Ոչ մի վկայագիր իրական հավաստագրման կենտրոնի կողմից չի տրվել։"," Ամբողջ ուղին, այդուհանդերձ,\nանցնում է սկզբից մինչև վերջ՝ գրանցում, պատվեր, HTTP-01 ստուգում, ավարտում, ներբեռնում — ",[109,422,423],{},"pebble","-ի\nդեմ, որը Let's Encrypt-ի սեփական փորձնական սերվերն է, ընդ որում տրված վկայագրի սերիական համարը\nհամընկնում է PEM-ից կարդացվածի հետ։ Այդ վարժությունը գտավ իրական թերություն, որը ոչ մի թեստ չէր\nտեսնում․ հաճախորդը ",[109,426,427],{},"User-Agent"," չէր ուղարկում, ինչը pebble-ը մերժում է, իսկ Let's Encrypt-ը՝\nհանդուրժում։ Չստուգվածը հենց կենտրոնն է՝ ոչ նրա սահմանաքանակները, ոչ հանրային ցանցից ստուգումը,\nոչ նրա շղթան։ Թարմացման ճյուղն ընդհանրապես չի փորձարկվել։ Միայն HTTP-01 — առանց wildcard\nվկայագրերի, դրանք կգան DNS-ի կառավարման հետ։",[23,430,431,434],{},[26,432,433],{},"Տվյալների բազայի ջնջումը վերջնական է։"," Չկա ոչ պատկեր, ոչ աղբարկղ, ոչ ուշացում, և ջնջման\nընթացքը ոչ մի կերպ չի դիմում պահուստավորման մոդուլին։ Բազան վերականգնելի է միայն այն պատճենից, որն\nարդեն գոյություն ուներ։",[23,436,437,440,441,444,445,448,449,452],{},[26,438,439],{},"SSH դեմոնի կարգավորումը հսկվում է, և հսկողության սահմանը նշված է։"," Տեղադրիչը գրում է այն\nբլոկը, որը ֆայլերի փոխանցման մուտքը դարձնում է փակված, իսկ մոնիթորինգն այժմ կարդում է այդ բլոկը\nետ և ահազանգ է բարձրացնում շեղման դեպքում՝ բոլոր չորս հրահանգները առանձին-առանձին, այնպես որ\nբլոկը, որի վերնագիրը մնացել է, իսկ մարմինը դատարկվել, նույնպես բռնվում է։ Կարդացվում է\nկարգավորման ֆայլը, ոչ թե դեմոնի պատասխանը․ ",[109,442,443],{},"sshd -T","-ն ընդհանրապես երբեք չի տպում ",[109,446,447],{},"Match"," բլոկի\nպարունակությունը։ Ինչ չի անում․ չի հետևում ",[109,450,451],{},"Include"," հրահանգներին և չի ապացուցում, որ շեղված\nհոսթը իրոք shell է տալիս։ Այն հաղորդում է, որ կարգավորումն այլևս չի ասում գրվածը։",[11,454,455],{},"Արտոնյալ մասերը ծածկող սպառնալիքների նշումները կարդացվել և ընդունվել են թողարկման օրը։ Դա\nբավարարում է նախագծի սեփական կանոնը երկրորդ ստուգողի մասին։ Դա արտաքին աուդիտ չէ, և այս էջը այդպիսին\nչի հայտարարում։",[15,457,459],{"id":458},"թարմացում-010-ից","Թարմացում 0.1.0-ից",[11,461,462,463,466],{},"Թարմացման ուղի չկա, և այն պետք չէ․ ",[61,464,82],{"href":465},"/releases/0.1.0","-ը կմախք էր առանց հոսթինգի\nհնարավորությունների, և դրա վրա պահպանելու բան չկար։",[468,469,470],"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":67,"searchDepth":68,"depth":68,"links":472},[473,474,475,476,477,478],{"id":100,"depth":68,"text":101},{"id":157,"depth":68,"text":158},{"id":335,"depth":68,"text":336},{"id":401,"depth":68,"text":402},{"id":408,"depth":68,"text":409},{"id":458,"depth":68,"text":459},"beta","2026-09-23","Առաջին թողարկումը, որը տեղադրվում է սերվերի վրա՝ հաշիվները որպես իրական Linux օգտատերեր, կայքեր, PHP տարբերակներ, SSL, տվյալների բազաներ, ֆայլերի փոխանցում և պահուստային պատճեններ — հրապարակված է որպես բետա՝ հստակ նշված սահմանով։",{},"/hy/releases/0.0-beta.1",{"title":86,"description":481},"hy/releases/1.0.0-beta.1","1.0.0-beta.1","7rdPHEZdCpwI9XzxRvbTxiXVkFfXRPyGSxJ3YbmjAuM",{"left":489,"top":489,"width":490,"height":490,"rotate":489,"vFlip":491,"hFlip":491,"body":492},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":489,"top":489,"width":490,"height":490,"rotate":489,"vFlip":491,"hFlip":491,"body":494},"\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":489,"top":489,"width":490,"height":490,"rotate":489,"vFlip":491,"hFlip":491,"body":496},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 5h16M4 12h16M4 19h16\"/>",1790166390855]