MTProxyHub
تمام نوشته‌ها
۹ دقیقه

اجرای MTProxy با داکر: راهنمای جامع

راهنمای گام‌به‌گام راه‌اندازی MTProxy از طریق Docker در سرور لینوکس: ساخت کلید امنیتی (Secret)، تنظیم Fake TLS، پیکربندی WORKERS، ایمن‌سازی کانتینر و مانیتورینگ.

اجرای MTProxy با داکر: راهنمای جامع

پروکسی‌های عمومی ناپایدار و بیش‌ازحد شلوغ هستند و شما را مجبور می‌کنند به افراد ناشناس اعتماد کنید. راه‌اندازی MTProxy شخصی بر روی یک سرور مجازی (VPS) ماهانه ۳ تا ۵ دلار هزینه دارد، در عرض چند دقیقه آماده می‌شود و تضمین می‌کند که فقط خود شما به آن کنترل کامل دارید. در این راهنما تمام مسیر را طی می‌کنیم: از خرید سرور تا راه‌اندازی یک پروکسی Fake TLS کاربردی.

پیش‌نیازها

  • یک سرور مجازی (VPS) با سیستم‌عامل لینوکس (نسخه‌های Ubuntu 22.04 یا Debian 12 توصیه می‌شود)
  • حداقل منابع سخت‌افزاری: 1 هسته پردازنده (CPU)، 512 مگابایت رم، 10 گیگابایت فضای SSD
  • موقعیت مکانی سرور: خارج از مناطق دارای فیلترینگ (کشورهایی مانند هلند، فنلاند، آلمان گزینه‌های محبوبی هستند)
  • هزینه: از ۳ تا ۵ دلار در ماه در سرویس‌دهندگانی مانند Hetzner, DigitalOcean, Vultr

گام ۱: آماده‌سازی سرور

از طریق SSH به سرور متصل شوید و بسته‌های سیستم‌عامل را به‌روزرسانی کنید:

sudo apt update && sudo apt upgrade -y

داکر (Docker) را با اسکریپت رسمی آن نصب کنید:

curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker

نصب درست را بررسی کنید:

docker --version

پورت 443 را در فایروال (Firewall) سرور باز کنید:

sudo ufw allow 443/tcp
sudo ufw enable

گام ۲: تولید Secret

هرگز از کدهای SECRET=000... که در مثال‌های اینترنتی وجود دارد استفاده نکنید — این کار ناامن است و به راحتی شناسایی می‌شود. همیشه یک کلید تصادفی ایجاد کنید:

openssl rand -hex 16

نمونه خروجی: a3f7c2e1d5b8904f6a2c1e3d7b9f4a2e

برای فعال‌سازی Fake TLS، به فرمت خاصی از Secret نیاز دارید: باید یک دامنه پوششی به شکل hex شده در انتهای کلید قرار گیرد. می‌توانید آن را به صورت دستی بسازید:

# تولید کلید پایه
KEY=$(openssl rand -hex 16)

# تبدیل دامنه SNI به کد هگز (Hex)
DOMAIN="google.com"
DOMAIN_HEX=$(echo -n "$DOMAIN" | xxd -p)

# دریافت Secret נهایی برای Fake TLS
echo "ee${KEY}${DOMAIN_HEX}"

یا می‌توانید از تولیدکننده‌های آماده استفاده کنید: سایت https://mtproto.co/ یک ابزار رایگان برای ساخت سکرت‌های Fake TLS است.

گام ۳: راه‌اندازی کانتینر (Container)

کانتینر رسمی را اجرا کنید:

docker run -d \
  --name mtproxy \
  --restart always \
  -p 443:443 \
  -e SECRET="YOUR_SECRET_HERE" \
  -e WORKERS=1 \
  -v proxy-config:/data \
  telegrammessenger/proxy:latest

توضیح پارامترها:

  • --restart always — اجرای خودکار بعد از ری‌استارت شدن سرور
  • -p 443:443 — متصل کردن پورت 443
  • SECRET — سکرت ساخت‌شده توسط شما (با پیشوند ee برای Fake TLS)
  • WORKERS — تعداد پردازش‌ها (معمولاً ۱ به ازای هر هسته پردازنده)

گام ۴: دریافت لینک اتصال

docker logs mtproxy 2>&1 | grep "tg://"

با این دستور، خروجی مشابه زیر را مشاهده می‌کنید:

tg://proxy?server=1.2.3.4&port=443&secret=ee...

با باز کردن آن در دستگاهتان، تلگرام به طور خودکار پیشنهاد اضافه‌کردن پروکسی را می‌دهد.

گام ۵: ایمن‌سازی کانتینر (Hardening)

