دسته بندی:

کنترل پنل دایرکت ادمین؛ امکانات، نصب و کار با آن

سروری که تازه تحویل گرفته‌اید یک شل خالی است. ساختن اکانت، افزودن دامنه، ساخت پایگاه داده و ایمیل و گرفتن بکاپ همه از خط فرمان شدنی است، اما کار هر روزتان نمی‌تواند باشد. کنترل پنل دایرکت ادمین یکی از رایج‌ترین پاسخ‌ها به همین نیاز است؛ یک کنترل پنل تجاری وب‌هاستینگ که کار با آن ساده است، روی سرور مجازی و سرور اختصاصی با سیستم‌عامل‌های متنوع نصب می‌شود و مدیریت سرور را به سه سطح مجزای کاربر، نمایندگی و مدیر تقسیم می‌کند.

یک نکته را همین اول روشن کنیم: در آموزش‌های قدیمی فارسی زیاد می‌خوانید که «دایرکت ادمین بر خلاف سی‌پنل از AJAX استفاده نمی‌کند و برای همین سریع است». این جمله مربوط به پوستهٔ قدیمی Enhanced است. پوستهٔ پیش‌فرض امروز Evolution نام دارد، رابطی کاملاً پویا و مبتنی بر جاوااسکریپت دارد که از طریق یک API روی JSON با سرور حرف می‌زند، و همان کارها را در صفحه‌های به‌مراتب بازطراحی‌شده‌تری انجام می‌دهد. پس اگر تصویرهای یک آموزش با چیزی که در پنل خودتان می‌بینید فرق داشت، تعجب نکنید؛ آن آموزش برای پوستهٔ قدیمی نوشته شده است.

سه سطح دسترسی در دایرکت ادمین

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

امکانات دایرکت ادمین در سطح کاربر (User)

  • ایمیل: ساخت اکانت‌های ایمیل و دریافت آن‌ها با POP یا IMAP، فوروارد، پاسخ خودکار و وبمیل زیر همین بخش قرار دارد.
  • FTP: پشتیبانی کامل از FTP و ساخت اکانت‌های جداگانه برای هر مسیر. برخلاف آنچه در متن‌های قدیمی آمده، تعداد این اکانت‌ها ذاتاً نامحدود نیست و سقفش را پکیجی که برایتان ساخته شده تعیین می‌کند (این سقف در پکیج می‌تواند روی نامحدود هم تنظیم شده باشد). اگر امکانش هست به‌جای FTP سادهٔ رمزنگاری‌نشده از SFTP یا FTPS استفاده کنید.
  • مدیریت DNS: کنترل کامل رکوردهای دامنه‌های خودتان از داخل پنل.
  • آمار بازدید: گزارش‌های دقیق ترافیک و بازدید سایت (بسته به تنظیم سرور، Webalizer یا AWStats).
  • زیردامنه (Sub Domain): ساخت و حذف زیردامنه با یک فرم ساده.
  • فایل منیجر: محیطی ساده برای آپلود، ویرایش و جابه‌جایی فایل‌ها. اگر متن فایل‌های فارسی در ادیتور همین بخش به‌هم‌ریخته دیده شد، رفع مشکل ادیتور دایرکت ادمین برای فایل های UTF8 را ببینید.
  • پایگاه داده: ساخت و مدیریت پایگاه داده MySQL و کاربران آن، به‌همراه دسترسی به phpMyAdmin. روی سرورهای امروزی ممکن است به‌جای MySQL نسخهٔ MariaDB نصب شده باشد؛ از دید کاربر پنل تفاوتی ندارد.
  • بکاپ: گرفتن بکاپ از کل اکانت و بازیابی آن با چند کلیک. توجه کنید که بکاپ سطح کاربر فقط همان اکانت را برمی‌گرداند، نه کل سرور را.
  • صفحات خطا: جایگزین‌کردن صفحه‌های پیش‌فرض خطا مثل ۴۰۴ و ۴۰۳ با صفحهٔ دلخواه خودتان.
  • SSL: نصب گواهی روی دامنه. اگر گواهی تجاری می‌خرید، اولین قدم ایجاد کد CSR در دایرکت ادمین است. اگر گواهی رایگان کافی است، دایرکت ادمین پشتیبانی داخلی از Let’s Encrypt دارد که صدور و تمدید را خودکار انجام می‌دهد (به شرط آنکه مدیر سرور آن را فعال کرده باشد).
  • کران‌جاب (Cron Jobs): زمان‌بندی اجرای اسکریپت‌ها، مثل کران وردپرس یا اسکریپت بکاپ خودتان.
  • MIME Types و Login History: دو ابزار کم‌سروصدا که در ادامه جداگانه توضیحشان می‌دهیم.
  • اکستنشن‌های FrontPage: این گزینه در فهرست امکانات نسخه‌های قدیمی دایرکت ادمین بود و در آموزش‌های قدیمی هنوز تکرار می‌شود. FrontPage سال‌هاست از رده خارج شده و در پنل امروزی دنبالش نگردید.

