Back to Tech
Tech • Cloudflare Workers

🚀 VPS ပေါ်တွင် Marzban Panel အလွယ်ဆုံး တပ်ဆင်နည်း (2025 Guide) — အပိုင်း (၁) + (၂)

Yan Naing Lin 17 Dec 2025 → 09 Jan 2026 Guide (Part 1 + 2)

Marzban ဆိုတာ လက်ရှိအချိန်မှာ လူကြိုက်အများဆုံး VPN Panel တစ်ခုဖြစ်ပါတယ်။ Xray Core ကို အခြေခံထားပြီး အသုံးပြုရ လွယ်ကူပါတယ်။ ဒီစာမျက်နှာမှာ Part(1) Install + SSL + Template + Telegram Bot နဲ့ Part(2) Node ထပ်ချိတ် + Core Setting (Inbound JSON) ကို တစ်ခါတည်း စုပေးထားပါတယ်။

📌 Table of Contents

✅ အပိုင်း (၁) — Marzban Panel တပ်ဆင်ခြင်း (Install)

လိုအပ်ချက်များ (Requirements)
  • VPS တစ်လုံး (Ubuntu 20.04 နှင့်အထက်)
  • Domain (Cloudflare တွင် A record ချိတ်ထားသော Domain)

📥 အဆင့် (၁) - VPS ကို Update ပြုလုပ်ခြင်း

VPS ထဲဝင်ပြီး ပထမဆုံး Update လုပ်ပေးရပါမယ်။

sudo apt update && sudo apt upgrade -y

📥 အဆင့် (၂) - Marzban Script ကို Run ခြင်း

Marzban Official Script ကို အသုံးပြုပြီး Install လုပ်ပါမယ်။

bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban.sh)" @ install
docker compose not found error တက်ရင်
Error မတက်ရင် မလိုပါဘူး။
curl -fsSL https://get.docker.com | sh

ပြီးလျှင် Docker ကို Start / Enable လုပ်ပါ:

systemctl start docker
systemctl enable docker

ပြီးလျှင် အပေါ်က marzban install ကို ပြန်လုပ်လို့ရပါပြီ။ ရှိပြီးသားထပ်သွင်းမလားမေးရင် y နှိပ်ပါ။

Uvicorn running on http://127.0.0.1:8000 အခုလိုပေါ်လာရင် CTRL + C နဲ့ထွက်ပါ။

👤 အဆင့် (၃) - Admin အကောင့် ဖွင့်ခြင်း

Panel ထဲဝင်ဖို့ Admin အကောင့်တစ်ခု တည်ဆောက်ရပါမယ်။

marzban cli admin create

username ကြိုက်ရာထည့်

password ကြိုက်ရာထည့် (စာလုံးမပေါ်ပါ မှန်းရိုက်ပါ) နှစ်ခါရိုက်ရပါမည်

အောက်ကဘာမှမထည့်ချင်ရင် enter ခေါက် ကျော်သွားပါ

marzban panel ထဲဝင်ဖို့ admin account ရပါပြီ

http://127.0.0.1:8000/dashboard
Marzban Login

အပေါ်ကလို browser မှာရိုက်ပြီးဝင် marzban panel ကိုဝင်ရပါမယ်။ အခုလိုဝင်နိုင်ဖို့ Window+R cmd ကို ဖွင့်ပါ

ssh -N -L 8000:127.0.0.1:8000 root@Your_vps_ip

အခုလိုရိုက်ပြီး terminal run ပေးထားရပါမယ်

https://your.domain.com:8000/dashboard နဲ့ ကြိုက်တဲ့ browser မှာ ဝင်နိုင်ဖို့ domain တခုလိုအပ်ပါတယ်

🌐 အဆင့် (၄) - Free Domain နှင့် SSL ချိတ်ဆက်ခြင်း

အကောင့်ဖွင့်ရန်:

dpdns account KYC ကို GitHub account နဲ့ချိတ်ပေးရန်လိုနိုင်ပါတယ်။ US လိပ်စာ/ဖုန်းနံပါတ်မရှိရင် အောက်က sample ကိုထည့်နိုင်ပါတယ်:

