TLS و دامنهها
سرو کردن پنل روی HTTPS با ACME، گواهی خودتان یا یک پروکسی معکوس.
مرور کلی
در محیط واقعی باید پنل را روی HTTPS به مرورگر بفرستید، چون کوکیهای نشست secure به آن نیاز دارند. سه راه برای رسیدن به آن هست، و برنامه هنگام بالا آمدن یکی را با ترتیبی ثابت انتخاب میکند: فایلهای گواهی دستی ← ACME ← HTTP ساده. این صفحه دربارهٔ TLS خود پنل است. گواهیهایی که inboundهای پروکسی شما به کار میبرند در صفحهٔ گواهیها مدیریت میشوند.
پیش از شروع
- دامنهای که DNS آن از قبل به سرور اشاره میکند، اگر ACME میخواهید.
- چالش ACME باید بتواند از اینترنت به سرور برسد.
- تصمیم بگیرید که خود پنل TLS را خاتمه میدهد یا پشت nginx، Caddy، Traefik یا یک CDN مینشیند.
گامها
گواهی خودکار با ACME
- دامنهتان را به سرور اشاره دهید و مطمئن شوید DNS منتشر شده است.
- کلیدهای ACME را در
.envبگذارید:
APP_BASE_URL=https://panel.example.com
ACME_ENABLED=true
ACME_EMAIL=you@example.com
ACME_STAGING=true
ACME_AUTO_RENEW=true
ACME_CACHE_DIR=/app/data/acme
JWT_COOKIE_DOMAIN=example.com
JWT_COOKIE_SECURE=true
- برنامه را دوباره راه بیندازید و مطمئن شوید یک گواهی staging صادر میشود. بعد
ACME_STAGING=falseبگذارید و برای گواهی واقعی دوباره راه بیندازید. اول رفتن به staging جلوی سوزاندن محدودیت نرخ Let’s Encrypt را میگیرد، آن هم وقتی که دارید DNS را عیبیابی میکنید. - گواهیهای صادرشده در
ACME_CACHE_DIRنگه داشته میشوند، که زیر Docker یک والیوم پایا است، پس راهاندازی دوباره باعث صدور دوباره نمیشود.
تنظیمهای ACME در Settings ← Server ← HTTPS هم قابل ویرایش
هستند و در راهاندازی بعدی اعمال میشوند، پس میتوانید ACME را بدون دست زدن به
.env روشن یا خاموش کنید.
آوردن گواهی خودتان
برنامه را به فایلهای PEM خودتان اشاره دهید. فایلهای دستی بر ACME مقدم هستند.
TLS_CERT_FILE=/path/to/fullchain.pem
TLS_KEY_FILE=/path/to/privkey.pem
پشت یک پروکسی معکوس
TLS را در پروکسی خاتمه دهید و بگذارید برنامه بهصورت محلی HTTP ساده حرف بزند، ولی
باز هم APP_BASE_URL را روی آدرس عمومی HTTPS بگذارید.
APP_BASE_URL=https://panel.example.com
ACME_ENABLED=false
JWT_COOKIE_SECURE=true
JWT_COOKIE_DOMAIN=example.com
پنل برای ترمینال زنده، نمودارها و رویدادها از WebSocket و server-sent events
استفاده میکند، پس پروکسی باید هدرهای Upgrade و Connection را رد کند و مهلت
خواندن بلندی داشته باشد.
server {
listen 443 ssl http2;
server_name panel.example.com;
ssl_certificate /etc/letsencrypt/live/panel.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/panel.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:9761;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
}
مرجع
| هدف | چه بگذارید |
|---|---|
| HTTPS خودکار روی یک دامنه | ACME_ENABLED=true، ACME_EMAIL، APP_BASE_URL=https://… |
| گواهی خودتان | TLS_CERT_FILE، TLS_KEY_FILE |
| پشت یک پروکسی یا CDN | APP_BASE_URL=https://…، ACME خاموش، کوکیهای secure روشن |
| IP خالی، فقط برای آزمایش | APP_BASE_URL=http://ip:port، ACME خاموش، JWT_COOKIE_SECURE=false |
| متغیر | چه میکند | پیشفرض |
|---|---|---|
ACME_ENABLED |
صدور خودکار را روشن میکند. با خاموش بودنش هیچ گواهی صادر نمیشود، حتی اگر APP_BASE_URL روی HTTPS باشد. |
false |
ACME_EMAIL |
آدرس تماس برای اطلاعیههای Let’s Encrypt. وقتی ACME روشن است لازم است. | خالی |
ACME_STAGING |
تا وقتی دارید آزمایش میکنید از دایرکتوری staging استفاده میکند. | false |
ACME_AUTO_RENEW |
گواهی را تمدیدشده نگه میدارد. | true |
ACME_CACHE_DIR |
جایی که گواهیهای صادرشده نگه داشته میشوند. | /app/data/acme |
TLS_CERT_FILE |
مسیر زنجیرهٔ گواهی شما. بر ACME مقدم است. | مقدار ندارد |
TLS_KEY_FILE |
مسیر کلید خصوصی شما. | مقدار ندارد |
JWT_COOKIE_SECURE |
کوکیهای نشست را secure علامت میزند. به HTTPS نیاز دارد. | false |
JWT_COOKIE_DOMAIN |
دامنهٔ کوکی. در حالت IP خالی بماند. | خالی |
رفع مشکلات
| نشانه | چه کنید |
|---|---|
| صدور گواهی شکست میخورد. | مطمئن شوید دامنه به همین سرور resolve میشود و چالش ACME میتواند به آن برسد، چون دلیل معمول یک فایروال است یا پروکسیای جلوی پنل که مسیر چالش را رد نمیکند. با ACME_STAGING=true آزمایش کنید تا شکستها به حساب محدودیت نرخ شما نروند. |