امکانات دایرکت ادمین در سطح نمایندگی (Reseller)

  • ساخت، اصلاح و حذف اکانت‌ها و کاربران جدید و قدیمی.
  • ساخت پکیج‌های مختلف با سطوح دسترسی و محدودیت‌های گوناگون، تا کاربر بعدی را با یک کلیک روی همان پکیج بسازید.
  • آمار دقیق از وضعیت مصرف کاربران و اکانت‌های ساخته‌شده.
  • ارسال پیام به همهٔ کاربران زیرمجموعه از داخل خود پنل.
  • نصب و تغییر پوستهٔ دایرکت ادمین. پوستهٔ پیش‌فرض امروز Evolution است و Enhanced یک پوستهٔ قدیمی و legacy به حساب می‌آید؛ خود دایرکت ادمین توصیه می‌کند به‌جای عوض‌کردن پوسته، از امکانات شخصی‌سازی داخلی Evolution استفاده کنید.
  • اختصاص آی‌پی به کاربران و اکانت‌های ساخته‌شده.
  • ساخت و اصلاح Nameserver و اختصاص آن به کاربران.

اگر با مفهوم نمایندگی آشنا نیستید، ریسلرها یا همان نمایندگی‌ها را ببینید.

امکانات دایرکت ادمین در سطح مدیر (Admin)

  • ساخت، ویرایش و حذف ادمین‌ها، نمایندگی‌ها و کاربران.
  • ساخت پکیج‌های مختلف با سطوح دسترسی گوناگون برای ایجاد نمایندگی.
  • نمایش و مدیریت همهٔ کاربران زیرمجموعهٔ نمایندگی‌ها و ادمین‌های مختلف.
  • کنترل کامل DNS در همهٔ سطوح کاربری.
  • مدیریت کامل آی‌پی‌های سرور.
  • اطلاعات سیستم و سرور و وضعیت سرویس‌های لینوکس.
  • ری‌استارت سرور و سرویس‌ها از داخل پنل.
  • دسترسی به بخش لایسنس و به‌روزرسانی لایسنس دایرکت ادمین.
  • به‌روزرسانی نرم‌افزارهای سرور (نسخهٔ PHP، وب‌سرور، دیتابیس و افزونه‌ها) با ابزار CustomBuild. برای نمونه فعال کردن SOAP در دایرکت ادمین از همین مسیر انجام می‌شود.

برای ری‌استارت سرویس‌ها همیشه لازم نیست وارد پنل شوید؛ از SSH هم می‌شود. فقط دستور درست را به کار ببرید:

systemctl restart directadmin
systemctl status directadmin

ری‌استارت سرویس directadmin فقط خود کنترل پنل را چند ثانیه از دسترس خارج می‌کند و سایت‌ها و ایمیل‌ها سر جایشان هستند؛ اما ری‌استارت وب‌سرور یا دیتابیس یعنی قطعی کوتاه برای همهٔ سایت‌های روی سرور، پس آن را در ساعت خلوت انجام دهید. نام سرویس‌ها هم به استکی که نصب کرده‌اید بستگی دارد؛ مثلاً httpd یا nginx برای وب‌سرور، mysqld یا mariadb برای دیتابیس و exim برای ایمیل. اگر مطمئن نیستید، اول systemctl status را بگیرید و بعد تصمیم بگیرید.

در آموزش‌های قدیمی به‌جای این‌ها service directadmin restart یا /etc/init.d/directadmin restart نوشته شده است. همهٔ سیستم‌عامل‌هایی که امروز دایرکت ادمین رویشان نصب می‌شود (AlmaLinux، Rocky Linux، CentOS Stream، Debian و Ubuntu) از systemd استفاده می‌کنند و شکل درست همان systemctl است. دستور service معمولاً هنوز جواب می‌دهد چون به systemd هدایت می‌شود، ولی مسیر /etc/init.d/ روی نصب‌های امروزی ممکن است اصلاً وجود نداشته باشد.

