Hostra hujjatlari
Saytingiz, botingiz yoki API'ngizni Hostra'da ishga tushirish uchun kerakli hamma narsa. Har bir bo'limda aniq qiymatlar: portlar, limitlar va buyruqlar.
Hostra nima#
Hostra — dasturchilar uchun hosting. Har bir foydalanuvchiga alohida Docker konteyner ajratiladi: unda sizning barcha loyihalaringiz, terminal va fon jarayonlari ishlaydi. Har bir loyiha nom.wwwz.uz manzilini yoki sizning shaxsiy domeningizni oladi.
Darhol ishlaydigan subdomen
*.wwwz.uz wildcard DNS: subdomen yaratilishi bilan ochiladi, HTTPS avtomatik.
Alohida konteyner
CPU, RAM va disk tarifingiz bo'yicha cheklanadi, boshqa foydalanuvchilardan ajratilgan.
Tayyor muhit
Node.js 22, Python 3.12, PHP 7.4–8.5, Git, PM2 — o'rnatish shart emas.
Bazalar
MySQL, PostgreSQL, MongoDB va shaxsiy Redis — internetdan yopiq, faqat konteyneringizdan.
Terminalsiz, panel orqali boshqariladigan oddiy PHP hosting kerak bo'lsa — Hostra Hosting bo'limiga qarang.
Serverlar ARM64 (aarch64) arxitekturasida. Node.js, Python va PHP paketlari odatda muammosiz ishlaydi; faqat x86 uchun yig'ilgan tayyor binar fayllar ishlamaydi — ularning arm64 versiyasini oling.
Tezkor boshlash#
- Ro'yxatdan o'ting va loyiha yaratingDashboard → Yangi → Yangi subdomen. Nom: 30 belgigacha, faqat
a-z,0-9va-. Sayt darholhttps://nom.wwwz.uzmanzilida ochiladi. - Kodni joylangFayllar bo'limiga ZIP tashlab "Arxivni ochish" qiling, yoki terminalda loyiha papkasida
git cloneqiling. - Ishga tushiringStatik sayt (
index.html) hech narsasiz ochiladi. Backend loyiha birinchi so'rovda avtomatik ishga tushadi yoki terminaldapm2 startqilasiz.
cd ~/nom.wwwz.uz git clone https://github.com/siz/loyiha.git . npm install pm2 start server.js # PORT avtomatik beriladi wwwz status # sayt, port va jarayon holati
Tariflar va to'lov#
Quyidagi jadval serverdan jonli yuklanadi — narx va limitlar doim hozirgi holatda.
| Tariflar yuklanmoqda... |
- Free — faqat statik saytlar (HTML, CSS, JS). Terminal, SSH, backend, PHP, cron va bazalar yo'q.
- Pullik tarif 30 kunga balansdan to'lanadi. Tarifni almashtirsangiz, qolgan muddat narxlar nisbatida yangi tarifga o'tkaziladi.
- Pro tarifining bepul sinov muddati (jadvaldagi "Sinov") har bir hisob uchun bir marta beriladi.
- Kichikroq tarifga o'tish uchun loyihalar soni va disk hajmi yangi tarif limitiga sig'ishi kerak.
- Balans: Dashboard → Balansni to'ldirish. To'lov sahifasida 10 daqiqa beriladi, pul tushgach balans avtomatik to'ladi.
Loyiha va fayllar joyi#
Har bir loyiha — konteyneringizdagi alohida papka. Terminalda uy papkasi /home/terminal:
| Loyiha turi | Manzil | Papka |
|---|---|---|
| Subdomen | https://nom.wwwz.uz | ~/nom.wwwz.uz |
| Shaxsiy domen | https://domen.uz | ~/domen.uz |
- Loyihalar soni tarifga bog'liq; shaxsiy domen ham bitta loyiha hisoblanadi.
- Sayt ochilganda birinchi yuklanadigan fayl —
index.html. Uni Loyiha → Sozlamalar → "Asosiy fayl" orqali o'zgartirasiz. - Sayt fayllari loyiha papkasining ildizida bo'lishi kerak (masalan
~/nom.wwwz.uz/index.html, ichki papkada emas). - Loyihani o'chirish (Sozlamalar → Xavfli hudud) uning barcha fayllarini qaytarib bo'lmaydigan tarzda o'chiradi.
Loyiha sahifasidagi bo'limlar: Umumiy, Fayllar, Terminal, Cron, Bazalar, PHP, Jarayon, AI Doktor, DNS, Domen, SSH, Sozlamalar.
Backend: Node.js, Python#
Port — eng muhim qoida
Hisobingizga 10 ta ichki port ajratilgan (3000–3009), har bir loyiha bittasini oladi: birinchi loyiha odatda 3000, keyingilari 3001, 3002... Shuning uchun portni kodga qattiq yozmang — PORT muhit o'zgaruvchisini o'qing va 0.0.0.0 da tinglang (127.0.0.1 / localhost da tinglasangiz sayt 502 beradi).
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Salom!'));
app.listen(process.env.PORT || 3000, '0.0.0.0');import os
PORT = int(os.environ.get("PORT", 3000))
# uvicorn: uvicorn.run(app, host="0.0.0.0", port=PORT)
# Flask: app.run(host="0.0.0.0", port=PORT)Loyihangiz porti: Loyiha → Sozlamalar ("Ichki port"), yoki terminalda ports.
Avtomatik ishga tushirish
Saytga so'rov kelganda ilova ishlamayotgan bo'lsa, platforma uni o'zi ishga tushiradi. Buyruq loyiha papkasidan quyidagi tartibda aniqlanadi:
| Papkada topilsa | Ishga tushiriladi |
|---|---|
package.json da start yoki dev skript | npm run start (yoki dev). Vite, Next, Astro, Nuxt uchun host va port avtomatik qo'shiladi |
server.js / index.js | node orqali |
bot.py, main.py, app.py | Python; venv/ yoki .venv/ bo'lsa o'shaning python'i |
.php fayllar | PHP veb-server (PHP bo'limi) |
| Hech biri yo'q | Statik sayt sifatida xizmat qiladi |
Boshqa buyruq kerak bo'lsa: Loyiha → Jarayon → "Ishga tushirish buyrug'i". Ilova 3 soniyada javob bermasa, sababi ~/.wwwz/autostart.log ga yoziladi (wwwz logs).
PM2 va terminal buyruqlari
Terminaldagi pm2 va npm run dev maxsus o'rovchi orqali ishlaydi: sayt papkasida ishga tushirsangiz, to'g'ri PORT va jarayon nomi (subdomen) o'zi beriladi. PM2 jarayonlari brauzer yopilgandan keyin ham ishlashda davom etadi.
cd ~/nom.wwwz.uz pm2 start server.js # Node.js pm2 start bot.py # Python (tizimdagi python3) pm2 start bot.py --interpreter ./venv/bin/python # venv bilan pm2 list # jarayonlar pm2 logs nom # loglar pm2 restart nom | pm2 stop nom | pm2 delete nom wwwz status # sayt, port, PM2 holati wwwz logs -f # jonli loglar wwwz free # shu sayt portini band qilgan jarayonni bo'shatish wwwz usage # disk kvotasi wwwz resurrect # saqlangan PM2 jarayonlarini tiklash
Jarayon bo'limi (Dashboard)
- Start / Stop / Restart, "Portni bo'shatish", RAM va CPU, konsol loglari.
- Avtomatik qayta ishga tushirish: dastur yiqilsa 3 soniyadan keyin qayta ishga tushadi. Cheksiz yiqilish aylanishining oldini olish uchun qayta ishga tushishlar soni cheklangan.
PHP saytlar#
Loyiha papkasida .php fayllar bo'lsa, sayt PHP-FPM orqali bajariladi. PHP pullik tariflarda ishlaydi; Free tarifda PHP bajarilmaydi.
Veb-server turi
| Rejim | Qachon |
|---|---|
| Avto (tavsiya) | Loyiha ildizida .htaccess bo'lsa Apache, bo'lmasa Nginx |
| Apache + PHP-FPM | .htaccess, mod_rewrite: WordPress, Laravel, OpenCart |
| Nginx + PHP-FPM | Tez, kam RAM |
PHP built-in (php -S) | Oddiy skriptlar va botlar |
Veb-server va PHP versiyasi: Loyiha → Sozlamalar → "Veb-server (PHP)". Saqlangach sayt bir necha soniyada qayta ishga tushadi.
Versiyalar
PHP 7.4, 8.1, 8.2, 8.3, 8.4 (standart) va 8.5. Har bir sayt o'z versiyasida ishlaydi. PHP 7.4 va 8.1 uchun rasmiy xavfsizlik yangilanishlari tugagan — faqat eski loyihalar uchun ishlating.
wwwz-php # joriy va mavjud versiyalar wwwz-php 8.2 # terminal va composer uchun 8.2 wwwz-php default # standartga (8.4) qaytish php7.4 eski.php # bitta buyruq boshqa versiyada
Kengaytmalar
Loyiha → PHP bo'limida har bir sayt uchun kengaytmalarni yoqasiz yoki o'chirasiz.
- Standart yoqilgan: mysqli, pdo_mysql, sqlite3, pdo_sqlite, opcache, gd, exif, fileinfo, zip, phar, mbstring, intl, iconv, gettext, curl, sockets, ftp, bcmath, calendar, xml, dom, simplexml, xmlreader, xmlwriter, xsl va boshqalar.
- Kerak bo'lsa yoqiladi: pgsql, pdo_pgsql, mongodb, redis, memcached, apcu, igbinary, msgpack, imagick, bz2, zstd, tidy, yaml, soap, ldap, imap, ssh2, amqp, gmp, uuid, xdebug.
Loglar
pm2 logs nom
tail -f ~/.wwwz/web/nom.wwwz.uz/php-fpm.log
tail -f ~/.wwwz/web/nom.wwwz.uz/apache-error.log # Nginx rejimida: nginx-error.log.htaccess faylni Fayllar menejeri orqali yaratib yoki yuklab bo'lmaydi (xavfsizlik cheklovi). Uni terminal, SFTP yoki ZIP bo'lmagan yo'l bilan qo'shing: masalan terminalda nano .htaccess.Fayllar menejeri#
- Yuklash (sudrab tashlash), papka va fayl yaratish, qayta nomlash, nusxa yaratish, boshqa papkaga ko'chirish yoki nusxalash, o'chirish.
- ZIP arxivni joyida ochish, fayl yoki butun loyihani yuklab olish.
- Kod muharriri: sintaksis ranglari, saqlash;
.php,.py,.jsfayllar uchun Telegram webhook tugmasi.
wget/git ishlating. Xavfsizlik uchun menejer orqali .env, .htaccess, .git, .sh, .exe kabi fayllarni yaratib/yuklab bo'lmaydi — ularni terminal yoki SFTP orqali qo'shasiz.Web terminal#
Loyiha → Terminal: brauzerda to'liq bash. Pullik tariflarda mavjud. Terminal sizning konteyneringizda terminal foydalanuvchisi sifatida ishlaydi (root emas).
| Turi | O'rnatilgan |
|---|---|
| Node.js | Node.js 22, npm 10, yarn, pnpm, PM2 |
| Python | Python 3.12, pip, venv, uv |
| PHP | PHP 7.4 / 8.1 / 8.2 / 8.3 / 8.4 / 8.5, composer |
| Bazalar | mysql, psql, mongosh, mongodump, redis-cli, sqlite3 |
| Boshqa | git, gcc, ffmpeg, curl, nano |
pip installvanpm i -gsudo'siz ishlaydi (~/.localga o'rnatiladi). Python loyihalar uchunpython3 -m venv venvtavsiya etiladi.free,top,nproctarifingizdagi RAM va CPU ni ko'rsatadi.ports— subdomenlaringiz va ularning ichki portlari.- AI yordamchilar:
agy(yokiai) — Google Antigravity; birinchi martaagy-loginbilan o'z Google hisobingizni ulaysiz.opencodeham mavjud.
SSH va SFTP#
O'z kompyuteringiz, telefoningiz (Termux) yoki VS Code'dan konteyneringizga ulanasiz. Pullik tariflarda mavjud.
| Parametr | Qiymat |
|---|---|
| Host | ssh.wwwz.uz |
| Port | 2222 |
| Foydalanuvchi | Hostra loginingiz |
| Kirish | hisob paroli, SSH token yoki public key |
ssh.wwwz.uz bo'lishi kerak. wwwz.uz Cloudflare orqasida — unga 2222-port orqali ulanib bo'lmaydi.ssh login@ssh.wwwz.uz -p 2222 # Termux (Android) pkg install openssh -y && ssh login@ssh.wwwz.uz -p 2222 # Fayl ko'chirish scp -P 2222 fayl.zip login@ssh.wwwz.uz:~/nom.wwwz.uz/ sftp -P 2222 login@ssh.wwwz.uz
- SSH token — parol o'rniga ishlatiladigan maxsus kalit so'z. Loyiha → SSH bo'limida ko'rasiz va yangilaysiz.
- Public key — o'sha bo'limda 10 tagacha kalit qo'shasiz (
~/.ssh/id_ed25519.pubmazmuni). - SFTP (FileZilla, WinSCP, Cyberduck): protokol SFTP, host
ssh.wwwz.uz, port2222. - VS Code: "Remote - SSH" kengaytmasi, host sifatida
login@ssh.wwwz.uz -p 2222.
Cron vazifalari#
Buyruqlarni jadval bo'yicha avtomatik bajarish: zaxira olish, php artisan schedule:run, xabarnomalar, kesh tozalash. Vaqt Toshkent (UTC+5) bo'yicha. Pullik tariflarda ishlaydi.
- Loyiha → Cron → "Vazifa qo'shish"Tayyor jadvaldan tanlang yoki 5 maydonni o'zingiz yozing. Keyingi ishga tushish vaqtlari pastda ko'rinadi.
- Buyruqni yozingU loyiha papkasida (
~/nom.wwwz.uz) terminaldagi kabi bajariladi. - Saqlang va sinab ko'ring"Hozir ishga tushirish" va log tugmalari bor.
| Jadval | Ma'nosi | Misol |
|---|---|---|
* * * * * | har daqiqa | php artisan schedule:run |
*/5 * * * * | har 5 daqiqa | php cron.php |
0 * * * * | har soat boshida | python3 fetch.py |
30 3 * * * | har kuni 03:30 | node backup.js |
0 9 * * 1-5 | ish kunlari 09:00 | node report.js |
- Bitta loyihada 10 tagacha vazifa; eng kichik oraliq — 1 daqiqa.
- Vaqt chegarasi: standart 5 daqiqa, ko'pi bilan 1 soat. Oshsa vazifa to'xtatiladi (kod 124).
- Oldingi ishga tushish tugamagan bo'lsa, yangisi o'tkazib yuboriladi. Bir hisobda bir vaqtda 3 tagacha vazifa ishlaydi.
- Natija
~/.wwwz/cron/<id>.logga yoziladi (512 KB dan oshsa eski qismi qisqartiriladi). - Boshqa PHP versiyasi: buyruqda
php8.2 cron.php.
Telegram botlar#
Polling (Python, Node.js)
Bot faylini loyiha papkasiga qo'yib PM2 bilan ishga tushirasiz — u fonda doim ishlaydi. bot.py nomli fayl avtomatik ham aniqlanadi.
cd ~/nom.wwwz.uz python3 -m venv venv && ./venv/bin/pip install aiogram pm2 start bot.py --interpreter ./venv/bin/python pm2 logs nom
Conflict xatosini beradi.Webhook (PHP va boshqalar)
- Bot faylini muharrirda ochingFayllar →
bot.php(yoki.py,.js) → yuqoridagi webhook tugmasi. - TokenKodda token bo'lsa avtomatik topiladi, bo'lmasa kiritasiz. Webhook manzili:
https://nom.wwwz.uz/bot.php. Ixtiyoriysecret_tokenham bor. - "Webhook o'rnatish""Holatni ko'rish" — ulangan URL, kutilayotgan xabarlar soni va Telegram qaytargan oxirgi xato.
<?php
$token = getenv('BOT_TOKEN') ?: 'TOKEN';
$u = json_decode(file_get_contents('php://input'), true);
if (($u['message']['text'] ?? '') === '/start') {
file_get_contents("https://api.telegram.org/bot$token/sendMessage?" . http_build_query([
'chat_id' => $u['message']['chat']['id'], 'text' => 'Salom!',
]));
}Telegram serverlaridan keladigan webhook so'rovlari platformaning so'rovlar chastotasi cheklovidan ozod.
AI Doktor#
Loyiha → AI Doktor → "Tekshirish". Loyiha papkasi, sozlamalar va loglarni avtomatik tekshirib, topilgan muammo uchun sababni va tuzatish tugmasini ko'rsatadi. Tekshiruvlar oldindan belgilangan qoidalar asosida ishlaydi (tashqi AI modeliga kodingiz yuborilmaydi).
Python
venv yo'qligi yoki buzilgani, o'rnatilmagan requirements.txt paketlari, kodda import qilingan, lekin o'rnatilmagan paketlar.
Node.js
node_modules yo'q, MODULE_NOT_FOUND, start skripti yo'q.
Tarmoq
127.0.0.1/localhost da tinglash (502 sababi), band port (EADDRINUSE).
Loglar
Traceback, SyntaxError, Telegram 401/Conflict, xotira tugashi (OOM), ruxsat xatolari, .env yo'qligi.
Bazalar: umumiy ma'lumot#
Dashboard → Bazalar (loyiha tablarida Cron yonida). Barcha bazalar internetdan yopiq: ularga faqat o'z konteyneringiz ichidan — loyiha kodi, terminal yoki cron orqali ulanasiz. Tashqi kompyuterdan to'g'ridan-to'g'ri ulanib bo'lmaydi.
| Baza | Kodda ulanish | Web panel |
|---|---|---|
| MySQL (MariaDB 11.4) | localhost (PHP) yoki 127.0.0.1:3306 | phpMyAdmin, Adminer |
| PostgreSQL 17 | 127.0.0.1:5432 | Ichki panel, Adminer |
| MongoDB 8 | 127.0.0.1:27017, authSource=admin | Ichki panel |
| Redis 7 (shaxsiy) | 127.0.0.1:6379, parolsiz | Ichki panel |
- Foydalanuvchi nomi — Hostra loginingiz, parol dashboardda avtomatik yaratiladi. Baza nomi:
login_nom(masalanali_shop). - Bazalar soni tarifdagi loyihalar soniga teng (kamida 2, ko'pi bilan 100), umumiy hajm — tarif diski hajmicha. MySQL, PostgreSQL va MongoDB uchun alohida hisoblanadi. Free tarifda bazalar yo'q.
- Hajm limitdan oshsa yozish to'xtatiladi, o'qish va o'chirish ishlaydi; joy bo'shagach 5 daqiqada tiklanadi. Tarif muddati tugasa hisob vaqtincha bloklanadi.
- Import/eksport dashboarddan, bitta fayl 95 MB gacha. Kattaroq dumpni terminaldan tiklang.
- Barcha bazalarning nusxasi har soatda serverda olinadi.
.env faylida saqlang (uni terminal yoki SFTP orqali yaratasiz).MySQL (MariaDB)#
PHP'da localhost ishlating (unix socket), Python/Node.js'da 127.0.0.1, port 3306. Jadvallarni phpMyAdmin yoki Adminer'da ko'rasiz — dashboarddan bir bosishda, parolsiz kirish.
$pdo = new PDO('mysql:host=localhost;dbname=login_shop;charset=utf8mb4', 'login', 'PAROL');
import pymysql # pip install pymysql
db = pymysql.connect(host='127.0.0.1', port=3306, user='login', password='PAROL', database='login_shop')
const mysql = require('mysql2/promise'); // npm install mysql2
const db = await mysql.createConnection({ host: '127.0.0.1', user: 'login', password: 'PAROL', database: 'login_shop' });mysql -u login -p login_shop mysqldump -u login -p login_shop > backup.sql mysql -u login -p login_shop < backup.sql
PostgreSQL#
PostgreSQL 17. Django, Laravel, Prisma, SQLAlchemy uchun. Dashboarddagi Panel: SQL muharrir, jadvallarni ko'rish va tahrirlash, tuzilma, CSV eksport; Adminer ham mavjud.
DATABASE_URL=postgresql://login:PAROL@127.0.0.1:5432/login_app
const { Pool } = require('pg'); // npm install pg
const db = new Pool({ connectionString: process.env.DATABASE_URL });
import os, psycopg # pip install "psycopg[binary]"
db = psycopg.connect(os.environ["DATABASE_URL"])psql "postgresql://login:PAROL@127.0.0.1:5432/login_app" pg_dump -Fc -h 127.0.0.1 -U login login_app > backup.dump pg_restore --no-owner -h 127.0.0.1 -U login -d login_app backup.dump
PHP uchun PHP bo'limida pdo_pgsql kengaytmasini yoqing. Hajm limitdan oshganda baza faqat o'qish rejimiga o'tadi; limitdan 20% dan ko'proq oshsa ulanish vaqtincha yopiladi.
MongoDB#
MongoDB 8. Ulanish qatorida authSource=admin bo'lishi shart. Panel: hujjatlarni filtr, saralash bilan ko'rish, tahrirlash, aggregate, indekslar, maydonlar tahlili.
MONGODB_URI=mongodb://login:PAROL@127.0.0.1:27017/login_app?authSource=admin
const mongoose = require('mongoose'); // npm install mongoose
await mongoose.connect(process.env.MONGODB_URI);
from pymongo import MongoClient # pip install pymongo
db = MongoClient(os.environ["MONGODB_URI"]).get_default_database()mongosh "mongodb://login:PAROL@127.0.0.1:27017/login_app?authSource=admin" mongodump --uri "mongodb://login:PAROL@127.0.0.1:27017/login_app?authSource=admin" --archive=db.gz --gzip
Redis#
Har bir foydalanuvchiga alohida Redis 7 server. Bazalar → Redis → "Redis'ni yoqish". Parol kerak emas: server faqat sizning konteyneringizga ulangan. Kesh, sessiyalar, navbatlar (BullMQ, Celery) uchun.
REDIS_URL=redis://127.0.0.1:6379/0
const Redis = require('ioredis'); // npm install ioredis
const redis = new Redis(process.env.REDIS_URL);
import redis # pip install redis
r = redis.Redis(host='127.0.0.1', port=6379, decode_responses=True)- Xotira — tarif RAM'ining taxminan 1/4 qismi (32 MB – 1 GB). To'lsa, yangi yozuvlar rad etiladi — kesh kalitlariga muddat bering:
SET kalit qiymat EX 3600. - Ma'lumotlar diskka yoziladi (AOF) — qayta ishga tushganda saqlanib qoladi.
- Panel: kalitlar brauzeri (qidiruv, tur bo'yicha filtr, db0–15), qiymatni tahrirlash, TTL, konsol.
Hostra Hosting (PHP)#
Konteyner loyihalaridan alohida, odatiy boshqaruv panelli PHP hosting. Terminal va portlar bilan ishlashni istamasangiz — WordPress, oddiy PHP yoki statik sayt uchun qulay. Alohida serverda ishlaydi va o'z login-paroliga ega.
Start tarifi (bepul)
| Resurs | Limit |
|---|---|
| Disk | 1 GB |
| Domen / sayt | 3 ta (bepul subdomen ham shu hisobga kiradi) |
| MySQL (MariaDB) baza | 3 ta |
| Cron vazifa | 5 ta |
| PHP | 7.4, 8.0 – 8.5 (standart 8.3) |
| SSL | Bepul, Let's Encrypt |
| Veb-server | Apache + Nginx (.htaccess ishlaydi) |
| Pochta, DNS zona, SSH buyruq qatori | Yo'q |
PHP mail() | Ishlamaydi (serverdan 25-port yopiq). Xat yuborish uchun tashqi SMTP xizmatidan foydalaning (587 yoki 465-port, masalan PHPMailer bilan). |
| FTP | Faqat shifrlangan (FTPS/TLS). Tavsiya: SFTP, 22-port. |
Yoqish
- Emailni tasdiqlangDashboard → Profil. Tasdiqlanmagan email bilan hosting yoqilmaydi.
- Hosting dashboardi → "Hostingni yoqish"Panel uchun login (
hs_loginingiz) va parol beriladi. Parol faqat bir marta ko'rsatiladi — nusxalab oling. Yo'qolsa, Hosting dashboardi → Sozlamalar bo'limida "Parolni yangilash"ni bosing. - Panelga kiring
https://hosting.wwwz.uz:8083— Hostra hisobingiz bilan emas, yuqoridagi login va parol bilan.
Bepul subdomen
Yoqilganda sizga hostN.wwwz.uz ko'rinishidagi manzil (masalan host7.wwwz.uz) avtomatik ulanadi va SSL o'rnatiladi. Sertifikat bir necha daqiqa ichida tayyor bo'ladi; holati Hosting dashboardining Umumiy sahifasida ko'rinadi.
O'z domeningiz
- Panelda Web bo'limidan domenni qo'shing.
- Domeningiz DNS'ida A yozuvini
52.55.222.159ga yo'naltiring.
Fayl yuklash
- Brauzerda: paneldagi Fayl menejeri.
- SFTP (FileZilla, WinSCP): protokol SFTP, host
hosting.wwwz.uz, port22, login va parol — panelniki.
Konteyner loyihasi yoki hosting?
| Konteyner loyihasi | Hostra Hosting | |
|---|---|---|
| Node.js, Python, Telegram bot, fon jarayonlari | Ha | Yo'q |
| Terminal va SSH | Ha | Yo'q (faqat SFTP) |
| PHP sayt | Pullik tariflarda | Ha, bepul Start tarifida |
| Boshqaruv | Dashboard + terminal | Alohida panel |
| Manzil | nom.wwwz.uz | hostN.wwwz.uz |
Shaxsiy domen#
Dashboard → Yangi → "Shaxsiy domen qo'shish" (yangi loyiha), yoki mavjud loyiha → Domen. Domen registratoringiz panelida quyidagi yozuvlarni qo'shing:
| Turi | Nomi | Qiymati | |
|---|---|---|---|
| A | @ | 150.136.227.60 | asosiy |
| CNAME | www (yoki subdomen) | ssh.wwwz.uz | ixtiyoriy |
| TXT | _wwwz-verify | wwwz-verify=… | majburiy |
- TXT qiymati sizga va domenga xos — aniq qiymatni dashboarddagi Domen bo'limidan nusxalang. U domen sizniki ekanini tasdiqlaydi.
- DNS yangilanishi 5 daqiqadan 2 soatgacha davom etadi. Keyin "DNS tekshirish", so'ng "SSL olish" — bepul Let's Encrypt sertifikati o'rnatiladi.
- Domen Cloudflare'da bo'lsa, proksi (to'q sariq bulut) yoqilgan holda ham ishlaydi — bunda TXT tasdiqlash yetarli.
- CNAME ni
wwwz.uzga emas, aynanssh.wwwz.uzga yo'naltiring.
whois domen.uz ni tekshiring. Holati EXPIRED bo'lsa, domen to'lovi tasdiqlanmagan — registratoringizda faollashtiring.Subdomen DNS yozuvlari#
Loyiha → DNS: nom.wwwz.uz va uning ostidagi nomlar (api.nom.wwwz.uz kabi) uchun DNS yozuvlarini boshqarasiz. Turlar: A, AAAA, CNAME, TXT, MX, NS, SRV, CAA. Masalan, tashqi xizmatni tasdiqlash uchun TXT, pochta uchun MX yoki subdomenni boshqa hostingga CNAME. Faqat o'z subdomeningiz ostidagi nomlarni o'zgartira olasiz.
Xavfsizlik va zaxira#
- Cloudflare:
wwwz.uzva barcha subdomenlar Cloudflare orqali o'tadi (HTTPS va DDoS himoyasi).*.wwwz.uzmanzillariga Cloudflare'ni chetlab o'tib kelgan so'rovlar rad etiladi. - Konteyner izolyatsiyasi: faqat o'qiladigan tizim fayllari, root huquqlarisiz, seccomp profili, CPU/RAM/jarayonlar soni cheklovi, disk kvotasi. Konteynerlar bir-biriga tarmoq orqali ulana olmaydi, server ichki xizmatlari va bulut metadata manziliga ham kirish yopiq.
- Bazalar internetga ochilmagan — faqat konteyner ichidagi socket orqali.
- Skaner botlar: kirmagan foydalanuvchidan
/.env,/.git,/wp-login.php,/phpmyadminkabi manzillarga so'rov kelsa, 403 qaytadi va u IP 15 daqiqaga bloklanadi. - So'rovlar chastotasi: tizimga kirmagan bitta IP'dan daqiqasiga 600 ta so'rov (rasm, CSS, JS kabi statik fayllar hisoblanmaydi). Oshsa
429qaytadi; 3 daqiqa ketma-ket oshsa yoki daqiqasiga 1500 dan ko'p bo'lsa IP vaqtincha bloklanadi. - Zaxira: fayllar va bazalarning nusxasi har soatda olinadi (
node_modules,venv,.gitkabi qayta tiklanadigan papkalarsiz). Tiklash kerak bo'lsa Yordam bo'limiga yozing. Bu server zaxirasi — muhim ma'lumotlarning nusxasini o'zingiz ham saqlang.
Sizdan talab qilinadigan
- Tokenlar va parollarni kodga emas,
.envga yozing;.envni Git'ga qo'shmang. - SQL so'rovlarda parametrlardan (prepared statements) foydalaning.
- SSH uchun public key yoki SSH token ishlating.
- Paketlarni yangilab turing:
npm audit,pip list --outdated,composer outdated.
Limitlar#
Tarifga bog'liq limitlar (loyihalar, disk, RAM, CPU, internet tezligi) Tariflar jadvalida. Umumiy limitlar:
| Nima | Limit |
|---|---|
| Bitta HTTP so'rov hajmi (fayl yuklash) | 100 MB (Cloudflare) |
| Serverning javob berish vaqti | 100 soniya (Cloudflare) |
| So'rovlar bitta IP'dan (tizimga kirmagan) | 600 / daqiqa (statik fayllarsiz), oshsa 429 |
| Ichki portlar | 10 ta (3000–3009) |
| Baza importi (dashboard) | 95 MB |
| Cron | 10 vazifa / loyiha, 1 soat / ishga tushish, 3 tasi bir vaqtda |
| SSH | 6 ulanish / IP; 5 xato urinish 3 daqiqada → 15 daqiqa blok |
| SSH public key | 10 ta |
| Subdomen nomi | 30 belgigacha: a-z, 0-9, - |
Muammolar va yechimlar#
Saytda 502 xatosi chiqyapti
Ilova ishlamayapti yoki noto'g'ri portda tinglayapti.
wwwz statusvapm2 logs nom— ilova ishlayaptimi, xato bormi.- Kod
process.env.PORTva0.0.0.0da tinglayaptimi (127.0.0.1emas). - Port band bo'lsa:
wwwz free. - Loyiha → AI Doktor → "Tekshirish".
SSH ulanmayapti
- Host
ssh.wwwz.uz, port2222ekanini tekshiring (wwwz.uzemas, 22-port emas). - Tarifingiz pullik va faol ekanini tekshiring — Free tarifda SSH yo'q.
- Ketma-ket xato parol kiritgan bo'lsangiz, IP 15 daqiqaga bloklangan bo'lishi mumkin.
Shaxsiy domen ochilmayapti
- A yozuv
150.136.227.60ga (yoki CNAMEssh.wwwz.uzga) yo'naltirilganmi. _wwwz-verifyTXT yozuvi dashboarddagi qiymat bilan bir xilmi.- DNS tarqalishini kuting (2 soatgacha), keyin "DNS tekshirish" va "SSL olish".
- .uz domen bo'lsa
whoisdaEXPIREDemasligini tekshiring.
Telegram bot javob bermayapti
- Polling:
pm2 logs nom.Conflict— bot boshqa joyda ham ishlayapti;401— token noto'g'ri. - Webhook: Fayllar → bot fayli → webhook tugmasi → "Holatni ko'rish" — Telegram qaytargan oxirgi xato ko'rinadi.
.env yoki .htaccess yarata olmayapman
Fayllar menejeri bu fayllarni xavfsizlik uchun bloklaydi. Terminalda yarating: nano .env, yoki SFTP orqali yuklang.
Diskim to'ldi
wwwz usage va du -sh ~/* | sort -h bilan katta papkalarni toping. Ko'pincha node_modules, keshlar va loglar joy egallaydi: pm2 flush, npm cache clean --force.
Tarif tugadi — ma'lumotlarim nima bo'ladi?
Saytlar va konteyner to'xtatiladi. 3 kun ichida tarifni uzaytirsangiz hammasi tiklanadi, aks holda loyihalar va fayllar o'chiriladi. Batafsil.
Yordam#
- Dashboard → Yordam: murojaat (tiket) yozing — javob o'sha yerda keladi.
- Telegram: @goldkarta
- Yangiliklar kanali: t.me/wwwz_uz