@@ -7,6 +7,7 @@ This guide explains how to configure dstack-ingress to work with different DNS p
77- ** Cloudflare** - The original and default provider
88- ** Linode DNS** - For Linode-hosted domains
99- ** Namecheap** - For Namecheap-hosted domains
10+ - ** Route53** - For AWS hosted domains
1011
1112## Environment Variables
1213
@@ -73,6 +74,40 @@ NAMECHEAP_CLIENT_IP=your-client-ip
7374- Namecheap doesn't support CAA records through their API currently
7475- The certbot plugin uses the format ` certbot-dns-namecheap ` package
7576
77+ ### Route53
78+
79+ ``` bash
80+ DNS_PROVIDER=route53
81+ AWS_ACCESS_KEY_ID=service-account-key-that-can-assume-role
82+ AWS_SECRET_ACCESS_KEY=service-account-secret-that-can-assume-role
83+ AWS_ROLE_ARN=role-that-can-mod-route53
84+ AWS_REGION=your-closest-region
85+ ```
86+
87+ ** Required Permissions:**
88+ ``` yaml
89+ PolicyDocument :
90+ Version : ' 2012-10-17'
91+ Statement :
92+ - Sid : AllowDnsChallengeChanges
93+ Effect : Allow
94+ Action :
95+ - route53:ChangeResourceRecordSets
96+ Resource : !Sub arn:aws:route53:::hostedzone/${HostedZoneId}
97+ - Sid : AllowListingForDnsChallenge
98+ Effect : Allow
99+ Action :
100+ - route53:ListHostedZonesByName
101+ - route53:ListHostedZones
102+ - route53:GetChange
103+ - route53:ListResourceRecordSets
104+ ` ` `
105+
106+ **Important Notes for Route53:**
107+ - The certbot plugin uses the format ` certbot-dns-route53` package
108+ - CAA will merge AWS & Let's Encrypt CA domains to existing records if they exist
109+ - It is essential that the AWS service account used can only assume the limited role. See cloudformation example.
110+
76111# # Docker Compose Examples
77112
78113# ## Linode Example
@@ -127,6 +162,34 @@ services:
127162 - ./evidences:/evidences
128163` ` `
129164
165+ # ## Route53 Example
166+
167+ ` ` ` yaml
168+ services:
169+ dstack-ingress:
170+ image: dstack-ingress:latest
171+ restart: unless-stopped
172+ volumes:
173+ - /var/run/dstack.sock:/var/run/dstack.sock
174+ - cert-data:/etc/letsencrypt
175+ ports:
176+ - 443:443
177+ environment:
178+ DNS_PROVIDER: route53
179+ DOMAIN: app.example.com
180+ GATEWAY_DOMAIN: _.${DSTACK_GATEWAY_DOMAIN}
181+
182+ AWS_REGION: ${AWS_REGION}
183+ AWS_ROLE_ARN: ${AWS_ROLE_ARN}
184+ AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
185+ AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
186+
187+ CERTBOT_EMAIL: ${CERTBOT_EMAIL}
188+ TARGET_ENDPOINT: http://backend:8080
189+ SET_CAA: 'true'
190+
191+ ` ` `
192+
130193# # Migration from Cloudflare-only Setup
131194
132195If you're currently using the Cloudflare-only version :
@@ -166,4 +229,4 @@ Ensure your API tokens/credentials have the necessary permissions listed above f
1662291. Go to https://ap.www.namecheap.com/settings/tools/api-access/
1672302. Enable API access for your account
1682313. Note down your API key and username
169- 4. Make sure your IP address is whitelisted in the API settings
232+ 4. Make sure your IP address is whitelisted in the API settings
0 commit comments