MILAGPT
«Biznes uchun»dan boshlang: ishga tushirishgacha uch qadam.
Tahlilga yozilishTelegram ochiladi
RU·EN·UZ
Hujjatlar · Oʻz serveringiz

Oʻz serveringiz: izolyatsiya va bir kunda oʻrnatish

Milani oʻzingizga yoki mijozga oʻrnatyapsizmi? Bitta skript toza Ubuntu yoki Debian serverini tayyorlaydi: parol bilan kirish oʻchirilgan alohida foydalanuvchi, 600 huquqli token va jurnal, xabarlarni qabul qiluvchi xizmat. Skript nima qilmasligi — Claudeʼga kirmaydi, bot tokenini yozmaydi, port ochmaydi — uning birinchi qatorlarida yozilgan. Quyidagi har bir qatorda kodga havola bor.

Milani oʻziga yoki mijozga oʻrnatayotgan va nima qayerda turishini bilmoqchi boʻlgan odam uchun.

Skript nima qiladi

Bir marta ishga tushirasiz — server Milaga tayyor

deploy/bootstrap.sh toza serverda root nomidan ishga tushadi. Undan keyin serverda alohida foydalanuvchi, muhitlar, Mila toʻplami, qabul xizmati va yopiq fayllar qoladi. Repozitoriyda oʻrnatish bir kunlik ish deb yozilgan: kechgacha xabarlar kela boshlaydi va qayta ishga tushganda yoʻqolmaydi. REFERENCE.md:495-499

01 · FOYDALANUVCHI

Alohida, parolsiz

Bu hisobda root huquqlari yoʻq. Parol bilan kirish oʻchirilgan: faqat kalit bilan yoki root orqali kirasiz. Kalitni --ssh-key bayrogʻi bilan berasiz.

bootstrap.sh:17-19 bootstrap.sh:73-83 bootstrap.sh:85-93
02 · XIZMAT

Chiqib ketsangiz ham ishlaydi

Foydalanuvchi xizmatlari SSH-sessiya yopilgandan keyin ham ishlayveradi. Xabarlarni qabul qiluvchi — Restart=always sozlamali systemd xizmati.

bootstrap.sh:95-102 bootstrap.sh:195-204 deploy/README.md:47-48
03 · TOʻPLAM

Muhitlar va Mila toʻplami

Shu foydalanuvchi uchun Bun, Node va Claude Code oʻrnatiladi, keyin toʻplam va uning oʻrnatuvchisi: koʻnikmalar, ishga tushirish buyrugʻi, hooklar.

bootstrap.sh:104-133 bootstrap.sh:135-160 deploy/README.md:45
04 · PAPKALAR

Xabar papkalari — 0700

~/.claude/channels/telegram/ va uning ichki papkalariga faqat shu foydalanuvchi kira oladi.

bootstrap.sh:162-167
Izolyatsiya

Token va jurnal — faqat Mila foydalanuvchisi uchun

Skript bot tokeni, kiruvchi xabarlar jurnali va kirish roʻyxatiga 600 huquq qoʻyadi: ularni faqat fayl egasi oʻqiy va yoza oladi. bootstrap.sh:217-224 deploy/README.md:49

mila doctor buni keyin ham tekshirib turadi. U huquqlarni son sifatida solishtirmaydi: 0444 soni 0600 dan kichik, lekin tokenni hammaga oʻqishga ochib qoʻyadi. U boʻlmasligi kerak boʻlgan bitlarni qidiradi va qaysi chmod buyrugʻini bajarishni yozib beradi. doctor.py:248-271

Oʻrnatuvchi asboblar siyosatini ham shu papkaga, 600 huquq bilan qoʻyadi. install/install.sh:239-251

Boshqa foydalanuvchilarga yopiq
Quruq ishga tushirish

Har bir qadam bajarilishidan oldin koʻrinadi

--dry-run bayrogʻi bilan skript hech narsani oʻzgartirmaydi va qiladigan har bir qadamini ekranga chiqaradi. README aynan shundan boshlashni va chiqqan natijani ovoz chiqarib oʻqishni maslahat beradi. deploy/README.md:29-35 bootstrap.sh:40-43

Qayta ishga tushirish xavfsiz: bajarilgan qadamni skript oʻtkazib yuboradi va buni aytadi. deploy/README.md:51 bootstrap.sh:4-6

Avval u tizimni tekshiradi: root nomidan ishga tushdimi, Ubuntu yoki Debianmi. Aks holda toʻxtaydi va sababini yozadi. bootstrap.sh:45-52

$ scp deploy/bootstrap.sh root@server:/tmp/
$ ssh root@server \
    'bash /tmp/bootstrap.sh --user mila --dry-run'
# oʻqidingiz — endi haqiqiy ishga tushirish:
$ ssh root@server \
    'bash /tmp/bootstrap.sh --user mila'
Asboblar siyosati

rm -rf va DROP TABLE kartochkasiz rad etiladi

