2018-01-22 13:01:38 -08:00
<!DOCTYPE html>
< html >
< head >
2024-04-26 14:07:53 +02:00
< meta charset = "utf-8" / >
< meta name = "viewport" content = "user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" / >
2018-01-22 13:01:38 -08:00
2024-04-26 14:07:53 +02:00
< title > Cloudron Domain Setup< / title >
< meta name = "description" content = "Cloudron Domain Setup" >
2018-04-10 14:49:49 +02:00
2024-04-26 14:07:53 +02:00
< link id = "favicon" href = "/api/v1/cloudron/avatar" rel = "icon" type = "image/png" >
2018-01-22 13:01:38 -08:00
2024-04-26 14:07:53 +02:00
<!-- Theme CSS -->
< link type = "text/css" rel = "stylesheet" href = "/theme.css" >
2018-01-22 13:01:38 -08:00
2024-04-26 14:07:53 +02:00
<!-- Fontawesome -->
< link type = "text/css" rel = "stylesheet" href = "/3rdparty/fontawesome/css/all.min.css?<%= revision %>" / >
2018-01-22 13:01:38 -08:00
2024-04-26 14:07:53 +02:00
<!-- jQuery -->
< script type = "text/javascript" src = "/3rdparty/js/jquery.min.js" > < / script >
2018-01-22 13:01:38 -08:00
2024-04-26 14:07:53 +02:00
<!-- async -->
< script type = "text/javascript" src = "/3rdparty/js/async-3.2.0.min.js" > < / script >
2020-06-03 22:59:17 +02:00
2024-04-26 14:07:53 +02:00
<!-- Bootstrap Core JavaScript -->
< script type = "text/javascript" src = "/3rdparty/js/bootstrap.min.js" > < / script >
2018-01-22 13:01:38 -08:00
2024-04-26 14:07:53 +02:00
<!-- Angularjs scripts -->
< script type = "text/javascript" src = "/3rdparty/js/angular.min.js" > < / script >
< script type = "text/javascript" src = "/3rdparty/js/angular-loader.min.js" > < / script >
< script type = "text/javascript" src = "/3rdparty/js/angular-cookies.min.js" > < / script >
< script type = "text/javascript" src = "/3rdparty/js/angular-md5.min.js" > < / script >
< script type = "text/javascript" src = "/3rdparty/js/angular-ui-notification.js" > < / script >
< script type = "text/javascript" src = "/3rdparty/js/autofill-event.js" > < / script >
2018-01-22 13:01:38 -08:00
2024-04-26 14:07:53 +02:00
< script type = "text/javascript" src = "/3rdparty/js/clipboard.min.js" > < / script >
2018-01-22 13:01:38 -08:00
2024-04-26 14:07:53 +02:00
<!-- Angular directives for bootstrap https://angular - ui.github.io/bootstrap/ -->
< script type = "text/javascript" src = "/3rdparty/js/ui-bootstrap-tpls-1.3.3.min.js" > < / script >
2018-05-15 15:46:24 -07:00
2024-04-26 14:07:53 +02:00
<!-- Angular translate https://angular - translate.github.io/ -->
< script type = "text/javascript" src = "/3rdparty/js/angular-translate.min.js?<%= revision %>" > < / script >
< script type = "text/javascript" src = "/3rdparty/js/angular-translate-loader-static-files.min.js?<%= revision %>" > < / script >
< script type = "text/javascript" src = "/3rdparty/js/angular-translate-storage-cookie.min.js?<%= revision %>" > < / script >
< script type = "text/javascript" src = "/3rdparty/js/angular-translate-storage-local.min.js?<%= revision %>" > < / script >
2020-11-08 10:48:30 +01:00
2024-04-26 14:07:53 +02:00
<!-- Showdown (markdown converter) -->
< script type = "text/javascript" src = "/3rdparty/js/showdown-1.9.1.min.js?<%= revision %>" > < / script >
2020-07-10 15:20:53 +02:00
2024-04-26 14:07:53 +02:00
<!-- Setup Application -->
< script type = "text/javascript" src = "/js/setupdns.js" > < / script >
2018-01-22 13:01:38 -08:00
< / head >
< body class = "setup" ng-app = "Application" ng-controller = "SetupDNSController" >
2020-06-16 15:28:58 +02:00
< div class = "main-container ng-cloak text-center" ng-show = "state === 'waitingForDnsSetup' || state === 'waitingForBox'" >
< div class = "row" >
2020-06-16 10:40:46 -07:00
< div class = "col-md-6 col-md-offset-3 text-center" >
2020-06-16 15:28:58 +02:00
< i class = "fa fa-circle-notch fa-spin fa-5x" > < / i > < br / >
< h3 > {{ message }} ...< / h3 >
< br / >
< br / >
2020-06-16 10:40:46 -07:00
< br / >
< br / >
2020-06-17 20:37:28 -07:00
< br / >
< br / >
< br / >
< br / >
2020-06-16 15:28:58 +02:00
< p >
2021-10-21 17:34:07 +02:00
Please wait while Cloudron is setting up the dashboard at my.{{dnsCredentials.domain}}.< br / >
2020-06-16 10:40:46 -07:00
You can follow the logs on the server at < code class = "clipboard hand" data-clipboard-text = "/home/yellowtent/platformdata/logs/box.log" uib-tooltip = "{{ clipboardDone ? 'Copied' : 'Click to copy' }}" tooltip-placement = "right" > /home/yellowtent/platformdata/logs/box.log< / code >
2020-06-16 15:28:58 +02:00
< / p >
< / div >
2018-01-22 13:01:38 -08:00
< / div >
2020-06-16 15:28:58 +02:00
< / div >
2018-01-22 13:01:38 -08:00
2024-04-26 14:07:53 +02:00
< div class = "main-container ng-cloak" ng-show = "state === 'initialized'" >
< div class = "row" >
< div class = "col-md-6 col-md-offset-3" >
< div class = "card" style = "max-width: none; padding: 20px;" >
< form name = "dnsCredentialsForm" role = "form" novalidate ng-submit = "setDnsCredentials()" autocomplete = "off" >
< div class = "row" >
< div class = "col-md-10 col-md-offset-1 text-center" >
< h1 > Domain Setup< / h1 >
< p class = "has-error text-center" ng-show = "error.setup" > {{ error.setup }}< / p >
< / div >
< / div >
< div class = "row" >
< div class = "col-md-10 col-md-offset-1" >
< div class = "form-group" style = "margin-bottom: 0;" ng-class = "{ 'has-error': dnsCredentialsForm.domain.$dirty && dnsCredentialsForm.domain.$invalid }" >
< label class = "control-label" > Domain < sup > < a ng-href = "https://docs.cloudron.io/installation/#domain-setup" class = "help" target = "_blank" > < i class = "fa fa-question-circle" > < / i > < / a > < / sup > < / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.domain" name = "domain" placeholder = "example.com" required autofocus ng-disabled = "dnsCredentials.busy" >
< div class = "text-danger" ng-show = "dnsCredentials.domain.indexOf('my.') === 0 && dnsCredentials.domain.length > 3" > Are you sure about this domain? The dashboard will be at < b > my.{{ dnsCredentials.domain }}< / b > < / div >
< p style = "margin-top: 5px; font-size: 13px;" >
Apps will be installed on subdomains of this domain. The dashboard will be available on the < b > my< / b > subdomain. You can add more domains later.
< / p >
2018-01-22 13:01:38 -08:00
< / div >
2024-04-26 14:07:53 +02:00
< / div >
2018-01-22 13:01:38 -08:00
< / div >
2024-04-26 14:07:53 +02:00
< div class = "row" >
< div class = "col-md-10 col-md-offset-1" >
< h3 class = "text-center" > Domain Configuration < sup > < a ng-href = "https://docs.cloudron.io/domains/#dns-providers" class = "help" target = "_blank" tabindex = "-1" > < i class = "fa fa-question-circle" > < / i > < / a > < / sup > < / h3 >
< p class = "has-error text-center" ng-show = "error.dnsCredentials" > {{ error.dnsCredentials }}< / p >
< div class = "form-group" >
< label class = "control-label" > DNS Provider< / label >
< select class = "form-control" ng-model = "dnsCredentials.provider" ng-options = "a.value as a.name for a in dnsProvider" ng-disabled = "dnsCredentials.busy" ng-change = "setDefaultTlsProvider()" > < / select >
< / div >
<!-- Route53 -->
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.accessKeyId.$dirty && dnsCredentialsForm.accessKeyId.$invalid }" ng-show = "dnsCredentials.provider === 'route53'" >
< label class = "control-label" > Access Key Id< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.accessKeyId" name = "accessKeyId" placeholder = "Access Key Id" ng-minlength = "16" ng-maxlength = "32" ng-required = "dnsCredentials.provider === 'route53'" ng-disabled = "dnsCredentials.busy" >
< / div >
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.secretAccessKey.$dirty && dnsCredentialsForm.secretAccessKey.$invalid }" ng-show = "dnsCredentials.provider === 'route53'" >
< label class = "control-label" > Secret Access Key< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.secretAccessKey" name = "secretAccessKey" placeholder = "Secret Access Key" ng-required = "dnsCredentials.provider === 'route53'" ng-disabled = "dnsCredentials.busy" >
< / div >
<!-- Google Cloud DNS -->
< div class = "form-group" ng-class = "{ 'has-error': false }" ng-show = "dnsCredentials.provider === 'gcdns'" >
< label class = "control-label" > Service Account Key< / label >
< div class = "input-group" >
< input type = "file" id = "gcdnsKeyFileInput" style = "display:none" / >
< input type = "text" class = "form-control" placeholder = "Service Account Key" ng-model = "dnsCredentials.gcdnsKey.keyFileName" id = "gcdnsKeyInput" name = "cert" onclick = "getElementById('gcdnsKeyFileInput').click();" style = "cursor: pointer;" ng-required = "dnsCredentials.provider === 'gcdns'" ng-disabled = "dnsCredentials.busy" >
< span class = "input-group-addon" >
< i class = "fa fa-upload" onclick = "getElementById('gcdnsKeyFileInput').click();" > < / i >
< / span >
< / div >
< / div >
<!-- DigitalOcean -->
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.digitalOceanToken.$dirty && dnsCredentialsForm.digitalOceanToken.$invalid }" ng-show = "dnsCredentials.provider === 'digitalocean'" >
< label class = "control-label" > DigitalOcean Token< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.digitalOceanToken" name = "digitalOceanToken" placeholder = "API Token" ng-required = "dnsCredentials.provider === 'digitalocean'" ng-disabled = "dnsCredentials.busy" >
< / div >
<!-- Gandi -->
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.gandiApiKey.$dirty && dnsCredentialsForm.gandiApiKey.$invalid }" ng-show = "dnsCredentials.provider === 'gandi'" >
< label class = "control-label" > Gandi API Key< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.gandiApiKey" name = "gandiApiKey" placeholder = "API Key" ng-required = "dnsCredentials.provider === 'gandi'" ng-disabled = "dnsCredentials.busy" >
< / div >
<!-- GoDaddy -->
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.godaddyApiKey.$dirty && dnsCredentialsForm.godaddyApiKey.$invalid }" ng-show = "dnsCredentials.provider === 'godaddy'" >
< label class = "control-label" > API Key< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.godaddyApiKey" name = "godaddyApiKey" placeholder = "API Key" ng-minlength = "1" ng-required = "dnsCredentials.provider === 'godaddy'" ng-disabled = "dnsCredentials.busy" >
< / div >
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.godaddyApiSecret.$dirty && dnsCredentialsForm.godaddyApiSecret.$invalid }" ng-show = "dnsCredentials.provider === 'godaddy'" >
< label class = "control-label" > API Secret< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.godaddyApiSecret" name = "godaddyApiSecret" placeholder = "API Secret" ng-required = "dnsCredentials.provider === 'godaddy'" ng-disabled = "dnsCredentials.busy" >
< / div >
<!-- Netcup -->
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.netcupCustomerNumber.$dirty && dnsCredentialsForm.netcupCustomerNumber.$invalid }" ng-show = "dnsCredentials.provider === 'netcup'" >
< label class = "control-label" > Customer Number< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.netcupCustomerNumber" name = "netcupCustomerNumber" ng-disabled = "dnsCredentials.busy" ng-required = "dnsCredentials.provider === 'netcup'" ng-disabled = "dnsCredentials.busy" >
< / div >
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.netcupApiKey.$dirty && dnsCredentialsForm.netcupApiKey.$invalid }" ng-show = "dnsCredentials.provider === 'netcup'" >
< label class = "control-label" > API Key< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.netcupApiKey" name = "netcupApiKey" ng-disabled = "dnsCredentials.busy" ng-minlength = "1" ng-required = "dnsCredentials.provider === 'netcup'" ng-disabled = "dnsCredentials.busy" >
< / div >
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.netcupApiPassword.$dirty && dnsCredentialsForm.netcupApiPassword.$invalid }" ng-show = "dnsCredentials.provider === 'netcup'" >
< label class = "control-label" > API Password< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.netcupApiPassword" name = "netcupApiPassword" ng-disabled = "dnsCredentials.busy" ng-required = "dnsCredentials.provider === 'netcup'" ng-disabled = "dnsCredentials.busy" >
< / div >
<!-- Cloudflare -->
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.cloudflareToken.$dirty && dnsCredentialsForm.cloudflareToken.$invalid }" ng-show = "dnsCredentials.provider === 'cloudflare'" >
< label class = "control-label" > Token Type< / label >
< select class = "form-control" ng-model = "dnsCredentials.cloudflareTokenType" >
< option value = "GlobalApiKey" > Global API Key< / option >
< option value = "ApiToken" > API Token< / option >
< / select >
< / div >
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.cloudflareToken.$dirty && dnsCredentialsForm.cloudflareToken.$invalid }" ng-show = "dnsCredentials.provider === 'cloudflare'" >
< label class = "control-label" ng-show = "dnsCredentials.cloudflareTokenType === 'GlobalApiKey'" > Global API Key< / label >
< label class = "control-label" ng-show = "dnsCredentials.cloudflareTokenType === 'ApiToken'" > Api Token< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.cloudflareToken" name = "cloudflareToken" placeholder = "API Key/Token" ng-required = "dnsCredentials.provider === 'cloudflare'" ng-disabled = "dnsCredentials.busy" >
< / div >
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.cloudflareEmail.$dirty && dnsCredentialsForm.cloudflareEmail.$invalid }" ng-show = "dnsCredentials.provider === 'cloudflare' && dnsCredentials.cloudflareTokenType === 'GlobalApiKey'" >
< label class = "control-label" > Cloudflare Email< / label >
< input type = "email" class = "form-control" ng-model = "dnsCredentials.cloudflareEmail" name = "cloudflareEmail" placeholder = "Cloudflare Account Email" ng-required = "dnsCredentials.provider === 'cloudflare' && dnsCredentials.cloudflareTokenType === 'GlobalApiKey'" ng-disabled = "dnsCredentials.busy" >
< / div >
< div class = "checkbox" ng-show = "dnsCredentials.provider === 'cloudflare'" >
< label >
< input type = "checkbox" ng-model = "dnsCredentials.cloudflareDefaultProxyStatus" > Enable proxying for new DNS records
< sup > < a ng-href = "https://docs.cloudron.io/domains/#cloudflare-dns" class = "help" target = "_blank" tabIndex = "-1" > < i class = "fa fa-question-circle" > < / i > < / a > < / sup >
< / label >
< / div >
<!-- Name.com -->
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.nameComUsername.$dirty && dnsCredentialsForm.nameComUsername.$invalid }" ng-show = "dnsCredentials.provider === 'namecom'" >
< label class = "control-label" > Name.com Username< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.nameComUsername" name = "nameComUsername" placeholder = "Name.com Username" ng-required = "dnsCredentials.provider === 'namecom'" ng-disabled = "dnsCredentials.busy" >
< / div >
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.nameComToken.$dirty && dnsCredentialsForm.nameComToken.$invalid }" ng-show = "dnsCredentials.provider === 'namecom'" >
< label class = "control-label" > API Token< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.nameComToken" name = "nameComToken" placeholder = "Name.com API Token" ng-required = "dnsCredentials.provider === 'namecom'" ng-disabled = "dnsCredentials.busy" >
< / div >
<!-- Namecheap -->
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.namecheapUsername.$dirty && dnsCredentialsForm.namecheapUsername.$invalid }" ng-show = "dnsCredentials.provider === 'namecheap'" >
< label class = "control-label" > Namecheap Username< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.namecheapUsername" name = "namecheapUsername" placeholder = "Namecheap Username" ng-required = "dnsCredentials.provider === 'namecheap'" ng-disabled = "dnsCredentials.busy" >
< / div >
< div class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.namecheapApiKey.$dirty && dnsCredentialsForm.namecheapApiKey.$invalid }" ng-show = "dnsCredentials.provider === 'namecheap'" >
< label class = "control-label" > API Key< / label >
< p class = "small text-info" ng-show = "dnsCredentials.provider === 'namecheap'" > < b > The server IP needs to be whitelisted for this API Key.< / b > < / p >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.namecheapApiKey" name = "namecheapApiKey" placeholder = "Namecheap API Key" ng-required = "dnsCredentials.provider === 'namecheap'" ng-disabled = "dnsCredentials.busy" >
< / div >
<!-- Linode -->
< p class = "form-group" ng-show = "dnsCredentials.provider === 'linode'" >
< label class = "control-label" > API Token< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.linodeToken" name = "linodeToken" ng-required = "dnsCredentials.provider === 'linode'" ng-disabled = "dnsCredentials.busy" >
< / p >
<!-- Bunny -->
< p class = "form-group" ng-show = "dnsCredentials.provider === 'bunny'" >
< label class = "control-label" > Access Key< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.bunnyAccessKey" name = "bunnyAccessKey" ng-required = "dnsCredentials.provider === 'bunny'" ng-disabled = "dnsCredentials.busy" >
< / p >
<!-- dnsimple -->
< p class = "form-group" ng-show = "dnsCredentials.provider === 'dnsimple'" >
< label class = "control-label" > Access Token< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.dnsimpleAccessToken" name = "dnsimpleAccessToken" ng-required = "dnsCredentials.provider === 'dnsimple'" ng-disabled = "dnsCredentials.busy" >
< / p >
<!-- OVH -->
< p class = "form-group" ng-show = "dnsCredentials.provider === 'ovh'" >
< label class = "control-label" for = "inputConfigureOvhEndpoint" > Endpoint< / label >
< select class = "form-control" name = "endpoint" id = "inputConfigureOvhEndpoint" ng-model = "dnsCredentials.ovhEndpoint" ng-options = "a.value as a.name for a in ovhEndpoints" ng-disabled = "dnsCredentials.busy" ng-required = "dnsCredentials.provider === 'ovh'" > < / select >
< / p >
< p class = "form-group" ng-show = "dnsCredentials.provider === 'ovh'" >
< label class = "control-label" > Consumer Key< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.ovhConsumerKey" name = "ovhConsumerKey" ng-disabled = "dnsCredentials.busy" ng-required = "dnsCredentials.provider === 'ovh'" >
< / p >
< p class = "form-group" ng-show = "dnsCredentials.provider === 'ovh'" >
< label class = "control-label" > Application Key< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.ovhAppKey" name = "ovhAppKey" ng-disabled = "dnsCredentials.busy" ng-minlength = "1" ng-required = "dnsCredentials.provider === 'ovh'" >
< / p >
< p class = "form-group" ng-show = "dnsCredentials.provider === 'ovh'" >
< label class = "control-label" > Application Secret< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.ovhAppSecret" name = "ovhAppSecret" ng-disabled = "dnsCredentials.busy" ng-required = "dnsCredentials.provider === 'ovh'" >
< / p >
<!-- Porkbun -->
< p class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.porkbunApikey.$dirty && dnsCredentialsForm.porkbunApikey.$invalid }" ng-show = "dnsCredentials.provider === 'porkbun'" >
< label class = "control-label" > API Key< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.porkbunApikey" name = "porkbunApikey" placeholder = "API Key" ng-minlength = "1" ng-required = "dnsCredentials.provider === 'porkbun'" ng-disabled = "dnsCredentials.busy" >
< / p >
< p class = "form-group" ng-class = "{ 'has-error': dnsCredentialsForm.porkbunSecretapikey.$dirty && dnsCredentialsForm.porkbunSecretapikey.$invalid }" ng-show = "dnsCredentials.provider === 'porkbun'" >
< label class = "control-label" > API Secret< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.porkbunSecretapikey" name = "porkbunSecretapikey" placeholder = "API Secret" ng-required = "dnsCredentials.provider === 'porkbun'" ng-disabled = "dnsCredentials.busy" >
< / p >
<!-- Hetzner -->
< p class = "form-group" ng-show = "dnsCredentials.provider === 'hetzner'" >
< label class = "control-label" > API Token< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.hetznerToken" name = "hetznerToken" ng-required = "dnsCredentials.provider === 'hetzner'" ng-disabled = "dnsCredentials.busy" >
< / p >
<!-- Vultr -->
< p class = "form-group" ng-show = "dnsCredentials.provider === 'vultr'" >
< label class = "control-label" > API Token< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.vultrToken" name = "vultrToken" ng-required = "dnsCredentials.provider === 'vultr'" ng-disabled = "dnsCredentials.busy" >
< / p >
<!-- deSEC -->
< p class = "form-group" ng-show = "dnsCredentials.provider === 'desec'" >
< label class = "control-label" > API Token< / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.deSecToken" name = "deSecToken" ng-required = "dnsCredentials.provider === 'desec'" ng-disabled = "dnsCredentials.busy" >
< / p >
<!-- Wildcard -->
< p class = "small text-info" ng-show = "dnsCredentials.provider === 'wildcard'" >
< span > Set up A records for < b > *.{{ dnsCredentials.domain || 'example.com' }}.< / b > and < b > {{ dnsCredentials.domain || 'example.com' }}.< / b > to this server's IP.< / span >
< / p >
<!-- Manual -->
< p class = "small text-info" ng-show = "dnsCredentials.provider === 'manual'" >
< span > Set up an A record for < b > my.{{ dnsCredentials.domain || 'example.com' }}.< / b > to this server's IP.< br / > < / span >
< / p >
< p class = "small text-info" ng-show = "needsPort80(dnsCredentials.provider, dnsCredentials.tlsConfig.provider)" > Let's Encrypt requires your server to be reachable on port 80< / p >
< div ng-show = "provider === 'ami'" >
< h3 class = "text-center" > Owner verification< / h3 >
< p class = "has-error text-center" ng-show = "error.ami" > {{ error.ami }}< / p >
< div class = "form-group" style = "margin-bottom: 0;" ng-class = "{ 'has-error': dnsCredentialsForm.instanceId.$dirty && (dnsCredentialsForm.instanceId.$invalid || error.ami) }" >
< label class = "control-label" > EC2 Instance Id< / label >
< input type = "text" class = "form-control" ng-model = "instanceId" id = "inputInstanceId" name = "instanceId" placeholder = "i-0123456789abcdefg" ng-minlength = "1" ng-required = "provider === 'ami'" autocomplete = "off" >
< / div >
< p style = "margin-top: 5px; font-size: 13px;" > Provide the EC2 instance id to verify you have access to this server.< / p >
< / div >
< br / >
< div uib-collapse = "!advancedVisible" >
< div class = "form-group" >
< label class = "control-label" > Zone Name (Optional) < sup > < a ng-href = "https://docs.cloudron.io/domains/#zone-name" class = "help" target = "_blank" > < i class = "fa fa-question-circle" > < / i > < / a > < / sup > < / label >
< input type = "text" class = "form-control" ng-model = "dnsCredentials.zoneName" name = "zoneName" placeholder = "{{dnsCredentials.domain | zoneName}}" ng-disabled = "dnsCredentials.busy" >
< / div >
< div class = "form-group" >
< label class = "control-label" > Certificate Provider < sup > < a ng-href = "https://docs.cloudron.io/certificates/#certificate-providers" class = "help" target = "_blank" > < i class = "fa fa-question-circle" > < / i > < / a > < / sup > < / label >
< select class = "form-control" ng-model = "dnsCredentials.tlsConfig.provider" ng-options = "a.value as a.name for a in tlsProvider" ng-disabled = "dnsCredentials.busy" > < / select >
< / div >
<!-- IPv4 provider -->
< div class = "form-group" >
< label class = "control-label" > IPv4 Configuration < sup > < a ng-href = "https://docs.cloudron.io/networking/#ip-configuration" class = "help" target = "_blank" > < i class = "fa fa-question-circle" > < / i > < / a > < / sup > < / label >
< select class = "form-control" ng-model = "ipv4Config.provider" ng-options = "a.value as a.name for a in ipProviders" > < / select >
< / div >
<!-- IPv4 Fixed -->
< div class = "form-group" ng-show = "ipv4Config.provider === 'fixed'" >
< label class = "control-label" > IPv4 Address< / label >
< input type = "text" class = "form-control" ng-model = "ipv4Config.ip" name = "ipv4" ng-required = "ipv4Config.provider === 'fixed'" >
< / div >
<!-- IPv4 Network Interface -->
< div class = "form-group" ng-show = "ipv4Config.provider === 'network-interface'" >
< label class = "control-label" > IPv4 Interface Name< / label >
< input type = "text" class = "form-control" ng-model = "ipv4Config.ifname" name = "ifname4" ng-required = "ipv4Config.provider === 'network-interface'" >
< / div >
<!-- IPv6 provider -->
< div class = "form-group" >
< label class = "control-label" > IPv6 Configuration < sup > < a ng-href = "https://docs.cloudron.io/networking/#ip-configuration" class = "help" target = "_blank" > < i class = "fa fa-question-circle" > < / i > < / a > < / sup > < / label >
< select class = "form-control" ng-model = "ipv6Config.provider" ng-options = "a.value as a.name for a in ipProviders" > < / select >
< / div >
<!-- IPv6 Fixed -->
< div class = "form-group" ng-show = "ipv6Config.provider === 'fixed'" >
< label class = "control-label" > IPv6 Address< / label >
< input type = "text" class = "form-control" ng-model = "ipv6Config.ip" name = "ipv6" ng-required = "ipv6Config.provider === 'fixed'" >
< / div >
<!-- IPv6 Network Interface -->
< div class = "form-group" ng-show = "ipv6Config.provider === 'network-interface'" >
< label class = "control-label" > IPv6 Interface Name< / label >
< input type = "text" class = "form-control" ng-model = "ipv6Config.ifname" name = "ifname6" ng-required = "ipv6Config.provider === 'network-interface'" >
< / div >
< / div >
< div class = "text-center" >
< a href = "" ng-click = "advancedVisible = true" ng-hide = "advancedVisible" > Advanced settings...< / a >
< a href = "" ng-click = "advancedVisible = false" ng-show = "advancedVisible" > Hide Advanced settings< / a >
< / div >
< / div >
< / div >
< br / >
< div class = "row" >
< div class = "col-md-12 text-center" >
< button type = "submit" class = "btn btn-primary" ng-disabled = "dnsCredentialsForm.$invalid" > < i class = "fa fa-circle-notch fa-spin" ng-show = "dnsCredentials.busy" > < / i > Next< / button >
< / div >
< / div >
< br / >
< div class = "row" >
< div class = "col-md-12 text-center" > < small > Looking to < a ng-href = "/restore.html{{ search }}" > restore?< / a > < / small > < / div >
< / div >
< / form >
2018-01-22 13:01:38 -08:00
< / div >
2024-04-26 14:07:53 +02:00
< / div >
2018-01-22 13:01:38 -08:00
< / div >
2024-04-26 14:07:53 +02:00
< / div >
2018-01-22 13:01:38 -08:00
2024-04-26 14:07:53 +02:00
< footer class = "text-center" >
< span class = "text-muted" > © 2022 < a href = "https://cloudron.io" target = "_blank" > Cloudron< / a > < / span >
< span class = "text-muted" > < a href = "https://forum.cloudron.io" target = "_blank" > Forum < i class = "fa fa-comments" > < / i > < / a > < / span >
< / footer >
2018-01-22 13:01:38 -08:00
< / body >
< / html >