Maran

beta · 23 սեպտեմբեր 2026

Maran 1.0.0-beta.1 — առաջին տեղադրելի թողարկումը

Առաջին թողարկումը, որը տեղադրվում է սերվերի վրա՝ հաշիվները որպես իրական Linux օգտատերեր, կայքեր, PHP տարբերակներ, SSL, տվյալների բազաներ, ֆայլերի փոխանցում և պահուստային պատճեններ — հրապարակված է որպես բետա՝ հստակ նշված սահմանով։

Առաջին թողարկումը, որը տեղադրվում է սերվերի վրա և հոսթինգի հաշիվը տանում է սկզբից մինչև վերջ։ Հրապարակված է որպես բետա, և բառը նշանակում է հենց այն, ինչ նշանակում է․ դեռ մի՛ տեղավորեք դրա վրա ուրիշի հաճախորդներին։

Ծրագիրը տեղադրվում է, աշխատում է և անում այն, ինչ գրված է իր էկրաններին։ Երեք բան, որոնց համար վճարովի հոսթինգ արտադրանքը պարտավոր է վստահելի լինել, փորձարկվել է միայն նախագծի սեփական կոնտեյներներում — ոչ մի վկայագիր չի թողարկվել իրական հավաստագրող կենտրոնի կողմից, ոչ մի սկավառակային սահմանաչափ չի կիրառվել իրական ֆայլային համակարգի կողմից, և ոչ մի վերականգնում չի կատարվել իրական սարքավորման վրա։ Սրանք հայտնի սխալներ չեն — սրանք պնդումներ են, որոնք դեռ ոչ ոք չի ստուգել այնտեղ, որտեղ դա կարևոր է։

Տեղադրում

bash
curl -sSL https://get.maran.innovayse.com | sudo bash

Տեղադրիչը ներբեռնում է այն արտեֆակտները, որոնք նշված են նախագծի թողարկման բանալիով ստորագրված մանիֆեստում, և մերժում է ամեն ինչ, ինչի ստորագրությունը կամ ստուգիչ գումարը չի համընկնում։ Մանիֆեստը և դրանում նշված արտեֆակտները հրապարակված են releases.maran.innovayse.com հասցեում, իսկ այն պիտակի ելակետային կոդը, որից հավաքվել է թողարկումը՝ GitHub-ում։

Նայեք, թե ինչ է անելու տեղադրիչը, նախքան այն root-ով գործարկելը — ինչպես ցանկացած սցենարի դեպքում, որին հանձնում եք ձեր սերվերը․ ներբեռնեք, կարդացեք, հետո գործարկեք։

Ֆայլերը և ինչպես ինքներդ ստուգել դրանք

Այն ամենը, ինչ ներբեռնում է տեղադրիչը, հրապարակված է releases.maran.innovayse.com-ում և թվարկված է նախագծի թողարկման բանալիով ստորագրված մանիֆեստում։

ՖայլՉափSHA-256
agent-x86_64.tar.gz2.9 MBf9a57621ef349cb1bfc2df5f7f812685fb3a5a690834b18bd1ae8df2493fbadc
api-x86_64.tar.gz25.4 MB6f367807e265d06bee9db37d692d0748c5fb815967965c0e59675a0b8468c799
frontend-x86_64.tar.gz340 KB27879087ddb1a0d1e05e92b9b0b4dec6da21a99263388a74e122681ada828009

Ստորագրված ցանկը manifest.json-ն է, կողքին՝ manifest.json.sig, իսկ integrity-manifest.json-ը գրանցում է արխիվների ներսի ամեն ֆայլ, ոչ միայն արխիվները։

Եթե չեք ուզում որևէ բան խողովակով ուղարկել root-shell — նույն տեղադրումն առանց դրա․

bash
curl -O https://releases.maran.innovayse.com/installer/maran-installer.tar.gz
tar -xzf maran-installer.tar.gz
sudo bash installer/install.sh --channel beta