7180 Ellerson Mill, Circle Mechanicsville 23111, United States
+1-8338692598

Sub free domain ရယူပြီးပါက Cloudflare မှာ domain add ပြီး active လုပ်ပါ။

4.1 DNS Record ထည့်ခြင်း

Cloudflare → DNS → Records တွင် အောက်ပါအတိုင်း ထည့်ပါ:

Cloudflare DNS Example

4.2 SSL Certificate ထုတ်ယူခြင်း

VPS Terminal တွင် ESSL Script ကို အသုံးပြုပြီး SSL ထုတ်ပါမယ်။

sudo bash -c "$(curl -sL https://raw.githubusercontent.com/erfjab/ESSL/master/essl.sh)" @ --install

ပြီးရင် SSL စထုတ်ပါမယ် (Email / Domain ကို မိမိအချက်အလက် အမှန်ထည့်ပါ):

essl your-email@gmail.com your.domain.com marzban
⭐ ESSL ထုတ်ပြီးရင် output ထဲက privkey.pem နဲ့ fullchain.pem လမ်းကြောင်းကို copy ယူထားပါ။

4.3 Marzban Config (.env) ပြင်ဆင်ခြင်း

Marzban ကို SSL နဲ့ အလုပ်လုပ်စေဖို့ Config ဖိုင်ကို ပြင်ပါမယ်။

marzban edit-env

#UNICORN_SSL_CERTFILE နဲ့ #UNICORN_SSL_KEYFILE ကိုရှာပြီး ရှေ့က # ကိုဖြုတ်ကာ ESSL မှာရထားတဲ့ .pem လမ်းကြောင်းတွေကို ထည့်ပါ:

UNICORN_SSL_CERTFILE = "/var/lib/marzban/certs/your.domain.com/fullchain.pem"
UNICORN_SSL_KEYFILE  = "/var/lib/marzban/certs/your.domain.com/privkey.pem"

Save (Ctrl+X → Y → Enter) ပြီးလျှင် Restart:

marzban restart

ပြီးလျှင် Browser မှာ https://your.domain.com:8000/dashboard/ နဲ့ Panel ဝင်လို့ရပါပြီ။

🎨 အဆင့် (၅) - Custom Subscription Template

Panel မှ user create ပြီးရလာသော Subscription Link ဖွင့်လိုက်ရင် ဒီဇိုင်းလှလှလေး ပေါ်နေစေဖို့ Template ထည့်ပါမယ်။

sudo wget -N -P /var/lib/marzban/templates/subscription/ https://raw.githubusercontent.com/samimifar/marzban-template/master/src/en/index.html

ပြီးရင် Config မှာ Template သုံးမယ်လို့ ပြောပေးရပါမယ်။

echo 'CUSTOM_TEMPLATES_DIRECTORY="/var/lib/marzban/templates/"' | sudo tee -a /opt/marzban/.env
echo 'SUBSCRIPTION_PAGE_TEMPLATE="subscription/index.html"' | sudo tee -a /opt/marzban/.env
marzban restart

🎨 Subscription Template (index.html) ကို ပိုလှပအောင် ပြင်ဆင်နည်း

ပိုပြီးလှပအောင် မိမိပုံစံဖြင့် လိုအပ်သလိုပြင်ဆင်လို့ရအောင် Subscription templates ကို ပြင်ဆင်နိုင်ပါတယ်။

Template ဖိုင်တည်နေရာ
VPS ထဲမှာ Template ဖိုင်က ဒီလမ်းကြောင်းထဲမှာရှိပါတယ် — /var/lib/marzban/templates/subscription/

✅ Step-by-step (SFTP နဲ့ ပြင်နည်း)

✅ အစားထိုးပြီးရင် Subscription link ကို refresh လုပ်ကြည့်ပါ။ မပြောင်းသေးရင် marzban restart လုပ်ပေးရင်အများအားဖြင့် OK ဖြစ်ပါတယ်။

📦 Ready-made template ကို Download လုပ်ပြီး သုံးချင်ရင်

