Control panels

CyberPanel: create a website and issue a Let's Encrypt SSL

Add a domain in CyberPanel, set its document root, and issue a free Let's Encrypt certificate so the site loads over HTTPS.

BeginnerLinux server6 min read

This guide shows you how to create a website in CyberPanel and issue a Let's Encrypt SSL certificate for it, so the domain serves over HTTPS instead of plain HTTP. You will add the domain, upload files to its document root, request the certificate, and confirm the padlock in a browser.

CyberPanel runs on top of OpenLiteSpeed, and its Let's Encrypt integration is built in, so you do not need Certbot or a separate ACME client. The whole job takes a few minutes once DNS is correct.

Before you start

You need:

  • A Linux VPS with CyberPanel already installed and reachable. The panel listens on port 8090.
  • Your server's public IP and the panel login. Both are in your VPS provider's control panel — the IP is on the server card, and you can reset the panel password over SSH if you lost it.
  • A domain such as example.com that you control, plus the www hostname if you want it.
  • Ports 80 and 443 open in the firewall. Let's Encrypt validates ownership over HTTP on port 80, so the challenge fails if that port is blocked.

Warning: Do not request the certificate before DNS points at this server. If another machine answers for the domain on port 80, the validation fails and you may hit Let's Encrypt rate limits after repeated attempts.

Step 1: Point the domain at the server

Create an A record for example.com and another for www.example.com, both pointing to your server IP. Then confirm propagation from the server itself:

Bash
dig +short example.com
dig +short www.example.com

Both commands should print your server's IP. If they return nothing or an old address, wait for the TTL to expire before continuing.

Step 2: Create the website and enable Let's Encrypt SSL in CyberPanel

  1. Open https://203.0.113.10:8090 in your browser and log in as the CyberPanel admin.
  2. Go to Websites → Create Website.
  3. Fill in the form:
  • Package: Default (or your own package).
  • Owner: admin, or the reseller/user who should manage the site.
  • Domain Name: example.com.
  • Email: a working address for expiry notices.
  • PHP: pick the version your application needs.
  1. Tick SSL so CyberPanel requests a Let's Encrypt certificate during creation. Tick DKIM Support if you plan to send mail from the domain.
  2. Click Create Website and wait for the progress log to finish.

CyberPanel now creates the document root at /home/example.com/public_html, assigns the site to the owner's system user (admin by default), registers a virtual host in OpenLiteSpeed, and runs the ACME challenge for the domain.

Tip: If you also want www covered, add it as a separate website or as an alias, then issue SSL for it too. A certificate only covers the names it was requested for.

Step 3: Issue or re-issue the certificate

If the SSL step failed or you skipped the checkbox, issue it manually:

  1. Go to Websites → List Websites.
  2. Click Manage next to example.com.
  3. Open the SSL section and choose Issue SSL.
  4. Wait about 30 seconds, then reload the page. The status should read as issued, with an expiry date.

The same screen lets you view the certificate, download it, and reissue it after a DNS change. CyberPanel renews certificates automatically through a scheduled job, so you normally do not have to touch this again.

Step 4: Upload your site files

Put your content in /home/example.com/public_html. Two easy options:

  • File Manager — in Websites → List Websites, click Manage → File Manager, open public_html, and upload or create files.
  • SFTP — connect on port 22 with the website owner's system user (admin unless you chose another owner, and only if that package allows SSH) and upload to the same path.

For a quick test, create index.html containing a single line of text. Directories should be 755 and files 644, owned by the website owner's system user — admin here, so adjust it if you created the site under another owner:

Bash
chown -R admin:admin /home/example.com/public_html
find /home/example.com/public_html -type d -exec chmod 755 {} \;
find /home/example.com/public_html -type f -exec chmod 644 {} \;

Step 5: Force HTTPS

The certificate is installed, but visitors can still reach the site over HTTP. Add a redirect by creating or editing .htaccess in public_html:

Apache
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

OpenLiteSpeed reads .htaccess for sites created by CyberPanel. If the rule is ignored, check the virtual host's rewrite settings in Websites → List Websites → Manage → Rewrite Rules.

Warning: Test the redirect on a staging domain first if the site already has traffic. A wrong rule can send every request into a loop and take the site offline.

Check it works

Confirm the redirect and the certificate from the command line:

Bash
curl -I http://example.com
curl -I https://example.com

The first response should be a 301 pointing at https://, and the second a 200. Then inspect the certificate itself:

Bash
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates

You should see subject=CN = example.com, an issuer of Let's Encrypt, and a notAfter date roughly 90 days out. Finally, load https://example.com in a browser and check for the padlock with no mixed-content warnings.

Troubleshooting

  • SSL issuance fails with a challenge or validation error — DNS is not pointing at this server, or port 80 is blocked. Re-run dig +short example.com, open port 80, and try again.
  • Browser shows a certificate warning or the wrong site — the certificate was never issued for that hostname. Issue SSL for the exact name you are visiting, including www if you use it.
  • Padlock appears but the page loads unstyled — mixed content. Hardcoded http:// links to CSS, JS or images must be changed to https:// or protocol-relative URLs.
  • 403 Forbidden on the new site — no index file, or wrong ownership. Check that public_html contains index.html or index.php and that the files belong to the website owner's system user.
  • Panel at port 8090 unreachable — the panel service stopped or the port is filtered. Run systemctl status lscpd over SSH and restart it with systemctl restart lscpd; also confirm the firewall allows 8090.

Next steps

Was this guide helpful?

Still stuck?

Ask MdmHost AI for a quick answer, or open a ticket and our team will take a look. We are here 24/7.