Qanday format
ZIP arxiv. ZIP ichida fayllar ikki yo'l bilan bo'lishi mumkin:
# Variant A: index.html root'da
my-site.zip
├── index.html
├── style.css
└── assets/photo.jpg
# Variant B: bitta papka ichida — biz uni avtomatik strip qilamiz
my-site.zip
└── dist/
├── index.html
├── style.css
└── assets/photo.jpgQabul qilinadigan fayllar
- HTML/CSS/JS: .html, .htm, .css, .js, .mjs, .map
- Rasm: .png, .jpg, .jpeg, .gif, .svg, .webp, .avif, .ico
- Media: .mp4, .webm, .mp3, .ogg, .wav
- Shrift: .woff, .woff2, .ttf, .otf, .eot
- Data: .json, .xml, .txt, .md, .csv, .webmanifest
Bloklanganlar
.php, .py, .rb, .sh, .bash, .pl, .cgi, .exe— server tomon kod ishlamaydi (platforma faqat statik). Bunday fayllar bo'lsa deploy rad etiladi.
Cheklovlar
- ZIP hajm: 200 MB
- Uncompressed: 5 GB
- Compression ratio: 100x dan ortiq bo'lsa shubhali deb sanaladi
- Path traversal (
../) bloklanadi .git/,.env,node_modules/,.DS_Store— avtomatik skip qilinadi
index.html qoidalari
Caddy / ga so'rovni index.html'ga yo'naltiradi. Agar uni topa olmasa:
- Faqat bitta HTML fayl bor → uni
index.htmldeb alias qilamiz - Bir nechta HTML bor → ogohlantirish chiqaramiz, lekin deploy davom etadi
Atomic deploy
Yangi versiya vN+1/papkasiga to'liq yuklanadi, keyin symlink atomic almashtiriladi. Hech qachon yarim-yuklangan sayt ko'rinmaydi. Oxirgi 3 ta versiya saqlanadi (kelajakda rollback uchun).