MIME Types؛ وقتی مرورگر فایل شما را اشتباه باز می‌کند

فایلی را روی هاست آپلود کرده‌اید و به‌جای اینکه در مرورگر باز شود، دانلود می‌شود؛ یا فونت سایت لود نمی‌شود و کنسول مرورگر از نوع نادرست فایل شکایت می‌کند. در بیشتر این موارد مقصر نوع MIME است.

MIME یک استاندارد برای توصیف انواع مختلف داده است. نوع MIME یک برچسب دوقسمتی مثل text/html، image/png یا application/pdf است که وب‌سرور همراه هر فایل در هدر Content-Type برای مرورگر می‌فرستد و در واقع به سرور و مرورگر می‌گوید با هر نوع فایل چطور رفتار کنند. تصمیم مرورگر دربارهٔ اینکه فایل را نمایش بدهد، پخش کند یا به کاربر پیشنهاد دانلود بدهد، بر اساس همین برچسب گرفته می‌شود، نه بر اساس پسوند فایل. وب‌سرور پسوندهای شناخته‌شده را از جدول داخلی خودش می‌شناسد؛ اگر پسوندی در آن جدول نباشد، فایل با یک نوع عمومی فرستاده می‌شود و مرورگر هم کار خاصی جز دانلودش نمی‌تواند بکند.

بخش MIME Types در دایرکت ادمین دقیقاً برای همین است: پسوندی را که سرور نمی‌شناسد به نوع MIME درستش وصل کنید.

مسیر و روش کار

این گزینه در سطح کاربر قرار دارد. در پوستهٔ قدیمی Enhanced از منوی اصلی روی Advanced Tools و بعد روی MIME Types کلیک می‌کردید؛ در پوستهٔ Evolution زیر بخش Advanced Features (امکانات پیشرفته) است و سریع‌ترین راه پیدا کردنش این است که عبارت MIME را در جعبهٔ جست‌وجوی بالای پنل بنویسید. در فرم این صفحه، نوع MIME را در یک فیلد و پسوند را در فیلد دیگر وارد و ذخیره می‌کنید.

چند نمونه از پسوندهایی که ممکن است لازم شود دستی اضافه کنید:

  • woff2font/woff2
  • webpimage/webp
  • svgimage/svg+xml
  • jsonapplication/json
  • webmanifestapplication/manifest+json
  • mp4video/mp4

روی سرورهای به‌روز بیشتر این نوع‌ها از قبل تعریف شده‌اند و اصلاً نیازی به این صفحه پیدا نمی‌کنید؛ سراغش بروید فقط وقتی واقعاً فایلی اشتباه سرو می‌شود.

چند هشدار

  • این تنظیم فقط رفتار وب‌سرور در برابر بازدیدکنندگان سایت را عوض می‌کند و هیچ ربطی به اینکه سیستم‌عامل خودتان آن فایل را با چه برنامه‌ای باز می‌کند ندارد.
  • پسوندهای اجرایی مثل php را اینجا دستکاری نکنید؛ نتیجه‌اش می‌تواند نمایش سورس کد (و لو رفتن رمز دیتابیس) یا از کار افتادن سایت باشد.
  • معادل دستی همین کار در آپاچی یک خط در فایل .htaccess است:
    AddType application/pdf .pdf
  • پیش از دست‌زدن به .htaccess یک نسخهٔ پشتیبان از آن بگیرید؛ یک خط اشتباه در این فایل کل سایت را با خطای ۵۰۰ از دسترس خارج می‌کند.
  • اگر سایت شما فقط با nginx سرو می‌شود، فایل .htaccess اصلاً خوانده نمی‌شود و نوع MIME باید در پیکربندی خود nginx تعریف شود؛ در این حالت باید از مدیر سرور کمک بگیرید.
  • اگر قطعه‌کدی را از یک آموزش قدیمی داخل .htaccess کپی می‌کنید، حواستان به نسخهٔ آپاچی باشد. دستورهای Order و Allow from مربوط به آپاچی ۲.۲ هستند و روی آپاچی ۲.۴ اگر ماژول mod_access_compat فعال نباشد خطای ۵۰۰ می‌دهند:
    # Apache 2.2 — نحو قدیمی
    Order allow,deny
    Allow from all
    
    # Apache 2.4 — نحو درست امروز
    Require all granted

