<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[AdminsForum - aaPanel Domains, DNS & SSL Guides]]></title>
		<link>https://adminsforum.com/</link>
		<description><![CDATA[AdminsForum - https://adminsforum.com]]></description>
		<pubDate>Thu, 15 Oct 2026 07:04:50 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Install a Trusted SSL Certificate for the aaPanel Login]]></title>
			<link>https://adminsforum.com/Thread-guide-install-a-trusted-ssl-certificate-for-the-aapanel-login</link>
			<pubDate>Tue, 13 Oct 2026 11:33:04 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=2">DEV</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-install-a-trusted-ssl-certificate-for-the-aapanel-login</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Quick answer</span><br />
Use Settings → Panel SSL → Modify → Lets Encrypt to request a certificate for your panel hostname, then sign in through that same hostname. A website's SSL certificate does not automatically secure the separate aaPanel listener.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Lab result</span><br />
On aaPanel 8.0.6, the native panel-certificate workflow deployed a trusted certificate for cp.adminslab.com. The panel keeps its existing port 18443. The certificate expires on 11 January 2027, and a client using its normal trusted CA store verified the hostname and negotiated TLS 1.3. The domain login succeeded.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=120" target="_blank" title="">panel-cert-branded-20261013.jpg</a> (Size: 53.76 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Prepare DNS and recovery</span><br />
Create a dedicated DNS-only A record pointing to the VPS before requesting the certificate. Use the existing panel port and keep its security entrance private. Our record is cp.adminslab.com → 217.217.235.82; substitute your own hostname and IP.<br />
Keep an independent SSH or provider-console recovery route. Back up panel configuration and certificate files privately before replacing them. Do not put certificate private keys in a public web folder or attach them to a support thread.<br />
If you use a CDN, redirection or validation rules, ensure they will not intercept the certificate challenge. This walkthrough used native File Verification and a DNS-only hostname.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Open the panel certificate editor</span><br />
Open Settings and find Panel SSL. Select Modify next to SSL Certificate. This is the panel's certificate setting, separate from the SSL tab on an individual website.<br />
Our panel already had HTTPS enabled with an IP certificate. We kept HTTPS enabled while replacing it with a hostname certificate; disabling encryption was unnecessary.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Select the native Let's Encrypt workflow</span><br />
In Custom Panel Certificate choose Lets Encrypt. The native dialog offers File Verification and DNS Verification. We selected File Verification and entered cp.adminslab.com in Panel Domain, then used Install Certificate Now.<br />
The request progressed through Panel SSL Initialize and deployed the certificate. Wait for the result instead of submitting repeated applications. A failed request needs its validation error checked first; repeated requests can encounter CA limits.<br />
DNS Verification is an alternative when appropriate, but this article does not claim that its provider/API flow was tested.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. Reconnect using the correct hostname</span><br />
The panel may restart or refresh after certificate deployment. Use your domain, existing port and existing security entrance:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://cp.example.com:YOUR_PANEL_PORT/YOUR_SECURITY_ENTRANCE</code></div></div>We opened the login page and signed in through the domain. The previous IP URL produced a certificate-name mismatch because the replacement certificate covers the domain. That is a hostname issue, not a reason to bypass a browser warning or disable HTTPS.<br />
Domain binding remains a separate restriction. We left it empty; setting it is not required simply to install a domain certificate.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Verify the certificate</span><br />
In Settings, check Certificate Status, Domain, Issuer and Expiration Date. The domain must match the address you actually use. Also test with normal certificate validation; a green status in the panel alone is not the entire check.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=121" target="_blank" title="">panel-tls-proof-branded-20261013.jpg</a> (Size: 61.42 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br />
Our independent check resolved the domain to the correct VPS, validated the chain and hostname, and negotiated TLS 1.3 on port 18443. It did not disable certificate validation.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">6. Check renewal arrangements</span><br />
The native workflow describes automatic renewal through the domain-management system. Our existing Domain SSL Renew task remains Running. Keep the hostname resolving to the correct server and keep the selected validation route working so future renewal can complete.<br />
The present certificate was verified after deployment. Its future renewal has not yet occurred, so this guide does not claim a completed renewal test. Check the next renewal log and certificate expiry rather than assuming the task's existence guarantees success.<br />
A manually copied Custom SSL certificate needs its own deployment and renewal process. A renewed website certificate does not necessarily replace a separately copied panel certificate.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Troubleshooting</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Validation fails:</span> check A/AAAA records, DNS propagation, challenge reachability and CDN/redirect rules. Read the actual validation result.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Browser reports a different name:</span> use the certificate hostname or install the right certificate; do not accept an unrelated certificate as the permanent solution.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Domain works on 443 but panel does not:</span> verify the panel's actual port. Website HTTPS and panel HTTPS are separate listeners.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Panel restarts during deployment:</span> reconnect to the correct hostname and existing entrance. Preserve your SSH/provider-console route.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Renewal task fails later:</span> check its log, DNS and validation path before expiry. Do not wait until the certificate is already invalid.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Related:</span> <a href="https://adminsforum.com/Thread-guide-access-aapanel-through-a-domain-name-with-cloudflare-dns" target="_blank" rel="noopener" class="mycode_url">Set up aaPanel domain access</a>.<br />
<span style="font-weight: bold;" class="mycode_b">Reference:</span> <a href="https://www.aapanel.com/docs/Function/Tutorial/panel_access_using_domain.html" target="_blank" rel="noopener" class="mycode_url">aaPanel domain and panel-SSL documentation</a>. © AdminsForum.]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Quick answer</span><br />
Use Settings → Panel SSL → Modify → Lets Encrypt to request a certificate for your panel hostname, then sign in through that same hostname. A website's SSL certificate does not automatically secure the separate aaPanel listener.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Lab result</span><br />
On aaPanel 8.0.6, the native panel-certificate workflow deployed a trusted certificate for cp.adminslab.com. The panel keeps its existing port 18443. The certificate expires on 11 January 2027, and a client using its normal trusted CA store verified the hostname and negotiated TLS 1.3. The domain login succeeded.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=120" target="_blank" title="">panel-cert-branded-20261013.jpg</a> (Size: 53.76 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Prepare DNS and recovery</span><br />
Create a dedicated DNS-only A record pointing to the VPS before requesting the certificate. Use the existing panel port and keep its security entrance private. Our record is cp.adminslab.com → 217.217.235.82; substitute your own hostname and IP.<br />
Keep an independent SSH or provider-console recovery route. Back up panel configuration and certificate files privately before replacing them. Do not put certificate private keys in a public web folder or attach them to a support thread.<br />
If you use a CDN, redirection or validation rules, ensure they will not intercept the certificate challenge. This walkthrough used native File Verification and a DNS-only hostname.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Open the panel certificate editor</span><br />
Open Settings and find Panel SSL. Select Modify next to SSL Certificate. This is the panel's certificate setting, separate from the SSL tab on an individual website.<br />
Our panel already had HTTPS enabled with an IP certificate. We kept HTTPS enabled while replacing it with a hostname certificate; disabling encryption was unnecessary.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Select the native Let's Encrypt workflow</span><br />
In Custom Panel Certificate choose Lets Encrypt. The native dialog offers File Verification and DNS Verification. We selected File Verification and entered cp.adminslab.com in Panel Domain, then used Install Certificate Now.<br />
The request progressed through Panel SSL Initialize and deployed the certificate. Wait for the result instead of submitting repeated applications. A failed request needs its validation error checked first; repeated requests can encounter CA limits.<br />
DNS Verification is an alternative when appropriate, but this article does not claim that its provider/API flow was tested.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. Reconnect using the correct hostname</span><br />
The panel may restart or refresh after certificate deployment. Use your domain, existing port and existing security entrance:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://cp.example.com:YOUR_PANEL_PORT/YOUR_SECURITY_ENTRANCE</code></div></div>We opened the login page and signed in through the domain. The previous IP URL produced a certificate-name mismatch because the replacement certificate covers the domain. That is a hostname issue, not a reason to bypass a browser warning or disable HTTPS.<br />
Domain binding remains a separate restriction. We left it empty; setting it is not required simply to install a domain certificate.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Verify the certificate</span><br />
In Settings, check Certificate Status, Domain, Issuer and Expiration Date. The domain must match the address you actually use. Also test with normal certificate validation; a green status in the panel alone is not the entire check.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=121" target="_blank" title="">panel-tls-proof-branded-20261013.jpg</a> (Size: 61.42 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br />
Our independent check resolved the domain to the correct VPS, validated the chain and hostname, and negotiated TLS 1.3 on port 18443. It did not disable certificate validation.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">6. Check renewal arrangements</span><br />
The native workflow describes automatic renewal through the domain-management system. Our existing Domain SSL Renew task remains Running. Keep the hostname resolving to the correct server and keep the selected validation route working so future renewal can complete.<br />
The present certificate was verified after deployment. Its future renewal has not yet occurred, so this guide does not claim a completed renewal test. Check the next renewal log and certificate expiry rather than assuming the task's existence guarantees success.<br />
A manually copied Custom SSL certificate needs its own deployment and renewal process. A renewed website certificate does not necessarily replace a separately copied panel certificate.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Troubleshooting</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Validation fails:</span> check A/AAAA records, DNS propagation, challenge reachability and CDN/redirect rules. Read the actual validation result.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Browser reports a different name:</span> use the certificate hostname or install the right certificate; do not accept an unrelated certificate as the permanent solution.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Domain works on 443 but panel does not:</span> verify the panel's actual port. Website HTTPS and panel HTTPS are separate listeners.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Panel restarts during deployment:</span> reconnect to the correct hostname and existing entrance. Preserve your SSH/provider-console route.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Renewal task fails later:</span> check its log, DNS and validation path before expiry. Do not wait until the certificate is already invalid.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Related:</span> <a href="https://adminsforum.com/Thread-guide-access-aapanel-through-a-domain-name-with-cloudflare-dns" target="_blank" rel="noopener" class="mycode_url">Set up aaPanel domain access</a>.<br />
<span style="font-weight: bold;" class="mycode_b">Reference:</span> <a href="https://www.aapanel.com/docs/Function/Tutorial/panel_access_using_domain.html" target="_blank" rel="noopener" class="mycode_url">aaPanel domain and panel-SSL documentation</a>. © AdminsForum.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Access aaPanel Through a Domain Name with Cloudflare DNS]]></title>
			<link>https://adminsforum.com/Thread-guide-access-aapanel-through-a-domain-name-with-cloudflare-dns</link>
			<pubDate>Tue, 13 Oct 2026 10:58:35 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=2">DEV</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-access-aapanel-through-a-domain-name-with-cloudflare-dns</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Quick answer</span><br />
