{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "title": "GoDoxy config file", "properties": { "autocert": { "title": "Autocert configuration", "type": "object", "properties": { "email": { "title": "ACME Email", "type": "string", "pattern": "^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$", "patternErrorMessage": "Invalid email" }, "domains": { "title": "Cert Domains", "type": "array", "items": { "type": "string" }, "minItems": 1 }, "cert_path": { "title": "path of cert file to load/store", "default": "certs/cert.crt", "markdownDescription": "default: `certs/cert.crt`", "type": "string" }, "key_path": { "title": "path of key file to load/store", "default": "certs/priv.key", "markdownDescription": "default: `certs/priv.key`", "type": "string" }, "acme_key_path": { "title": "path of acme key file to load/store", "default": "certs/acme.key", "markdownDescription": "default: `certs/acme.key`", "type": "string" }, "provider": { "title": "DNS Challenge Provider", "default": "local", "type": "string", "enum": [ "local", "cloudflare", "clouddns", "duckdns", "ovh" ] }, "options": { "title": "Provider specific options", "type": "object" } }, "allOf": [ { "if": { "not": { "properties": { "provider": { "const": "local" } } } }, "then": { "required": [ "email", "domains", "provider", "options" ] } }, { "if": { "properties": { "provider": { "const": "cloudflare" } } }, "then": { "properties": { "options": { "required": [ "auth_token" ], "additionalProperties": false, "properties": { "auth_token": { "description": "Cloudflare API Token with Zone Scope", "type": "string" } } } } } }, { "if": { "properties": { "provider": { "const": "clouddns" } } }, "then": { "properties": { "options": { "required": [ "client_id", "email", "password" ], "additionalProperties": false, "properties": { "client_id": { "description": "CloudDNS Client ID", "type": "string" }, "email": { "description": "CloudDNS Email", "type": "string" }, "password": { "description": "CloudDNS Password", "type": "string" } } } } } }, { "if": { "properties": { "provider": { "const": "duckdns" } } }, "then": { "properties": { "options": { "required": [ "token" ], "additionalProperties": false, "properties": { "token": { "description": "DuckDNS Token", "type": "string" } } } } } }, { "if": { "properties": { "provider": { "const": "ovh" } } }, "then": { "properties": { "options": { "required": [ "application_secret", "consumer_key" ], "additionalProperties": false, "oneOf": [ { "required": [ "application_key" ] }, { "required": [ "oauth2_config" ] } ], "properties": { "api_endpoint": { "description": "OVH API endpoint", "default": "ovh-eu", "anyOf": [ { "enum": [ "ovh-eu", "ovh-ca", "ovh-us", "kimsufi-eu", "kimsufi-ca", "soyoustart-eu", "soyoustart-ca" ] }, { "type": "string", "format": "uri" } ] }, "application_secret": { "description": "OVH Application Secret", "type": "string" }, "consumer_key": { "description": "OVH Consumer Key", "type": "string" }, "application_key": { "description": "OVH Application Key", "type": "string" }, "oauth2_config": { "description": "OVH OAuth2 config", "type": "object", "additionalProperties": false, "properties": { "client_id": { "description": "OVH Client ID", "type": "string" }, "client_secret": { "description": "OVH Client Secret", "type": "string" } }, "required": [ "client_id", "client_secret" ] } } } } } } ] }, "providers": { "title": "Proxy providers configuration", "type": "object", "additionalProperties": false, "properties": { "include": { "title": "Proxy providers configuration files", "description": "relative path to 'config'", "type": "array", "items": { "type": "string", "pattern": "^[a-zA-Z0-9_-]+\\.(yml|yaml)$", "patternErrorMessage": "Invalid file name" } }, "docker": { "title": "Docker provider configuration", "description": "docker clients (name-address pairs)", "type": "object", "patternProperties": { "^[a-zA-Z0-9-_]+$": { "type": "string", "examples": [ "unix:///var/run/docker.sock", "tcp://127.0.0.1:2375", "ssh://user@host:port" ], "oneOf": [ { "const": "$DOCKER_HOST", "description": "Use DOCKER_HOST environment variable" }, { "pattern": "^unix://.+$", "description": "A Unix socket for local Docker communication." }, { "pattern": "^ssh://.+$", "description": "An SSH connection to a remote Docker host." }, { "pattern": "^fd://.+$", "description": "A file descriptor for Docker communication." }, { "pattern": "^tcp://.+$", "description": "A TCP connection to a remote Docker host." } ] } } }, "notification": { "description": "Notification provider configuration", "type": "array", "items": { "type": "object", "required": [ "name", "provider" ], "properties": { "name": { "type": "string", "description": "Notifier name" }, "provider": { "description": "Notifier provider", "type": "string", "enum": [ "gotify", "webhook" ] } }, "oneOf": [ { "description": "Gotify configuration", "additionalProperties": false, "properties": { "name": {}, "provider": { "const": "gotify" }, "url": { "description": "Gotify URL", "type": "string" }, "token": { "description": "Gotify token", "type": "string" } }, "required": [ "url", "token" ] }, { "description": "Webhook configuration", "additionalProperties": false, "properties": { "name": {}, "provider": { "const": "webhook" }, "url": { "description": "Webhook URL", "type": "string" }, "token": { "description": "Webhook bearer token", "type": "string" }, "template": { "description": "Webhook template", "type": "string", "enum": [ "discord" ] }, "payload": { "description": "Webhook payload", "type": "string", "format": "json" }, "method": { "description": "Webhook request method", "type": "string", "enum": [ "GET", "POST", "PUT" ] }, "mime_type": { "description": "Webhook NIME type", "type": "string" }, "color_mode": { "description": "Webhook color mode", "type": "string", "enum": [ "hex", "dec" ] } }, "required": [ "url" ] } ] } } } }, "match_domains": { "title": "Domains to match", "type": "array", "items": { "type": "string" }, "minItems": 1 }, "homepage": { "title": "Homepage configuration", "type": "object", "additionalProperties": false, "properties": { "use_default_categories": { "title": "Use default categories", "type": "boolean" } } }, "entrypoint": { "title": "Entrypoint configuration", "type": "object", "additionalProperties": false, "properties": { "redirect_to_https": { "title": "Redirect to HTTPS on HTTP requests", "type": "boolean" }, "middlewares": { "title": "Entrypoint middlewares", "type": "array", "items": { "type": "object", "required": [ "use" ], "properties": { "use": { "type": "string", "description": "Middleware to use" } } } } } }, "timeout_shutdown": { "title": "Shutdown timeout (in seconds)", "type": "integer", "minimum": 0 } }, "additionalProperties": false, "required": [ "providers" ] }