این راه‌اندازی پایه بدون مشکل کار می‌کند، اما برای استفاده حرفه‌ای و امن‌تر در سطح تولید (Production)، بهبودهای امنیتی زیر توصیه می‌شود:

docker run -d \
  --name mtproxy \
  --restart always \
  -p 443:443 \
  --read-only \
  --tmpfs /tmp \
  --cap-drop ALL \
  --security-opt no-new-privileges \
  -e SECRET="YOUR_SECRET_HERE" \
  -e WORKERS=1 \
  -v proxy-config:/data \
  telegrammessenger/proxy:latest

توضیح فلگ‌های اضافه شده:

  • --read-only — جلوگیری از تغییر فایل‌های سیستمی کانتینر (فقط خواندنی)
  • --tmpfs /tmp — اختصاص فضای حافظه موقت (RAM) برای پوشه /tmp
  • --cap-drop ALL — غیرفعال کردن تمامی امکانات و دسترسی‌های خاص کرنل لینوکس (Linux capabilities)
  • --security-opt no-new-privileges — جلوگیری از ارتقاء سطح دسترسی (Privilege escalation)

تنظیم بخش WORKERS

پارامتر WORKERS مشخص‌کننده تعداد پردازش‌های هم‌زمان (Worker processes) است. قاعده رسمی: 1 ورکر ≈ حدود ۶۰ هزار اتصال همزمان را جواب می‌دهد.

اندازه سرورتعداد توصیه شده WORKERS
۱ پردازنده، تا ۵۰۰ کاربر1
۲ پردازنده، تا ۲۰۰۰ کاربر2
۴+ پردازنده، پروکسی عمومی4+
سرور ضعیف با لود ناپایدار2–4 (توزیع اتصالات را بهتر می‌کند)

جایگزین: پروژه mtg (پیاده‌سازی با زبان Go)

9seconds/mtg یک جایگزین محبوب است که با زبان Go نوشته شده، از Prometheus برای متریک‌ها پشتیبانی می‌کند و حافظه بسیار کمتری مصرف می‌کند:

docker run -d \
  --name mtg \
  --restart always \
  -p 443:443 \
  nineseconds/mtg:latest \
  run "YOUR_SECRET"

ایمیج رسمی پایدارتر و مستندات کامل‌تری دارد؛ اما mtg تحت بارهای (Load) شدید، سریع‌تر عمل می‌کند. انتخاب شما به اولویت‌هایتان بستگی دارد.

مانیتورینگ و لاگ‌گیری (Logs)

# مشاهده لاگ‌های لحظه‌ای
docker logs -f mtproxy

# تعداد اتصالات فعال
docker exec mtproxy cat /proc/net/tcp | wc -l

# میزان مصرف منابع
docker stats mtproxy

اگر در میان لاگ‌ها با خطای Too many open files مواجه شدید، باید محدودیت‌های فایل دسکریپتورها را افزایش دهید. فقط کافی‌ست این فلگ را به دستور راه‌اندازی (run) اضافه کنید:

--ulimit nofile=65536:65536

به‌روزرسانی کانتینر

docker pull telegrammessenger/proxy:latest
docker stop mtproxy && docker rm mtproxy
# سپس کد راه‌اندازی موجود در گام ۳ را مجدداً اجرا کنید

سوالات متداول (FAQ)

بهترین پورت برای استفاده چیست؟ پورت 443 پیشنهاد می‌شود. همه جا باز بوده و برای HTTPS استاندارد است.

آیا باید پورت‌ها را در فایروال باز کنیم؟ بله: با دستور sudo ufw allow 443/tcp در Ubuntu/Debian.

این سرور چه تعداد کاربر را تحمل می‌کند؟ سروری با ۱ هسته پردازشی و ۱ گیگ رم → ۱۰۰۰ تا ۳۰۰۰ کاربر هم‌زمان با تنظیم WORKERS=1.

تفاوت ایمیج رسمی با mtg چیست؟ کد mtg به زبان Go بوده، مصرف رم کمتری دارد و دارای داشبورد متریک‌های Prometheus است. نسخه رسمی با C نوشته شده، بسیار باثبات‌تر و پرکاربردتر است.

از کجا بدانم پروکسی درست کار می‌کند؟ تلگرام → Settings → Data and Storage → Proxy → وارد کردن مشخصات → روشن شدن نشانگر سبز رنگ.


آیا سرور خود را راه‌اندازی کردید؟ اکنون بیاموزید چگونه آن را برای لود بالا بهینه‌سازی کنید و چگونه از طریق کانال‌های اسپانسری کسب درآمد کنید.

حوصله درگیری با سرور را ندارید؟ لیست پروکسی‌های آماده و در دسترس. هر ۶۰ ثانیه بررسی و آپدیت می‌شوند.