Create a DNS-only A record for a dedicated panel hostname, keep the existing aaPanel port and security entrance, and install a trusted certificate covering that hostname. In our lab, cp.adminslab.com points to 217.217.235.82 and the panel still uses port 18443. We left the Domain binding field empty.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Before you start</span><br />
Have a working panel login and an independent SSH/provider-console recovery route. Record the current port and security entrance privately. These are your existing values, not a reason to reset them. Back up panel configuration before replacing a certificate. Use a subdomain dedicated to administration, such as cp.example.com, rather than reusing a public website hostname.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Add the DNS record</span><br />
In Cloudflare, select the correct domain → DNS → Records → Add record. Choose A, enter cp as the name and your VPS IPv4 address as the content. Turn Proxy status off so it says DNS only, leave TTL at Auto and save.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=118" target="_blank" title="">panel-dns-branded-20261013.jpg</a> (Size: 144.43 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br />
Our saved record resolves cp.adminslab.com to the lab VPS. Replace that domain and address with your own values. Do not change your main website or mail records while adding the panel record.<br />
The lab's port 18443 is outside Cloudflare's ordinary supported proxy ports. Orange-cloud proxying would not make this direct panel URL work. DNS only sends the browser directly to the origin; retain your server firewall and panel authentication.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Understand the complete URL</span><br />
The login address contains three parts:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://cp.example.com:YOUR_PANEL_PORT/YOUR_SECURITY_ENTRANCE</code></div></div>The domain replaces the IP address. The port and security entrance remain the ones already configured in aaPanel. Our port is 18443, but your installation may use another number. Keep the real entrance private; this guide deliberately does not publish it.<br />
A DNS record does not move the panel onto port 443 or change its login path. Typing only the hostname may reach a website or a default web-server page instead of aaPanel.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Install HTTPS before signing in through the hostname</span><br />
A certificate issued for the server IP will not automatically cover the new domain. In Settings → Panel SSL → Modify, use the certificate workflow for the panel hostname. Our native Let's Encrypt workflow applied and deployed a certificate for cp.adminslab.com.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=119" target="_blank" title="">panel-cert-branded-20261013.jpg</a> (Size: 53.76 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br />
We verified its chain and hostname with normal certificate checks, negotiated TLS 1.3 and then signed in through the domain. Its displayed expiry is 11 January 2027. This is evidence from the lab, not a promise that your application will complete without DNS or validation fixes.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. Keep Domain binding separate</span><br />
Settings → Domain is a restriction, not the DNS record editor. The panel warns that setting it limits access to that domain. We kept it empty while testing, so changing the hostname did not also add an access restriction.<br />
There is still a certificate consequence: after installing a domain-only certificate, visiting the raw IP through HTTPS produces a name mismatch. Empty binding does not make that certificate valid for the IP. Use the proper domain URL and retain SSH/provider-console access for recovery; do not bypass certificate warnings.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Verify the new route</span><br />
Check the DNS answer is your VPS, confirm the URL contains the actual port and entrance, inspect the certificate domain and expiry, and sign in using the existing account. Open a normal panel page after login to confirm the session works. Our domain login and settings page passed these checks.<br />
Do not change the panel port, enable a reverse proxy or restrict authorized IPs during the same first test. Each adds a separate failure point and deserves its own verified step.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Troubleshooting</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">DNS points elsewhere:</span> correct the A record and wait for the relevant DNS cache to refresh. Check for an unintended AAAA record if IPv6 takes a different route.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Timeout:</span> check the exact panel port, server firewall, provider firewall and DNS-only status.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">404 at the hostname:</span> confirm the security entrance and port. aaPanel may intentionally return 404 for the wrong entrance.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Certificate mismatch:</span> use the hostname covered by the certificate or deploy the correct certificate. A website certificate on 443 does not automatically configure the panel listener.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">IP URL stopped validating:</span> expected if the replacement certificate covers only the domain. Recover through the correct hostname or your independent administration route.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">References:</span> <a href="https://www.aapanel.com/docs/Function/Tutorial/panel_access_using_domain.html" target="_blank" rel="noopener" class="mycode_url">aaPanel domain-access documentation</a> and <a href="https://developers.cloudflare.com/fundamentals/reference/network-ports/" target="_blank" rel="noopener" class="mycode_url">Cloudflare supported ports</a>. © AdminsForum.]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Quick answer</span><br />
Create a DNS-only A record for a dedicated panel hostname, keep the existing aaPanel port and security entrance, and install a trusted certificate covering that hostname. In our lab, cp.adminslab.com points to 217.217.235.82 and the panel still uses port 18443. We left the Domain binding field empty.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Before you start</span><br />
Have a working panel login and an independent SSH/provider-console recovery route. Record the current port and security entrance privately. These are your existing values, not a reason to reset them. Back up panel configuration before replacing a certificate. Use a subdomain dedicated to administration, such as cp.example.com, rather than reusing a public website hostname.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Add the DNS record</span><br />
In Cloudflare, select the correct domain → DNS → Records → Add record. Choose A, enter cp as the name and your VPS IPv4 address as the content. Turn Proxy status off so it says DNS only, leave TTL at Auto and save.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=118" target="_blank" title="">panel-dns-branded-20261013.jpg</a> (Size: 144.43 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br />
Our saved record resolves cp.adminslab.com to the lab VPS. Replace that domain and address with your own values. Do not change your main website or mail records while adding the panel record.<br />
The lab's port 18443 is outside Cloudflare's ordinary supported proxy ports. Orange-cloud proxying would not make this direct panel URL work. DNS only sends the browser directly to the origin; retain your server firewall and panel authentication.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Understand the complete URL</span><br />
The login address contains three parts:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://cp.example.com:YOUR_PANEL_PORT/YOUR_SECURITY_ENTRANCE</code></div></div>The domain replaces the IP address. The port and security entrance remain the ones already configured in aaPanel. Our port is 18443, but your installation may use another number. Keep the real entrance private; this guide deliberately does not publish it.<br />
A DNS record does not move the panel onto port 443 or change its login path. Typing only the hostname may reach a website or a default web-server page instead of aaPanel.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Install HTTPS before signing in through the hostname</span><br />
A certificate issued for the server IP will not automatically cover the new domain. In Settings → Panel SSL → Modify, use the certificate workflow for the panel hostname. Our native Let's Encrypt workflow applied and deployed a certificate for cp.adminslab.com.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=119" target="_blank" title="">panel-cert-branded-20261013.jpg</a> (Size: 53.76 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br />
We verified its chain and hostname with normal certificate checks, negotiated TLS 1.3 and then signed in through the domain. Its displayed expiry is 11 January 2027. This is evidence from the lab, not a promise that your application will complete without DNS or validation fixes.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. Keep Domain binding separate</span><br />
Settings → Domain is a restriction, not the DNS record editor. The panel warns that setting it limits access to that domain. We kept it empty while testing, so changing the hostname did not also add an access restriction.<br />
There is still a certificate consequence: after installing a domain-only certificate, visiting the raw IP through HTTPS produces a name mismatch. Empty binding does not make that certificate valid for the IP. Use the proper domain URL and retain SSH/provider-console access for recovery; do not bypass certificate warnings.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Verify the new route</span><br />
Check the DNS answer is your VPS, confirm the URL contains the actual port and entrance, inspect the certificate domain and expiry, and sign in using the existing account. Open a normal panel page after login to confirm the session works. Our domain login and settings page passed these checks.<br />
Do not change the panel port, enable a reverse proxy or restrict authorized IPs during the same first test. Each adds a separate failure point and deserves its own verified step.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Troubleshooting</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">DNS points elsewhere:</span> correct the A record and wait for the relevant DNS cache to refresh. Check for an unintended AAAA record if IPv6 takes a different route.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Timeout:</span> check the exact panel port, server firewall, provider firewall and DNS-only status.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">404 at the hostname:</span> confirm the security entrance and port. aaPanel may intentionally return 404 for the wrong entrance.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Certificate mismatch:</span> use the hostname covered by the certificate or deploy the correct certificate. A website certificate on 443 does not automatically configure the panel listener.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">IP URL stopped validating:</span> expected if the replacement certificate covers only the domain. Recover through the correct hostname or your independent administration route.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">References:</span> <a href="https://www.aapanel.com/docs/Function/Tutorial/panel_access_using_domain.html" target="_blank" rel="noopener" class="mycode_url">aaPanel domain-access documentation</a> and <a href="https://developers.cloudflare.com/fundamentals/reference/network-ports/" target="_blank" rel="noopener" class="mycode_url">Cloudflare supported ports</a>. © AdminsForum.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Redirect HTTP to HTTPS in aaPanel Free Edition (Nginx)]]></title>
			<link>https://adminsforum.com/Thread-guide-redirect-http-to-https-in-aapanel-free-edition-nginx</link>
			<pubDate>Sun, 11 Oct 2026 02:40:54 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=2">DEV</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-redirect-http-to-https-in-aapanel-free-edition-nginx</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Quick answer</span><br />
