Back to Tech
Tech • Cloudflare Workers

Phone ဖြင့် Termux နဲ့ Cloudflare Workers API ကနေ Telegram Bot Worker Deploy လုပ်နည်း

2026-01-08 10–15 မိနစ် Cloudflare Workers • Termux • Phone • Telegram Bot
လိုအပ်ချက်များ (Requirements)
  • Termux Appliaction
  • Cloudflare Account
  • Quickedit Application
  • Telegram Bot
⚠️ မှတ်ချက်: CF_SUBDOMAIN ထဲမှာ .workers.dev ကို မထည့်ရပါ (အမည်ပဲထည့်ပါ)။

(1) Cloudflare API Token တည်ဆောက်ခြင်း

Cloudflare dashboard → Profile/ Dashboard မှ ဘယ်ဘက် menu အောက်က API Tokens ကိုဝင်ပါ။

Create Custom Token

Token verify command ကို copy ယူထားရန်

curl "https://api.cloudflare.com/client/v4/user/tokens/verify" \
-H "Authorization: Bearer Your_User_API_Token"

Account ID နှင့် Subdomain ကို Copy ယူရန်

✅ ဒီအပိုင်းပြီးရင် Termux ထဲမှာ လိုအပ်တာတွေ install လုပ်ပြီး deploy သွားပါမယ်။

(2) Termux Setup

2.1 Storage permission

termux-setup-storage

Storage allow ပေးပါ။

2.2 Packages update + tools install

pkg update -y && pkg upgrade -y
pkg install -y curl ca-certificates openssl nano coreutils

2.3 Proxy/VPN ပြဿနာ မဖြစ်အောင် (အမြဲ unset)

unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY all_proxy ALL_PROXY

2.4 Network စစ် (Cloudflare မဝင်နိုင်ရင် VPN လိုနိုင်)

curl -4 -I --connect-timeout 10 https://cloudflare.com
⚠️ HTTP/2 301 ပြရင် OK ပါ။ Connection timed out ပြရင် VPN ခံပြီး ပြန် run ပါ။

(3) Project folder ကို Phone Storage ထဲမှာဆောက်ရန်

ဖုန်းအများစုမှာ /storage/emulated/0/Download (သို့) /Downloads ရှိပါတယ်။ Termux မှာ အောက်က commands ကို run ပါ။ (ဥပမာ worker name = tg-worker-api)

cd /storage/emulated/0/Download || cd /storage/emulated/0/Downloads
mkdir -p tg-worker-api
cd tg-worker-api
pwd

(4) Worker code ဖိုင် (၂ ခု) ရေးရန်

Bot “အလုပ်လုပ်ရုံ” (minimum working) နမူနာပါ။

4.1 main.js

cat > main.js <<'EOF'
export default {
  async fetch(request, env) {
    if (request.method === "GET") {
      return new Response("OK - bot worker is running", { status: 200 });
    }

    if (request.method !== "POST") {
      return new Response("Method not allowed", { status: 405 });
    }

    const update = await request.json();
    const chatId = update?.message?.chat?.id;
    const text = update?.message?.text || "";

    if (!chatId) return new Response("No chatId", { status: 200 });

    const reply =
      text === "/start"
        ? "✅ Worker bot online! Send any text."
        : `You said: ${text}`;

    const url = `https://api.telegram.org/bot${env.BOT_TOKEN}/sendMessage`;

    await fetch(url, {
      method: "POST",
      headers: { "content-type": "application/json" },
      body: JSON.stringify({ chat_id: chatId, text: reply }),
    });

    return new Response("OK", { status: 200 });
  },
};
EOF

4.2 metadata.json

cat > metadata.json <<'EOF'
{
  "main_module": "main.js",
  "compatibility_date": "2026-01-08"
}
EOF

4.3 ဖိုင်ရှိ/မရှိ စစ်

ls -la
main.js နဲ့ metadata.json ၂ ဖိုင် ပေါ်လာရပါမယ်။

(5) Termux env variables set

သင့် Cloudflare API Token / Account ID / Subdomain ကို ကိုယ့်ဟာနဲ့ အစားထိုးပါ။ Subdomain မှာ .workers.dev မထည့်ရပါ