ကျွန်တော် ပြုလုပ်ထားသော index.html ကို အသုံးပြုချင်ရင် အောက်က download ၂ ခုထဲက တစ်ခုကို ရွေးပြီး download လုပ်ကာ VPS ထဲက /var/lib/marzban/templates/subscription/index.html နဲ့ အစားထိုးအသုံးပြုနိုင်ပါတယ်။

📌 မမေ့နဲ့: Download လုပ်ထားတဲ့ template ကို VPS ထဲမှာ သုံးချင်ရင် နာမည်ကို index.html ဖြစ်အောင် rename လုပ်ပြီးမှ /var/lib/marzban/templates/subscription/ ထဲကို upload/replace လုပ်ပါ။

🤖 အဆင့် (၆) - Telegram Bot ချိတ်ဆက်ခြင်း

Config ဖိုင်ကို ပြန်ဖွင့်ပါ:

marzban edit-env

အောက်ပါ key တွေကိုရှာပြီး ရှေ့ဆုံးက # ကိုဖြုတ်ကာ ဖြည့်ပါ (BotFather မှ Token ယူထားပါ):

TELEGRAM_API_TOKEN = "သင့်_Bot_Token_ထည့်ပါ"
TELEGRAM_ADMIN_ID  = "သင့်_Telegram_ID_ထည့်ပါ"
SUB_PROFILE_TITLE  = "Yan Naing Lynn VPN"
XRAY_SUBSCRIPTION_URL_PREFIX = "https://your.domain.com:8000"

Save ပြီး Restart:

marzban restart

create လုပ်ထားတဲ့ bot ကို start နှိပ်ကြည့်ပါ server info နှင့်အတူ user create လုပ်လို့ရမယ့် function များပါလာမှာပါ

🎉 ဂုဏ်ယူပါတယ်!
အခုဆိုရင် သင်ဟာ Feature စုံလင်တဲ့ Marzban Panel ကို ကိုယ်ပိုင် VPS ပေါ်မှာ အောင်မြင်စွာ တပ်ဆင်ပြီးပါပြီ။

Browser မှာ

https://your.domain.com:8000/dashboard/

ရိုက်ဝင်ပြီး admin account ထည့် marzban panel ကို Browser မှာသုံးနိုင်ပါပြီ။

🧩 အပိုင်း (၂) — Marzban Node ထပ်ချိတ်ခြင်း + Core Setting (Inbound JSON)

Part (2) မှာဘာတွေပါလဲ?
  • Marzban-node script run
  • Panel ထဲကနေ Add Node လုပ်နည်း (certificate paste)
  • Core Setting ထဲမှာ inbound JSON ထည့်နည်း + example JSON များ

📥 အဆင့် (၁) - VPS ကို Update ပြုလုပ်ခြင်း

VPS ထဲဝင်ပြီး ပထမဆုံး Update လုပ်ပေးရပါမယ်။

sudo apt update && sudo apt upgrade -y

📥 အဆင့် (၂) - Marzban-node Script ကို Run ခြင်း

Marzban-node Official Script ကို အသုံးပြုပြီး Install လုပ်ပါမယ်။

sudo bash -c "$(curl -sL https://github.com/Gozargah/Marzban-scripts/raw/master/marzban-node.sh)" @ install

Terminal ထဲမှာ အောက်လိုပေါ်လာနိုင်ပါတယ်:

Please paste the content of the Client Certificate, press ENTER on a new line when finished:
⚠️ အခုလိုပေါ်လာရင် Marzban panel ညာဘက်အပေါ် အခြစ်သုံးခြစ် ကိုဝင်ပြီး Node settingAdd New Marzban Node ကို နှိပ်ပေးပါ။

Node setting ထဲမှာ ဖြည့်သွင်းရမယ့် အချက်များ

Certificate ကို Copy/Paste လုပ်နည်း

Script က ထပ်မေးနိုင်တဲ့ prompt များ:

