ئەڭ ياخشى ھەقسىز ۋە تۆلەملىك Hosting سۇپىلىرىنىڭ تولۇق ئۇيغۇرچە مۇقايىسە يىلنامىسى — قاچان قايسىنى تاللاش كېرەك؟
| سۇپا تۈرى | ئۇيغۇرچە | ئىشلىتىش | مىسال |
|---|---|---|---|
| Static Hosting | ئۆزگەرمەس ساھىپخانىلىق | HTML، CSS، JS ھۆججەتلىرى. DB ياكى سېرۋىر يوق. | GitHub Pages، Netlify |
| JAMstack | JAMstack سۇپىسى | JS + API + Markdown. قۇرۇلغاندا ھاسىللانغان HTML. | Vercel، Netlify |
| Serverless | سېرۋىرسىز | API Function لار. سوئال كەلگەندىلا ئىجرا. | Vercel، Cloudflare |
| PaaS | سۇپا مۇلازىمىتى | Docker، Python، Node.js سېرۋىرلار. | Railway، Render، Fly.io |
| Edge Computing | چەت ھىسابلاش | ئىشلەتكۈچىگە يېقىن جايدا كود ئىجرا. | Cloudflare Workers |
| BaaS | Backend مۇلازىمىتى | Auth، DB، Storage — Backend سىز. | Supabase، Firebase |
# ── Vercel CLI ──────────────────────────────────────────── npm install -g vercel vercel login vercel # بىرىنچى قېتىم (سوئال سورايدۇ) vercel --prod # Production يايدۇرۇش vercel env add SECRET_KEY # مۇھىت ئۆزگەرگۈچى قوشۇش # vercel.json — Next.js تەڭشىكى { "buildCommand": "npm run build", "outputDirectory": ".next", "framework": "nextjs", "regions": ["nrt1"], "headers": [{ "source": "/(.*)", "headers": [{"key": "X-Content-Type-Options", "value": "nosniff"}] }] } # ── Netlify CLI ─────────────────────────────────────────── npm install -g netlify-cli netlify login netlify deploy # سىناق يايدۇرۇش netlify deploy --prod # Production يايدۇرۇش # netlify.toml [build] command = "npm run build" publish = "out" # Next.js ئۈچۈن "out"، CRA ئۈچۈن "build" [build.environment] NODE_VERSION = "20" [[redirects]] from = "/*" to = "/index.html" status = 200 [[headers]] for = "/*" [headers.values] X-Frame-Options = "DENY"
# ── Railway CLI ─────────────────────────────────────────── npm install -g @railway/cli railway login railway init # لايىھە قۇرۇش railway up # يايدۇرۇش railway logs # تىزىم كۆرۈش railway variables set PORT=8000 # railway.toml — FastAPI ئۈچۈن [build] builder = "NIXPACKS" buildCommand = "pip install -r requirements.txt" [deploy] startCommand = "uvicorn app.main:app --host 0.0.0.0 --port $PORT" healthcheckPath = "/health" restartPolicyType = "ON_FAILURE" # ── Render render.yaml ──────────────────────────────────── services: - type: web name: idirak-api runtime: python buildCommand: pip install -r requirements.txt startCommand: uvicorn app.main:app --host 0.0.0.0 --port $PORT envVars: - key: OPENAI_API_KEY sync: false # Dashboard دا قوشۇش databases: - name: idirak-db plan: free # 90 كۈن ھەقسىز databaseName: idirak
# ── Fly.io ──────────────────────────────────────────────── curl -L https://fly.io/install.sh | sh fly auth login fly launch # ئاپتوماتىك Dockerfile بايقايدۇ fly deploy # يايدۇرۇش fly logs # تىزىم fly scale count 2 # 2 VM غا كۆپەيتىش # fly.toml — FastAPI ئۈچۈن app = "idirak-api" primary_region = "nrt" # Tokyo [http_service] internal_port = 8000 force_https = true auto_stop_machines = true auto_start_machines = true min_machines_running = 0 [[vm]] memory = "256mb" cpus = 1 # ── Cloudflare Pages ───────────────────────────────────── npm install -g wrangler wrangler login wrangler pages deploy ./out # Next.js static export # wrangler.toml — Workers + Pages name = "idirak-api" compatibility_date = "2024-01-01" [[d1_databases]] binding = "DB" database_name = "idirak-db" database_id = "..." [[r2_buckets]] binding = "BUCKET" bucket_name = "idirak-files"
# ── GitHub Actions — GitHub Pages يايدۇرۇش ────────────── name: Deploy to GitHub Pages on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: {node-version: '20'} - run: npm ci - run: npm run build # next build && next export - uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./out # ── Supabase JavaScript ئىشلىتىش ───────────────────────── import { createClient } from '@supabase/supabase-js' const supabase = createClient( process.env.NEXT_PUBLIC_SUPABASE_URL, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY ) // Auth — كىرىش await supabase.auth.signInWithOAuth({ provider: 'github' }) // سانلىق مەلۇمات ئوقۇش const { data, error } = await supabase .from('posts') .select('*') .order('created_at', { ascending: false }) // يىلتىز ئاڭلاش (Realtime) supabase.channel('messages') .on('postgres_changes', { event: 'INSERT', schema: 'public', table: 'messages' }, payload => console.log(payload) ).subscribe()
| سۇپا | ھەقسىز نېمە؟ | چەكلىمى | ئەڭ ياخشى ئۈچۈن |
|---|---|---|---|
| ▲ Vercel | Hobby قەۋەت | 100GB Bandwidth، تىجارەت لايىھى ئەمەس | Next.js، Frontend |
| ◆ Netlify | Starter قەۋەت | 100GB BW، 300 Build دەق/ئاي | JAMstack، Static |
| 🚂 Railway | $5 كرېدىت | $5/ئاي ھەقسىز ئىشلىتىش | Backend، Full-Stack |
| ◉ Render | Static + Web Service | Web Service 15دەق ئۇخلايدۇ | Backend، API |
| ✈ Fly.io | 3 VM ھەقسىز | 256MB × 3، ئىشلىتىشكە قاراپ | Docker، Global |
| ☁ Cloudflare Pages | چەكسىز BW | 500 Build/ئاي، Workers 100K/كۈن | Static، Edge |
| 🐙 GitHub Pages | تولۇق ھەقسىز | Public ئامبار، Static پەقەت | Portfolio، ھۆججەت |
| ⚡ Supabase | 2 لايىھە | 500MB DB، 7 كۈن ئۇخلايدۇ | BaaS، Auth، DB |
| سۇپا | CDN | Cold Start | Docker | DB ئىچىدە |
|---|---|---|---|---|
| Vercel | ✅ Edge (دۇنيا) | ~200ms | ❌ | ❌ (Neon/PlanetScale) |
| Netlify | ✅ CDN | ~300ms | ❌ | ❌ |
| Railway | ⚠️ يارىم | ئاز | ✅ | ✅ PostgreSQL، Redis |
| Render | ⚠️ يارىم | ~500ms | ✅ | ✅ PostgreSQL |
| Fly.io | ✅ 30+ مىنتاقە | ئاز | ✅ | ✅ Postgres، Redis |
| Cloudflare | ✅ 300+ PoP | ~5ms | ❌ | ✅ D1 (SQLite) |
| GitHub Pages | ✅ CDN | يوق | ❌ | ❌ |
| Supabase | ✅ CDN | ~300ms | ❌ | ✅ PostgreSQL |
# idirak.com ئۈچۈن ئەڭ ئىقتىساتلىق Stack ## Frontend (Next.js) ▲ Vercel # ھەقسىز Hobby قەۋەت - Next.js 15 App Router - ھەر commit دا ئاپتوماتىك يايدۇرۇش - Preview URL ھەر PR دا ## Backend (FastAPI + LangChain) 🚂 Railway # $5 ھەقسىز كرېدىت - FastAPI + Uvicorn - LangChain + OpenAI API - PostgreSQL ئىچىدە ## ياكى Backend ئۈچۈن ◉ Render # ھەقسىز (ئاستارەق) - FastAPI يايدۇرۇش - PostgreSQL 90 كۈن ھەقسىز ## Auth + DB ⚡ Supabase # ھەقسىز 2 لايىھە - PostgreSQL (چەكسىز سوئال) - Auth (Google، GitHub OAuth) - Storage (رەسىم، ھۆججەت) ## جەمئىي خارجىيىتى: $0 — $5/ئاي
name: Deploy on: push: branches: [main] jobs: deploy-frontend: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Deploy to Vercel run: npx vercel --prod --token=${{ secrets.VERCEL_TOKEN }} deploy-backend: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Deploy to Railway run: | npm install -g @railway/cli railway up --service idirak-api env: RAILWAY_TOKEN: ${{ secrets.RAILWAY_TOKEN }}
| ئۇسۇل | چۈشەندۈرمە | سۇپا |
|---|---|---|
| مۇھىت ئۆزگەرگۈچى | API كىلىتى، DB URL نى ھەرگىز GitHub غا يۈكلىمەڭ. Dashboard دا Set قىلىڭ. | ھەممىسى |
| Preview Deploy | ھەر PR دا ئايرىم URL ھاسىللاشقا ئىمكانىيەت بىرىدۇ — Vercel، Netlify بىلەن. | Vercel، Netlify |
| Cold Start | Render ھەقسىزدە 15 دەق ئاپپ ئۇخلايدۇ. Cron job بىلەن 14 دەقىقىدە بىر ping يوللاپ ئۇيقۇدىن قالدۇرۇش. | Render |
| Supabase ئۇخلاش | ھەقسىز قەۋەتتە 7 كۈن سوئال بولمىسا ئۇخلايدۇ. Cron job بىلەن ئويغىتىش. | Supabase |
| Custom Domain | ھەر سۇپادا ئانىق دومىن قوشالايسىز. Vercel/Netlify HTTPS ئاپتوماتىك تەمىنلەيدۇ. | ھەممىسى |
| ئاپتوماتىك مىقياسلاش | Vercel Serverless ئاپتوماتىك 0→∞ مىقياسلايدۇ. Railway/Render قولدا تەڭشەش كېرەك. | Vercel |
| Monorepo | بىر ئامبارداTurborepo بىلەن Frontend + Backend بىرگە باشقۇرۇش مۇمكىن. | Railway، Vercel |
| ئاراتۇرۇش (Caching) | Cloudflare Pages CDN دىكى يادرولاش ئاپتوماتىك. Vercel ISR بىلەن ستاتىك ھاسىللاش. | Cloudflare، Vercel |