diff --git a/README.md b/README.md
index a430446c32..b271eaaec6 100644
--- a/README.md
+++ b/README.md
@@ -188,49 +188,49 @@ Detailed documentation is available [here](https://go-acme.github.io/lego/dns).
RFC2136 |
RimuHosting |
+ RU CENTER |
Sakura Cloud |
Scaleway |
- Selectel |
+ Selectel |
Selectel v2 |
SelfHost.(de|eu) |
Servercow |
- Shellrent |
+ Shellrent |
Simply.com |
Sonic |
Stackpath |
- Technitium |
+ Technitium |
Tencent Cloud DNS |
Timeweb Cloud |
TransIP |
- UKFast SafeDNS |
+ UKFast SafeDNS |
Ultradns |
Variomedia |
VegaDNS |
- Vercel |
+ Vercel |
Versio.[nl|eu|uk] |
VinylDNS |
VK Cloud |
- Volcano Engine/火山引擎 |
+ Volcano Engine/火山引擎 |
Vscale |
Vultr |
Webnames |
- Websupport |
+ Websupport |
WEDOS |
Yandex 360 |
Yandex Cloud |
- Yandex PDD |
+ Yandex PDD |
Zone.ee |
Zonomi |
|
- |
diff --git a/cmd/zz_gen_cmd_dnshelp.go b/cmd/zz_gen_cmd_dnshelp.go
index 52eb0f11f7..9a3ef9b3c9 100644
--- a/cmd/zz_gen_cmd_dnshelp.go
+++ b/cmd/zz_gen_cmd_dnshelp.go
@@ -104,6 +104,7 @@ func allDNSCodes() string {
"netcup",
"netlify",
"nicmanager",
+ "nicru",
"nifcloud",
"njalla",
"nodion",
@@ -2113,6 +2114,29 @@ func displayDNSHelp(w io.Writer, name string) error {
ew.writeln()
ew.writeln(`More information: https://go-acme.github.io/lego/dns/nicmanager`)
+ case "nicru":
+ // generated from: providers/dns/nicru/nicru.toml
+ ew.writeln(`Configuration for RU CENTER.`)
+ ew.writeln(`Code: 'nicru'`)
+ ew.writeln(`Since: 'v4.21.0'`)
+ ew.writeln()
+
+ ew.writeln(`Credentials:`)
+ ew.writeln(` - "NICRU_PASSWORD": Password for account in RU CENTER`)
+ ew.writeln(` - "NICRU_SECRET": Secret for application in DNS-hosting RU CENTER`)
+ ew.writeln(` - "NICRU_SERVICE_ID": Service ID for application in DNS-hosting RU CENTER`)
+ ew.writeln(` - "NICRU_SERVICE_NAME": Service Name for DNS-hosting RU CENTER`)
+ ew.writeln(` - "NICRU_USER": Agreement for account in RU CENTER`)
+ ew.writeln()
+
+ ew.writeln(`Additional Configuration:`)
+ ew.writeln(` - "NICRU_POLLING_INTERVAL": Time between DNS propagation check`)
+ ew.writeln(` - "NICRU_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`)
+ ew.writeln(` - "NICRU_TTL": The TTL of the TXT record used for the DNS challenge`)
+
+ ew.writeln()
+ ew.writeln(`More information: https://go-acme.github.io/lego/dns/nicru`)
+
case "nifcloud":
// generated from: providers/dns/nifcloud/nifcloud.toml
ew.writeln(`Configuration for NIFCloud.`)
diff --git a/docs/content/dns/zz_gen_nicru.md b/docs/content/dns/zz_gen_nicru.md
new file mode 100644
index 0000000000..4a7b5f6730
--- /dev/null
+++ b/docs/content/dns/zz_gen_nicru.md
@@ -0,0 +1,85 @@
+---
+title: "RU CENTER"
+date: 2019-03-03T16:39:46+01:00
+draft: false
+slug: nicru
+dnsprovider:
+ since: "v4.21.0"
+ code: "nicru"
+ url: "https://nic.ru/"
+---
+
+
+
+
+
+
+Configuration for [RU CENTER](https://nic.ru/).
+
+
+
+
+- Code: `nicru`
+- Since: v4.21.0
+
+
+Here is an example bash command using the RU CENTER provider:
+
+```bash
+NICRU_USER="" \
+NICRU_PASSWORD="" \
+NICRU_SERVICE_ID="" \
+NICRU_SECRET="" \
+NICRU_SERVICE_NAME="" \
+lego --dns nicru --domains "*.example.com" --email you@example.com run
+```
+
+
+
+
+## Credentials
+
+| Environment Variable Name | Description |
+|-----------------------|-------------|
+| `NICRU_PASSWORD` | Password for account in RU CENTER |
+| `NICRU_SECRET` | Secret for application in DNS-hosting RU CENTER |
+| `NICRU_SERVICE_ID` | Service ID for application in DNS-hosting RU CENTER |
+| `NICRU_SERVICE_NAME` | Service Name for DNS-hosting RU CENTER |
+| `NICRU_USER` | Agreement for account in RU CENTER |
+
+The environment variable names can be suffixed by `_FILE` to reference a file instead of a value.
+More information [here]({{% ref "dns#configuration-and-credentials" %}}).
+
+
+## Additional Configuration
+
+| Environment Variable Name | Description |
+|--------------------------------|-------------|
+| `NICRU_POLLING_INTERVAL` | Time between DNS propagation check |
+| `NICRU_PROPAGATION_TIMEOUT` | Maximum waiting time for DNS propagation |
+| `NICRU_TTL` | The TTL of the TXT record used for the DNS challenge |
+
+The environment variable names can be suffixed by `_FILE` to reference a file instead of a value.
+More information [here]({{% ref "dns#configuration-and-credentials" %}}).
+
+## Credential inforamtion
+
+You can find information about service ID and secret https://www.nic.ru/manager/oauth.cgi?step=oauth.app_list
+
+| ENV Variable | Parameter from page | Example |
+|---------------------|--------------------------------|-------------------|
+| NICRU_USER | Username (Number of agreement) | NNNNNNN/NIC-D |
+| NICRU_PASSWORD | Password account | |
+| NICRU_SERVICE_ID | Application ID | hex-based, len 32 |
+| NICRU_SECRET | Identity endpoint | string len 91 |
+| NICRU_SERVICE_NAME | Service name in DNS-hosting | DPNNNNNNNNNN |
+
+
+
+## More information
+
+- [API documentation](https://www.nic.ru/help/api-dns-hostinga_3643.html)
+
+
+
+
diff --git a/docs/data/zz_cli_help.toml b/docs/data/zz_cli_help.toml
index ad95fe40df..6e3e62c1a0 100644
--- a/docs/data/zz_cli_help.toml
+++ b/docs/data/zz_cli_help.toml
@@ -142,7 +142,7 @@ To display the documentation for a specific DNS provider, run:
$ lego dnshelp -c code
Supported DNS providers:
- acme-dns, alidns, allinkl, arvancloud, auroradns, autodns, azure, azuredns, bindman, bluecat, brandit, bunny, checkdomain, civo, clouddns, cloudflare, cloudns, cloudru, cloudxns, conoha, constellix, corenetworks, cpanel, derak, desec, designate, digitalocean, directadmin, dnshomede, dnsimple, dnsmadeeasy, dnspod, dode, domeneshop, dreamhost, duckdns, dyn, dynu, easydns, edgedns, efficientip, epik, exec, exoscale, freemyip, gandi, gandiv5, gcloud, gcore, glesys, godaddy, googledomains, hetzner, hostingde, hosttech, httpnet, httpreq, huaweicloud, hurricane, hyperone, ibmcloud, iij, iijdpf, infoblox, infomaniak, internetbs, inwx, ionos, ipv64, iwantmyname, joker, liara, lightsail, limacity, linode, liquidweb, loopia, luadns, mailinabox, manual, metaname, mijnhost, mittwald, mydnsjp, mythicbeasts, namecheap, namedotcom, namesilo, nearlyfreespeech, netcup, netlify, nicmanager, nifcloud, njalla, nodion, ns1, oraclecloud, otc, ovh, pdns, plesk, porkbun, rackspace, rcodezero, regfish, regru, rfc2136, rimuhosting, route53, safedns, sakuracloud, scaleway, selectel, selectelv2, selfhostde, servercow, shellrent, simply, sonic, stackpath, technitium, tencentcloud, timewebcloud, transip, ultradns, variomedia, vegadns, vercel, versio, vinyldns, vkcloud, volcengine, vscale, vultr, webnames, websupport, wedos, yandex, yandex360, yandexcloud, zoneee, zonomi
+ acme-dns, alidns, allinkl, arvancloud, auroradns, autodns, azure, azuredns, bindman, bluecat, brandit, bunny, checkdomain, civo, clouddns, cloudflare, cloudns, cloudru, cloudxns, conoha, constellix, corenetworks, cpanel, derak, desec, designate, digitalocean, directadmin, dnshomede, dnsimple, dnsmadeeasy, dnspod, dode, domeneshop, dreamhost, duckdns, dyn, dynu, easydns, edgedns, efficientip, epik, exec, exoscale, freemyip, gandi, gandiv5, gcloud, gcore, glesys, godaddy, googledomains, hetzner, hostingde, hosttech, httpnet, httpreq, huaweicloud, hurricane, hyperone, ibmcloud, iij, iijdpf, infoblox, infomaniak, internetbs, inwx, ionos, ipv64, iwantmyname, joker, liara, lightsail, limacity, linode, liquidweb, loopia, luadns, mailinabox, manual, metaname, mijnhost, mittwald, mydnsjp, mythicbeasts, namecheap, namedotcom, namesilo, nearlyfreespeech, netcup, netlify, nicmanager, nicru, nifcloud, njalla, nodion, ns1, oraclecloud, otc, ovh, pdns, plesk, porkbun, rackspace, rcodezero, regfish, regru, rfc2136, rimuhosting, route53, safedns, sakuracloud, scaleway, selectel, selectelv2, selfhostde, servercow, shellrent, simply, sonic, stackpath, technitium, tencentcloud, timewebcloud, transip, ultradns, variomedia, vegadns, vercel, versio, vinyldns, vkcloud, volcengine, vscale, vultr, webnames, websupport, wedos, yandex, yandex360, yandexcloud, zoneee, zonomi
More information: https://go-acme.github.io/lego/dns
"""
diff --git a/providers/dns/zz_gen_dns_providers.go b/providers/dns/zz_gen_dns_providers.go
index 3d9f4965de..071e1a88f7 100644
--- a/providers/dns/zz_gen_dns_providers.go
+++ b/providers/dns/zz_gen_dns_providers.go
@@ -98,6 +98,7 @@ import (
"github.com/go-acme/lego/v4/providers/dns/netcup"
"github.com/go-acme/lego/v4/providers/dns/netlify"
"github.com/go-acme/lego/v4/providers/dns/nicmanager"
+ "github.com/go-acme/lego/v4/providers/dns/nicru"
"github.com/go-acme/lego/v4/providers/dns/nifcloud"
"github.com/go-acme/lego/v4/providers/dns/njalla"
"github.com/go-acme/lego/v4/providers/dns/nodion"
@@ -337,6 +338,8 @@ func NewDNSChallengeProviderByName(name string) (challenge.Provider, error) {
return netlify.NewDNSProvider()
case "nicmanager":
return nicmanager.NewDNSProvider()
+ case "nicru":
+ return nicru.NewDNSProvider()
case "nifcloud":
return nifcloud.NewDNSProvider()
case "njalla":