Do you want to use REST protocol? (Y/n):
Enter the SERVICE_PORT (default 62050):
Enter the XRAY_API_PORT (default 62051):
✅ အခုတိုင်း ပေါ်လာလျှင် တကြောင်းခြင်း yenterenter လုပ်ပါ။ (မိမိပေးခဲ့သော port / api port များထည့်လဲရပါတယ်)

⚙️ Marzban Core Setting (Inbound JSON ထည့်နည်း)

Marzban panel ထဲက စက်သွားပုံ Core Setting ကိုနှိပ်လိုက်ရင် inbound json တွေ ထည့်လို့ရတဲ့ Configuration ကိုတွေ့ရပါမယ်။

အပေါ်ဆုံးပိုင်း (ဥပမာ)

{
  "log": { "loglevel": "warning" },
  "routing": {
    "rules": [
      {
        "ip": ["geoip:private"],
        "outboundTag": "BLOCK",
        "type": "field"
      }
    ]
  },
  "inbounds": [

အောက်ဆုံးပိုင်း (ဥပမာ)

  ],
  "outbounds": [
    { "protocol": "freedom", "tag": "DIRECT" },
    { "protocol": "blackhole", "tag": "BLOCK" }
  ]
}
⚠️ "inbounds": [ နဲ့ ] ကြားထဲကို inbound json တွေ ထည့်ပေးရပါမယ်။ တခုထည့်ပြီးတိုင်း comma ( , ) ခံပေးဖို့လိုပါတယ် (နောက်တခု ဆက်ထည့်မယ်ဆိုရင်)။

Shadowsocks TCP inbound (Default ပါပြီးသား)

{
  "tag": "Shadowsocks TCP",
  "listen": "0.0.0.0",
  "port": 1080,
  "protocol": "shadowsocks",
  "settings": {
    "clients": [],
    "network": "tcp,udp"
  }
}
⚠️ နောက်ထပ် inbound ထပ်ထည့်မယ်ဆိုရင် Shadowsocks inbound JSON အဆုံးမှာ comma ( , ) အရင်ခံပြီး enter ခေါက်ပြီး အောက်က json များကို ထည့်သွင်းနိုင်ပါပြီ။

🔐 VLESS REALITY JSON

{
  "tag": "VLESS REALITY",
  "listen": "0.0.0.0",
  "port": 443,
  "protocol": "vless",
  "settings": {
    "clients": [],
    "decryption": "none"
  },
  "streamSettings": {
    "network": "tcp",
    "security": "reality",
    "realitySettings": {
      "show": false,
      "dest": "www.cloudflare.com:443",
      "xver": 0,
      "serverNames": ["www.cloudflare.com"],
      "privateKey": "terminal မှ ရလာသော privatekey ထည့်ရန်",
      "shortIds": ["a1b2c3d4"]
    }
  },
  "sniffing": {
    "enabled": true,
    "destOverride": ["http","tls"]
  }
}

VLESS REALITY အတွက် private key ယူရန် marzban panel run ထားတဲ့ vps ထဲကို အောက်ပါအတိုင်း run

docker exec -it marzban-marzban-1 xray x25519
✅ Output ထဲက privateKey ကို JSON ထဲက "privateKey" နေရာမှာ အစားထိုးပါ။

🧩 VLESS WS TLS JSON

{
  "tag": "VLESS WS TLS",
  "listen": "0.0.0.0",
  "port": 443,
  "protocol": "vless",
  "settings": {
    "clients": [],
    "decryption": "none"
  },
  "streamSettings": {
    "network": "ws",
    "security": "tls",
    "tlsSettings": {
      "certificates": [
        {
          "certificateFile": "/var/lib/marzban/certs/your.domain.com/fullchain.pem",
          "keyFile": "/var/lib/marzban/certs/your.domain.com/privkey.pem"
        }
      ]
    },
    "wsSettings": { "path": "/vless" }
  }
}
⚠️ your.domain.com နေရာမှာ မိမိရဲ့ domain ကိုအစားထိုးပေးပါ။

🧩 VMess WS TLS JSON