Հանրային բանալին, որով ստուգում է տեղադրիչը, գալիս է հենց այդ փաթեթի ներսում՝ installer/keys/release-signing.pub։ Արժե ուղիղ ասել․ նույն հոսթից ներբեռնված բանալիով ստուգված ստորագրությունն ապացուցում է միայն, որ երկուսն էլ նույն տեղից են եկել։ Ավելին ապացուցելու համար համեմատեք այդ բանալին պահեստարանի պատճենի հետ։

Ինչ է ստանում սերվերը

  • Հոսթինգի հաշիվները իրական Linux օգտատերեր են։ Հաշիվ ստեղծելը սերվերի վրա ստեղծում է համակարգային օգտատեր, տնային պանակ և սակագնի սկավառակային սահմանաչափ․ կասեցումը, վերականգնումը և ջնջումը նույնպես հասնում են հոսթին։ Նախ գործում է գործակալը, հետո հայտնվում է տողը բազայում — ուստի վահանակը երբեք չի հայտարարում հաշիվ, որը սերվերի վրա չկա։
  • Կայքեր — ստատիկ, PHP և հակադարձ պրոքսի — տիրույթների կեղծանուններով և փաստաթղթերի արմատով հաշվի տնային պանակի ներսում։ Գործակալը կազմում է կարգավորումը, ստիպում սերվերի սեփական վավերացնողին ստուգել արդյունքը և հետ գլորում ֆայլը, եթե ստուգումը կամ վերաբեռնումը մերժել են — ուստի վատ կազմումը չի կարող տապալել սերվերի մյուս կայքերը։
  • PHP-ի մի քանի տարբերակ միաժամանակ՝ յուրաքանչյուր հաշվի համար առանձին պուլ ըստ տարբերակի, աշխատելով հենց այդ հաշվի Linux օգտատիրոջ անունից։ Հաճախորդը կարող է փոխել թույլատրված կարգավորումների ենթաբազմությունը․ ցանկից դուրս անունը մերժվում է, ոչ թե լուռ անտեսվում։
  • SSL ACME-ով HTTP-01 ստուգմամբ, սեփական վկայագրերի վերբեռնում և թարմացում ժամկետի լրանալուց երեսուն օր առաջ։ Բանալիները գրվում են միայն root-ին հասանելի պահեստում՝ տնային պանակներից դուրս, քանի որ կայքի PHP-ն աշխատում է հաճախորդի անունից։
  • Տվյալների բազաներ՝ յուրաքանչյուրի համար առանձին օգտատեր, սակագնի սահմանաչափեր և չափի ցուցում։ Գաղտնաբառը գեներացվում է, ցուցադրվում մեկ անգամ և չի պահվում — ուստի վերականգնումը վերականգնում չէ, այլ վերականգնում նորից սահմանելով։
  • Ֆայլերի փոխանցում — SFTP հոսթի սեփական OpenSSH-ով, յուրաքանչյուր մուտք փակված է jail-ում, որի ներսում ամրակցված է հաշվի իրական տնային պանակը, նույն uid-ով և առանց shell-ի։ FTPS-ը մատակարարվում է տեղադրված, բայց անջատված․ ոչինչ չի լսում, մինչև ադմինիստրատորը այն չմիացնի։
  • Պահուստային պատճեններ, միայն ավելացվող աուդիտի մատյան ամեն մուտքի և ամեն փոփոխության համար, տեղեկամատյանների կենդանի դիտում, պատնեշ, մոնիթորինգ և maran հրամանային գործիքը։
  • Մուտք վահանակ Argon2id-ով, կարճատև հասանելիության նշաններով, refresh-նշանների ռոտացիայով, որտեղ կրկնակի օգտագործված նշանը չեղարկում է ամբողջ ընտանիքը, TOTP՝ վերականգնման կոդերով, և սեսիաներով, որոնք կարելի է չեղարկել մեկ առ մեկ կամ բոլորը միանգամից։