Login History؛ چه کسی و از کجا وارد پنل شده است

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

این بخش آی‌پی سیستم‌هایی را که قصد ورود به کنترل پنل را داشته‌اند به‌همراه تاریخ و ساعت ورود و تعداد تلاش‌ها (شامل دفعاتی که رمز اشتباه وارد شده) ثبت می‌کند. در پوستهٔ قدیمی Enhanced آن را زیر Account Management پیدا می‌کنید و در پوستهٔ Evolution زیر بخش مدیریت حساب؛ باز هم ساده‌ترین راه، جست‌وجوی عبارت Login History در جعبهٔ جست‌وجوی بالای پنل است.

گزارش را چطور بخوانیم

دو الگو ارزش دقت دارند. اول، ورود موفق از آی‌پی‌ای که مال شما نیست: یعنی رمزتان لو رفته و باید فوراً عوضش کنید. دوم، تعداد زیاد تلاش ناموفق از یک یا چند آی‌پی ناشناس در بازهٔ کوتاه: این الگوی حملهٔ brute force است؛ هنوز کسی وارد نشده، ولی دارند رمز را حدس می‌زنند.

در هر دو حالت اولین کار گذاشتن رمز طولانی و یکتاست. بعد از آن، ورود دومرحله‌ای را فعال کنید: در پوستهٔ Evolution از مسیر Change your Password ← Two-Step Authentication، که یک کد یک‌بارمصرف زمان‌محور (TOTP) در برنامه‌هایی مثل Google Authenticator می‌سازد و عملاً حدس‌زدن رمز را بی‌فایده می‌کند. کد بازیابی را جایی بیرون از همان سرور نگه دارید تا اگر گوشی‌تان را از دست دادید پشت در نمانید.

محدودیت این گزارش

Login History فقط ورود به خود کنترل پنل (پورت ۲۲۲۲) را ثبت می‌کند و ربطی به آمار بازدیدکنندگان سایت شما ندارد. برای دیدن تلاش‌های ناموفق ورود به بقیهٔ سرویس‌های سرور، دایرکت ادمین در سطح مدیر ابزاری به نام Brute Force Monitor دارد که لاگ سرویس‌هایی مثل SSH، ایمیل (exim و dovecot) و FTP را می‌خواند و امکان مسدودکردن آی‌پی خاطی را می‌دهد. اگر با این ابزار آی‌پی مسدود می‌کنید، حتماً اول آی‌پی خودتان را در فهرست سفید (whitelist) بگذارید تا دسترسی خودتان به سرور قطع نشود. و اگر روی هاست اشتراکی هستید و به سطح مدیر دسترسی ندارید، مشاهدهٔ چنین موردی را به پشتیبانی سرویس‌دهنده‌تان اطلاع بدهید.

نصب کنترل پنل دایرکت ادمین

تا اینجا فرض این بود که دایرکت ادمین روی سرور نصب است. اگر می‌خواهید خودتان از صفر نصبش کنید، نصب امروز یک دستور بیشتر نیست؛ ولی همان یک دستور فقط روی سروری جواب می‌دهد که سیستم‌عاملش تازه نصب شده باشد و لایسنس معتبر داشته باشید.

