یک نصبکننده، Let's Encrypt را روی سرور دبیان یا اوبونتو راه میاندازد، همه گواهیها را تمدید نگه میدارد و هر وقت چیزی نیاز به توجه داشت در تلگرام خبرتان میکند.
bash <(curl -fsSL https://github.com/Plus98ir/Auto_SSL/releases/latest/download/install-ssl-manager.sh)www فقط اگر رزولو شود اضافه میشود) یا وایلدکارت. حالت nginx یا standalone را خودش انتخاب میکند..crt و .key و در صورت نیاز .pfx برای پنلهایی مثل x-ui و مرزبان./etc/letsencrypt را در یک فایل آرشیو میکند و به همین راحتی برش میگرداند.اگر فقط منوی ترمینال را میخواهید، از این مرحله رد شوید.
/newbot را بفرستید و یک نام نمایشی انتخاب کنید.bot ختم شود انتخاب کنید، مثلاً MySSLManagerBot./start به @userinfobot بگیرید. برای هر ادمین تکرار کنید./revoke باطلش کنید و نصبکننده را دوباره اجرا کنید.روی سرور دبیان یا اوبونتو، با کاربر روت:
bash <(curl -fsSL https://github.com/Plus98ir/Auto_SSL/releases/latest/download/install-ssl-manager.sh)
نصبکننده اینها را میپرسد:
بعد پکیجها را نصب میکند، کانفیگ، هوک تمدید، بررسی روزانه انقضا و سرویس ربات را میسازد و منو را باز میکند.
systemctl disable --now ssl-bot را بزنید تا دو لیسنر همزمان روی یک توکن کار نکنند.هر وقت خواستید ssl را تایپ کنید.
| گزینه | کارکرد |
|---|---|
| ۱ گواهی جدید | معمولی یا وایلدکارت، با امکان تست آزمایشی قبل از صدور. |
| ۲ تمدید یک دامنه | دامنه را از لیست انتخاب کنید تا فوراً تمدید شود. |
| ۳ تمدید همه | هر چه موعدش رسیده را تمدید میکند، یا با dry-run تستش میکند. |
| ۴ وضعیت همه | خروجی کامل certbot به همراه روزهای باقیمانده هر دامنه. |
| ۵ وضعیت یک دامنه | جزئیات یک گواهی. |
| ۶ حذف یا ابطال | حذف محلی، یا ابطال در Let's Encrypt. vhost مربوط در nginx هم پاک میشود. |
| ۷ خروجی | ساخت .crt / .key / .pfx در /root/ssl-exports/. |
| ۸ بکاپ یا بازگردانی | آرشیو در /root/ssl-backups/، یا بازگردانی از آرشیو. |
| ۹ تنظیمات | دستور بعد از تمدید، پوشه کپی و پیام آزمایشی تلگرام. |
| ۱۰ حذف برنامه | SSL Manager را حذف میکند. گواهیها باقی میمانند. |
فقط آیدیهای ادمینی که وارد کردهاید جواب میگیرند. بقیه نادیده گرفته میشوند.
| دستور | کارکرد |
|---|---|
/start | منوی دکمهای را باز میکند. |
/status | یک دامنه انتخاب کنید تا جزئیات و روزهای باقیمانده را ببینید. |
/renew | یک دامنه انتخاب کنید تا همین حالا تمدید شود. |
/newcert example.com | DNS و پورت ۸۰ را چک میکند، گواهی صادر میکند و فایلها را میفرستد. |
/download | یک دامنه انتخاب کنید تا فایلهای گواهیاش را بگیرید. |
/backup | روی سرور بکاپ میگیرد و اگر ارسال کلید روشن باشد آن را میفرستد. |
SEND_KEYS="no" ربات فقط fullchain.pem را میفرستد و مسیر کلید خصوصی روی سرور را میگوید. هر چیزی که از تلگرام رد شود روی سرورهای تلگرام باقی میماند.بعد از صدور گواهی لازم نیست کاری بکنید.
certbot.timer تمدیدها را انجام میدهد.certbot renew را با پروکسی اجرا میکند./etc/letsencrypt/renewal-hooks/deploy/ nginx را ریلود میکند، اگر پوشه تعیین کرده باشید فایلها را کپی میکند، دستور شما را اجرا میکند و به ادمینها پیام میدهد.همه چیز در /etc/ssl-manager/config است (پرمیشن 600). گزینه ۹ منو تنظیمات رایج را برایتان ویرایش میکند.
| تنظیم | پیشفرض | توضیح |
|---|---|---|
EMAIL | — | ایمیل برای اطلاعیههای Let's Encrypt. |
PROXY_URL | خالی | مثل http://user:[email protected]:8080. برای اتصال مستقیم خالی بگذارید. |
BOT_TOKEN | — | توکن BotFather. |
ADMIN_IDS | — | آیدیهای عددی، جداشده با کاما. |
SEND_KEYS | no | اینکه ربات اجازه ارسال کلید خصوصی و بکاپ را دارد یا نه. |
POST_RENEW_CMD | خالی | بعد از هر تمدید اجرا میشود، مثلاً systemctl restart xray. |
COPY_TO_DIR | خالی | بعد از هر تمدید، fullchain.pem و privkey.pem اینجا کپی میشوند. |
EXPIRY_WARN_DAYS | 20 | گواهیهایی که این تعداد روز یا کمتر وقت دارند گزارش میشوند. |
| مسیر | کاربرد |
|---|---|
/etc/ssl-manager/config | تنظیمات و اطلاعات محرمانه. |
/usr/local/bin/ssl | منوی ترمینال. |
/usr/local/bin/ssl-bot.sh | ربات تلگرام، اجراشده توسط سرویس ssl-bot. |
/usr/local/bin/ssl-lib.sh | توابع مشترک. |
/usr/local/bin/ssl-expiry-check.sh | گزارش روزانه انقضا. |
/etc/letsencrypt/renewal-hooks/deploy/00-ssl-manager.sh | بعد از هر تمدید اجرا میشود. |
/var/log/ssl-manager.log | صدورها، تمدیدها و هشدارها. |
/root/ssl-backups/ | آرشیوهای بکاپ. |
/root/ssl-exports/ | فایلهای خروجی گرفتهشده. |
600).700 هستند.@ یا # مشکلی ایجاد نمیکنند.فقط اگر سرور نتواند مستقیم به acme-v02.api.letsencrypt.org یا api.telegram.org برسد. سرورهای خارج از ایران باید خالی بگذارند.
پروکسی باید از خود سرور قابل دسترس باشد. 127.0.0.1 یعنی همان سرور، نه کامپیوتر شخصی شما. با این دستورها چک کنید:
ss -ltnp | grep <port>
curl -x http://127.0.0.1:<port> -I https://api.telegram.org| نشانه | علت و راهحل |
|---|---|
| ربات جواب نمیدهد | systemctl status ssl-bot و journalctl -u ssl-bot -f را چک کنید. مطمئن شوید لیسنر قدیمی نسخه ۱ روی همان توکن فعال نیست و آیدی شما در ADMIN_IDS هست. |
| دامنه رزولو نمیشود | رکورد A وجود ندارد یا هنوز پخش نشده. DNS را درست کنید و دوباره امتحان کنید. |
| پورت ۸۰ اشغال است | سرویس دیگری (Apache، HAProxy، Xray) پورت ۸۰ را گرفته. موقع صدور متوقفش کنید یا nginx را جلویش بگذارید. |
| Too many failed authorizations | محدودیت نرخ Let's Encrypt. یک ساعت صبر کنید و تا وقتی موفق نشده از dry-run استفاده کنید. |
| وایلدکارت تمدید نشد | در حالت دستی صادر شده. دوباره با حالت Cloudflare صادرش کنید. |
| تمدید شد ولی سایت گواهی قدیمی را نشان میدهد | سرویسی که از آن استفاده میکند ریاستارت نشده. POST_RENEW_CMD را تنظیم کنید. |
| پیام تمدید در تلگرام نمیآید | با گزینه ۹ منو پیام آزمایشی بفرستید. اگر نرسید، توکن و پروکسی را چک کنید. |