Siyosat Milaning qaysi buyruqlari oʻzi bajarilishini, qaysilari rad etilishini va qaysilari odamni kutishini hal qiladi. Qoidalar yuqoridan pastga oʻqiladi, birinchi mos kelgan qoida ishlaydi; roʻyxatda yoʻq hamma narsa — «ask», yaʼni soʻrash. permissions.example.json:2-4 permission_policy.ts:8-15

01 · DENY

Darhol rad etiladi

Rekursiv oʻchirish, baza yoki jadvalni yoʻq qilish, mkfs, dd bilan diskka yozish, chmod -R 777 /. Hech kim uygʻotilmaydi: bu oldindan hal qilingan.

permissions.example.json:9-26 permission_policy.ts:12-13
02 · ALLOW

Koʻrish va sanash

git status, ls, cat, grep va shunga oʻxshashlar; fayllarni oʻqish, qidirish va tahrirlash. Kartochkasiz bajariladi va jurnalga yoziladi.

permissions.example.json:27-32 permissions.example.json:44-68 permission_policy.ts:11
03 · ASK

Muddatli kartochka

Milaning oʻz skriptlari, qolgan shell buyruqlari va uning oʻz tizim fayllariga yozish: hooklar, sozlamalar, access.json, .env. Kartochka 15 daqiqa kutadi; javob boʻlmasa — rad.

permissions.example.json:33-43 permissions.example.json:69-74 permissions.example.json:5 permission_policy.ts:14-15 permission_policy.ts:50
04 · NOSOZLIK

Buzilgan fayl yopadi, ochmaydi

Siyosat fayli buzilsa, hammasi «allow» emas, «ask» boʻladi. Bir daqiqada 25 tadan ortiq kartochka chiqsa, qolganlari oʻzi rad etiladi: cheksiz aylanish sizni kartochkalarga koʻmib tashlamaydi.

permissions.example.json:2 permission_policy.ts:19-25 permissions.example.json:6-7
Qoʻlda uchta qadam

Akkaunt va obuna sizniki boʻlib qoladi

Skript hech kimning oʻrniga Claude Codeʼga kirmaydi, bot tokenini yozmaydi va tashqariga port ochmaydi. Bu ataylab shunday: akkaunt va obuna mijozning oʻziniki, klaviaturadagi qoʻl ham uniki. Bitta obunani bir necha kishi ishlatsa, provayder shartlari buziladi va ikkala akkaunt ham xavf ostida qoladi. bootstrap.sh:11-15 deploy/README.md:11-23

Oxirida skript uchta qadamni chiqaradi. mila doctor — qabul testi: undan oʻtmagan server mijozga berilmaydi. bootstrap.sh:226-247 deploy/README.md:77-79

Keyin — telefondan juftlash va policy allowlist: ungacha bot nomini topgan har kim juftlash kodini oladi. deploy/README.md:81-89

1 su - mila; claude
  # mijozning oʻz akkaunti bilan kirish
2 /plugin install mila-telegram@mila
  /mila-telegram:configure <token>
3 systemctl --user enable --now \
    mila-telegram-receiver
  mila doctor
Ochigʻini aytsak

Skript siz uchun nima qilmaydi

Repozitoriyda

Har bir qatorni oʻzingiz oʻqib chiqing

mila repozitoriysidagi serverga oʻrnatish fayllari
FaylNima qiladi
deploy/bootstrap.shserver skripti: foydalanuvchi, muhitlar, toʻplam, papkalar, xizmat, huquqlar
deploy/README.mdbutun yoʻl: quruq ishga tushirish, qoʻlda uchta qadam, mijozga topshirish (ingliz tilida)
install/install.shtoʻplam oʻrnatuvchisi: koʻnikmalar, hooklar, asboblar siyosati
permissions.example.jsonsiyosat namunasi: standart holatda ask, deny va allow nomma-nom
permission_policy.tssiyosat qanday oʻqiladi: uchta natija, buzilgan fayl, kartochkalar limiti
install/doctor.pymila doctor: kanal tekshiruvi va ortiqcha huquq bitlari
docs/REFERENCE.mdoʻrnatish — bir kun; undan keyin nima qoladi (ingliz tilida)
Ochiq kod · Apache-2.0

Fork qiling, oʻrgating, PR yuboring

Toʻplam ochiq: koʻnikmalar, hooklar, asboblar va shablonlar. Oʻz serveringizda bootstrap.sh --dry-run buyrugʻini ishga tushiring: u hech narsani oʻzgartirmaydi va har bir qadamni koʻrsatadi.

Sahifadagi faktlar: github.com/shakhruz/mila (main, 8a6b97d, v1.5.2), 25.10.2026 da tekshirilgan. Telefondagi qatorlar — skript quruq ishga tushganda oʻzi chiqaradigan matndan parcha. «Mila», «MILAGPT» va logotip — MILAGPT tovar belgilari.