Ինչ է այն միտումնավոր չանում

DNS, փոստ և տվյալների բազայի վեբ-կառավարիչ։ Յուրաքանչյուրը բացակայում է որոշմամբ, ոչ թե անավարտության պատճառով․ բազայի կառավարիչը նախատեսված է որպես առանձին տեղակայում՝ սեփական հասցեով և սեփական նույնականացմամբ, ոչ թե այստեղ կիսատ արված։

Նախքան այնտեղ տեղադրելը, որտեղ դա կարևոր է

Երեք սահմանափակում արժե իմանալ նախապես — այլապես օպերատորը դրանք կիմանա դժվար ճանապարհով։

  • Ոչ մի վկայագիր իրական հավաստագրման կենտրոնի կողմից չի տրվել։ Ամբողջ ուղին, այդուհանդերձ, անցնում է սկզբից մինչև վերջ՝ գրանցում, պատվեր, HTTP-01 ստուգում, ավարտում, ներբեռնում — pebble-ի դեմ, որը Let's Encrypt-ի սեփական փորձնական սերվերն է, ընդ որում տրված վկայագրի սերիական համարը համընկնում է PEM-ից կարդացվածի հետ։ Այդ վարժությունը գտավ իրական թերություն, որը ոչ մի թեստ չէր տեսնում․ հաճախորդը User-Agent չէր ուղարկում, ինչը pebble-ը մերժում է, իսկ Let's Encrypt-ը՝ հանդուրժում։ Չստուգվածը հենց կենտրոնն է՝ ոչ նրա սահմանաքանակները, ոչ հանրային ցանցից ստուգումը, ոչ նրա շղթան։ Թարմացման ճյուղն ընդհանրապես չի փորձարկվել։ Միայն HTTP-01 — առանց wildcard վկայագրերի, դրանք կգան DNS-ի կառավարման հետ։
  • Տվյալների բազայի ջնջումը վերջնական է։ Չկա ոչ պատկեր, ոչ աղբարկղ, ոչ ուշացում, և ջնջման ընթացքը ոչ մի կերպ չի դիմում պահուստավորման մոդուլին։ Բազան վերականգնելի է միայն այն պատճենից, որն արդեն գոյություն ուներ։
  • SSH դեմոնի կարգավորումը հսկվում է, և հսկողության սահմանը նշված է։ Տեղադրիչը գրում է այն բլոկը, որը ֆայլերի փոխանցման մուտքը դարձնում է փակված, իսկ մոնիթորինգն այժմ կարդում է այդ բլոկը ետ և ահազանգ է բարձրացնում շեղման դեպքում՝ բոլոր չորս հրահանգները առանձին-առանձին, այնպես որ բլոկը, որի վերնագիրը մնացել է, իսկ մարմինը դատարկվել, նույնպես բռնվում է։ Կարդացվում է կարգավորման ֆայլը, ոչ թե դեմոնի պատասխանը․ sshd -T-ն ընդհանրապես երբեք չի տպում Match բլոկի պարունակությունը։ Ինչ չի անում․ չի հետևում Include հրահանգներին և չի ապացուցում, որ շեղված հոսթը իրոք shell է տալիս։ Այն հաղորդում է, որ կարգավորումն այլևս չի ասում գրվածը։

Արտոնյալ մասերը ծածկող սպառնալիքների նշումները կարդացվել և ընդունվել են թողարկման օրը։ Դա բավարարում է նախագծի սեփական կանոնը երկրորդ ստուգողի մասին։ Դա արտաքին աուդիտ չէ, և այս էջը այդպիսին չի հայտարարում։

Թարմացում 0.1.0-ից

Թարմացման ուղի չկա, և այն պետք չէ․ 0.1.0-ը կմախք էր առանց հոսթինգի հնարավորությունների, և դրա վրա պահպանելու բան չկար։