Skip to main content

HTTPS Setup

This tutorial walks through the full process of enabling HTTPS using Let's Encrypt's ACME service.

Prerequisites

  • A domain name (e.g., example.com) pointing to your server
  • Port 80 accessible (for HTTP challenge) or DNS control panel access (for DNS challenge)
  • zyveraweb.acme.use permission

Method 1: HTTP Challenge (Easier)

Step 1: Configure Port 80

Edit config.yml:

host: "0.0.0.0"
port: 80

sites:
  - domain: "example.com"
    dir: "site/example"

Step 2: Restart

/zyveraweb server restart

Step 3: Start ACME

/zyveraweb acme start example.com http

The plugin will prompt you to accept the ToS.

Step 4: Accept ToS

/zyveraweb acme tos

The certificate is issued automatically.

Step 5: Enable SSL

Add the ssl block to your site config:

host: "0.0.0.0"
port: 443

sites:
  - domain: "example.com"
    dir: "site/example"
    ssl:
      cert: fullchain.pem
      key: privkey.pem

Step 6: Restart

/zyveraweb server restart

Step 7: Verify

https://example.com

Method 2: DNS Challenge (No Port 80 Needed)

Step 1: Start ACME

/zyveraweb acme start example.com dns

Step 2: Accept ToS

/zyveraweb acme tos

The plugin displays the TXT record to create.

Step 3: Add DNS Record

Add this TXT record to your DNS zone:

_acme-challenge.example.com IN TXT <validation-string>

Step 4: Wait and Confirm

After the DNS record propagates:

/zyveraweb acme confirm

Step 5: Enable SSL

host: "0.0.0.0"
port: 443

sites:
  - domain: "example.com"
    dir: "site/example"
    ssl:
      cert: fullchain.pem
      key: privkey.pem

Step 6: Restart

/zyveraweb server restart

Troubleshooting

Problem Solution
"SSL files not found" Run the ACME workflow first, or place certificates manually
"You have to use port 80" Switch to DNS challenge or change port to 80
Certificate not trusted Ensure you used fullchain.pem (not just cert.pem)
Browser shows "Not Secure" Check that all page resources are loaded over HTTPS