پیش‌نیازها

  • سیستم‌عامل پشتیبانی‌شده: دایرکت ادمین روی Red Hat Enterprise Linux و مشتقات آن (AlmaLinux، Rocky Linux و CentOS Stream) و همچنین Debian و Ubuntu نصب می‌شود. معماری‌های پشتیبانی‌شده ۶۴ بیتی هستند: amd64 و arm64.
  • سیستم‌عامل باید تمیز باشد. اگر پیش از نصب، سرویس‌هایی مثل آپاچی، PHP، MySQL یا FTP را دستی نصب کرده باشید، نصب‌کننده به مشکل می‌خورد. روی سرور دستکاری‌شده بهتر است سیستم‌عامل را از نو نصب کنید — و چون نصب مجدد سیستم‌عامل همه چیز روی دیسک را پاک می‌کند، پیش از آن از داده‌هایتان بکاپ بگیرید.
  • دسترسی root. نصب باید با کاربر root انجام شود؛ تنها sudo گذاشتن جلوی دستور کافی نیست و باید با sudo -s وارد شل root شوید.
  • سخت‌افزار: حداقل ۴ گیگابایت رم به‌همراه ۴ گیگابایت فضای swap، دست‌کم ۲ گیگابایت فضای آزاد دیسک بعد از نصب سیستم‌عامل (جدا از فضای سایت‌ها) و پردازنده‌ای با فرکانس دست‌کم ۵۰۰ مگاهرتز که چندهسته‌ای بودنش ترجیح دارد.
  • شبکه: حداقل یک آی‌پی ثابت IPv4 لازم است و برای اینکه بتوانید نیم‌سرور اختصاصی بالا بیاورید دو آی‌پی توصیه می‌شود. سرویس SSH هم باید فعال و سالم باشد.
  • کوتا: هسته و فایل‌سیستم سرور باید از quota پشتیبانی کنند وگرنه محدودکردن فضای کاربران کار نمی‌کند.
  • لایسنس فعال: دایرکت ادمین نرم‌افزاری تجاری است و بدون لایسنس معتبر بالا نمی‌آید.

دستور نصب

نصب‌کننده رسمی را با این دستور اجرا کنید تا نصب‌کننده تحت وب بالا بیاید:

sh <(curl -fsSL https://download.directadmin.com/setup.sh)

این دستور بعد از آماده‌سازی اولیه، یک نشانی موقت شبیه http://آی‌پی-سرور:35222/?key=... در ترمینال چاپ می‌کند که باید در مرورگر بازش کنید تا بقیهٔ نصب را آنجا ادامه بدهید. پس اگر فایروال دارید، پورت ۳۵۲۲۲ هم باید در همین بازه باز باشد وگرنه صفحه بالا نمی‌آید.

اگر کلید لایسنس را در دست دارید و می‌خواهید همه چیز از خط فرمان انجام شود، همان دستور را با کلید صدا بزنید:

sh <(curl -fsSL https://download.directadmin.com/setup.sh) 'کلید-لایسنس-شما'

روند نصب طولانی است، پس بهتر است آن را داخل یک نشست screen یا tmux اجرا کنید تا اگر ارتباط SSH قطع شد نصب نیمه‌کاره نماند. اگر نصب‌کننده همان ابتدای کار با پیام Unable to establish SSL Connection متوقف شد، ایراد از زنجیرهٔ TLS خود سرور است و مسیر رفع آن در رفع خطای SSL Connection در زمان نصب دایرکت ادمین آمده است.

اولین ورود

بعد از پایان نصب، کنترل پنل روی پورت 2222 در دسترس است؛ یعنی نشانی http://آی‌پی-سرور:2222 را باز کنید. اگر روی سرور شما SSL پورت ۲۲۲۲ فعال شده باشد، همین نشانی را با https:// باز کنید (و چون گواهی اولیه self-signed است، مرورگر یک بار هشدار می‌دهد). نام کاربری و رمز مدیر در پایان نصب روی صفحه نمایش داده می‌شود و در فایل زیر هم ذخیره می‌ماند:

/usr/local/directadmin/conf/setup.txt

اگر پورت ۲۲۲۲ باز نشد، اول فایروال سرور را بررسی کنید؛ این پورت باید در فایروال اجازهٔ عبور داشته باشد. بعد از اولین ورود هم دو کار را عقب نیندازید: عوض‌کردن رمز پیش‌فرض مدیر، و یک نگاه به همان بخش Login History تا ببینید غیر از خودتان چه کسی سراغ پنل تازه‌نصب آمده است.

یک هشدار دربارهٔ آموزش‌های قدیمی

آموزش‌های فارسی قدیمی هنوز دستور wget http://www.directadmin.com/setup.sh و بعد chmod 777 setup.sh را تکرار می‌کنند و فهرست بلندی از بسته‌ها را با yum روی CentOS 5 و CentOS 6 نصب می‌کنند. هیچ‌کدام از این‌ها دیگر درست نیست: CentOS 5 و ۶ سال‌هاست به پایان پشتیبانی رسیده‌اند، دانلود اسکریپت نصب روی HTTP رمزنگاری‌نشده کار درستی نیست و دادن دسترسی ۷۷۷ به یک فایل اجرایی هم بی‌دلیل و ناامن است. نصب‌کنندهٔ امروزی خودش وابستگی‌های لازم را تشخیص می‌دهد و نصب می‌کند.