After installing a valid website certificate, redirect HTTP requests to HTTPS. This aaPanel Free Edition guide uses a custom Nginx rewrite rule that preserves the hostname, path and query string, while keeping the ACME challenge path available for certificate validation.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Before you start</span><br />
Confirm both HTTPS hostnames work without certificate warnings. This example is for Nginx, not Apache or OpenLiteSpeed. Back up existing rewrite rules before editing them; retain any application rules below the new redirect block.<br />
<a href="https://adminsforum.com/Thread-guide-install-let-s-encrypt-ssl-in-aapanel-free-edition" target="_blank" rel="noopener" class="mycode_url">Install website SSL first</a>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Open the rewrite editor</span><br />
Go to Website, open your site's settings, and choose URL rewrite. Our new lab site had an empty rule file. Do not replace an existing application's rewrite configuration blindly.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Add the redirect block</span><br />
Place this block above your application rewrite rules:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code># AdminsForum tutorial: HTTPS redirect with ACME exception
set &#36;af_https_redirect 0;
if (&#36;scheme = http) {
    set &#36;af_https_redirect 1;
}
if (&#36;uri ~ "^/&#92;.well-known/acme-challenge/") {
    set &#36;af_https_redirect 0;
}
if (&#36;af_https_redirect = 1) {
    return 301 https://&#36;host&#36;request_uri;
}</code></div></div>The first condition marks HTTP requests for redirection. The next clears that flag for the ACME challenge path. The final return performs the redirect. HTTPS requests are not redirected by this block.<br />
<br />
<img src="https://adminsforum.com/attachment.php?aid=18" loading="lazy"  alt="[Image: attachment.php?aid=18]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Save and test</span><br />
Click Save. If aaPanel reports a configuration error, restore your previous rules rather than leaving an invalid configuration. Our Nginx configuration test passed after saving.<br />
Check HTTP and HTTPS separately. Our results were:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>http://adminslab.com/ -&gt; 301 -&gt; https://adminslab.com/
http://www.adminslab.com/test-path?check=1
 -&gt; 301 -&gt; https://www.adminslab.com/test-path?check=1
