پورتها
پورتهای سرویسها، چیزهایی که روی هر پورت سرو میشود و توصیههای فایروال
نصب Docker چهار پورت را روی سرور میگیرد. اسکریپت نصب قبل از شروع آزاد بودنشان را چک میکند.
| پورت | سرویس | گوش میدهد روی | از اینترنت در دسترس؟ |
|---|---|---|---|
6160 | ربات (وبسرور FastAPI) | همهٔ اینترفیسها | بله، باید باشد |
6161 | Redis | فقط 127.0.0.1 | خیر |
6162 | MariaDB | فقط 127.0.0.1 | خیر |
6163 | phpMyAdmin | همهٔ اینترفیسها | بله، بهتر است محدودش کنید |
Redis و MariaDB فقط روی localhost باز هستند و از بیرون سرور قابل دسترسی نیستند. کانتینرها از طریق شبکهٔ داخلی Docker به هم وصل میشوند (redis:6379 و mariadb:3306).
روی پورت 6160 چه چیزی سرو میشود؟
| مسیر | کاربرد | چه کسی صدا میزند |
|---|---|---|
/api/webhook | وبهوک رویدادهای پنل پاسارگارد (هشدار حجم/زمان) | سرور پنل پاسارگارد |
/api/payments/tonpays/callback | تأیید آنی پرداخت TonPays | سرور TonPays |
/webapp | صفحهٔ وباپ (Mini App) و پنل تحت وب | کاربر / ادمین در تلگرام یا مرورگر |
/api/webapp | API وباپ کاربر (آدرس پیشنهادی WEBAPP_URL هم همین است) | وباپ |
/api/panel | API پنل تحت وب ادمین | پنل تحت وب |
پس پورت 6160 باید از اینترنت (و مخصوصاً از سرور پنل پاسارگارد) در دسترس باشد. اگر SSL را مستقیم روی ربات فعال کرده باشید، همین پورت فقط HTTPS جواب میدهد. دامنه و SSL
تغییر پورت وبسرور
پورت از متغیر FASTAPI_PORT در .env خوانده میشود و docker-compose هم پورت کانتینر را از همین مقدار میگیرد:
pasarguardbot edit-env
# FASTAPI_PORT=8443بعد ریاستارت را تأیید کنید. یادتان باشد اینها را هم عوض کنید:
- آدرس وبهوک در پنل پاسارگارد
WEBAPP_URL(اگر پورت در آن آمده)- قوانین فایروال
اگر FASTAPI_PORT را خالی بگذارید، وبسرور ربات کلاً خاموش میشود (وبهوک، وباپ و TonPays کار نمیکنند، ولی خود ربات تلگرام کار میکند).
پورتهای 6161، 6162 و 6163 در فایل docker-compose ثابت هستند. تغییرشان با 6) Edit docker-compose.yml ممکن است، ولی آپدیت بعدی فایل را دوباره از گیتهاب میگیرد و تغییر شما از بین میرود.
پورت اشغال است
اگر هنگام نصب ببینید:
[!] Port 6160 appears to be in use.
Continue anyway? (y/N):یعنی برنامهٔ دیگری روی آن پورت است. پیدا کردنش:
ss -ltnp | grep -E ':(6160|6161|6162|6163)\s'آن برنامه را متوقف کنید یا (برای 6160) پورت ربات را عوض کنید. اگر با y ادامه دهید، کانتینری که پورتش اشغال است بالا نمیآید.
فایروال
حداقلهای لازم:
| پورت | پیشنهاد |
|---|---|
22 (SSH) | باز (یا هر پورتی که SSH روی آن است) |
6160 | باز (برای پنل پاسارگارد، تلگرام و کاربران وباپ) |
80 | فقط هنگام گرفتن/تمدید SSL با AutoSSL باید باز باشد |
6163 | فقط برای آیپی خودتان یا بسته |
نمونه با ufw:
ufw allow 22/tcp
ufw allow 6160/tcp
ufw allow 80/tcp
ufw enableDocker قوانین ufw را دور میزند
پورتهایی که Docker منتشر میکند (6160 و 6163) مستقیم در iptables باز میشوند و ufw deny 6163 جلویشان را نمیگیرد. برای محدود کردن phpMyAdmin از زنجیرهٔ DOCKER-USER استفاده کنید:
# فقط آیپی 203.0.113.10 به phpMyAdmin دسترسی داشته باشد
iptables -I DOCKER-USER -p tcp -m conntrack --ctorigdstport 6163 ! -s 203.0.113.10 -j DROPاین قانون با ریبوت پاک میشود؛ برای ماندگاری از iptables-persistent (netfilter-persistent save) استفاده کنید.
راه سادهتر برای phpMyAdmin: بستن کامل 6163 با قانون بالا (بدون آیپی مجاز) و دسترسی از طریق تونل SSH:
ssh -L 6163:127.0.0.1:6163 root@SERVER_IP
# سپس در مرورگر خودتان: http://127.0.0.1:6163