دستورهای مفید
مجموعهای از دستورها برای بهرهبرداری روزمره از XLADA. اگر خلاف آن گفته نشده باشد،
نمونهها روی سرور پنل و از دایرکتوری /opt/xlada اجرا میشوند، جایی که
فایل docker-compose.yml قرار دارد.
سرویسها در یک فایل compose توصیف شدهاند: xpanel (پنل)، xpanel-db
(PostgreSQL)، xpanel-redis (Valkey) و xpanel-subpage اختیاری
(صفحه اشتراک). پورتهای پنل و صفحه اشتراک به 127.0.0.1 مقید شدهاند —
nginx آنها را به بیرون ارائه میدهد.
پنل
cd /opt/xlada
docker compose ps # وضعیت سرویسهای xpanel، xpanel-db، xpanel-redis
docker compose logs -f xpanel # لاگهای پنل بهصورت زنده
docker compose logs --tail=100 xpanel-db
docker compose restart xpanel # راهاندازی مجدد فقط پنل
docker compose up -d # اعمال تغییرات .env
همان لاگها را بدون compose میتوان بهراحتی مستقیم دید:
docker logs -f xpanel
docker logs --since 30m xpanel
راهاندازی مجدد کامل استک بدون از دست رفتن داده:
docker compose down && docker compose up -d
هرگز پرچم -v را به docker compose down اضافه نکنید: والیومها را همراه
با پایگاه داده و همه کاربران حذف میکند. ترتیب بهروزرسانی ایمن — در بخش
بهروزرسانی.
عملیات اضطراری (مثلاً بازنشانی رمز عبور سوپرادمین) را CLI پنل انجام میدهد:
docker exec -it xpanel cli
فهرست کامل — در بخش Rescue CLI.
پس از ویرایش .env دستور docker compose up -d را اجرا کنید: compose
کانتینرهای تغییرکرده را از نو میسازد و متغیرها را دوباره میخواند. دستور
docker compose restart محیط را دوباره نمیخواند — اگر METRICS_USER یا
دامنهها را تغییر دادهاید، این کافی نیست.
سرویسهای داخلی
پنل دادهها را در PostgreSQL و کش را در Valkey نگه میدارد. بررسی هر دو:
docker exec -it xpanel-db pg_isready -U xpanel -d xpanel
docker exec -it xpanel-redis valkey-cli ping
پاسخهای مورد انتظار — accepting connections و PONG.
پایگاه داده
دامپ گرفتن پیش از بهروزرسانی یا ویرایش دستی — تنها راه مطمئن
برای بازگردانی است. دامپ درون کانتینر گرفته میشود، بنابراین نیازی به نصب pg_dump و psql روی هاست
نیست و فایل backup-...sql در دایرکتوری جاری ایجاد میشود.
docker exec xpanel-db pg_dump -U xpanel xpanel > backup-$(date +%F).sql
بازیابی:
docker exec -i xpanel-db psql -U xpanel -d xpanel < backup-2026-01-01.sql
کنسول تعاملی:
docker exec -it xpanel-db psql -U xpanel -d xpanel
| کار | پرسوجو |
|---|---|
| تعداد کاربران | SELECT count(*) FROM users; |
| اندازه پایگاه داده | SELECT pg_size_pretty(pg_database_size('xpanel')); |
| آخرین رکوردهای ممیزی | SELECT * FROM admin_audit_log LIMIT 10; |
فیلترهای مربوط به مدیر و نتیجه را برای ژورنال اقدامات راحتتر میتوان در
رابط کاربری دید — صفحه Audit Log — نه در psql.
نود
نود یک کانتینر جداگانه روی سرور پروکسی است، بنابراین دستورها همانجا اجرا میشوند، جایی که نود اجرا شده است:
docker logs -f xpanel-node # لاگ نود و بررسی SECRET_KEY
docker exec -it xpanel-node xlogs # لاگهای Xray-core
docker exec -it xpanel-node cli --clear-logs
پاکسازی لاگهای Xray را میتوان از پنل هم اجرا کرد: صفحه Logs، بخش «Node system logs». نود چرخش فایل را انجام میدهد، بدون راهاندازی مجدد Xray — اتصالهای فعال قطع نمیشوند. جزئیات — در بخش نصب نود.
پورتها
ss -tlnp | grep -E ':(3000|3001|3010|2222)\b' # چه چیزی به پورتهای XLADA گوش میدهد
nc -vz 203.0.113.10 2222 # NODE_PORT از سرور پنل
بررسی پنل بهصورت محلی و از بیرون:
curl -sI http://127.0.0.1:3000
curl -s -o /dev/null -w '%{http_code}\n' https://panel.example.com/api/auth/status
لازم نیست پورت 2222 را به کل اینترنت باز کنید: یک قاعده firewall روی
IP پنل کافی است. برعکس، پورتهای پروکسی با پیکربندی Xray تعیین میشوند و باید
برای کلاینتها باز باشند.
NODE_PORT را از سرور پنل بررسی کنید، نه از مرورگر: پنل خودش به نود
متصل میشود و در دسترس بودن پورت از اینترنت هیچ چیزی را اثبات نمیکند.
گواهیها
certbot certificates # چه چیزی صادر شده و تا چه تاریخی
certbot renew --dry-run # بررسی تمدید خودکار
certbot --nginx -d panel.example.com # صدور گواهی
systemctl list-timers | grep certbot # آیا تایمر تمدید فعال است
پس از ویرایش پیکربندی nginx همیشه سینتکس را بررسی کنید:
nginx -t && systemctl reload nginx
متریکها
متریکهای Prometheus روی 127.0.0.1:3001 و پشت basic auth ارائه میشوند. نام کاربری و رمز عبور
از همان متغیرهای METRICS_USER و METRICS_PASS گرفته میشوند که هنگام راهاندازی
پنل استفاده میشوند:
source /opt/xlada/.env
curl -s http://127.0.0.1:3001/metrics -u "$METRICS_USER:$METRICS_PASS" | head
پورت 3001 نباید به بیرون باز باشد. اگر متریکها را یک Prometheus خارجی جمع
میکند، آن را از طریق تونل SSH یا یک پروکسی جداگانه به 127.0.0.1:3001
هدایت کنید، نه اینکه پورت را در firewall باز کنید.
گامهای بعدی
- بهروزرسانی — ترتیب بهروزرسانی و بازگردانی از دامپ.
- Rescue CLI — دستورهای اضطراری پنل.
- خطاهای رایج — اگر دستور کار نکرد چه کنیم.