https://adminslab.com/ -&gt; 200</code></div></div>We also placed a temporary text file under /.well-known/acme-challenge/ and confirmed it returned HTTP 200 directly, then removed the test file. A nonexistent challenge URL can behave differently because the server's error-page rules also run.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Important limits</span><ul class="mycode_list"><li>This is a permanent 301 redirect; browsers may cache it. Use a fresh request when testing a rollback.<br />
</li>
<li>This preserves www and non-www rather than choosing a canonical hostname.<br />
</li>
<li>We tested the certificate-validation route, not a future certificate renewal.<br />
</li>
<li>Cloudflare records remain DNS only. Do not combine this setup with an incompatible proxy SSL mode that creates a loop.<br />
</li>
<li>If you later select a rewrite template, check that it has not replaced this custom block.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Troubleshooting</span><br />
A redirect loop usually means HTTPS is being redirected again or another proxy/application rule conflicts. Restore your saved rules and inspect the complete chain. A certificate warning must be fixed at the certificate level, not hidden with a redirect.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Tested:</span> 10 October 2026, aaPanel Free Edition 8.0.6 with Nginx. Original AdminsForum lab screenshot.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=18" target="_blank" title="">https-redirect-rule-20261010.jpg</a> (Size: 51.69 KB / Downloads: 7)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Quick answer</span><br />
After installing a valid website certificate, redirect HTTP requests to HTTPS. This aaPanel Free Edition guide uses a custom Nginx rewrite rule that preserves the hostname, path and query string, while keeping the ACME challenge path available for certificate validation.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Before you start</span><br />
Confirm both HTTPS hostnames work without certificate warnings. This example is for Nginx, not Apache or OpenLiteSpeed. Back up existing rewrite rules before editing them; retain any application rules below the new redirect block.<br />
<a href="https://adminsforum.com/Thread-guide-install-let-s-encrypt-ssl-in-aapanel-free-edition" target="_blank" rel="noopener" class="mycode_url">Install website SSL first</a>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Open the rewrite editor</span><br />
Go to Website, open your site's settings, and choose URL rewrite. Our new lab site had an empty rule file. Do not replace an existing application's rewrite configuration blindly.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Add the redirect block</span><br />
Place this block above your application rewrite rules:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code># AdminsForum tutorial: HTTPS redirect with ACME exception
set &#36;af_https_redirect 0;
if (&#36;scheme = http) {
    set &#36;af_https_redirect 1;
}
if (&#36;uri ~ "^/&#92;.well-known/acme-challenge/") {
    set &#36;af_https_redirect 0;
}
if (&#36;af_https_redirect = 1) {
    return 301 https://&#36;host&#36;request_uri;
}</code></div></div>The first condition marks HTTP requests for redirection. The next clears that flag for the ACME challenge path. The final return performs the redirect. HTTPS requests are not redirected by this block.<br />
<br />
<img src="https://adminsforum.com/attachment.php?aid=18" loading="lazy"  alt="[Image: attachment.php?aid=18]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Save and test</span><br />
Click Save. If aaPanel reports a configuration error, restore your previous rules rather than leaving an invalid configuration. Our Nginx configuration test passed after saving.<br />
Check HTTP and HTTPS separately. Our results were:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>http://adminslab.com/ -&gt; 301 -&gt; https://adminslab.com/
http://www.adminslab.com/test-path?check=1
 -&gt; 301 -&gt; https://www.adminslab.com/test-path?check=1
