With Proxmox’s integrated ACME support, you can obtain automatic, free, and secure SSL certificates via the Cloudflare DNS API without manually adding TXT records or opening any ports.
This guide is up-to-date with real usage steps, error solutions, and practical tips.
pve.domain.com
)DZUtOLWXjTVaQgL090asAdhnhbwPpUfdfXTit6dfsb0Gb7Uhw8v
echo 'CF_Token="DZUtOLWXjTVaQgL090asAdhnhbwPpUfdfXTit6dfsb0Gb7Uhw8v"' > /root/cf-token-token.txt
chmod 600 /root/cf-token-token.txt
CF_Token="..."
.chmod 600
command ensures only root can read it.
pvenode acme plugin add dns cftoken --api cf --data /root/cf-token-token.txt
cf
not cloudflare
! Otherwise, you’ll get an error like “api: value ‘cloudflare’ does not have a value…”.pvenode acme plugin list
pvenode acme plugin config cftoken
You should see the cftoken name and your token data in the output.
pvenode config set -acmedomain0 pve.domain.com,plugin=cftoken
-acmedomain1
, -acmedomain2
, etc.
pvenode acme account register default em***@********in.com
pvenode acme cert order --force
_acme-challenge
TXT record is automatically added to Cloudflare DNS, validated by Let’s Encrypt, the certificate is installed, and the web GUI reloads.pve-daily-update.service
will auto-renew certificates before they expire.Error Message | Cause & Solution |
---|---|
400 not enough arguments | Incomplete command; when adding the plugin, use pvenode acme plugin add dns name --api cf --data file . |
api: value ‘cloudflare’ does not have a value… | Use –api cf instead of –api cloudflare. |
Plugin not visible in the list | After adding, refresh the GUI with F5 or check via pvenode acme plugin list in CLI. |
No CF_Token=…, only token string | The file must be in the format CF_Token="YOURTOKEN" . |
“Order Certificates Now” is disabled/error | There may be missing or incorrect domain, plugin, or account definitions. Check all. |
www.
or missing TLD).https://pve.domain.com
and verify the certificate in your browser.
# 1. Create the token file
echo 'CF_Token="YOURTOKEN"' > /root/cf-token-token.txt
chmod 600 /root/cf-token-token.txt
# 2. Add the Cloudflare ACME plugin
pvenode acme plugin add dns cftoken --api cf --data /root/cf-token-token.txt
# 3. (Optional) Check plugin config
pvenode acme plugin config cftoken
# 4. Assign domain to node
pvenode config set -acmedomain0 pve.domain.com,plugin=cftoken
# 5. Register ACME account
pvenode acme account register default em***@********in.com
# 6. Order certificate
pvenode acme cert order --force
With this method, your Proxmox web interface will now be fully automatic, secure, and protected with a free SSL certificate! For any issues or extra support, feel free to reach out with your command output or error details.