export CF_API_TOKEN="PASTE_CLOUDFLARE_API_TOKEN"
export CF_ACCOUNT_ID="PASTE_ACCOUNT_ID"
export CF_SUBDOMAIN="PASTE_SUBDOMAIN_WITHOUT_WORKERS_DEV"
export SCRIPT_NAME="tg-bot-test"
export WORKER_URL="https://${SCRIPT_NAME}.${CF_SUBDOMAIN}.workers.dev"

ပြန်စစ်ကြည့်ပါ (output ထဲမှာ အမည်များပေါ်လာရမယ်)

echo ${#CF_API_TOKEN}
echo $CF_ACCOUNT_ID
echo $CF_SUBDOMAIN
echo $SCRIPT_NAME
echo $WORKER_URL

(6) Token verify (API Token မှန်/မမှန်)

curl -s https://api.cloudflare.com/client/v4/user/tokens/verify \
  -H "Authorization: Bearer $CF_API_TOKEN"
✅ Response ထဲမှာ "success": true ပြရပါမယ်။ (Authorization header format မမှန်ရင် ဒီမှာ fail ဖြစ်တတ်)

(7) Worker ကို API နဲ့ Deploy (PUT)

unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY all_proxy ALL_PROXY

curl -4 --tlsv1.2 --http1.1 --connect-timeout 20 --max-time 180 \
  --retry 8 --retry-all-errors --retry-delay 2 \
  -sS -X PUT "https://api.cloudflare.com/client/v4/accounts/$CF_ACCOUNT_ID/workers/scripts/$SCRIPT_NAME" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -F "metadata=@metadata.json;type=application/json" \
  -F "main.js=@main.js;type=application/javascript+module"

(8) Worker URL (workers.dev) နဲ့ run စစ်

echo "https://$SCRIPT_NAME.$CF_SUBDOMAIN.workers.dev"
⚠️ အထက်က URL ကို browser/curl နဲ့ GET ခေါ်ကြည့်ရင် OK - bot worker is running ပြရပါမယ်။ မပြန်လာလည်း ဆက်လက်လုပ်ဆောင်ပါ။

(9) Cloudflare Dashboard မှာ BOT_TOKEN Secret ထည့်

(10) Telegram webhook ချိတ်

export TG_TOKEN="PASTE_TELEGRAM_BOT_TOKEN"
export WORKER_URL="https://$SCRIPT_NAME.$CF_SUBDOMAIN.workers.dev"

curl -4 -sS -X POST "https://api.telegram.org/bot$TG_TOKEN/setWebhook" \
  -d "url=$WORKER_URL"
{"ok":true,"result":true,...} ပြရင် webhook OK ပါ။

(11) Test

Key Shop Bot ပြုလုပ်ဖို့ ဆက်သွားပါမယ်

လိုအပ်ချက်များ (Requirements)
  • KV Bindings
  • Marzban api add variables
  • Key Shop Bot js file

(1) KV Bindings ပြုလုပ်ခြင်း

Create KV namespace

KV Bindings

KV Bindings ပြုလုပ်ခြင်းပြီး ဆုံးသွားပါပြီ js code edit ပြီးလို့ deploy လုပ်တဲ့အခါ KV Bindings ပျောက်မသွားအောင် metadata.json ကိုပြင်ဆင်ရပါမယ်

termux မှာ run ပါမယ်

namespace id ကို workers & pages/tg-bot-test/bindinds ရဲ့အောက်ဆုံးမှာ

value အောက်က KV ကိုနှိပ်ပြီး ကြည့်ပါ အပေါ်ဆုံးမှာ KV ရဲ့ ဘေးမှာ ကော်ပီ ကူးစရာပါတဲ့ id ကိုတွေ့ရမှာပါ ကော်ပီယူထားပါ

cd /storage/emulated/0/Download/tg-worker-api 2>/dev/null || cd /storage/emulated/0/Downloads/tg-worker-api

cat > metadata.json <<'JSON'
{
  "main_module": "main.js",
  "compatibility_date": "2026-01-08",
  "bindings": [
    {
      "name": "KV",
      "type": "kv_namespace",
      "namespace_id": "မိမိ namespace id ထည့်ရန်"
    }
  ]
}
JSON

namespace_id နေရာမှာ မိမိ id ဖြင့် အစားထိုးပါ

Metadata.json ကိုပြန်စစ်ဆေးပါမယ်

KV namespace မှာ ပေးခဲ့ တဲ့ နာမည်အတိုင်း KV ဖြစ်ရပါမယ်

cat metadata.json

Deploy တစ်ခါလုပ်ပါမယ်

unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY all_proxy ALL_PROXY

curl -4 --tlsv1.2 --http1.1 --connect-timeout 20 --max-time 180 \
  --retry 8 --retry-all-errors --retry-delay 2 \
  -sS -X PUT "https://api.cloudflare.com/client/v4/accounts/$CF_ACCOUNT_ID/workers/scripts/$SCRIPT_NAME" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -F "metadata=@metadata.json;type=application/json" \
  -F "main.js=@main.js;type=application/javascript+module"

(2) Cloudflare Dashboard မှာ လိုအပ်တဲ့ variables များထည့်ထည့်ပါမယ်

Key Shop Bot တည်ဆောက်ရန် js file အစားထိုးပါမည်။

keyshopbot.js file download ပြုလုပ်ထားပါ

termux မှာ location ပြောင်းသွားရင် အခု command ထည့်ပေးပါ termux မှာ tg-worker-api နဲ့ အဆုံးသတ်ပြနေရင် ပြောင်းစရာမလိုပါ

cd /storage/emulated/0/Download/tg-worker-api 2>/dev/null || cd /storage/emulated/0/Downloads/tg-worker-api

keyshopbot.js ဖိုင်ကို download folder အောက်က tg-worker-api ထဲကိုထားပေးပါ ပြိးရင် အောက်ပါအတိုင်း file အစားထိုးပါမယ်

cp keyshopbot.js main.js

file ပြောင်းမပြောင်းစမ်းရန်

head -n 5 main.js

keyshopbot ထဲရေးထားတဲ့ code စာကြောင်း ငါးကြောင်းပေါ်လာရပါမယ်

ပြီးရင် deploy လုပ်ပါမယ် မလုပ်ခင် ဒါတွေ အရင်ထပ်ပို့ပါ

export CF_ACCOUNT_ID="CF-Account_id အစားထိုးရန်"
export SCRIPT_NAME="tg-bot-test"
export CF_SUBDOMAIN="subdomain အစားထိုးရန်"
export CF_API_TOKEN="YOUR_CF_API_TOKEN"
export WORKER_URL="https://${SCRIPT_NAME}.${CF_SUBDOMAIN}.workers.dev"

အဆုံးသက်အနေနဲ့ Deploy လုပ်ပါမယ်

unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY all_proxy ALL_PROXY

curl -4 --tlsv1.2 --http1.1 --connect-timeout 20 --max-time 180 \
  --retry 8 --retry-all-errors --retry-delay 2 \
  -sS -X PUT "https://api.cloudflare.com/client/v4/accounts/$CF_ACCOUNT_ID/workers/scripts/$SCRIPT_NAME" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -F "metadata=@metadata.json;type=application/json" \
  -F "main.js=@main.js;type=application/javascript+module"

Telegram Webhook အတွက် Bot token ပို့ပြီး ချိတ်ပါမယ်

export TG_TOKEN="YOUR_BOT_TOKEN"

curl -sS "https://api.telegram.org/bot$TG_TOKEN/setWebhook" \
  -d "url=$WORKER_URL"

curl -sS "https://api.telegram.org/bot$TG_TOKEN/getWebhookInfo"
ဒါပြီးရင်တော့ Telegram Bot ကို သွားရောက်စမ်းသက်လို့ရပါပြီ
Telegram Bot ကို ပြင်ဆင်တဲ့ အခါ QuickEdit ကိုဝင် Open (ASF) နှင့် download/tg-worker-api အောက်က main.js ကိုဖွင့်ပါ ကိုယ်ပြင်ခြင်သော code များပြင်ဆင်ပြီးရင် save ပါ။ termux မှာ Deploy လုပ်ပေးပါ Telegram Bot ကိုပြန်စမ်းပါ
ယခုပြုလုပ်သော bot ကို post ပါ နာမည်များအတိုင်း ပြုလုပ်ပေးပါ အကယ်၍ မိမိ နာမည်အတိအကျ ပေးလိုလျှင် main.js ထဲတွင် env.KV နေရာများ termux မှာ run တဲ့ command များ ကိုပြောင်းလဲရပါမည်။