https://adminslab.com/ -&gt; 200</code></div></div>We also placed a temporary text file under /.well-known/acme-challenge/ and confirmed it returned HTTP 200 directly, then removed the test file. A nonexistent challenge URL can behave differently because the server's error-page rules also run.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Important limits</span><ul class="mycode_list"><li>This is a permanent 301 redirect; browsers may cache it. Use a fresh request when testing a rollback.<br />
</li>
<li>This preserves www and non-www rather than choosing a canonical hostname.<br />
</li>
<li>We tested the certificate-validation route, not a future certificate renewal.<br />
</li>
<li>Cloudflare records remain DNS only. Do not combine this setup with an incompatible proxy SSL mode that creates a loop.<br />
</li>
<li>If you later select a rewrite template, check that it has not replaced this custom block.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Troubleshooting</span><br />
A redirect loop usually means HTTPS is being redirected again or another proxy/application rule conflicts. Restore your saved rules and inspect the complete chain. A certificate warning must be fixed at the certificate level, not hidden with a redirect.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Tested:</span> 10 October 2026, aaPanel Free Edition 8.0.6 with Nginx. Original AdminsForum lab screenshot.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=18" target="_blank" title="">https-redirect-rule-20261010.jpg</a> (Size: 51.69 KB / Downloads: 7)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Install Let's Encrypt SSL in aaPanel Free Edition]]></title>
			<link>https://adminsforum.com/Thread-guide-install-let-s-encrypt-ssl-in-aapanel-free-edition</link>
			<pubDate>Sun, 11 Oct 2026 02:35:26 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=2">DEV</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-install-let-s-encrypt-ssl-in-aapanel-free-edition</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Quick answer</span><br />
