اجرای 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— متصل کردن پورت 443SECRET— سکرت ساختشده توسط شما (با پیشوند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 → وارد کردن مشخصات → روشن شدن نشانگر سبز رنگ.
آیا سرور خود را راهاندازی کردید؟ اکنون بیاموزید چگونه آن را برای لود بالا بهینهسازی کنید و چگونه از طریق کانالهای اسپانسری کسب درآمد کنید.
حوصله درگیری با سرور را ندارید؟ لیست پروکسیهای آماده و در دسترس. هر ۶۰ ثانیه بررسی و آپدیت میشوند.