{
  "tag": "VMess WS TLS",
  "listen": "0.0.0.0",
  "port": 8443,
  "protocol": "vmess",
  "settings": { "clients": [] },
  "streamSettings": {
    "network": "ws",
    "security": "tls",
    "tlsSettings": {
      "certificates": [
        {
          "certificateFile": "/var/lib/marzban/certs/your.domain.com/fullchain.pem",
          "keyFile": "/var/lib/marzban/certs/your.domain.com/privkey.pem"
        }
      ]
    },
    "wsSettings": { "path": "/vmess" }
  }
}

🧩 VMESS + TCP & TROJAN + TCP JSON

{
  "tag": "VMESS + TCP",
  "listen": "0.0.0.0",
  "port": 4427,
  "protocol": "vmess",
  "settings": { "clients": [] },
  "streamSettings": {
    "network": "tcp",
    "tcpSettings": {},
    "security": "none"
  },
  "sniffing": {
    "enabled": true,
    "destOverride": ["http","tls"]
  }
},
{
  "tag": "TROJAN + TCP",
  "listen": "0.0.0.0",
  "port": 9094,
  "protocol": "trojan",
  "settings": { "clients": [] },
  "streamSettings": {
    "network": "tcp",
    "tcpSettings": {},
    "security": "none"
  },
  "sniffing": {
    "enabled": true,
    "destOverride": ["http","tls"]
  }
}

🧩 Trojan TLS JSON

{
  "tag": "Trojan TLS",
  "listen": "0.0.0.0",
  "port": 2053,
  "protocol": "trojan",
  "settings": { "clients": [] },
  "streamSettings": {
    "network": "tcp",
    "security": "tls",
    "tlsSettings": {
      "certificates": [
        {
          "certificateFile": "/var/lib/marzban/certs/your.domain.com/fullchain.pem",
          "keyFile": "/var/lib/marzban/certs/your.domain.com/privkey.pem"
        }
      ]
    }
  }
}
⚠️ Certificate path ထဲက domain (ဥပမာ your.domain.com) ကို မိမိ domain နဲ့အစားထိုးပါ။

🧩 TROJAN + TCP JSON (သီးသန့်)

{
  "tag": "TROJAN + TCP",
  "listen": "0.0.0.0",
  "port": 9094,
  "protocol": "trojan",
  "settings": { "clients": [] },
  "streamSettings": {
    "network": "tcp",
    "tcpSettings": {},
    "security": "none"
  },
  "sniffing": {
    "enabled": true,
    "destOverride": ["http","tls"]
  }
}

🧩 Host Setting ထဲမှာ ပြင်လို့ရမယ့် Variables (Dynamic Tags)

✅ အခုဆိုရင် Inbound ထည့်သွင်းခြင်း ပြီးဆုံးသွားပါပြီ။
နောက်တစ်ဆင့်အနေနဲ့ Host setting ထဲမှာ user info တွေကို dynamic ဖြစ်အောင် ပြင်နိုင်ပါတယ်။

Host setting ထဲမှာ {USERNAME} လို့ ထည့်ထားလျှင် user create လုပ်တုန်းက မိမိပေးထားသော နာမည်ကို VPN/Subscription ထဲမှာ အလိုအလျောက် ဖော်ပြပေးမှာဖြစ်ပါတယ်။

💡 Tip: အောက်က Variables (tags) တွေကို သင့်လိုအပ်တဲ့နေရာမှာ ထည့်ပြီး dynamic text / title / remark စတာတွေကို လှလှပပ ပြင်ဆင်နိုင်ပါတယ်။

Example (အသုံးပြုပုံနမူနာ)

📌 {USERNAME} • {PROTOCOL}/{TRANSPORT} • {STATUS_EMOJI}
Data: {DATA_USAGE} / {DATA_LIMIT} (Left: {DATA_LEFT})
Expire: {EXPIRE_DATE} • Days left: {DAYS_LEFT}

Use these variables to make it dynamic

⚠️ သတိ: Variables တွေကို အတိအကျ ဒီပုံစံအတိုင်း {...} နဲ့ရေးပါ။ စာလုံးကြီး/စာလုံးသေး (case) မမှားအောင် ထည့်ပေးပါ။