Open Website in aaPanel Free Edition, select the site's SSL status, choose Let's Encrypt, select File Verification and the required domains, then Apply. Confirm that the certificate is deployed and that both HTTPS addresses work with normal certificate validation.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Before you start</span><ul class="mycode_list"><li>Create the website and include every hostname you want on the certificate.<br />
</li>
<li>Point its DNS records to the VPS and confirm public DNS resolution.<br />
</li>
<li>Check that the HTTP website works and port 80 is reachable for file validation.<br />
</li>
<li>Allow port 443 for HTTPS.<br />
</li>
</ul>
We used adminslab.com and <a href="http://www.adminslab.com" target="_blank" rel="noopener" class="mycode_url">www.adminslab.com</a> with Cloudflare DNS-only records during this test. This certificate is for the website, not the aaPanel login address.<br />
<a href="https://adminsforum.com/Thread-guide-create-a-website-in-aapanel-free-edition" target="_blank" rel="noopener" class="mycode_url">Create the website first</a>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Open the website SSL settings</span><br />
Go to Website and click Not Set in the site's SSL column, or open the site's settings and select SSL. Choose the Let's Encrypt tab.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Choose File Verification and domains</span><br />
Keep File Verification selected. Tick each hostname that should be included. In our lab, we selected both adminslab.com and <a href="http://www.adminslab.com" target="_blank" rel="noopener" class="mycode_url">www.adminslab.com</a>.<br />
<br />
<img src="https://adminsforum.com/attachment.php?aid=16" loading="lazy"  alt="[Image: attachment.php?aid=16]" class="mycode_img" /><br />
<br />
HTTP-01 file validation uses port 80 and requires the challenge file to be reachable. Wildcard certificates require a different validation method, such as DNS validation; they are not covered by this walkthrough.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Apply and wait</span><br />
Click Apply once. Let aaPanel complete its initialization and certificate request. Do not repeatedly request new certificates while one is running. Read any error before retrying.<br />
When successful, the certificate settings show Current Certs - Deployed, the covered domains and an expiry date.<br />
<br />
<img src="https://adminsforum.com/attachment.php?aid=17" loading="lazy"  alt="[Image: attachment.php?aid=17]" class="mycode_img" /><br />
<br />
Our certificate covers both lab hostnames and expires on 8 January 2027. That date belongs to this test certificate; check the date shown for your own certificate.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. Verify HTTPS</span><br />
Open both addresses:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://adminslab.com
https://www.adminslab.com</code></div></div>They should load without a certificate warning. Our tests returned HTTP 200 for both URLs, with certificate validation successful. Do not bypass warnings or disable certificate checks to call a deployment successful.<br />
The default page test verifies HTTPS delivery, not an installed application or its mixed-content settings.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Plan renewal and redirects</span><br />
aaPanel displays an automatic renewal reminder. We have verified issuance and deployment, not a future renewal. Keep the validation route available and check expiry and renewal logs before the certificate expires.<br />
Issuing a certificate and redirecting HTTP to HTTPS are separate steps. This guide installs HTTPS; an HTTP-to-HTTPS redirect will be covered separately after checking the website. Cloudflare proxying and its SSL mode will also be separate.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Troubleshooting</span><br />
<span style="font-weight: bold;" class="mycode_b">Validation fails:</span> Check public DNS, the selected hostnames, port 80 and the challenge path. Redirects, proxy rules or access restrictions can interfere.<br />
<span style="font-weight: bold;" class="mycode_b">Only one hostname works:</span> Check that both are in the site's domain list and certificate.<br />
<span style="font-weight: bold;" class="mycode_b">Wrong certificate:</span> Check the hostname, site selection and which server DNS points to.<br />
<span style="font-weight: bold;" class="mycode_b">HTTPS times out:</span> Check port 443, Nginx and the provider firewall.<br />
<span style="font-weight: bold;" class="mycode_b">Rate-limit error:</span> Read the error and avoid repeated requests while fixing DNS or routing.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Official reference</span><br />
<a href="https://letsencrypt.org/docs/challenge-types/" target="_blank" rel="noopener" class="mycode_url">Let's Encrypt validation methods</a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Related</span><br />
<a href="https://adminsforum.com/Thread-guide-add-a-domain-to-cloudflare-free-dns-and-nameservers" target="_blank" rel="noopener" class="mycode_url">Add a domain to Cloudflare Free</a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Tested:</span> 10 October 2026, aaPanel Free Edition 8.0.6, Nginx on Ubuntu 22.04. Original AdminsForum lab screenshots. Private keys are excluded from the screenshots.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=16" target="_blank" title="">website-ssl-apply-20261010.jpg</a> (Size: 60.18 KB / Downloads: 10)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=17" target="_blank" title="">website-ssl-deployed-20261010.jpg</a> (Size: 26.35 KB / Downloads: 11)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Quick answer</span><br />
Open Website in aaPanel Free Edition, select the site's SSL status, choose Let's Encrypt, select File Verification and the required domains, then Apply. Confirm that the certificate is deployed and that both HTTPS addresses work with normal certificate validation.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Before you start</span><ul class="mycode_list"><li>Create the website and include every hostname you want on the certificate.<br />
</li>
<li>Point its DNS records to the VPS and confirm public DNS resolution.<br />
</li>
<li>Check that the HTTP website works and port 80 is reachable for file validation.<br />
</li>
<li>Allow port 443 for HTTPS.<br />
</li>
</ul>
We used adminslab.com and <a href="http://www.adminslab.com" target="_blank" rel="noopener" class="mycode_url">www.adminslab.com</a> with Cloudflare DNS-only records during this test. This certificate is for the website, not the aaPanel login address.<br />
<a href="https://adminsforum.com/Thread-guide-create-a-website-in-aapanel-free-edition" target="_blank" rel="noopener" class="mycode_url">Create the website first</a>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Open the website SSL settings</span><br />
Go to Website and click Not Set in the site's SSL column, or open the site's settings and select SSL. Choose the Let's Encrypt tab.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Choose File Verification and domains</span><br />
Keep File Verification selected. Tick each hostname that should be included. In our lab, we selected both adminslab.com and <a href="http://www.adminslab.com" target="_blank" rel="noopener" class="mycode_url">www.adminslab.com</a>.<br />
<br />
<img src="https://adminsforum.com/attachment.php?aid=16" loading="lazy"  alt="[Image: attachment.php?aid=16]" class="mycode_img" /><br />
<br />
HTTP-01 file validation uses port 80 and requires the challenge file to be reachable. Wildcard certificates require a different validation method, such as DNS validation; they are not covered by this walkthrough.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Apply and wait</span><br />
Click Apply once. Let aaPanel complete its initialization and certificate request. Do not repeatedly request new certificates while one is running. Read any error before retrying.<br />
When successful, the certificate settings show Current Certs - Deployed, the covered domains and an expiry date.<br />
<br />
<img src="https://adminsforum.com/attachment.php?aid=17" loading="lazy"  alt="[Image: attachment.php?aid=17]" class="mycode_img" /><br />
<br />
Our certificate covers both lab hostnames and expires on 8 January 2027. That date belongs to this test certificate; check the date shown for your own certificate.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">4. Verify HTTPS</span><br />
Open both addresses:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://adminslab.com
https://www.adminslab.com</code></div></div>They should load without a certificate warning. Our tests returned HTTP 200 for both URLs, with certificate validation successful. Do not bypass warnings or disable certificate checks to call a deployment successful.<br />
The default page test verifies HTTPS delivery, not an installed application or its mixed-content settings.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">5. Plan renewal and redirects</span><br />
aaPanel displays an automatic renewal reminder. We have verified issuance and deployment, not a future renewal. Keep the validation route available and check expiry and renewal logs before the certificate expires.<br />
Issuing a certificate and redirecting HTTP to HTTPS are separate steps. This guide installs HTTPS; an HTTP-to-HTTPS redirect will be covered separately after checking the website. Cloudflare proxying and its SSL mode will also be separate.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Troubleshooting</span><br />
<span style="font-weight: bold;" class="mycode_b">Validation fails:</span> Check public DNS, the selected hostnames, port 80 and the challenge path. Redirects, proxy rules or access restrictions can interfere.<br />
<span style="font-weight: bold;" class="mycode_b">Only one hostname works:</span> Check that both are in the site's domain list and certificate.<br />
<span style="font-weight: bold;" class="mycode_b">Wrong certificate:</span> Check the hostname, site selection and which server DNS points to.<br />
<span style="font-weight: bold;" class="mycode_b">HTTPS times out:</span> Check port 443, Nginx and the provider firewall.<br />
<span style="font-weight: bold;" class="mycode_b">Rate-limit error:</span> Read the error and avoid repeated requests while fixing DNS or routing.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Official reference</span><br />
<a href="https://letsencrypt.org/docs/challenge-types/" target="_blank" rel="noopener" class="mycode_url">Let's Encrypt validation methods</a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Related</span><br />
<a href="https://adminsforum.com/Thread-guide-add-a-domain-to-cloudflare-free-dns-and-nameservers" target="_blank" rel="noopener" class="mycode_url">Add a domain to Cloudflare Free</a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Tested:</span> 10 October 2026, aaPanel Free Edition 8.0.6, Nginx on Ubuntu 22.04. Original AdminsForum lab screenshots. Private keys are excluded from the screenshots.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=16" target="_blank" title="">website-ssl-apply-20261010.jpg</a> (Size: 60.18 KB / Downloads: 10)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=17" target="_blank" title="">website-ssl-deployed-20261010.jpg</a> (Size: 26.35 KB / Downloads: 11)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
	</channel>
</rss>